一、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:]:标点符号