bash shell相关知识
shell与bash
什么是shell
——以上图片摘自《鸟哥的Linux私房菜》
系统核心不能随意地被操作,所以就设计出了壳程序shell,一方面保护了系统核心,另一方面提供了人机交互的渠道。
bash与shell的关系
bash是众多shell的一种,/bin/bash是Linux的预设shell。
shell的变量
变量的设定
var_name=value
var_name=char
var_name="$LANG" # attribute is preserved
var_name='$LANG' # 单括号内的内容被转为了字符型
取消设定的变量 unset var_name
变量的有效范围:环境变量和自定义变量
环境变量通过env查看,set命令可以查看所有类型的变量,系统变量名称用全大写字母表示,自己定义的变量用小写表示。
echo $?回传上次命令执行的结果,0表示命令正确执行,127表示存在错误。
想要自定义变量能够给子程序用,export var_name。我的理解是,通过export将自定义变量临时提升为了环境变量。
通配符和特殊符号
* # 代表任意多个任意字符
? # 代表一个任意字符
[] # 代表有一个字符满足括号内给定范围的条件,可以不连续
find / -iname [1,z,b]* # 找到根目录下以1或z或b开头命名的文件
[-] # 代表有一个字符满足括号编码顺序范围内的条件,如[1-9], [a-z]
find / -iname [1-3]* # 找到根目录下所有以在数字1-3范围内开头命名的文件
[^] # 代表有一个字符满足不包含在^号后内的条件
find / -iname [^1-9] # 找到根目录下所有不以数字1-9范围内开头命名的文件
find / -iname [^1,2] # 找到根目录下不以数字1和数字2开头命名的文件!注意2之前没加^!
数据流重导向
标准输入stdin、标准输出stdout与标准错误输出stderr
1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>
- 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;
- 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;
- 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;
- 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;
——以上摘自《鸟哥的Linux私房菜》
&&与||
——以上摘自《鸟哥的Linux私房菜》
管道符相关
cut与grep
cut -d '分隔字符' -f fields(number, number)
[root@study_rhel ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@study_rhel ~]# echo $PATH | cut -d ':' -f 1 # /usr/local/sbin 按:分割后是第一段 /usr/local/sbin [dmtsai@study ~]$ echo ${PATH} | cut -d ':' -f 3,5
grep,输出符合给定条件的所在行
grep后面所跟需要被查找的字符需要加引号吗?
如果只是一串普通字符可以不加。如果是两个字符中间包含空格,就需要加引号。一般常量、字符串用单引号,变量用双引号。(参考“变量的设定”一节)
grep "$a" file # 查找变量a的值,输出所在行
grep '$a' file # 查找“$a”字符串,输出所在行
grep '\\' file # 查找‘\’字符,输出所在行
双重定向命令tee
——以上摘自《鸟哥的Linux私房菜》
文件分割命令split
——以上摘自《鸟哥的Linux私房菜》
参数传递过滤命令xargs
x -arguments
使用xargs 的原因是, 很多指令其实并不支持管道符,因此我们可以通过xargs来为后面的指令使用standard input中的数据(参数)。
-的用途
减号”-”就是代表标准输出/标准输入, 视命令而定. “-”代替stdin和stdout的用法:
tar -cvf - /home | tar -xvf -
tar -cvf - /home 把/home压缩后,打印在stdout上,tar -xvf - 从stdin读取内容,并在当前目录解压
tar cf - access.log | tar xf - -C /opt # 把access.log文件打包,通过管道符,把前一个命令的输出变为后一个命令的输入,在/opt目录解压。等效于复制文件到/opt目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具