码迷,mamicode.com
首页 > 系统相关 > 详细

Shell

时间:2019-04-25 22:38:24      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:name   标准输入   hello   通过   一个   python   字符   输出   标准   

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/bash
2 read -p "输入的数据:" var
3 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.391s
user    0m0.002s
sys     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留言给我。我们互相交流,共同切磋,共同进步。
兄弟们啊,这个问题并不重要,解答问题的思路才是最重要的。

Shell

标签:name   标准输入   hello   通过   一个   python   字符   输出   标准   

原文地址:https://www.cnblogs.com/QQmini/p/10771537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!