老李分享:《Linux Shell脚本攻略》 要点(二)

老李分享:《Linux Shell脚本攻略》 要点(二)

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478。Linuxshell是测试开发工程师的基本功之一,所以在poptest测试开发课堂上加入了大量的linuxshell的课程,为了学员开发跨平台的测试平台打基础。

1、cat

cat -s //多个空白行压缩成一个

cat *.txt | tr -s ‘\n‘   //移除空白行

cat -n //加行号

2、find

沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

eg:

find ./ ! -name "*.txt" -print

[[email protected] program_test]# find ./  -type f -name "*.swp" -delete

3、xargs 将标准输入数据转换成命令行参数。

[[email protected] program_test]# cat out.txt | xargs  //将单行转化为多行

[[email protected] program_test]# cat out.txt | xargs -n 3 //将单行转化为多行,每行的个数为3.

//统计.c和.cpp的文件的代码行数.  xargs -0 将‘\0‘作为定界符.

[[email protected] program_test]# find . -type f -name "*.c*" -print0 | xargs -0 wc -l
  10 ./main/cos_value.c
  10 ./main/sin_value.c
   5 ./main/haha.c
  15 ./main/main.c
   8 ./hello.cpp
   8 ./sin.c
  32 ./review2.cpp
  24 ./review5.cpp
   7 ./hello.c
119 total

4.tr命令(translate的简写) 可对来自标准输入的字符进行替换、删除及压缩。

即:将一组字符变为另一组字符。

1)替换

echo “HELLO” | tr [A-Z] [a-z]

2)删除

[[email protected] program_test]# echo "hello 123 world 456" | tr -d ‘0-9‘

hello  world

3)压缩字符

[[email protected] program_test]# echo "GNU is     not UNIX" | tr -s ‘ ‘
GNU is not UNIX

//综合举例

[[email protected] program_test]# cat sum.txt
1
2
3
4
5
[[email protected] program_test]# cat sum.txt | echo $[ $(tr ‘\n‘ ‘+‘) 0 ]
15

5、md5校验

[[email protected] program_test]# md5sum out.txt > out.txt.md5
[[email protected] program_test]# cat out.txt.md5
fd46d559bf0c90170fef3da3c3de4c67  out.txt

//eg:

[[email protected] program_test]# find ./ -type f -name "*.txt" -print0 | xargs -0 md5sum >> curr_dir.md5

46e17910faf509df48dbfba9729ef018  ./banana.txt
c1dbbf63209a5580c052dc557510e7fb  ./11.txt
a80ddf02fa3a86c14066204e4bf2dbb9  ./multiline.txt

[[email protected] program_test]# md5sum -c curr_dir.md5
./banana.txt: OK
./11.txt: OK
./multiline.txt: OK

6、sort排序

//sort 按第2列排序

[[email protected] program_test]# sort -k 2 sort.txt
4 bad 5000
3  linux 50
1   mac 2000
2  winxp 100

//sort 逆序排序
[[email protected] program_test]# sort -r sort.txt
4 bad 5000
3  linux 50
2  winxp 100
1   mac 2000

//综合举例:统计字符串中每个字符出现的次数

[[email protected] program_test]# ./total_cnts.sh
AHEBHAAA
4A1B1E2H
[[email protected] program_test]# cat total_cnts.sh
INPUT="AHEBHAAA"
output=$(echo $INPUT | sed ‘s/[^.]/&\n/g‘ | sed ‘/^$/d‘ | sort | uniq -c | tr -d ‘ \n‘)
echo $INPUT
echo $output

[释义]: sed ‘s/[^.]/&\n/g‘    //任意一个字符后面都加上\n

拆分如下:

[[email protected] program_test]# input="ahebhaaa"
[[email protected] program_test]# echo $input | sed ‘s/[^.]/&\n/g‘
a
h
e
b
h
a
a
a

sed ‘/^$/d‘  //删除空行

uniq -c         //统计各行文本出现的次数.

tr -d ‘\n  ‘     //删除换行符以及空格字符

7、临时文件命名

[[email protected] program_test]# temp_file="/tmp/var.$$"
[[email protected] program_test]# echo $temp_file
/tmp/var.16565

时间: 2024-08-24 21:00:38

老李分享:《Linux Shell脚本攻略》 要点(二)的相关文章

老李分享:《Linux Shell脚本攻略》 要点(八)

老李分享:<Linux Shell脚本攻略> 要点(八) 1.打印进程 [[email protected] program_test]# ps -e | head  PID TTY          TIME CMD    1 ?        00:00:03 init    2 ?        00:00:00 kthreadd    3 ?        00:00:00 migration/0    4 ?        00:00:00 ksoftirqd/0    5 ?   

老李分享:《Linux Shell脚本攻略》 要点(四)

老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang./right.txt:1:1 yang man //忽略大小写匹配 [[email protec

老李分享:《Linux Shell脚本攻略》 要点(一)

老李分享:<Linux Shell脚本攻略> 要点(一) 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo

老李分享:《Linux Shell脚本攻略》 要点(六)

老李分享:<Linux Shell脚本攻略> 要点(六) 1.打印网络接口列表 [[email protected] touch_more]# ifconfig | cut -c-10 | tr -d ' ' | tr -s '\n'eth0lo //cut -c-10 ;  输出前10个字符; //tr -d ' ' ;      删除所有空格; //tr -s '\n';     压缩重复的换行符 2.查看名字服务器 [[email protected] touch_more]# cat

老李分享:《Linux Shell脚本攻略》 要点(三)

老李分享:<Linux Shell脚本攻略> 要点(三) 1.生产任意大小的文件 [[email protected] dd_test]#[[email protected] dd_test]# dd if=/dev/zero of=junk.data bs=1k count=1010+0 records in10+0 records out10240 bytes (10 kB) copied, 0.00137023 s, 7.5 MB/s 2.文件系统相关测试 [ -f $file_var

Linux Shell脚本攻略(1.10)

1.10 获取.设置日期和延时 很多应用程序需要以不同的格式打印日期.设置日期和时间.根据日期和时间执行某项操作.延时通常用于在程序执行过程中提供一段等待时间(比如1秒).同样的,我们也能够一多种格式打印日期,或者在命令行中设置日期.在类Unix系统中,日期被存储为一个整数,其大小为自世界标准时间起所流逝的秒数.这种计时方式称为纪元时或Unix时间. 1.10.1 获取.设置时间 以下的程序给出了多种用法: #!/bin/bash start=$(date +%s) #获取纪元时间 date #

Linux Shell脚本攻略(1.8)

1.8 使用别名 linux中的别名就相当于windows中的快捷方式,使用别名可以省去用户输入一长串命令序列的麻烦. 1.8.1 创建临时别名(快捷方式) alias new_command='command sequence' #格式说明 alias install='sudo apt-get install' #实例说明 在声明 install='sudo apt-get install'之后,就可以用install代替'sudo apt-get install'了.使用这种方式声明的别名

Linux Shell脚本攻略(1.2)

1.2 终端打印 终端是交互式工具,用户可以通过它与shell环境进行交互.在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务.通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的. echo终端打印 echo "Welcome to Bash" echo 'Welcome to Bash' echo Welcome to Bash 以上三种方法的效果是一样的,输出内容都是"Welcome to Bash",并在末尾添加换行符.在默认情

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp