(一)bash的基础特性:
1.命令历史:history
-d:删除历史中指定的命令
-c:清空历史
history #:显示历史中最近的#条命令
2.调用历史命令:
!#:重复执行第#条指令
!!:上一条命令
!name:调用历史中最近一个以name开头的命令
ctrl+p:上一条命令
修改环境变量值的方式:export
如:export HUSTCONTROL="ignoredups"
如:export name="值”
3.命令,路径补全:按TAP,不是唯一时,再按一次TAP,出现补全列表
4.命令行展开:
~:展开为user的主目录
~USERNAME:展开为指定user的主目录
{}:课承载一个一逗号分隔的列表,并将其展开为多个路径
比如:创建/tmp目录下的:a_c, a_d, b_c, b_d目录,a_c目录下的a_c, a_d, b_c, b_d文件。
(二)bash的基础特性:
1.命令别名:alias
alias NAME="VALUE" :定义别名name,相当于执行命令value
note:定义别名,仅对当前shell进程有效。如果想永久有效,要定义配置文件。
仅对当前user:~/.bashrc
对所有用户有效:/etc/bashrc
撤销别名:unalias
unalias [-a] name [mame.....]
note:如果别名同原命令的名称,则要执行原命令可使用“\COMMAND”
2.glob(globbing)bash中实现文件名“通配”
*:任意长度的任意字符,如:a*b:ab,a123b,a12b(a开头,b结尾)
?:任意单个字符,如a?b:a和b之间只有一个字符,a??b:a和b之间只有两个字符
[ ]:匹配指定范围内的任意单个字符,如【0-9】,【a-z】不区分大小写,【A-Z】只大写字母
[^ ]:匹配指定范围外的任意单个字符,如【^0-9】,[^a-z],[^0-9 a-z]
专用字符合集:[:digit:]
[:lower:]:任意数字,相当于0-9
[:upper:]:任意小写字母
[:alpha:]:任意大写字母
[:alnum:]:任意数字或字母
[:space:]:空格
[:punct:]:标点符号
3.bash的I/O重定向及管道
输出重定向
COMMANO > NEW_POS :覆盖重定向,目标文件中的原有内容会被清除
COMMANO >> NEW_POS :追加重定向,新内容会追加至文件尾部
set -C:禁止将内容覆盖输出至已有文件中
>|:强制覆盖
set -C:关掉
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
&>:覆盖重定向
&>>:追加重定向
输入重定向:<
tr命令:转换或者删除字符
tr [OPTION] ........ SET [SET2]
HERE Documentatio:<<
cat << EOF
cat > /path/to/somefile << EOF
管道:COMMAND1 | COMMAND2 | COMMANOD3 | ........
note:最后一个命令会在当前shell进程的子shell进程中执行
tee命令:tee [OPTION] ......[FILE]....... 一个输入两个输出
note:tee是强覆盖的输出
4.bash提供了编程环境
bash脚本:文本文件
#! /bin/bash #! /esr/python
#! /usr/bin/perl
逻辑运算:
与(&&):1 1 =1
1 0 =0
0 1 =0
0 0 =0
或(||):1 1 =1
1 0 =1
0 1 =1
0 0 =0
非(!):1 = 0
0 = 1
短路运算:
与(&&):第一个为0,结果必定为0
第一个为1,第二个必须参与运算
或(||):第一个为1,结果必定为1
第一个为0,第二个必须参与运算
来做个简单的脚本
还可以这么改把创建用户当变量
总结:不在学习中爆发,就在学习中灭亡,加油!加油!加油!