目录
1.补全
命令补全:在给定的一个打头的字符串,敲击Tab键,如果这个字符串能够唯一标识程序文件,直接补全。如果不能唯一标识程序文件,需要再次敲击Tab键,会给出列表。
路径补全:在给定的起始路径下,以对应路径下的打头的字符串逐一匹配给定的起始路径下的每一个文件。敲击Tab键,如果能够唯一标识,直接补全。否则再次敲击Tab键,给出列表。
2.快捷键
Ctrl+l 清 Ctrl+c 终止前台运行的程序 Ctrl+a 光标移动到命令行的最前端 Ctrl+e 光标移动到命令行的最后端 Ctrl+d 退出 Ctrl+r 搜索历史命令,利用关键词 Ctrl+u 删除光标前的字符 Ctrl+k 删除光标后的字符
3.命令历史
命令历史(history):shell进程会在其会话中保存此前用户提交执行过的命令。
变量: 查看变量的方法:echo $变量名
HISTSIZE:shell进程可保留的命令历史的条数;
[root@localhost ~]# echo $HISTSIZE
1000HISTFILE:持久保存命令历史的文件;
[root@localhost ~]# echo $HISTFILE
/root/.bash_historyHISTFILESIZE:命令历史文件的大小
[root@localhost ~]# echo $HISTFILESIZE
1000
history:
命令历史列表: shell进程中保留的命令历史
命令历史文件:.bash_history 非实时
history 查看历史命令: [root@localhost ~]# history
-c 清空命令历史列表 :[root@localhost ~]# history -c
-d offset 指定删除命令历史:[root@localhost ~]# history -d 1 删除第一条命令
-r 从命令历史文件中读取命令历史到命令历史列表:[root@localhost ~]# history -r-w 把历史列表中的命令追加到历史文件中:[root@localhost ~]# history -w
!! 在一次执行上一次命令:[root@localhost ~]# !!
!# 执行命令历史列表中的第#命令:[root@localhost ~]# !1
! string 再一次执行命令历史列表中最近一个以string打头的命令:[root@localhost ~]# ! string
!$ 调用上一个命令的最后一个参数 快捷键:Esc+. Esc键加点号:[root@localhost ~]# !$
控制命令历史记录的方式
HISTCONTROL
ignoredups 忽略重复命令:[root@localhost ~]# HISTCONTROL='ignoredups'
ignorespace 忽略以空白开头的命令:[root@localhost ~]# HISTCONTROL='ignorespace'
ignoreboth 以上两者都有效:[root@localhost ~]# HISTCONTROL='ignoreboth'
修改变量方法:只在当前shell环境有效
NAME='VALUE'
HISTCONTROL='ignorespace'
4.命令别名
查看命令别名 alias:[root@localhost ~]# alias
定义别名 alias NAME='commond' 在当前shell环境有效:[root@localhost ~]# alias NAME='commond'
撤销别名 unalias:[root@localhost ~]# unalias NAME
永久生效别名 vi /etc/bashrc 添加一行 alias NAME='commond' 重载 source /etc/bashrc跳过别名 执行原有命令\command
5.特殊符号
| :管道符 把上一个命令的执行结果当作下一个命令的输入
[root@localhost ~]# ip a | grep "inet"
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute
tee :可以把执行中的信息保留下来[root@localhost ~]# ip a | grep "inet" | tee file
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute[root@localhost ~]# cat file
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute. :在Linux中代表当前目录
.. :在Linux中代表上一级目录
; :在Linux中执行多条命令时可以用分号隔开,每个命令之间互不干扰,所有命令都会执行
`` :反单引号 命令交替,反单引号引起的内容当作命令执行
'' :单引号 强引用,不做变量替换
[root@localhost ~]# echo '$SHELL'
$SHELL
"" :双引号 若引用,可以实现命令替换
[root@localhost ~]# echo "$SHELL"
/bin/bash{} :做扩展使用
* :通配作用
[root@localhost ~]# ls a*
anaconda-ks.cfg
6.重定向
Linux提供的三种I/O设备
STDIN 标准输入 0 默认来自于键盘
STDOUT 标准输出 1 默认到终端窗口
STDERR 标准错误 2 默认到终端窗口
[root@localhost ~]# cd /dev/
[root@localhost dev]# ll
lrwxrwxrwx. 1 root root 15 Jan 19 15:48 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Jan 19 15:48 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Jan 19 15:48 stdout -> /proc/self/fd/1
正确输出重定向
1> 覆盖 1>>追加
[root@localhost dev]# date
Wed Jan 19 18:58:47 CST 2022
[root@localhost dev]# date 1> date.file
[root@localhost dev]# cat date.file
Wed Jan 19 18:58:58 CST 2022[root@localhost tmp]# ls /home/
[root@localhost tmp]# ls /aaaa
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# ls /home/ /aaaa
ls: cannot access /aaaa: No such file or directory
/home/:
[root@localhost tmp]# ls /home/ /aaaa 1> stdout
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# cat stdout
/home/:[root@localhost tmp]# ls /home/ /aaaa 1>> stdout
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# cat stdout
/home/:
/home/:
错误输出重定向
2> 覆盖 2>>追加
[root@localhost tmp]# ls /home/ /aaaa 2> stderr
/home/:
[root@localhost tmp]# cat stderr
ls: cannot access /aaaa: No such file or directory[root@localhost tmp]# ls /home/ /aaaa 2>> stderr
/home/:
[root@localhost tmp]# cat stderr
ls: cannot access /aaaa: No such file or directory
ls: cannot access /aaaa: No such file or directory
正确输出和错误混合输出
&> 2>&1(1>&2)
[root@localhost tmp]# ls /home/ /aaaa &> std
[root@localhost tmp]# cat std
ls: cannot access /aaaa: No such file or directory
/home/:
7.命令行通配符
* :匹配任意长度的任意字符? :匹配任意单个字符
[] :匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符
[0-9] :所有数字
[a-z] :aAbBcC...z
[A-Z] :AbBcC...zZ
[[:lower:]] :小写字母
[[:upper:]] :大写字母
[[:digit:]] :数字
[[:alpha:]] :所有字母
[[:punct:]] :标点符号
[[:alnum:]] :数字+字母
[[:space:]] :空白字符
[^[:lower:]] :除小写字母