时间 ima 显示 work zsh 之前 img ole cgroup
shell 介绍
* shell是一个命令解释器,提供用户和机器之间的交互.
* 支持特定语法,比如逻辑判断,循环.
* 每个用户都可以有自己特定的shell.
* Centos7默认shell为bash.
* 还有zsh,ksh
命令历史
我们在终端上敲过的命令,都有它的历史记录,比如此时按下向上键就会看到你之前最后输入的一条命令,再按就再往前翻,这里就开始学习认识命令历史
使用 history 命令查看历史命令;
[root@Ask-02 ~]# history
这里可以看到我已经输入过 429 条命令.
历史命令是有个文件保存的,在 root 用户的家目录下,名为. bash_history,它是一个隐藏文件所以别忘记小点;
[root@Ask-02 ~]# ls /root/.bash_history
/root/.bash_history
[root@Ask-02 ~]# cat /root/.bash_history
该命令历史环境变量系统设定最大保存 1000 条命令,可以通过以下命令查看;
在目前中输入的命令还只是存在内存中,并为已经写入到命令历史文件中,通过以下命令,可以将当前输入过(内存记忆)的命令记录删除;
[root@Ask-02 ~]# echo $HISTSIZE
1000
[root@Ask-02 ~]# history -c
这个时候再按向上的方向键,你就发现看不到你前面输入过的命令了,而这个操作是不会删除掉你命令历史中的内容.
如果你觉得最大保存一千条命令不够,可以在以下路径中的配置文件里进行修改;
[root@Ask-02 ~]# vi /etc/profile
找到以下图中这行将数量修改,这里我将数值改为:5000
想要这个数值生效还需要重新进入终端,或者执行以下命令;
可以看到数值已经变为 5000 .
[root@Ask-02 ~]# source /etc/profile
[root@Ask-02 ~]# echo $HISTSIZE
5000
目前当我们输入 history 命令的时候,显示的仅仅是行号和命令,如果想要知道它操作的详细时间,我们可以更改以下环境变量即可;
但是这样的操作仅限于当前,只要退出重进后又恢复原来的样子,想让它永久生效,进入到 profile 配置文件中,在 HISTSIZE 数量值下面添加上刚才那段参数即可.修改完别忘执行 source 命令.
[root@Ask-02 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
[root@Ask-02 ~]# history
1 2018/01/10 18:07:50 vi /etc/profile
2 2018/01/10 18:12:13 cat /etc/profile
3 2018/01/10 18:13:55 source /etc/profile
4 2018/01/10 18:14:49 echo $HISTSIZE
5 2018/01/10 18:21:19 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
6 2018/01/10 18:21:28 history****
[root@Ask-02 ~]# vim /etc/profile
[root@Ask-02 ~]# source /etc/profile
如果想要永久保存命令历史记录,那么你可以给文件加上隐藏权限,好比加上 a 权限,这样就只能增加不能删除,这时就算不设置最大数值它也不会被删除;
[root@Ask-02 ~]# chattr +a ~/.bash_history
如果没有正常的关闭终端,或者重启终端,那之前登录时使用过的命令将不被记录到命令历史文件里.
!!:两个叹号为快速执行最后一条命令.
!n:n=(数字),该命令用于执行命令历史中的第几个命令,比如! 400 就是执行命令历史中第 400 条的命令
!echo:叹号后更一个命令你个,会在命令历史中重复执行一次距离历史最近的一次(也是该命令最后执行的一次)这里我们拿 echo 命令打比方.
命令补全和别名
tab 键:敲以下补全命令,敲两下显示包含当前输入的字符的多个命令,比如 ls 敲两下显示出含有 ls 的多个命令,当我输入 lsb 按一下 tab 键会补全 lsblk 这个命令;
tab 补全用法不仅可以补全命令,还可以补全文件路径,在 centos6 的时候系统是不支持补全命令参数的,需要安装了 bash_completion 包后,而 Centos7 是系统支持不全参数;
[root@Ask-02 ~]# ls
ls lscgroup lsipc lsmcli lsns lsscsi lsusb.py
lsattr lscpu lslocks lsmd lsof lssubsys
lsblk lsinitrd lslogins lsmod lspci lsusb
[root@Ask-02 ~]# lsblk
[root@Ask-02 ~]# yum install -y bash_completion // 安装完后需要重启以下系统后才会生效.
当你输入一条命令时你觉得命令很长使用起来降低了效率,那么你可以使用自定义该命令使用 alias 命令;
[root@Ask-02 ~]# alias restartnet='systemctl restart network.service' // 比我们将 systemctl restart network.service 这条命令重命名为 restartnet
alias 的自定义配置文件在 etc 下的 profile.d 里,还有一个地方在 root 用户的家目录下;
unalias:需要自定义的别名
[root@Ask-02 ~]# cd /etc/profile.d/
[root@Ask-02 profile.d]# ls
256term.csh colorgrep.csh flatpak.sh less.sh vte.sh
256term.sh colorgrep.sh lang.csh PackageKit.sh which2.csh
abrt-console-notification.sh colorls.csh lang.sh vim.csh which2.sh
bash_completion.sh colorls.sh less.csh vim.sh
[root@Ask-02 profile.d]# ls /root/.bashrc
/root/.bashrc
[root@Ask-02 ~]# unalias restartnet
通配符
[*****:] 当你使用星号的时候来查看的时候,你会得到含有星号前或后的有关文件,比如;
[root@Ask-02 文档]# ls ****.txt
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 测试. txt
或者是
[root@Ask-02 文档]# ls 测试
测试 1.txt 测试 2.txt 测试 3.txt 测试 4.txt 测试. txt
[?:] 使用问号查看任意以一个字符为名称的文件
[root@Ask-02 文档]# ls ?.txt
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt
[0-9]:使用方括号,可以列出一个范围内的文件,比如 1-3;
[root@Ask-02 文档]# ls [1-3].txt
1.txt 2.txt 3.txt
{1,2}:使用花括号和方括号的用法相似,只是操作略有不同他是使用 "," 来区分开的;
[root@Ask-02 文档]# ls {1,2}.txt
1.txt 2.txt
输入输出重定
[>:] 大于号,表示输出将前者显示的内容输出写入到后面的文件中去(注意写入到后者的文件中原文件内容将被替换);
[root@Ask-02 文档]# cat 1.txt
hello world
[root@Ask-02 文档]# cat 1.txt >2.txt
[root@Ask-02 文档]# cat 2.txt
hello world
[>>:] 两个大于号,表示追加,即将前者显示的内容追加到后者文件中去且不会替换掉原文件的内容;
[root@Ask-02 文档]# cat 1.txt >>2.txt
[root@Ask-02 文档]# cat 2.txt
[2>:] 大于号前面加个 2 表示错误输出,即将前者执行的错误结果输出到后者文件中去;
hello world
hello world
[root@Ask-02 文档]# car 1.txt
bash: car: 未找到命令...
相似命令是: 'sar'
[root@Ask-02 文档]# car 1.txt 2>3.txt
[root@Ask-02 文档]# cat 3.txt
bash: car: 未找到命令...
相似命令是: 'sar'
[2>>:] 表示追加输出,即将前者执行的错误结果追加输出到后者文件中去;
[root@Ask-02 文档]# car 4.txt 2>>3.txt
[root@Ask-02 文档]# cat 3.txt
bash: car: 未找到命令...
相似命令是: 'sar'
bash: car: 未找到命令...
相似命令是: 'sar'
[&>:] 结合了正确和错误输出的结果,写入到后者文件中
[root@Ask-02 文档]# cat 1.txt 8.txt &>5.txt
[root@Ask-02 文档]# cat 5.txt
hello world
cat: 8.txt: 没有那个文件或目录
[>+2>:] 可以同时将一条命令的执行结果正确和错误输出写入不同的文件当中;
[root@Ask-02 文档]# cat 1.txt 8.txt >2.txt 2>3.txt
[root@Ask-02 文档]# cat 2.txt
hello world
[root@Ask-02 文档]# cat 3.txt
cat: 8.txt: 没有那个文件或目录
[<:] 将后边的文件输出到前面的命令中;
[root@Ask-02 文档]# wc -l <5.txt
2
shell 介绍 / 命令历史 / 命令补全 / 通配符 / 输出输入重定向
来源: http://www.bubuko.com/infodetail-2456822.html