linux shell脚本攻略第2章(一)


linux shell脚本攻略第2章(一)

cat

  • cat file1 file2 file3 ... filen。将文件1-n的内容打印出来。
  • cat -s file。将file中多行空白行变成一行。
  • cat -T file。将file的制表符显示为^|
  • cat -n file。显示行号。

script

script用来录制终端命令,参数如下所示:

参数意义
-t指明输出录制的时间数据
-f如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS:可以用于教学,两个命令行接-f可以实时演示
-a输出录制的文件,在现有内容上追加新的内容
-q可以使script命令以静默模式运行

scrpitreplay回放script命令录制的终端命令。

find

  • 要列出当前目录及子目录下所有的文件和文件夹。find base_path,将路径bash_path下的所有文件列出来。
  • 根据文件名或正则表达式进行搜索。find path -name "fileReg"来查找和fileReg正则匹配的结果。也可以使用-iname忽略大小写。
  • find path -path "path"通过path来查找相应文件目录。
  • find path -regex "Reg"通过正则表达式Reg来查找相应内容。
  • !来否定。
  • -maxdepth指定最大搜索深度,-mindepth指定最小搜索深度。
  • type指定要查找的文件类型。
  • 还可以指定要查找文件时间和大小以及权限等。
  • 删除匹配到的文件。-delete

xargs

  • cat file | xargs将文件中所有数据单行输出。
  • cat file | xargs -n 3将文件中所有数据按照每行三个数据输出。
  • cat file | xargs id char将char作为分割符对文件file进行输出。

tr

tr只能通过stdin而无法通过命令行参数来接受输入,将来自stdin的输入字符从前一个字符集映射到后一个字符集。

  • tr str1 str2,将所有的str1转换为str2.
  • tr -d str,删除所有的str。
  • tr -d -c str,删除所有不在str集合中的所有元素。
  • tr -s str,删除重复的str。
  • tr也可以像集合一样使用各种不同的字符类,使用方式为tr [:class:] [:class:]。字符类如下所示。
字符意义
alnum字母与数字
alpha字母
cntrl控制字符
digit数字
graph图形字符
lower小写字母
upper大写字母
print打印字符
punct标点符号
space空白字符
xdigit十六进制字符

校验

md5sum

md5sum fileName计算文件名为fileName的文件的md5sum值。

  • md5sum file1 file2 file3 ...分别计算file1,file2,file3等文件的md5值。
  • md5sum -c file.md5验证md5是否正确。

sha1sum

sha1sum用法与md5sum一样。

md5deep和sha1deep

md5deep -rl directory > file递归计算文件的md5值。

gpg

  • gpg -c filename将文件进行加密,生成新的加密文件,然后通过gpg filename.gpg进行解密文件,就能提取出加密的文件。

base64

  • 通过base64 filename > outputfilecat file | base64 > outputfile将文件编码为Base64格式。
  • 通过base64 -d file > outputfilecat base64_file | base64 -d > outputfile进行解码。

排序

sort

  • sort file1 file2 > sorted.txtsort file1.txt file2.txt -o sorted.txt对file1和file2进行排序并输出到sorted.txt中。
  • sort -n file.txt按数字顺序进行排序。
  • sort -r file.txt按反序排序。
  • sort -M file.txt按照月份进行排序。
  • sort -m sorted1 sorted2合并两个已排序的文件。
  • sort file | uniq找出已排序文件中不重复的行。
  • sort -C file查看file是否已经排序,返回0表示已排序,否则为未排序。
  • sort -k num file根据第几列数据来对file进行排序。

uniq

uniq用来消除重复的内容,从给定的输入中找出唯一的行。

  • uniq file,显示文件中未重复的行,如果有重复则只显示一次。
  • uniq -u file,显示文件中未重复的行,如果有重复则不显示。
  • uniq -c file,显示文件中每行出现的次数。
  • uniq -d file,找出文件中重复的行。

临时文件

  • mktemp创建临时文件,mktemp -d创建临时目录,mktemp -u仅仅生成文件名,但不创建文件或目录。
  • mktemp name.XXX,根据模板进行创建文件。

分割文件

split

  • split -b 10k file将会把file按照10KB的大小进行分割。
    参数如下:
参数意义
-b块大小,即分割后文件的最大大小
-d以数字为生成文件的后缀
-a指定后缀长度
-l按照行进行分割文件

csplit

csplit是split的变种,其相应例子如下所示:
csplit server.log /SERVER/ -n 2 -s {*} -f server -b "%02d.log"; rm server00.log。解析如下:

参数意义
/SERVER/用来匹配某一行,分割过程从此处开始
/[REGEX]/表示文本样式。包括从当前行直到包含"SERVER"的匹配行
{*}表示根据匹配重复执行分割,直到文件末尾位置。
-s静默模式
-n指定分割后的文件名后缀的数字个数
-f指定分割后文件名前缀
-b指定后缀格式

根据扩展名切分文件名

命令意义
${file%*.}获取文件的前缀名(最前面的一个点之前的名称)
${file%%*.}获取文件的前缀名(最后面一个点之前的名称)
${file#*.}获取文件后缀名(最前面一个点之后的名称)
${file##*.}获取文件后缀名(最后面一个点之后的名称)

批量重命名和移动

rename

  • mv file1 file2,通过mv命令可以代替大部分rename命令,将文件file1更名为file2。
  • rename 's/reg1/reg2/g' *将文件中的所有reg1替换成reg2。

拼写检查和词典操作

aspell

aspell list当给定输入不是个词典单词时,会产生输出文本,反之不产生任何输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值