Shell基础(二)

  1. 命令行自动补全(使用Tab键可以自动补全命令)
  2. 命令历史记录(使用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实用教程》人民邮电出版社出版发行 於岳编著

转载于:https://www.cnblogs.com/mylive/p/11204757.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值