ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell 学习笔记 常用命令 tr md5sum

2021-11-17 10:04:52  阅读:292  来源: 互联网

标签:字符 shell log md5sum tr echo coco


摘自 Linux Shell 脚本攻略 第二章 命令之乐

tr

tr可以对 来自标准输入的内容进行字符替换、字符删除以及重复字符压缩

字符的大小写转换

$ echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z'
hello who is this

对字符进行加密

tr命令可以用来加密。ROT13是一个著名的加密算法。在ROT13算法中,字符会被移动13
个位置,因此文本加密和解密都使用同一个函数

$ echo "tr came, tr saw, tr conquered." | tr 'a-zA-Z' 'n-za-mN-ZA-M'
ge pnzr, ge fnj, ge pbadhrerq.

删除字符

$ echo "Hello 123 world 456" | tr -d '0-9'
Hello  world 

字符组补集

tr -c [set1] [set2]
如果只给出了set1,那么tr会删除所有不在set1中的字符。如果也给出了set2,tr会将不 在set1中的字符转换成set2中的字符。如果使用了-c选项,set1和set2必须都给出。如果-c 与-d选项同时出现,你只能使用set1,其他所有的字符都会被删除

$ echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'
 1  2  4

-d -c 同时使用时 只保留给定set字符中的字符

$ echo hello 1 char 2 next 4 | tr -c '0-9' ' '
      1      2      4 

只使用-c 时 将非字符集替换

用tr压缩字符

$ echo "GNU is       not     UNIX. Recursive   right ?" |tr -s ' ' 
GNU is not UNIX. Recursive right ?

删除字符中重复的空格

tr的灵活运用

sum.txt

$ cat sum.txt 
1
2
3
4
5

计算sum文件中所有数的和

$ cat sum.txt |echo $[ `tr '\n' '+'` 0]
15

tr ‘\n’ ‘+’ 将换行替换成+ 得到表达式 1+2+3+4+5+
再将其与0 拼接 得到表达式 1+2+3+4+5+0
最后运行该表达式得到总数

另外一个例子
test.txt

$ cat test.txt 
first 1
second 2
third 3

计算test中数字的总和

$ cat test.txt |tr -d [a-z]|echo "total $[ `tr ' ' '+'`]"
total 6

利用tr的-d选项删除文件中的字母,然后将空格替换成+

可以使用的字符类

  • alnum:字母和数字。
  • alpha:字母。
  • cntrl:控制(非打印)字符。  digit:数字。
  • graph:图形字符。
  • lower:小写字母。
  • print:可打印字符。
  • punct:标点符号。
  • space:空白字符。
  • upper:大写字母。
  • xdigit:十六进制字符。
$ echo 'coco is handsome 123 !' |tr -d [:alnum:]
    !

md5sum

计算文件的md5sum

coco.log

$ cat coco.log 
coco is handsome
$ md5sum coco.log 
7fdc4a7ed1e76c6e1e1ac2ae24fd2068  coco.log

保存校验信息

$ md5sum coco.log > coco.md5 
$ md5sum  -c coco.md5 
coco.log: OK # 校验 ok
$ vi coco.log
$ cat coco.log 
coco is handsome !
$ md5sum  -c coco.md5 
coco.log: FAILED # 原文件中添加! 校验 fail
md5sum: WARNING: 1 computed checksum did NOT match

递归校验

md5deep或sha1deep命令可以遍历目录树,计算其中所有文件的校验和。你的系统中可能 并没有安装这两个程序。可以使用apt-get或yum来安装md5deep软件包

$ md5deep -rl directory_path > directory.md5
# -r使用递归遍历
# -l使用相对路径。默认情况下,md5deep会输出文件的绝对路径

也可以结合find 命令进行递归校验

$ find directory_path -type f –print0 | xargs -0 md5sum >> directory.md5

md5与SHA-1都是单向散列算法,均无法逆推出原始数据。两者通常用于为特定数据生成 唯一的密钥

标签:字符,shell,log,md5sum,tr,echo,coco
来源: https://blog.csdn.net/weixin_42817311/article/details/121370044

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有