一、命令行展开
~ : 自动展开为用户的主目录,或指定的用户的主目录 ;
{}: 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
eg.
创建目录 /tmp/x , /tmp/x/y1 , /tmp/x/y2 , /tmp/x/y1/a , /tmp/x/y1/b
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2} mkdir: created directory ‘/tmp/x’ mkdir: created directory ‘/tmp/x/y1’ mkdir: created directory ‘/tmp/x/y1/a’ mkdir: created directory ‘/tmp/x/y1/b’ mkdir: created directory ‘/tmp/x/y2’ [root@localhost ~]# tree /tmp/x /tmp/x ├── y1 │ ├── a │ └── b └── y2 4 directories, 0 files [root@localhost ~]# [root@localhost ~]# mkdir -v {a,c}_{b,d} mkdir: created directory ‘a_b’ mkdir: created directory ‘a_d’ mkdir: created directory ‘c_b’ mkdir: created directory ‘c_d’ [root@localhost ~]#
创建如下结构的目录:
[root@localhost ~]# tree /tmp/mysysroot /tmp/mysysroot ├── bin ├── etc │ └── sysconfig │ └── network-scripts ├── sbin ├── usr │ ├── bin │ ├── lib │ ├── lib64 │ ├── local │ │ ├── bin │ │ ├── etc │ │ ├── lib │ │ └── sbin │ └── sbin └── var ├── cache ├── log └── run 19 directories, 0 files [root@localhost ~]#
创建过程如下:
[root@localhost ~]# mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}} mkdir: created directory ‘/tmp/mysysroot’ mkdir: created directory ‘/tmp/mysysroot/bin’ mkdir: created directory ‘/tmp/mysysroot/sbin’ mkdir: created directory ‘/tmp/mysysroot/etc’ mkdir: created directory ‘/tmp/mysysroot/etc/sysconfig’ mkdir: created directory ‘/tmp/mysysroot/etc/sysconfig/network-scripts’ mkdir: created directory ‘/tmp/mysysroot/usr’ mkdir: created directory ‘/tmp/mysysroot/usr/bin’ mkdir: created directory ‘/tmp/mysysroot/usr/sbin’ mkdir: created directory ‘/tmp/mysysroot/usr/local’ mkdir: created directory ‘/tmp/mysysroot/usr/local/bin’ mkdir: created directory ‘/tmp/mysysroot/usr/local/sbin’ mkdir: created directory ‘/tmp/mysysroot/usr/local/etc’ mkdir: created directory ‘/tmp/mysysroot/usr/local/lib’ mkdir: created directory ‘/tmp/mysysroot/usr/lib’ mkdir: created directory ‘/tmp/mysysroot/usr/lib64’ mkdir: created directory ‘/tmp/mysysroot/var’ mkdir: created directory ‘/tmp/mysysroot/var/cache’ mkdir: created directory ‘/tmp/mysysroot/var/log’ mkdir: created directory ‘/tmp/mysysroot/var/run’
tree – list contents of directories in a tree-like format.
tree [-acdfghilnpqrstuvxACDFQNSUX] [-L level [-R]] [-H baseHREF] [-T title] [-o filename] [–nolinks]
[-P pattern] [-I pattern] [–inodes] [–device] [–noreport] [–dirsfirst] [–version] [–help]
[–filelimit #] [–si] [–prune] [–du] [–timefmt format] [directory …]
OPTION:
-L level : 指定要显示的层级;不指定,则默认显示所有目录层级;
eg. 列出 /etc 目录下的2层结构树: [root@localhost ~]# tree -L 2 /etc /etc ├── adjtime ├── aliases ├── aliases.db ├── alternatives │ ├── ld -> /usr/bin/ld.bfd │ ├── libnssckbi.so.x86_64 -> /usr/lib64/pkcs11/p11-kit-trust.so │ ├── mta -> /usr/sbin/sendmail.postfix │ ├── mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz │ ├── mta-mailq -> /usr/bin/mailq.postfix │ ├── mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz │ ├── mta-newaliases -> /usr/bin/newaliases.postfix │ ├── mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz │ ├── mta-pam -> /etc/pam.d/smtp.postfix │ ├── mta-rmail -> /usr/bin/rmail.postfix ....... ├── anacrontab ├── asound.conf ├── at.deny ├── audisp │ ├── audispd.conf │ └── plugins.d ├── audit │ ├── auditd.conf │ ├── audit.rules │ ├── audit-stop.rules │ └── rules.d ....... ├── yum.conf └── yum.repos.d ├── CentOS-Base.repo ├── CentOS-CR.repo ├── CentOS-Debuginfo.repo ├── CentOS-fasttrack.repo ├── CentOS-Media.repo ├── CentOS-Sources.repo ├── CentOS-Vault.repo ├── epel.repo └── epel-testing.repo 172 directories, 372 files [root@localhost ~]#
二、命令的执行状态结果
1、命令执行的状态结果,bash通过状态返回值来输出此结果;
>> 成功 : 0
>> 失败 : 1-255
2、命令执行完成后,其状态返回值保存于bash的特殊变量 $? 中;
eg. [root@localhost ~]# cd /etc [root@localhost etc]# echo $? 0 [root@localhost etc]# cddd /etc -bash: cddd: command not found [root@localhost etc]# echo $? 127 [root@localhost etc]# cd /etttt -bash: cd: /etttt: No such file or directory [root@localhost etc]# echo $? 1 [root@localhost etc]#
PS : 注意区分命令执行结果与命令执行的状态结果2者的区别
> 命令正常执行后,有的还返回有命令执行结果,即命令返回值;
> 根据命令及其功能不同,命令的执行结果各不相同;
[root@localhost ~]# ls a_b anaconda-ks.cfg c_d nginx-1.12.2.tar.gz php-7.0.26.tar.bz2 a_d c_b mysql-boost-5.7.20.tar.gz pcre-8.41.tar.bz2 [root@localhost ~]# echo $? 0 [root@localhost ~]#
3、引用命令的执行结果
> $(COMMAND)
> `COMMAND`
~]# mkdir $(date +%H-%M-%S)
~]# ABC=`date +%H-%M-%S`
三、引用
> 强引用 : ” 不做变量的替换;
> 弱引用 : “” 做变量替换,引用变量的值;
> 命令引用: “ 反引号;
四、快捷键
> Ctrl + a : 跳转至命令行行首
> Ctrl + e : 跳转至命令行行尾
> Ctrl + u : 删除行首至光标所在处之间的所有字符;
> Ctrl + k : 删除光标所在处至行尾的所有字符;
> Ctrl + l : 清屏,相当于 clear ;