shell 介绍及命令历史、命令补全和别名

本文详细介绍了Shell的基本概念,包括命令历史的存储方式、环境变量的作用、命令补全与别名设置等,帮助读者深入理解并高效利用Shell进行日常操作。

1、什么是 shell ?

 

8c05a0ab50468e07175a92f008030177d82.jpg

 

打开系统,输入 zs ,按下 Tab 键,出现下图命令 zsoelim ,

843ad720919dabef3f85d2d13ebaae0646c.jpg

说明没有 zsh 命令,这时候可以安装一下,先输入命令 yum list |grep zsh ,回车,搜索一下,

829fbe200f55430ebbd44e7628c2858c765.jpg

可以看出有 zsh 命令,也有 ksh 命令,这边我们就不安装了。

 

2、命令历史

 

3de1c3be9ad8841ba723ce04ae99dae235a.jpg

 

我们执行过的命令,实际上是有保存到一个文件的。按向上的方向键,可以查看之前的命令,那么这些命令在哪边被保存的呢?有一个文件在用户的加目录下,root 用户见下图,

00bca23a5a9c71d36e6bf85cd8a8e1a6332.jpg

可以 cat 查看,命令非常多,截取一部分,见下图,

924c643f22829987c8f5eaf737a3bf550d3.jpg

要想知道之前执行过的命令有多少条,可以用 history 命令查看,输入 history ,回车,截取一部分图品,见下图,

 6bd5bfc17a8ad224df94345b1f96ca45600.jpg

可以看到之前的历史是 672 条,那么这个文件 .bash_history 最大可以存储 1000 条命令。这一点可以通过环境变量 HISTSIZE 查询,见下图,

221a56f536b366729d5520a639328403629.jpg

还有一个命令 history -c ,可以把当前的历史命令清空,见下图,

7956ba6d5d6d89944cf643d759e51580525.jpg

那么该命令可以清空配置文件吗?输入命令 cat .bash_history ,回车,见下图,

f223f1486e950fc99f21028954fa17359a3.jpg

可以看到配置文件的内容,没有被清空,说明 history -c 命令仅仅是把内存当中的命令历史清空而已,此时使用向上方向键,也查看不到之前的历史命令,只有刚刚的几条命令。

4e5b862fecb96ff34ad8ae59e652989e8e1.jpg

那么我们执行过的命令,什么时候会保存到这个文件里去呢?举个例子,

3f53c6f58c7f2d1ee7cbf3b6d63e549f290.jpg

现在执行三次 ls 命令,然后再输入命令 cat .bash_history ,回车,

e6c26cb9729ab7d46788c9d85277145ee94.jpg

可以看到,这些命令的最后几行,并没有 ls ,再次使用 history 查看,见下图,

06e3bd0481000190507ad2a8857b462b89b.jpg

此时就可以看到 ls 命令,说明刚刚执行过的命令,目前只存在与内存中,只有退出终端之后,这些命令才可以保存到配置文件 .bash_history 中。

 

环境变量 HISTSIZE 去哪里定义呢?在 /etc/profile 中,使用 vi /etc/profile 命令进入,搜索一下HIST,

000361d98a1e4372fbf8e7facc824ae407f.jpg

HISTSIZE 默认的量是1000 。

d936d95cad1d33c85bcc65a5ae082a3b7de.jpg

觉得太少的话,可以改成5000 。按字母 i 进入编辑,完成之后,按 Esc 退出编辑,输入 :wq ,保存后退出。

371d59fe53c928cc1ecab56c54301206662.jpg

更改完数值之后,不会马上变成5000,需要执行一下 source 命令,才可以生效,见下图,

cd9dcb0df19e8b852ae0c6e8b68f7f26dd8.jpg

 

现在来看一下 history 命令,

8abbd923ff03bcc5f49d07338808a5e8032.jpg

上图中,只显示了 ID 号和具体的命令,能不能将对应的命令的运行时间记录下来,这就需要对 HISTSIZE 重新赋值,见下图,

9e90d72241ce78c9e55779781fb2401db73.jpg

