记录历史命令,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

查看变量值

[root@shu-test ~]# echo $HISTSIZE
5000
[root@shu-test ~]#

给history命令加上时间与日期

临时生效:

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

[root@shu-test ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@shu-test ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@shu-test ~]# 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
[root@shu-test ~]#

永久生效方法:

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

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

更新缓存

[root@shu-test ~]# source /etc/profile
[root@shu-test ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@shu-test ~]#

特殊命令

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

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

    [root@shu-test ~]# 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
    [root@shu-test ~]# !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
    [root@shu-test ~]#
  • !字符串:表示执行历史命令中最近一次一字符串开头的命令,必须两个以上;
    [root@shu-test ~]# !pw
    pwd
    /root
    [root@shu-test ~]#

命令补全和别名

命令补全

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

安装bash-completion包:


yum install -y bash-completion

安装后,重启生效;

别名

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

[root@shu-test ~]# alias restartnet='systemctl restart network.service'
[root@shu-test ~]# 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'
[root@shu-test ~]#
[root@shu-test ~]# rest
restartnet  restorecon

取消别名

格式:
unalias [自定义别名]

[root@shu-test ~]# unalias restartnet
[root@shu-test ~]# 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'
[root@shu-test profile.d]# restartnet
-bash: restartnet: 未找到命令
[root@shu-test profile.d]#

别名存放目录:

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


通配符

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

实验2:使用?来查询;

[root@shu-test abc]# ls ?.txt
1.txt  2.txt  3.txt
[root@shu-test abc]# ls 1?txt
1.txt
[root@shu-test abc]#

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

[root@shu-test abc]# ls
1.txt  2.txt  3.txt  a
[root@shu-test abc]# ls [0-2].txt
1.txt  2.txt
[root@shu-test abc]#

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

[root@shu-test abc]# ls [0-9a-zA-Z].txt
1.txt  2.txt  3.txt  a.txt  B.txt
[root@shu-test abc]#

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

[root@shu-test abc]# ls [a].txt
a.txt
[root@shu-test abc]# ls [a3].txt
3.txt  a.txt
[root@shu-test abc]#

实验6:花括号

[root@shu-test abc]# ls {1,2,a}.txt
1.txt  2.txt  a.txt
[root@shu-test abc]#

输入输出重定向

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

实验1:输出重定向;

[root@shu-test abc]# echo "123" > x.txt
[root@shu-test abc]# echo "456" > x.txt
[root@shu-test abc]# cat x.txt
456
[root@shu-test abc]#

实验2:追加重定向;

[root@shu-test abc]# cat x.txt
123
[root@shu-test abc]# echo "234" >> x.txt
[root@shu-test abc]# cat x.txt
123
234
[root@shu-test abc]# echo "345" >> x.txt
[root@shu-test abc]# cat x.txt
123
234
345
[root@shu-test abc]#

实验3:错误重定向;

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

转载于:https://blog.51cto.com/shuzonglu/2059609

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值