您的位置:首页 > 运维架构 > Linux

002. Linux基础二 (命令行/括号拓展、TAB、history)

明月当空 2020-11-06 22:47 316 查看 https://blog.51cto.com/abyssce

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
标签: