设为首页 收藏本站
查看: 764|回复: 0

老大让我学Linux之shell变量替换,cat指令,head和tail指令

[复制链接]

尚未签到

发表于 2015-4-29 08:19:05 | 显示全部楼层 |阅读模式
  Shell变量替换
  
  条件变量替换:
  Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换条件放在{}中.
  (0) ${parameter}
  和$parameter相同,表示变量parameter的值
  (1) ${value:-word}
  当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.
  有点类似 a?a:b
  (2) ${value:=word}
  与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将word赋值给value
  (3) ${value:?message}
  若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若此替换出现在Shell程序中,那么该程序将终止运行)
  (4) ${value:+word} / ${value+world}
  若变量以赋值的话,其值才用word替换,否则不进行任何替换
  if(value!=NULL)
  value=word
  (5) ${value:offset}
  ${value:offset:length}
  从变量中提取子串,这里offset和length可以是算术表达式.
  (6) ${#value}
  变量的字符个数 (变量的字符个数,并不是变量个数)
  (7) ${value#pattern}
  ${value##pattern}
  去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配#与##的区别在于一个是最短匹配模式,一个是最长匹配模式.
  $ cd /usr/local/share
  $ echo “$PWD”
  /usr/local/share
  $ echo “${PWD#*/}”
  usr/local/share                //匹配完成,注意最前的/被消除了
  $ echo “${PWD##*/}”
  share                            //##是最长匹配
  (8) ${value%pattern}
  ${value%%pattern}
  于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样
  (9) ${value/pattern/string}
  ${value//pattern/string}
  进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区
  别与上同
  注意:上述条件变量替换中,除(2)外,其余均不影响变量本身的值
  
  利用命令替换     
在Linux命令行模式下,当遇到一对“`” (上分割符)时,将首先执行“`”中间包含的命令,然后将其输出结果作为参数代入命令行中,这就是命令替换了。它类似于输入输出的重定向功能,但区别在于 命令替换是将一个命令的输出作为另外一个命令的参数。下面来看它的实际应用。     
1.使用命令替换     
# touch `date +%Y%m%d%k%M%S`.txt     
该命令使用了一次命令替换,date +%Y%m%d%k%M%S命令将首先执行,它将按指定格式输出当前的时间。然后,这个时间将被作为touch命令的参数,其结果是建立了一个以当前时间为文件名的文件。     
2.使用命令替换   
# kill `/sbin/pidof smbd`     
该命令将杀掉sshd的所有进程。这里用pidof这个命令给出进程号,因为kill是针对进程号进行操作的。两者通过命令替换,实现了只用一条命令就杀掉sshd所有进程的功能。
  ----------------------------------------------------------------------------------------------------------------------------------------------------
  Cat
  
  Red Hat Linux 有一个工具程序,它能够帮助你保留简短列表,将这些列表收集起来,甚至向你透漏一点你的系统信息。 这个工具叫做 cat,它是 concatenate(连锁) 的简写,意思是合并文件。     
  cat 命令还会在屏幕上显示整个文件的内容(譬如,键入 cat filename.txt)。如果文件较长,它会在屏幕上飞快地滚过。要防止这一效果的发生,使用 cat filename.txt | less 命令。一起使用管道(|)和 less 命令会一页一页地显示文件。然后,你便可以使用向上或向下的箭头键在页码中向前或向后移动。
  使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName   
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)     
参数:     
-n 或 --number 由 1 开始对所有输出的行数编号      
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号      
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行      
-v 或 --show-nonprinting     
例子:     
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里     
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。     
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容     
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打     
cat /dev/fd0 > OUTFILE     
相反的,如果想把 image file 写到软碟,请打     
cat IMG_FILE > /dev/fd0     
注:     
1. OUTFILE 指输出的 image 档名。     
2. IMG_FILE 指 image file。     
3. 若从 image file 写回 device 时,device 容量需与相当。     
4. 通常用在制作开机磁片。
  
cat主要有三大功能:     
1.一次显示整个文件。$ cat filename     
2.从键盘创建一个文件。$ cat > filename     
只能创建新文件,不能编辑已有文件.     
3.将几个文件合并为一个文件。 $cat file1 file2 > file
  ----------------------------------------------------------------------------------------------------------------------------------------------------
  head 及tail 命令介绍
  
  head   
格式: head [option] .. [FILE]..
  当需要查看一个文本文件的头部或尾部时,head 命令及tail 命令可以非常方便的完成该操作。head 命令用于查看一个文本文件的开头部分;而tail 命令则用于显示文本文件的末尾几行。
  (1)-c, --bytes=[-]N
  打印每个文件的前N个字节,如果N前面加上-,那么就打印每个文件的除了最后N个字节外的所有字节
  (2)-n, --lines=[-]N
  打印前N行,如果N前加上[-]则打印除了最后N行数据外的所有行
  (3)-q, --quiet, --silent
  (4)-v, –verbose
  举例:   
head example.txt 显示文件 example.txt 的前十行内容;   
head -n 20 example.txt 显示文件 example.txt 的前二十行内容;
  tail
  和head相反,输出文件的后部数据。
  (1)-c , --byte=K
  输出最后k bytes的内容,如果使用 –c +K则输出从第K byte后的所有内容。
  (2)-f, --follow[={name|descriptor}]
  当文件增长时,输出新增的内容
  (2)-n, --lines=K
  输出后K行,如果使用-n +K则会输出从第K行开始的所有行
  (3)--max-unchanged-stats=N
  重新打开一个在N次迭代后没有改变大小的文件,查看它是否已经unlinked或者重命名了。
  (4)--pid=PID
  和-f搭配使用,在进程PID终止后退出
  (5)--retry
  不断打开一个文件,即使它当前不可以访问,和—follow=name 一起使用
  例子:
  tail example.txt 显示文件 example.txt 的后十行内容;   
tail -n 20 example.txt 显示文件 example.txt 的后二十行内容;   
tail -f example.txt 显示文件 example.txt 的后十行内容并在文件内容增加后,自动显示新增的文件内容。   
注意:   
最后一条命令非常有用,尤其在监控日志文件时,可以在屏幕上一直显示新增的日志信息。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61680-1-1.html 上篇帖子: 系统管理中 bash shell 脚本常用方法总结 下篇帖子: ASP网页中使用 Wscript.Shell 执行文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表