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目录

posted @   randy198  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示