别名
别名最大的好处就是省去一大堆写法,例如mac中没有”ll”的写法,alias ll 'ls -l'
这样的话,以后敲”ll”就可以得到当前目录文件的长格式显示而不必打”ls -l”修改别名使用alias进行快速修改,但是重启系统后就会失效,这是临时修改。
如果想要永久修改,需要修改配置文件~/.bashrc,在里面对应处添加alias命令。
想要让刚修改的.bashrc文件生效,执行source .bashrc
将配置文件重新加载一遍就可以了。unalias ll
删除别名命令生效顺序
如果你alias ls 'ls -ah'
,那么当你执行ls的时候是执行别名还是bash的基本命令呢?这里有一个执行优先级顺序:
第一顺位执行绝对路径或者相对路径的命令
第二顺位执行别名
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量设置定义的目录顺序的第一个命令快捷键
ctrl + c 强制终止
ctrl + l 清屏相当于clear
ctrl + a 光标快速回到行首(命令敲了一长串发现第一个字母打错了,光标瞬间回到最前面)
ctrl + e 光标快速去到行尾(光标回到最后面)
ctrl + u 从光标所在位置删除到行首(把当前一长串输入的命令清空)
ctrl + z 把命令放入后台–这个命令很谨慎使用
ctrl + r 历史命令搜索
- 历史命令
history [选项] [历史命令保存文件]
-c 清空历史命令(一般不清空)
-w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
基本调用:
上下箭头来重复调用
!n 来执行第n条历史命令(命令`history`显示历史命令,前面有个序号n)
!! 重复执行上一条命令
!字符串 重复执行后一个该串开头的命令(例如执行了`ls -a` `ls -ah`, 当你执行`!ls`,就是执行最近的一条即`ls -ah`)
# 直接cat ~./history时, 该文件下记录的命令是上次登录, 正确注销之后保存的
# 使用history 命令查看的, 不止有之前保存下来的, 还有本次登录后新操作的命令, 这些命令只有本次正确退出之后才会写入 ~./bash_history
#默认保存1000条
#vi /etc/profile 环境变量配置文件
HISTSIZE=1000 //更改历史命令默认保存数量
- 输出重定向
- 命令 >(>>) 文件 2>&1 覆盖(追加)方式把命令的正确输出 输出到指定文件或设备中
- 命令 &>(&>>)文件 覆盖(追加)方式把命令的正确输出 输出到指定文件或设备中
- 命令 >>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中
- 命令 &> /dev/null 将命令的结果丢入null(作用类似于垃圾箱)中 只执行,不显示
解释:命令1和命令2的实现的效果是一样的。 >代表覆盖 >>代表追加
- 管道符 “|”
- 铺垫:
a. “;”连接命令 顺序执行
b. “&&”连接命令 逻辑与 执行 第一条执行 第二条执行 第一条错误 第二条不执行
c. “||”连接命令 逻辑或 执行 第一条执行 第二条不执行 第一条错误 第二条执行
小技巧:脚本中的应用:命令 && echo yes || echo no 命令正确yes 错误no - more [文件名] “分页显示文件内容”
- “|” 管道符:
命令1|命令2
命令1正确的结果 作为命令2的操作对象 - “|” 管道符 命令1|命令2 命令1正确的结果 作为命令2的操作对象
例如ls -l > /etc/ | more
用于分页显示命令执行结果
netstat -an | grep ESTABLISHED | wc -l
用于查看当前连接本机的客户端 并 统计客户端数量”
- 铺垫:
-通配符
主要针对的是文件名或目录名的搜索
1.? 匹配任意一个字符
2.* 匹配0个或任意多个字符
3.[] 匹配括号中任意一个字符
4.[-]匹配括号中任意一个字符,-代表一个范围
5.[^]匹配不是括号中任意一个字符
例如:ls abc*
查找以abc开头的文件或目录
- Bash中其他特殊符号
'' 单引号,在单引号中左右的特殊符号,如$,&都没有特殊含义
"" 双引号,在双引号中左右的特殊符号都没有特殊含义,但是“$”,"`","\"是例外。拥有“调用变量的值”,“引用命令”和“转义符”的特殊含义。
例如:`aa = 123 && echo "$aa"`
`` 反引号,反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样。
例如:`aa=`ls` && echo "$aa"`
$() 用来引用系统命令
例如:`aa=$(ls) && echo "$aa"`
# 在Shell脚本中,#开头的行代表注释
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出"$"符号