8.1 shell 介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.1 shell 介绍
我们登陆的终端, 输入 root 登陆密码其实就是一个 shell.
还又 zsh ksh 等 shell, 这里以 bash 为主.
8.2 命令历史
之前使用过的命令 其实是有一个文件保存着的.
这些命令存再用户的加目录下./root/.bash_history
cat 一下这个配置文件, 可以看到之前敲过的命令
这个命令可以存多少命令可以用 history 命令查看.
目前 493 条, 最多可以存 100 条. 配置的环境变量 HISTSIZE
所以最大能保存 1000 条.
history -c 可以把当前命令里的内存给清空, 但不会清空配置文件.
当前使用的命令不会直接存到配置文件中 只会存在内存中. 只有当退出终端的时候它才能够保存到配置文件里去.
HISTSIZE 环境变量再 /etc/profile 里定义
觉得 1000 太少可以改成 5000, 保存退出
要想让这个 history 命令变 5000 生效的话要重启终端. 或 source /etc/profile 就生效了.
目前 history 看到的只是排序和名称, 如果想要看到时间的话.
重新赋值变量
这仅仅在当前的终端里生效. 系统默认这个环境是不存在的, 需要每次都去定义
这个时候 history 会记录日期和时间.
如果想让它永久生效 vim /etc/profile
把它和修改过的变量放一起, 保存退出 然后 source !$ 就可以了
如果想永久保存命令, 不让被删除. 可以添加一个权限(就算你总共 1000 条, 就算到了 1000 条也不会被删除的)
chattr +a ~/.bash_history
这个文件就只能追加 无法删除.
如果非正常退出, 直接退出, 命令会保存不全. 需要用命令正常退出.
!! 就是上一条命令, 也就是最后一条命令
!n 想运行第几条命令.
!echo 会倒着网上找第一个 echo 命令(同样其他命令也适用 !ls !cat 都可以)
这些都是命令历史相关的特性
8.3 命令补全和别名
tab 已经用到多次了, 可以补全命令和路径, 只有一种可能按一下自动补全, 多个可能按两下列出全出.
centos 7 支持参数的补全. 比如 systemctl restart network 是有多个参数的, 也可以补全.
默认不支持, 需要安装一个包然后重启系统就生效了, yum install -y bash-completion,reboot 重启. 然后就可以补全参数了.
alias 别名. 比如命令比较长 平时常用到 那就可以起一个别名
以 systemctl restart network 为例 :alias restartnet="systemctl restart network" , 那别名就是 restartnet 了.
直接 alias 回车, 可以把所有的别名都列出来
这些别名的文件在 用户的家目录下. bashrc(自定义的) 剩余的都在 / etc/profile.d / 下面.
可以用 vi 修改这些配置文件.
取消自定义的别名 unalias + 别名 就可以了.
8.4 通配符
* 表示通配, 不仅可以放到前面也可以放到后面, 不分有几个字符.
? 表示一个任意的字符(仅限一个字符)
ls [0-9]选择范围, 可以把 0-9 任意一个都会满足这个条件, 方括号里的字符只表示一个 也可以 [23] 就是或者的意思 2 或 3 都会
被筛选出来. 包括字母 [0-9a-zA-Z] 这样也可可以
ls{1,2}首先需要加括号, 也是或者的意思满足其一就可以了
8.5 输入输出重定向
1
>把前面这个内容的输出, 直接输入到后面这个文件里去(比如图片会把 1 的内容转移到 2 并且删 1)
>>对比上面 就是不会把 1 的内容删除(追加重定向)
2 > 它会把命令产生的错误信息给他指定输入到一个文件里去.(>正确的输出重定向, 2 > 错误的输出重定向)
2>>错误追加重定向
&>(就是 > 1.txt 2>a.txt 两个结合的, 这么写也可以)结合正确和错误(同样支持追加).
<输入重定向 , 把右边的文件的内容输入到左边的一条命令里(左边必须是一条命令)
这个几乎用不到, 作为了解.
来源: http://www.bubuko.com/infodetail-2569644.html