4.bash特性

bash 及其特性:
shell : 外壳
GUI  : Gnome KDE Xface
CLI:sh ,csh, ash,bash,tcsh,zsh


root student
程序:进程  
 开3个窗口就是3个进程
 进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例


用户工作环境
bash :

$
shell, 子shell


bash:
1.命令历史
2.管道,重定向
3.命令别名
4.命令行编辑
5 。命令行展开
6.文件名通配
7.变量
8.编程
命令行编辑
ctrl+a   跳到命令行首
ctrl+e  跳到命令行尾
ctrl+u   删除光标至命令行首的内容
ctrl+k  删除光标到命令行尾
ctrl+l   清屏
命令历史
history
history -d 500   //删除第500个命令历史
history -d 500 10  //从500个删除到510个
history -c 清空命令历史
history -d offset [n] //删除指定位置的命令
-w  保存命令历史至历史文件中 


~/.bash_history


环境变量
PATH  :命令搜索路径
HISTSIZE  命令历史缓冲区大小




!!   //执行上一条命令
!-n   //执行上n条命令
!string  执行命令历史中最近一个已指定string 开始的命令
!man
!m  //如果最近一次是m开头的man  也可以这么写




!$ :引用前一个命令的最后一个参数
esc ,.   




命令补全,路径补全
命令补全:搜索path 环境变量所最顶的每个路径下以我吗给出的字符串开头的课执行文件,如果多于一个,两次tab,可以给出列表,厚泽讲直接补全;
路径补全:搜索我吗给出的起始路径下的每个文件名,并试图补全


命令别名
alias CMDALIAS=COMMAND [options] [arguments]
alias cls=clear
在shell 中定义的别名仅在当前shell 生命周期中有效


alias  cdnet=‘cd /etc/sysconfig/network-scripts/’




unalias cls










命令替换 $()
//把命令中某个子命令 替换为其执行结果的过程


pwd
/user/maozhongyu
echo  ‘pwd: $(pwd)’;
//pwd: /user/maozhongyu


date
echo “date: $(date +%F)”;
//date: 2016-07-09


bash 支持的引号
``  命令替换
echo  `pwd`
“” //弱引号,可以实现变量替换
‘’  //强引号,不完成变量替换
















文件名通配 glowing
*:  任意长度的任意字符


ls a*   //以a开头的任意
ls a*3 //如a123  ab123
?  //匹配任意单个字符
[]  //匹配指定范围内的任意当个字符
[abc],[a-m], [a-z] [a-zA-Z] [0-9] [0-9A-Za-z]
[:space:]空白字符
[:punch:] 标点符号
[:lower:]小写字母
[:upper:]大些字母
[:alpha:]大小写字母
[:digit:]数字
[:alnum:] 数字和大小写字母

[^] //匹配指定范围之外的任意单个字符


//中间有空格点 字母
[[:alpha:]]*[[:space:]]*[[:alpha:]]








练习:
1.显示所有以a或m 开头的文件
[am]*

2.显示所有文件中包含了数字的文件
ls   *[0-9]*
或者
ls *[[:digit:]]*
3.显示所有数字结尾且文件中不包含空白的文件

























### 关于 `.sh` 和 `.bash` 文件的区别及用途 `.sh` 和 `.bash` 都是用来表示脚本文件的扩展名,它们的主要区别在于所使用的解释器以及兼容性和特定功能的支持。 #### 解释器的选择 - **`.sh` 文件** 这种类型的文件通常由 POSIX 标准定义的 `sh` 解释器来解析。尽管现代系统上 `/bin/sh` 很可能指向的是 Bash 或其他更高级的 shell 实现,但从理论上讲,它应该遵循 POSIX 标准[^1]。 - **`.bash` 文件** 此类文件明确指定使用 Bash 解释器 (`/bin/bash`) 来执行脚本。Bash 是一种增强型的 shell,支持更多特性,比如数组、复杂字符串操作和改进的条件测试等功能[^3]。 #### 脚本头部声明 (Shebang) 为了确保脚本能够按照预期方式运行,在创建这些脚本时需要在首行加入 shebang 行: 对于 `.sh` 文件: ```bash #!/bin/sh echo "This is a sh script" ``` 而对于 `.bash` 文件,则应写成如下形式: ```bash #!/bin/bash echo "This is a bash script with advanced features like arrays." declare -a myArray=("element1" "element2") # Array declaration only available in bash. for i in "${myArray[@]}"; do echo "$i" done ``` 上述例子展示了如何利用仅限于 Bash特性——数组处理[^4]。 #### 可移植性与兼容性考虑 由于历史原因,某些老旧 Unix 系统上的默认 shell 并不是 Bash ,而是原始版本或者其它实现的 Bourne Shell 。因此如果希望编写具有广泛适用性的脚本,最好采用 `.sh` 后缀并严格遵守 POSIX 规范[^2]。然而,在绝大多数当代 Linux 发行版中,默认安装的就是 GNU Bash ,所以开发人员往往倾向于充分利用其额外的功能而选用 `.bash` 结尾命名自己的脚本文件[^5]。 #### 总结 虽然技术层面上二者并无绝对界限,但习惯上会依据实际需求选择合适的后缀名以便清晰表达意图。当追求最大化的跨平台适应能力时推荐使用 `.sh`; 如果项目允许依赖具体环境并且确实需要用到那些专属特有属性的话则可以选择 `.bash`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值