- 命令行自动补全(使用Tab键可以自动补全命令)
- 命令历史记录(使用history命令)
命令语法:history [选项]
选项 | 含义 |
---|---|
-c | 清楚命令历史记录 |
-w | 将当前历史命令记录写到.bash_history文件,覆盖.bash_history文件的内容 |
-a | 讲目前新增的history命令写入.bash_history文件 |
n | 显示最近n个命令历史记录,n代表数字 |
-r | 读取历史文件的内容,并把它们作为当前历史 |
举例 | 描述 |
---|---|
!! | 运行上一个命令 |
!6 | 运行第6个命令 |
!8 /test | 运行第8个命令并在命令后面加上/test |
!?CF? | 运行上一个包含CF字符串的命令 |
!ls | 运行上一个ls命令(或以ls开头的历史命令) |
!ls:s/CF/G | 运行上一个ls命令,其中把CF替换成G |
fc | 编辑并运行上一个历史命令 |
fc 6 | 编辑并运行第6条历史命令 |
^ boot^ root^ | 快速替换。将最后一个命令中的boot替换为root后运行 |
!-5 | 运行倒数第5个命令 |
!$ | 运行前一个命令最后的参数 |
快捷键或组合键 | 描述 |
---|---|
(向上方向箭) | 查看上一个命令 |
(向下方向箭) | 查看下一个命令 |
Ctrl+p | 查看历史列表中的上一个命令 |
Ctrl+n | 查看历史类别的下一个命令 |
Ctrl+r | 向上搜索历史列表 |
Alt+p | 向上搜索历史列表 |
Alt+> | 移动到历史列表末尾 |
命令排列
- ;
- &&
1.使用;命令时先执行命令1,不过命令1是否出错,接下来就执行命令2
命令语法:命令1;命令2
例如:使用排列命令;同时执行两个命令(先在屏幕上列出/boot目录中的内容,如何列出目录/root及其子目录所占用的磁盘空间大小)
[root@localhost ~]# ls /boot;du -hs /root
config-3.10.0-957.el7.x86_64 initramfs-3.10.0-957.el7.x86_64.img
efi symvers-3.10.0-957.el7.x86_64.gz
grub System.map-3.10.0-957.el7.x86_64
grub2 vmlinuz-0-rescue-7ad525c9157940e3847220b1bdb8be06
initramfs-0-rescue-7ad525c9157940e3847220b1bdb8be06.img vmlinuz-3.10.0-957.el7.x86_64
100M /root
2.使用&&命令时,只有当命令1正确运行完毕后,才能执行命令2
命令语法:命令1&&命令2
例如:同时执行两个命令(运行第一个命令因为没有找到那个文件或目录,第二个命令就没有运行)
[root@localhost ~]# ls -a /root/bogusdir&&du-sh
ls: cannot access /root/bogusdir: No such file or directory
命令替换
- $()
- `
1.使用$()命令语法:
命令1$(命令2)
举个例子:杀死一个名为less的进程前先得用命令pidof找出相应的进程号,然后以这个进程号为参数运行kill命令,这样可以结束less进程,如下
[root@localhost ~]# pidof less
7552
[root@localhost ~]# kill -9 7552
使用命令替换功能杀死less进程
[root@localhost ~]# kill -9 $(pidof less)
pidof less命令的输出7552作为命令kill -9的参数,然后就可以杀死该进程了。
2.使用(位于Tab键上面的键) 命令语法: 命令1
命令2` 例如:使用命令替换功能杀死less进程
[root@localhost ~]# kill -9 `pidof less`
这样虽然可以减少输入,但可读性差,而且容易和没有替换功能的一般单引号混淆。
命令别名
1.使用别名,命令语法:
alias [别名]=[需要定义别名的命令]
例如:为ls /boot创建别名ok
[root@localhost ~]# alias ok="ls /boot"
[root@localhost ~]# ok
config-3.10.0-957.el7.x86_64 initramfs-3.10.0-957.el7.x86_64.img
efi symvers-3.10.0-957.el7.x86_64.gz
grub System.map-3.10.0-957.el7.x86_64
grub2 vmlinuz-0-rescue-7ad525c9157940e3847220b1bdb8be06
initramfs-0-rescue-7ad525c9157940e3847220b1bdb8be06.img vmlinuz-3.10.0-957.el7.x86_64
注意:需定义的别名命令用双引号括起来。
2.取消别名命令语法:
unalias [别名] 例如:取消之前的别名ok
[root@localhost ~]# unalias ok
[root@localhost ~]# ok
-bash: ok: command not found
在重新启动计算机系统以及关闭终端,定义的别名会失效。若系统中有一个命令,同时又定义了一个与其同名的别名,则别名将优先于系统中原有的命令执行。 扩展:如果希望重启计算机以及关闭终端后,定义别名仍旧生效,则可以编辑/etc/bashrc(针对系统中所有用户)或$HOME/.bashrc(针对某一个指定用户,$HOME代表用户主目录,将别名定义命令写道这两个文件中。)
文件名匹
- 通配符*可匹配一个或多个字符。 例如:使用rm命令删除当前目录下所有以字符串“.bak”结尾的文件
[root@localhost ~]# rm *.bak
比如删除所有包含“4”.bak的文件
[root@localhost ~]# rm *.bak
- 通配符?,一个问号只能代表一个字符。 例如:列出所有在点号后面有四个字符的文件
[root@localhost ~]# ls *.????
管道
命令语法:[命令1] [命令2] [命令3]
例如:使用简单管道(分页显示/etc目录内容)
[root@localhost ~]# ls /etc|more
使用复杂管道(分页过滤显示安装在系统上的RPM包)
[root@localhost ~]# rpm -qa|grep a|more
重定向
- 输出重定向
- 输入重定向
- 错误重定向
- 同时实现输出和错误重定向
输出重定向:将某一命令执行的输出保存到文件中,如果已经存在相同的文件,那么覆盖源文件中的内容
命令语法:命令 > 文件
例如:使用输出重定向将/boot目录的内容保存到/root/abc文件中
[root@localhost ~]# ls /boot > /root/abc
- 输出追加重定向:将某一命令执行的输出添加到已经存在的文件中。
命令语法:[命令] >> [文件]
例如:使用输出追加重定向将Linux数据写入文件/root/ao
[root@localhost ~]# echo Hello > /root/ao
[root@localhost ~]# echo Linux >> /root/ao
[root@localhost ~]# cat /root/ao
Hello
Linux
- 输入重定向:将某一文件的内容作为命令的输入
命令语法:命令 < 文件
例如:使用输入重定向将文件/root/mm的内容作为输入让cat命令执行
[root@localhost ~]# cat < /root/mm
Hello
- 输入追加重定向
命令语法:命令 << 分隔符
文本内容
分隔符
例如:使用输入追加重定向创建/root/bc文件,输入Hello Linux,分隔符使用EOF
[root@localhost ~]# cat > /root/bc << EOF
> Hello Linux
> EOF
[root@localhost ~]# cat /root/bc
Hello Linux
- 错误重定向:将某一命令执行的出错信息输出到指定文件中
命令语法:命令 2> 文件
例如:查看根本不存在的/root/kk文件,出现报错信息,将其保存到文件/root/b中
[root@localhost ~]# cat /root/kk 2> /root/b
[root@localhost ~]# cat /root/b
cat: /root/kk: No such file or directory
- 错误追加重定向:将某一命令执行的出错信息添加到已经存在的文件中
命令语法:命令 2>> 文件
例如:使用错误追加重定向,将执行命令的多次出错信息保存到/root/b文件
[root@localhost ~]# cat /root/kk 2> /root/b
[root@localhost ~]# cat /root/kk 2>> /root/b
[root@localhost ~]# cat /root/b
cat: /root/kk: No such file or directory
cat: /root/kk: No such file or directory
- 同时实现输出和错误重定向
命令语法:命令 &> 文件
例如:同时使用输出和错误重定向列出/boot目录内容到/root/kk文件中
[root@localhost ~]# ls /boot &> /root/kk
同时使用输出和错误重定向列出/nn目录内容到/root/oo文件中
[root@localhost ~]# cat /root/oo
ls: cannot access /nn: No such file or directory
摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著