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