最全面总结bash的七大特性

一、Tab补全

tab补全可以用于文件补全,也可以用于路径补全,还可以补全命令。

如果我们输入的头几个字母是唯一标识,则按一下Tab自动补全,否则要多按一下,出来的是含有我们输入的字母的一些文件或者是路径

比如说:


[root@localhost /]# cd /e                      按一下tab就可以补全,因为/下只有一个以e开头的目录


[root@localhost /]# cd /etc/                      这是结果


但是如果有多个

[root@localhost /]# cd /b                 就要按两下tab,出来提示的路径或者文件
bin/ boot/
[root@localhost /]# cd /b


命令补全就是这样,我觉得一般会出现提示,很多时候而不会补全

[root@localhost /]# ta
tabs tac tail tailf tar taskset
[root@localhost /]# ta


关于Tab,我发现还有一个特性

直接双击Tab     会显示一些命令?应该是命令

在/双击Tab      显示/下的目录

[root@localhost tmp]# /
bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ usr/


$双击Tab         显示变量

[root@localhost tmp]# $
$_ $DIRSTACK $LS_COLORS $SECONDS
$BASH $EUID $MACHTYPE $SELINUX_LEVEL_REQUESTED
$BASH_ALIASES $GROUPS $MAIL $SELINUX_ROLE_REQUESTED
$BASH_ARGC $HISTCMD $MAILCHECK $SELINUX_USE_CURRENT_RANGE
$BASH_ARGV $HISTCONTROL $OLDPWD $SHELL
$BASH_CMDS $HISTFILE $OPTERR $SHELLOPTS
$BASH_COMMAND $HISTFILESIZE $OPTIND $SHLVL
$BASH_LINENO $HISTSIZE $OSTYPE $SSH_CLIENT
$BASHOPTS $HOME $PATH $SSH_CONNECTION
$BASHPID $HOSTNAME $PIPESTATUS $SSH_TTY
$BASH_SOURCE $HOSTTYPE $PPID $TERM
$BASH_SUBSHELL $IFS $PROMPT_COMMAND $UID
$BASH_VERSINFO $LANG $PS1 $USER
$BASH_VERSION $LESSOPEN $PS2 $XDG_RUNTIME_DIR
$colors $LINENO $PS4 $XDG_SESSION_ID
$COLUMNS $LINES $PWD
$COMP_WORDBREAKS $LOGNAME $RANDOM


二、查看命令的执行情况

bash通过状态返回值来输出次结果

       成功:0

       失败:1-255

       命令执行完成后,其状态返回值保存于bash的特殊变量$?

执行中中断是130,

[root@localhost ~]# ls /media/Packages/
^C
[root@localhost ~]# echo $?
130


命令错误是127

[root@localhost ~]# echo $?
127
[root@localhost ~]# sasa
-bash: sasa: command not found
[root@localhost ~]# echo $?
127


三、命令行历史

命令历史一般记录在.bash_history文件中,默认记录1000条

当前shell中的历史记录会被记录在内存中,只有退出之后才会保存在.bash_history中

history命令,查看内存中的历史记录

-c:清空命令历史

-d n:删除历史中指定的第n个命令

[root@localhost ~]# history
 1 history
 2 cat .bash_history
 3 history
[root@localhost ~]# history -d 2
[root@localhost ~]# history
 1 history
 2 history
 3 history -d 2
 4 history


调用上一次命令的参数

ESC.

!$

!!      执行上一条命令

!xxx:再一次执行命令历史列表中最近一个以xxx开头的命令

!n       执行history里面第n条命令

[root@localhost ~]# !8
cat /tmp/fstab


执行完之后不记录!8,只在第八条命令加*

[root@localhost ~]# history
 1 history
 2 history
 3 history -d 2
 4 history
 5 history 2
 6 history
 7 cat
 8* cat /tmp/fstab
 9 history

控制命令历史记录的方式:
 环境变量 HISTCONTROL
 echo $HISTCONTROL
 ignoredups:忽略重复的命令
 ignorespace:忽略以空白字符开头的命令
 ignoreboth:以上两者同时生效

         [root@localhost ~]# HISTCONTROL=ignoredups
         [root@localhost ~]# echo $HISTCONTROL
          ignoredups


四、命令行展开

              ~:当前用户的家目录

               ~USERNAME:  给定用户的家目录        比如cd ~      cd ~ nick 

              {}:可写一个以逗号分割的列表,将其展开为多个路径

               /tmp/{x/{a,b},y,z}  = /tmp/x/a/,/tmp/x,b  ,  /tmp/y/,/tmp/z/

五、快捷键

CTRL+l      清屏

CTRL+a     跳到行首

CTRL+e     跳到行末

CTRL+u    删除光标前面的内容

CTRL+k    删除光标后面的内容

CTRL+c    终止执行

CTRL+d    相当于exit,也可以终止执行

六、别名

在type一个命令的时候有时候出现像这样的

[root@localhost ~]# type ls
ls is aliased to `ls –color=auto’

ls是 ls–color的别名;

我们可以用alias查看现有的别名信息

我们也可以定义别名

alias   x=‘xx’

给xx命令取别名x(只在当前有效)

以后就可以按x来替代xx

[root@localhost ~]# alias k=’cat -n’
[root@localhost ~]# k /tmp/fstab
1
2 #
3 # /etc/fstab
4 # Created by anaconda on Sat Mar 31 17:44:44 2018
5 #
6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’
7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8 #
9 UUID=8c871ca3-ae83-463b-b8af-f282002eae08 / xfs defaults 0 0
10 UUID=f3445f8b-4d91-48b1-9586-d3f991e5f8cf /boot xfs defaults 0 0
11 UUID=3f5344d8-cf5a-4596-9acc-2ecd76cb2bec swap swap defaults 0 0
12 /dev/sr0 /media iso9660 defaults 0 0
13

我们也可以取消别名

unalias +别名就可以

[root@localhost ~]# unalias k

七、通配

         (1)  *  任意数量的字符 :  0+

                         a*b    a-b之间可以任意数量的字符,可以没有,也可以很多个

       (2)? 任意单个字符   : 1

                        a?b    a-b之间有且一个字符

        (3)[ ]   匹配指定范围内的任意单个字符 :  指定范围  1

                  [0-9] :  0-9之间任意单个字符

                  [a-z]:不区分字符大小写

         (4) [^]  匹配指定范围之外的任意单个字符 : 指定范围之外   1

                  [^0-9]   0-9之外的字符

                 [^a-z]    非大写和小写字母字符

          专用字符集合:(使用的时候需要外加 '[ ]')就像[[:digit:]]

                      [:digit:]:任意数字,相当于0-9

                      [:lower:]:任意小写字母

                      [:upper:]: 任意大写字母

                       [:alpha:]: 任意大小写字母

                        [:alnum:]:任意数字或字母

                         [:punct:]:标点符号

猜你喜欢

转载自blog.csdn.net/qq_41201816/article/details/80767451