记录历史命令,history,命令补全和别名通配符输入输出重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录历史命令,history,命令补全和别名通配符输入输出重定向相关的知识,希望对你有一定的参考价值。

shell

shell是一个命令解释器,提供用户与机器之间的交互,支持特定的语法(逻辑判断、循环等);
每个用户都可以有自己特定的shell;
centos7默认shell为bash,其他shell还有zsh、ksh等;


命令历史

history命令:

可以查看历史命令;
在用户的家目录下的.bash_history文件中保存着之前敲过的命令,
默认最大存储1000条;
history命令可以查询;

更改存储数:

更改变量HISTSIZE来达到更改存储数;
编辑文件vim /etc/profile

vim /etc/profile

修改HISTSIZE值,将HISTSIZE=1000改为5000


HISTSIZE=5000

更新缓存文件

source /etc/profile

查看变量值

[[email protected] ~]# echo $HISTSIZE
5000
[[email protected] ~]#

给history命令加上时间与日期

临时生效:

HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

[[email protected] ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]# history | grep 2000
2000  2018/01/10 18:34:46 tar -zxvf httpd-2.2.34.tar.gz
2041  2018/01/10 19:31:53 history | grep 2000
[[email protected] ~]#

永久生效方法:

vim /etc/profile
增加变量定义
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

HISTSIZE=5000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

更新缓存

[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]#

特殊命令

  • !!:表示执行上一条命令;

    [[email protected] ~]# pwd
    /root
    [[email protected] ~]# !!
    pwd
    /root
    [[email protected] ~]#
  • !n:这里的n表示数值,,表示执行命令历史中的第n条指令;

    [[email protected] ~]# history | grep 1002
    1002  2018/01/10 18:34:46 rmdir 123
    2023  2018/01/10 18:45:15 history |grep 1002
    2048  2018/01/10 19:44:16 history | grep 1002
    2050  2018/01/10 19:45:21 history | grep 1002
    [[email protected] ~]# !2050
    history | grep 1002
    1002  2018/01/10 18:34:46 rmdir 123
    2023  2018/01/10 18:45:15 history |grep 1002
    2048  2018/01/10 19:44:16 history | grep 1002
    2050  2018/01/10 19:45:21 history | grep 1002
    [[email protected] ~]#
  • !字符串:表示执行历史命令中最近一次一字符串开头的命令,必须两个以上;
    [[email protected] ~]# !pw
    pwd
    /root
    [[email protected] ~]#

命令补全和别名

命令补全

centos7支持命令参数补全;
centos6只支持命令补全,不支持参数补全;

安装bash-completion包:


yum install -y bash-completion

安装后,重启生效;

别名

当常用的命令与参数过长,我们可以定义一个别名来实现;
格式:
alias [别名] = ‘[源命令]‘
systemctl restart network.service
将这条重启网卡服务的命令定义一个新的命令restartnet

[[email protected] ~]# alias restartnet=‘systemctl restart network.service‘
[[email protected] ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias restartnet=‘systemctl restart network.service‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
[[email protected] ~]#
[[email protected] ~]# rest
restartnet  restorecon

取消别名

格式:
unalias [自定义别名]

[[email protected] ~]# unalias restartnet
[[email protected] ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
[[email protected] profile.d]# restartnet
-bash: restartnet: 未找到命令
[[email protected] profile.d]#

别名存放目录:

用户家目录下:~/.bashrc文件;
其他命令目录:/etc/profile.d/目录下的


通配符

  • :在bash下,可以用来匹配零个或多个字符;
  • ?:在bash下,?号表示匹配一个字符;
  • [n-n]:n表示数值,n-n表示范围,例如:[0-3]表示范围0到3;
  • *实验1:使用来查询;**
    [[email protected] abc]# ls *txt
    1.txt  2.txt  3.txt
    [[email protected] abc]# ls *.txt
    1.txt  2.txt  3.txt
    [[email protected] abc]#

实验2:使用?来查询;

[[email protected] abc]# ls ?.txt
1.txt  2.txt  3.txt
[[email protected] abc]# ls 1?txt
1.txt
[[email protected] abc]#

实验3:使用【n-n】方括号范围来查询;

[[email protected] abc]# ls
1.txt  2.txt  3.txt  a
[[email protected] abc]# ls [0-2].txt
1.txt  2.txt
[[email protected] abc]#

实验4:查询范围数字0-9的.txt 小写字母 大写字母.txt;

[[email protected] abc]# ls [0-9a-zA-Z].txt
1.txt  2.txt  3.txt  a.txt  B.txt
[[email protected] abc]#

实验5:“与”语句查询;

[[email protected]shu-test abc]# ls [a].txt
a.txt
[[email protected] abc]# ls [a3].txt
3.txt  a.txt
[[email protected] abc]#

实验6:花括号

[[email protected] abc]# ls {1,2,a}.txt
1.txt  2.txt  a.txt
[[email protected] abc]#

输入输出重定向

  • >:输出重定向,将一个字符串输出到一个文本中;输入两次后只计算后面一次;
  • >>:追加重定向,将一个字符串追加输入到一个文本中;
  • <:输入重定向;
  • 2>:错误重定向,将错误信息重定向到某个文本中;
  • 2>>:错误追加重定向,将错误信息追加到某个文本中;

实验1:输出重定向;

[[email protected] abc]# echo "123" > x.txt
[[email protected] abc]# echo "456" > x.txt
[[email protected] abc]# cat x.txt
456
[[email protected] abc]#

实验2:追加重定向;

[[email protected] abc]# cat x.txt
123
[[email protected] abc]# echo "234" >> x.txt
[[email protected] abc]# cat x.txt
123
234
[[email protected] abc]# echo "345" >> x.txt
[[email protected] abc]# cat x.txt
123
234
345
[[email protected] abc]#

实验3:错误重定向;

[[email protected] abc]# ls [12].txt aaa.txt >x.txt 2>y.txt
[[email protected] abc]# cat x.txt
1.txt
2.txt
[[email protected] abc]# cat y.txt
ls: 无法访问aaa.txt: 没有那个文件或目录
[[email protected] abc]#

以上是关于记录历史命令,history,命令补全和别名通配符输入输出重定向的主要内容,如果未能解决你的问题,请参考以下文章

shell介绍命令历史 命令补全和别名 通配符输入输出重定向

Linux学习笔记(二十三)shell介绍history命令历史命令补全和别名通配符

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重

shell介绍命令历史命令补全和别名通配符输入输出重定向

shell介绍,命令历史,命令补全和别名,通配符 ,输入输出重定向

5周第3次课 shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向