shell
删除变量:unset 变量名
定义只读变量:readonly 变量名
定义全局变量:GLOBAL_变量名
函数
read
read -t 等待时间 "提示语" 赋予给的变量名
如果没有-t会一直等下去
basename
basename [string /pathname][suffix]
basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来,可以理解为只保留pathname
shuffix为后缀,如果shuffix被指定了,basename会将pathname或string中的shuffix去掉
dirname
dirname 文件绝对路径
从给定的包含绝对路径的文件名中取出文件名(非目录的部分),然后返回剩下的路径(目录的部分)
shell工具(面试重点)
cut
cut -d "分隔符" -f 列号 文件
默认分隔符是制表符(TAB)
列号后加-能够取那一列(包括列号)后的所有列
sed
sed[选项参数] 'command' filename
选项参数:-e直接在指令列模式上进行sed的动作编辑
命令:
- a 新增,a的后面可以接字串
- d 删除
- s 查找并替换
#在第二行加入mei nv字串
sed "行号a 添加的字串" 文件
#将wo字串删除
sed "/要删除字段/d" 文件
#将wo串替换为ni g为全部的wo 不添加g只会替换一个
sed "s/被替换字串/新字串/g" 文件
#将sed.txt文件的第二行删除并将wo替换为ni
sed -e "行号d" -e "s/被替换字串/新字串/g" 文件
awk
把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理
awk[选项参数] 'pattern{action1} pattern{action2}...' filename
pattern:表示awk在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
选项参数:
- -F指定输入文件拆分隔符
- -v赋值一个用户定义变量
awk的内置变量
- FILENAME文件名
- NR已读的记录数(行号)
- NF浏览记录的域的个数(切割后有几个列,总列数)
#搜索passwd文件以root关键字开头的所有行,并输出该行的第7列
awk -F 分隔符 '/正则表达式/行为' 文件
#只显示/etc/passwd的第一列和第七列,以逗号分隔,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/zhuishuai"
awk -F : 'BEGIN{print "user,shell"} {print $1 $7} END{print "dahaige,bin/zhuishuai"}' passwd
awk -F 分隔符 'BEGIN{行为} {行为} END{行为}' 文件
#将passwd文件中的用户id增加数值1并输出
awk -F : -v i=1 '{print $3+i}' passwd
awk -F 分隔符 -v 定义变量 行为 文件
#统计passwd文件名,每行的行号,每行的列数
awk -F : '{print FILENAME "," NR "," NF}' passwd
sort
将文件排序,并将排序结果标准输出
sort(选项)(参数)
参数:
- -n 按照数值的大小排序
- -r 以相反的顺序来排序
- -t 设置排序时所用的分隔字符
- -k 指定需要排序的列
#按照:分隔后的第三列倒序排序
sort -t : -nrk 2 sort.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通