1. 命令行扩展
1.1 `` 和 $()
$(CMD) OR ` CMD `
比较"" '' `` 三者的区别
结论
- 单引号:变量和命令都不认识,当做普通字符串
- 反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的 命令继续
- 双引号:不能识别命令,可以识别变量
[root@centos7 ~]# echo "echo $HOSTNAME"
echo centos7
[root@centos7 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@centos7 ~]# echo `echo $HOSTNAME`
centos7
[root@centos7 ~]# echo "i'm $(hostname)"
i'm centos7
[root@centos7 ~]# echo "i'am `whoami`"
i'am root
[root@centos7 ~]# echo `hostname`-`date +%F`
centos7-2020-11-06
$( ) 和 ``
[root@centos7 ~]# touch `date +%F`.txt
[root@centos7 ~]# ll
-rw-r--r--. 1 root root 0 11月 6 22:06 2020-11-06.log
-rw-r--r--. 1 root root 0 11月 6 22:19 2020-11-06.txt
[root@centos7 ~]# ll $(echo $(date +%F).txt)
-rw-r--r--. 1 root root 0 11月 6 22:17 2020-11-06.txt
[root@centos7 ~]# ll `echo $(date +%F).txt`
-rw-r--r--. 1 root root 0 11月 6 22:17 2020-11-06.txt
[root@centos7 ~]# ll $(echo `date +%F`.txt)
-rw-r--r--. 1 root root 0 11月 6 22:17 2020-11-06.txt
2. 括号扩展:{ }
{} 可以实现打印重复字符串的简化形式
[root@centos7 ~]# echo file{1,3,4}
file1 file3 file4
[root@centos7 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@centos7 ~]# echo {1..10..2}
1 3 5 7 9
[root@centos7 ~]# echo {000..10..2}
000 002 004 006 008 010
[root@centos7 ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
3. 双击TAB键
- command 2Tab 所有子命令或文件补全
- string2Tab 以string开头命令
- /2Tab 显示所有根目录下一级目录,包括隐藏目录
- ./2Tab 当前目录下子目录,包括隐藏目录
- *2Tab 当前目录下子目录,不包括隐藏目录
- ~2Tab 所有用户列表
- $2Tab 所有变量
- @2Tab /etc/hosts记录 (centos7 不支持)
- =2Tab 相当于ls –A (centos7不支持)
4. 命令行历史 history
4.1 选项
- -c: 清空命令历史
- -d offset: 删除历史中指定的第offset个命令
- n: 显示最近的n条历史
- -a: 追加本次会话新执行的命令历史列表至历史文件
- -r: 读历史文件附加到历史列表
- -w: 保存历史列表到指定的历史文件
- -n: 读历史文件中未读过的行到历史列表
- -p: 展开历史参数成多行,但不存在历史列表中
4.2 命令历史相关环境变量
- HISTSIZE:命令历史记录的条数
- HISTFILE:指定历史文件,默认为~/.bash_history HISTFILESIZE:命令历史文件记录历史的条数 HISTTIMEFORMAT="%F %T
whoami
" 显示时间和用户 HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史 H - ISTCONTROL:控制命令历史的记录方式
4.3 持久保存变量
以上变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile
4.4 调用命令行历史
- 重复前一个命令的方法
!!
!-1
Ctrl+p
- 执行对应序号命令
!n
- 执行倒数几行命令
!-n
- 打印输出上一条命令的最后一个参数
!$
- 打印输出上一条命令的所有参数
!\*
- 来在命令历史中搜索命令
Ctrl-r
- 从历史搜索模式退出
Ctrl+g