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

一、什么是 shell ?shell

 

 

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

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

能够看出有 zsh 命令,也有 ksh 命令,这边咱们就不安装了。3d

 

二、命令历史rest

 

 

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

能够 cat 查看,命令很是多,截取一部分,见下图,内存

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

 

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

还有一个命令 history -c ,能够把当前的历史命令清空,见下图,登录

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

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

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

如今执行三次 ls 命令,而后再输入命令 cat .bash_history ,回车,

能够看到,这些命令的最后几行,并无 ls ,再次使用 history 查看,见下图,

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

 

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

HISTSIZE 默认的量是1000 。

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

更改完数值以后,不会立刻变成5000,须要执行一下 source 命令,才能够生效,见下图,

 

如今来看一下 history 命令,

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

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

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

搜索 HIST ,见下图,

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

退出 Putty ,再从新登陆,执行 history 命令,见下图,

能够看到,日期和时间永久生效了。

 

接着作实验,见下图,

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

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

 

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

 

三、命令补全和别名

 

一、Tab 键 命令补全

 

敲一下 Tab 键,不只能够补全命令,还能够补全文件路径。

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

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

安装完成以后,还不能当即生效,须要重启系统才能够。举个例子,如今输入命令 systemctl res ,而后敲 Tab 键,无论敲几下都会发现毫无反应。接着输入命令 reboot ,回车,重启系统。

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

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

Tab 键的用法心照不宣就行了,文字说不清楚,就到这吧。

 

二、alias 命令

 

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索