这边需要注意一下,这次更改的赋值,仅对当前的终端操作有效,再次打开终端以后,就会失效。也就是说,系统默认环境变量是不存在的,不要去定义。这时候,再执行 history 命令,

efe01525fa3a0d946cbd399485c0e4c04a9.jpg

就会看到,命令历史的格式发生了改变,会记录命令的运行日期和时间。以上改变就是环境变量作用的结果。要让改变生效,可以编辑 /etc/profile 文件,输入命令 vim /etc/profile ,回车,见下图,

df0bf9593c54ac47eed6cfb8e39adeb5796.jpg

搜索 HIST ,见下图,

d9081f38d380ea4be3ce59dd1a82ad52a29.jpg

增加一行上图红色框框的内容,保存后退出,执行命令 source ,

fb06461b0b85a7827ac352836e4ec1b762e.jpg

退出 Putty ,再重新登录,执行 history 命令,见下图,

7b4d5c7cb0e61ef924629b657951f5688b1.jpg

可以看到,日期和时间永久生效了。

 

接着做实验,见下图,

cb6d771db86715154a27305d4820176a88e.jpg

执行上图这条命令以后,这个文件就只能追加,不能删除。

终端没有正常退出时,history 里面就不会保存本次执行过的命令或者保存的命令不全。

 

另外再讲一下,!! ,!n(n表示数字) ,!word(word表示命令单词) ,详见下图,

ac229689804e776f536ea4a973fe90a4c0f.jpg

 

3、命令补全和别名

da7c8f665d087e633dcf2b2bb891dcf6164.jpg

 

1、Tab 键 命令补全

 

敲一下 Tab 键,不仅可以补全命令,还可以补全文件路径。

当遇到开头一样的多个文件或命令的时候,敲一下就不会有反应了,要敲两下,然后就会出现这些开头一样的文件和命令,再从中找出自己需要的文件或命令。

CentOS 7 系统中默认是不支持补全参数的,需要安装一个包,见下图,

9a3b30ada68851b89c71e00da12f2de1e75.jpg

安装完成之后,还不能立即生效,需要重启系统才可以。举个例子,现在输入命令 systemctl res ,然后敲 Tab 键,不管敲几下都会发现毫无反应。接着输入命令 reboot ,回车,重启系统。

ba335f661d3eb9484f2041fd7431abc9c96.jpg

重启成功之后,再输入命令 rpm -qa bash-completion ,回车,

4d5eacfa33a69bde6a0ecaed9e87e265173.jpg

可以看到,包已经安装好了,接着试一下,输入 systemctl res ,然后敲两下 Tab 键,就会出现3个参数。

ed1eb30ff404dbb3da8fa0c58839d0e7f41.jpg

Tab 键的用法心领神会就好了,文字说不清楚,就到这吧。

 

2、alias 命令

 

举个例子 ,systemctl restart network.service 这个命令有点长,虽然可以使用 Tab 键来补全命令,还是觉得有点麻烦,这时就可以使用 alias 来命名一个别名。具体操作见下图,

b86c52a8e77a767fefd7013fbba5f03e6ce.jpg

这样子就可以直接运行 restartnet 这个命令了,直接输入 alias ,回车,可以看到系统里面所有的alias ,包括自定义的,见下图,

f7c34be8315908f0ecb85169c50b0b1b720.jpg

接着查看这些alias存在于哪里,首先输入命令 vi .bashrc ,回车,见下图,

c3cf33df8670850abd88341bfe0943c0e82.jpg

这边只有3个 alias ,在用户的家目录下,其他的在哪里呢?输入 :q ,回车,退出上图界面,接着见下图,

be8b956ee0ba40dde77839c5dd8a3ef1c09.jpg

其他的 alias 都在这些文件里面,现在进入 colorls.sh ,见下图,

690296737069f61e396496a4b31e2ad90c5.jpg

这边有2个 alias ,输入 :q ,回车退出,接着输入命令 vim colorgrep.sh ,回车,见下图,

a1e594917ab8dda2213b2d162b395b58b05.jpg

以上就是这些 alias 所在的文件。

那么,怎么取消自定义的别名呢?用 unalias 就可以了,见下图,

 

 

转载于:https://my.oschina.net/u/3867265/blog/1836204

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值