博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell
阅读量:4593 次
发布时间:2019-06-09

本文共 6614 字,大约阅读时间需要 22 分钟。

1.常见bash你置命令及应用实践举例:

  1.echo 变量名表:

    将变量名表指定的变量显示到标准输出 

    set -- "I name" nihao a # set -- 设置变量

    echo $# 查看参数的个数

    echo $1 查看第一个变量

    [root@localhost ~]# echo oldboy

    oldboy

    echo 后面跟两个参数:

      -n :不换行

      -e :后面跟命令参数

        [root@localhost ~]# echo -e "hello,\nyou good"

        hello,
        you good

      echo 也可以追加内容到文件里面

        [root@localhost shell]# echo "###@@@" > a.log

        [root@localhost shell]# cat a.log
        ###@@@

        也可以追加内容到文件结尾 使用  ‘>>’

  2.read 变量名表:

    从标准输入读字符串,传给指定变量,可以在函数中用 local 变量名 的方式申明局部变量。读取用户的输入。

    -p :你输入的数据。

1 #!/bin/bash2 read -p "输入的数据:" var3 echo $var

    [root@localhost shell]# sh text.sh

    输入的数据:12
    12

  3.printf 打印格式化的字符串(功能比echo大)

    例如:  

      [root@localhost shell]# printf "women\tzaiyi\nqi\n"

      women zaiyi
      qi

  4. history 

    显示历史记录信息

    -c :清除历史记录。

    -d :清除指定的历史记录。  history -d 2 (你需要清除的号)

  5. ulimit 查看文件的描述符:

    -a :查看基本的参数。

  6. export 变量名=value

  7. shift 使你的变量降级

  8.time  计算你执行命令的时间

[root@localhost shell]# time du -sh /etc/29M     /etc/real    0m0.391suser    0m0.002ssys     0m0.123s

2.常见的字符串生产案例:

  批量文件改名案例:

  打下面文件中的 filename 出掉。

  1. 创建数据:

[root@localhost shell]# touch haha_1000_filename.jpg haha_1001_filename.jpg haha_1002_filename.jpg haha_1003_filename.jpg haha_1004_filename.jpg[root@localhost shell]# ll总用量 8-rw-r--r--. 1 root root  7 4月  26 05:23 a.log-rw-r--r--. 1 root root  0 4月  26 06:03 haha_1000_filename.jpg-rw-r--r--. 1 root root  0 4月  26 06:03 haha_1001_filename.jpg-rw-r--r--. 1 root root  0 4月  26 06:03 haha_1002_filename.jpg-rw-r--r--. 1 root root  0 4月  26 06:03 haha_1003_filename.jpg-rw-r--r--. 1 root root  0 4月  26 06:03 haha_1004_filename.jpg

 

mkdir /oldboy cd /oldboy 

touch stu_102999_1_finished.jpg 
touch stu_102999_2_finished.jpg 
touch stu_102999_3_finished.jpg 
touch stu_102999_4_finished.jpg 
touch stu_102999_5_finished.jpg 

方法1:shell脚本for循环结合sed实现

[检查数据] 
[root@oldboy oldboy]# ll
total 4
-rw-r--r-- 1 root root 85 Oct  2 12:54 oldboy_modi_file.sh
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_5_finished.jpg
[开发脚本]
[root@oldboy oldboy]# cat oldboy_modi_file.sh 
#!/bin/sh
for file in `ls ./*.jpg`  
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
do
mv $file `echo $file|sed 's/finished//g'` 
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
done
#特别提示:通过本题,可以学习到for循环的使用,及mv、sed等命令的使用
[执行脚本]
[root@oldboy oldboy]# sh oldboy_modi_file.sh 
[检查结果]
[root@oldboy oldboy]# ll
total 4
-rw-r--r-- 1 root root 85 Oct  2 12:54 oldboy_modi_file.sh
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_1_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_2_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_3_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_4_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_5_.jpg
方法二:shell脚本for循环加变量的部分截取方法
[root@oldboy oldboy]#ls -l
total 4
-rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_5_finished.jpg
[root@oldboy oldboy]#cat change_file_name.sh 
#!/bin/sh
# oldboy QQ:31333741
for file in `ls ./*.jpg` 
 do 
/bin/mv $file `echo "${file%finished*}.jpg"`  #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
done 
[root@oldboy oldboy]#sh change_file_name.sh 
[root@oldboy oldboy]#ls -l
total 4
-rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_1_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_2_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_3_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_4_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_5_.jpg
特别提示:本脚本和文件在同一目录

方法三:ls结合awk实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_finished.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print  $0}'
stu_102999_1_finished.jpg
stu_102999_2_finished.jpg
stu_102999_3_finished.jpg
stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print  $1}'
stu_102999_1_
stu_102999_2_
stu_102999_3_
stu_102999_4_
stu_102999_5_
[root@oldboy oldboy]# ls |awk -F 'finished' '{print  $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print  $1$2}'
stu_102999_1_.jpg
stu_102999_2_.jpg
stu_102999_3_.jpg
stu_102999_4_.jpg
stu_102999_5_.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_.jpg
方法四:通过专业的改名命令rename实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_finished.jpg
[root@oldboy oldboy]# rename "finished" ""  * ==>执行批量改名
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.jpg
拓展下:改扩展名的方法
[root@oldboy oldboy]# rename .jpg .oldboy *
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.oldboy
特别提示:如果大家有需要解答问题可以,blog留言给我。我们互相交流,共同切磋,共同进步。
兄弟们啊,这个问题并不重要,解答问题的思路才是最重要的。

转载于:https://www.cnblogs.com/QQmini/p/10771537.html

你可能感兴趣的文章
LA 4123 (计数 递推) Glenbow Museum
查看>>
SPOJ 375 树链剖分 QTREE - Query on a tree
查看>>
JavaScript对json对象数组排序(按照某个属性升降序排列)
查看>>
关于 注册页面浏览器自动添加账号密码问题?
查看>>
Python之装饰器
查看>>
04Array
查看>>
MeteoInfoLab脚本示例:计算不同区域平均值
查看>>
Spring -- 全注解下的IoC(1)
查看>>
C#中的值类型和引用类型的比较
查看>>
[NOI2018]屠龙勇士
查看>>
Python3.0科学计算学习之类
查看>>
关于web前端中遇到的html,css小知识点
查看>>
阿里云高级技术专家空见: CDN的数据化之路
查看>>
Container and injection
查看>>
【转】职场学做“功夫熊猫”
查看>>
OpenNMS架构介绍
查看>>
金融系列10《发卡行脚本》
查看>>
wcf学习一
查看>>
数据库的创建,数据的增删改查
查看>>
iOS scrollview循环播放加缩放
查看>>