1.常见bash你置命令及应用实践举例:
1.echo 变量名表:
将变量名表指定的变量显示到标准输出
set -- "I name" nihao a # set -- 设置变量
echo $# 查看参数的个数
echo $1 查看第一个变量
[root@localhost ~]# echo oldboy
oldboyecho 后面跟两个参数:
-n :不换行
-e :后面跟命令参数
[root@localhost ~]# echo -e "hello,\nyou good"
hello, you goodecho 也可以追加内容到文件里面
[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 123.printf 打印格式化的字符串(功能比echo大)。
例如:
[root@localhost shell]# printf "women\tzaiyi\nqi\n"
women zaiyi qi4. 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/shfor file in `ls ./*.jpg` #shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名domv $file `echo $file|sed 's/finished//g'` #使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。done#特别提示:通过本题,可以学习到for循环的使用,及mv、sed等命令的使用[执行脚本][root@oldboy oldboy]# sh oldboy_modi_file.sh [检查结果][root@oldboy oldboy]# lltotal 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 -ltotal 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:31333741for 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 -ltotal 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]# lltotal 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.jpgstu_102999_2_finished.jpgstu_102999_3_finished.jpgstu_102999_4_finished.jpgstu_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_.jpgstu_102999_2_.jpgstu_102999_3_.jpgstu_102999_4_.jpgstu_102999_5_.jpg[root@oldboy oldboy]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash[root@oldboy oldboy]# lltotal 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]# lltotal 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]# lltotal 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]# lltotal 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留言给我。我们互相交流,共同切磋,共同进步。兄弟们啊,这个问题并不重要,解答问题的思路才是最重要的。