Part1前言
linux shell 常见的面试问题,基本是先让你随便说一些,测试一下你掌握的广度,这时候你至少要说上十个才行,但是!不要说太难的,否则很容易掉进自己的坑里,相当于提醒了面试官去问你 : find ,vi编辑器这种会让面试官出一个极复杂的命令。但是之后 面试官仍然会出一些 非常复杂的命令,本小节复习,除了基础中常见的命令之外,还有常见的复杂命令。
Part2基础命令
注意,每个linux命令都包含很多参数,我这里不像网上教程一样全写出来,我只会把常用的或者面试大概率遇到的参数写出来,以免参数太多大家记混。而且参数一般都是相同的意思和概念,大家可以极大的减轻记忆负担,比如 -R 在几乎所有命令中都代表递归的意思;-f一般都是强制或忽略,-i一般是询问;-v 基本都是显示日志版本号等;-a 隐藏;-d目录;大部分命令的参数都可加可不加。
grep 查找和过滤
grep作为过滤命令,在很多命令后都可以加入grep来进行过滤
代码语言:javascript复制grep test *.c 查找后缀为c 且包含test的文件
grep -r test /etc/ 查找etc目录和子目录下包含update字符串的文件
grep test 文件 #在文件中查找包含test的行
grep -e "正则表达式" 文件 #查找文件内符合该正则的行
-i 不去分大小写
grep -v test 查找不含test的文件,-v表示反向
find . -name '*.c' | xargs grep "test" 查找当前目录下所有后缀为.c的文件并找出其中带test的行。
join 链接俩个文件中相同的行
代码语言:javascript复制join 文件1 文件2
look 查询单词
代码语言:javascript复制look L 文件 #查询文件中所有以L开头的行
pico 编辑文字文件
代码语言:javascript复制pico 参数 文件
sed 利用脚本处理文本文件
代码语言:javascript复制sed 参数 动作 文件
sed -e 4anewLine 文件 #在文件第四行后添加一行
sed -i '$a 结束文案' #在文末增加一行文案
其中 -e表示后面接动作,
a表示新增
c 取代
d 删除
i 插入
p 打印
s 取代
sed 's/目标文案/新文案/g' #替换文案,
nl 以行为单位执行命令
代码语言:javascript复制nl 文件 | sed '2,5d' #表示打印所有行,但删除2-5行,sed后的字符必须以单引号包裹
nl 文件 | sed '2a 测试开发干货' #第2行后新增一行文案
nl 文件 | sed '1,3c 测试开发干货' #第1-3行替换成文案
nl 文件 | sed '/test/p' #输出所有行,额外输出包含test的行
nl 文件 | sed '/test/d' #输出所有行,但不包括带test的行
nl 文件 | sed -n '具体命令' # 输出所有行且执行某命令
nl 文件 | sed '3,$d' -e 's/旧/新/g' #输出所有行,删除第3-5行,且替换文案。
sort 排序
代码语言:javascript复制sort 参数 文件
-r 相反顺序
-b 忽略前空格
-d 只处理英文数字和空格
-f 全部按照大写字母排序
-n 按照数值大小
sort 文件 -k 2 #根据第二列的值进行排序
spell 拼写检查
代码语言:javascript复制spell 文件
tr 转换和删除文件中的指定字符
代码语言:javascript复制tr 参数 值
-c 反选
-d 删除
cat 文件 |tr a-z A-Z #把文件中所有小写替换成大写字母并打印
cat 文件 |tr ["lower"] ["upper"]
expr 命令行计数器
代码语言:javascript复制expr 表达式
如 expr length "测试开发干货" #会输出6
expr substr "测试开发干货" 2 4 #会输出is 开
expr index "测试开发干货" 干 #会打印5
expr 10 2 #会打印12
uniq 行去重
代码语言:javascript复制uniq 参数 文件
-c 显示重复次数
-d 显示重复行列
wc 计算字数
代码语言:javascript复制wc 参数 文件
-l 显示行数
-w 显示字数
-c 显示字节数
let 声明变量
代码语言:javascript复制let a=5
let b=a 2
echo b
输出 7
好了,本节学习的内容够多了,大家放松放松,准备迎接下一节复习吧~