Linux复习1

1. wc是文件统计命令,两种使用方法:(1)直接加文件名wc test.txt (2)输入重定向wc < test.txt

wc输出的三个参数为,文件的行数,单词数,字节数

2. ls -l *.sh 和ls -l * .sh区别(差一个空格):前者为列出所有.sh文件,后者为列出所有以空格结尾的.sh文件

若执行报错,会有错误信息并列出文件夹下所有文件

Linux复习1_第1张图片

3. 圆括号和花括号可以将命令组合,之后共享一个重定向,例如(ls -l *.sh;ls -l * .sh) > test.txt

4. 管道:| 左边的命令使用标准输出,| 右边的命令使用标准输入  eg:who -a | cat > userlist

5. shell变量

(1)环境变量:shell已经定义的变量,如HOME,SHELL,PATH
(2) 用户自定义变量:
• 变量名:必须以字母开头,其他可以是数字和_,区分大小写
• 变量类型:shell变量都是字符串类型
• 变量不需要提前声明
• 变量赋值:variable=value
• 变量引用:$var_name (可使用转义符 \ 和单引号来避免替换)

Linux复习1_第2张图片

6. 数值计算,默认定义变量为字符串

Linux复习1_第3张图片

 如果想做数字赋值需要使用let命令 let x=1

$((y+2))表示运算表达式

bc浮点数计算器

Linux复习1_第4张图片

 7. 命令行参数

Linux复习1_第5张图片

 $@表示命令行所有参数

变量操作命令:

Linux复习1_第6张图片

 

 

 8. 通配符:表示文件名的某种模式

Linux复习1_第7张图片

 9. 命令执行结构

• 顺序执行:在同一行内使用;分隔命令
• 条件执行:使用逻辑运算符&&和||分隔命令
cmd1 && cmd2 若cmd1成功,则执行cmd2
cmd1 || cmd2 若cmd1失败,则执行cmd2

 10. test测试命令(重要)

Linux复习1_第8张图片

 注意:0为真,1为假

Linux复习1_第9张图片

 11. ln命令:创建一个链接

(1)默认为硬链接,即inode号一样

无论修改文件还是链接文件,另一个内容都随之改变

删除一个,只要另一个在,就能访问(因为inode还在)

(2)参数-s为创建符号链接,类似于快捷方式

无论修改文件还是链接文件,另一个内容都随之改变

删除源文件,链接无法访问;删除链接,源文件可以访问

 12. stat命令:查看文件属性

 13. touch命令:创建新文件或修改文件时间戳

 14. shell进阶命令:pr,head,tail,cut,paste,sort,uniq,tr,cmp,comm,diff,grep,sed

(1)uniq命令为筛选文件重复行或非重复行,但是只能判断相邻行是否一样,因此常和sort合并使用;

(2)sort使用实例:以:作为分隔符,将第三个字段的第一个字符作为排序标准

Linux复习1_第10张图片

(3)sed指令举例:

sed '5q' file  其中q为sed内部action,表示停止,所以此处为截取前5行

指定匹配正则表达式:/pattern/模式匹配的行;此处表示将有":x"的行中的":x"替换为":y"

Linux复习1_第11张图片

 

打印指定模式的行:sed -n '/pattern/p' file ;匹配正则表达式就是两个/括起来的部分

 打印文件前3行: sed -n '4,$!p' psdcp ;其中$表示最后一行,!p表示不打印

 在指定行之前插入行(1):

 删除第一行:

截取文件后5行(嵌套):反引号表示执行命令,里面得到最大行号再减4,从这个数到$p,也就是最后行;其中$在双引号里,需要加\转义;因为内部已有单引号,所以外层sed语句用双引号

 

 匹配源模式&:sed 's/a/b &/g' file  ;用&来简写源模式a

Linux复习1_第12张图片

 

 查找具有写权限的文件:\{表示转义{;/与/之间为匹配的正则表达式

Linux复习1_第13张图片

将通讯录contact中两个名字颠倒:\(pattern\)标记源模式

这里s标记模式的格式仍然是s/a/b/,其中a为两个\(pattern\)格式的标记源模式,b为用\k对标记的引用,先2后1即换了位置,中间用空格保持了原意空格分割;

中间空格后面的*表示任意多个空格

Linux复习1_第14张图片

 

 

注意:sed所有操作都只是改变了打印内容,并没有真正改变文件

15. 1>&2的作用,把标准输出(1)重定向到标准错误(2),这样其所在的echo语句可以打印在控制台,不会随其他语句打印到指定文件

Linux复习1_第15张图片

16. 正则表达式

Linux复习1_第16张图片

 Linux复习1_第17张图片

Linux复习1_第18张图片

17. awk按行处理文件,常用参数-F后接自定义的分隔符

举例:

Linux复习1_第19张图片 

解释:

第二个示例中.*表示单个字符重复任意多次(可以0),之后有sbin,之后再加任意字符,前后有/;符合这个条件则打印该行;

第三个示例中表示,用:分割的话,第三个单词如果大于2,则打印该行;(如果想判断字符串相等,用双引号,如:awk -F: '$2=="bill johnson" {print}' lst )

awk的打印内还可以添加数值运算表达式

awk匹配正则表达式用~

可以添加BEGIN和END字段,在执行awk前后自动执行打印内容

awk中引用命令行位置参数要加引号

18. Perl编程

与Shell类似,在命令行使用加-e

Perl中变量赋值和引用时都需要加$,与awk一致的是第一次使用即视为声明

Perl表达式中1为真0为假,与Shell相反,但是与认知相符

其他应用:foreach,列表,数组,哈希函数,替换函数

19. cp命令使用:默认第一个选项为源文件(若为源目录加参数-R),第二个为目标目录(若为文件,则该文件内容被破坏)

举例:

(1)cp f[1-3] file 将f1,f2,f3都拷贝到file目录下

(2)cp file f[1-3] 指令原意是将file拷贝到文件夹f1,f2,f3,但实际运行时报错(此时有f1,f2,f3三个文件夹),最终是将file,f1,f2拷贝到f3,f3必须是目录

 如果没有对应的三个文件夹,会把f[1-3]自动转化为字符串命名的文件

20. 删除空目录:rmdir;删除非空目录rm -R

21. echo命令"\n"换行问题:加-e参数,激活转义字符

22. 过滤器实例:

cat - f2f3 2>f4

其中-指的是获取标准输入,就是说f1相当于键盘读入,之后将f1,f2的cat内容输出到f3中,之后将错误信息输出到f4

(下面代码中f1234中原内容是111,222,333,444)

Linux复习1_第20张图片

23. while与until区别:while当循环体为真时执行,unil当循环体为假时执行

你可能感兴趣的:(Linux复习1)