首页 > 系统服务 > 详细

shell介绍,history,别名,通配符及重定向

时间:2018-04-19 23:50:53      阅读:318      评论:0      收藏:0      [点我收藏+]
shell介绍
  • shell是一个命令解释器,提供用户和机器之间的交互
  • 支持特定的语法,比如逻辑判断,循环
  • 每个用户都可以有自己特定的shell
  • CentOS7默认shell为bash,(Bourne Agin Shell纪念Bourne命名的)
  • 还有zsh,ksh等

历史命令

  • history命令---查看历史命令
  • .bash_history---命令历史保存文件,在用户的家目录下,退出终端时保存进去
    [root@aminglinux-02 ~]# ls /root/.bash_history 
    /root/.bash_history
  • 最大能存1000条
  • history -c清空命令历史,只是清空内存中的,不会删除文件中的,
    [root@aminglinux-02 ~]# history -c
    [root@aminglinux-02 ~]# history
    2  history
  • 由变量HISTSIZE定义的
    [root@aminglinux-02 ~]# echo $HISTSIZE
    1000
  • /etc/profile中可以修改变量可以增大减小数量
    [root@aminglinux-02 ~]# vim /etc/profile
    HOSTNAME=`/usr/bin/hostname 2>/dev/null`
    HISTSIZE=5000
    [root@aminglinux-02 ~]# source /etc/profile
    [root@aminglinux-02 ~]# echo $HISTSIZE
    5000
    改完需要source才能生效
  • HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" ---加入这个变量可以显示历史命令的使用时间
    • 永久生效,编辑文件
      [root@aminglinux-02 ~]# vim /etc/profile
      HISTSIZE=5000
      HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
      [root@aminglinux-02 ~]# source /etc/profile
  • 命令历史永久保存:chattr +a ~/.bash_history
    ---赋予a权限后,只能追加不能删除,如果没有正确退出终端,记录的命令不全
  • !! ---执行历史中最后一条命令
  • !755 ---执行历史里755条命令
  • !mkdir ---执行倒数第一个mkdir开头的命令

命令补全和别名

  • tab键,敲一下(补全唯一的)敲两下(显示以它开头的所有)
  • Centos7支持命令的参数补全,需要安装yum install -y bash-completion,并重启系统
  • alias可以给命令设置别名
    [root@aminglinux-02 ~]# alias restartnet=‘systemctl restart network.service‘
    [root@aminglinux-02 ~]# 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‘
  • unalias 加上别名---取消命令的别名
  • 各用户都有自己配置别名的文件~/.bashrc,在用户的家目录下
  • ls /etc/profile.d/ ----还有一些在这个目录下
    [root@aminglinux-02 ~]# ls /etc/profile.d/
    256term.csh         colorgrep.csh  colorls.sh  less.csh  vim.sh
    256term.sh          colorgrep.sh   lang.csh    less.sh   which2.csh
    bash_completion.sh  colorls.csh    lang.sh     vim.csh   which2.sh

通配符

  • ls .txt---可以代表任意字符和字符串
    [root@aminglinux-02 ~]# ls *.txt
    1.txt  2.txt  3.txt  a.txt  bb.txt
    [root@aminglinux-02 ~]# ls *txt
    1.txt  2.txt  3.txt  a.txt  bb.txt
    [root@aminglinux-02 ~]# ls *txt*
    1.txt  2.txt  3.txt  a.txt  bb.txt
  • ls ?.txt----?只能代表一个字符
    [root@aminglinux-02 ~]# ls ?.txt
    1.txt  2.txt  3.txt  a.txt
    [root@aminglinux-02 ~]# ls
    1.txt  2.txt  3.txt  anaconda-ks.cfg  a.txt  bb.txt
    [root@aminglinux-02 ~]# ls ?txt
    ls: 无法访问?txt: 没有那个文件或目录
  • ls [0-9].txt ---指定范围中的一个字符,数字字母都可以指定
    [root@aminglinux-02 ~]# ls [123].txt
    1.txt  2.txt  3.txt
    [root@aminglinux-02 ~]# ls [0-3].txt
    1.txt  2.txt  3.txt
    [root@aminglinux-02 ~]# ls [12].txt
    1.txt  2.txt
    [root@aminglinux-02 ~]# ls [0-9a-zA-Z].txt
    1.txt  2.txt  3.txt  a.txt
  • ls {1,2}.txt ---1或2.txt的文件
    [root@aminglinux-02 ~]# ls {1,2,3,a}.txt
    1.txt  2.txt  3.txt  a.txt

输入输出重定向

  • cat 1.txt > 2.txt 把2.txt清空把1.txt内容输入
  • cat 1.txt >> 2.txt 把1.txt内容追加到2.txt
  • 2> 错误重定向
  • 2>> 错误追加重定向
  • \>+2> 等于 &> 正确和错误的信息重定向到
    [root@aminglinux-02 ~]# echo 1212241 > a.txt
    [root@aminglinux-02 ~]# ls [12].txt aaa.txt &> a.txt
    [root@aminglinux-02 ~]# cat a.txt 
    ls: 无法访问aaa.txt: 没有那个文件或目录
    1.txt
    2.txt
  • &>> ---正确和错误的信息追加重定向
    [root@aminglinux-02 ~]# ls [12].txt aaa.txt &>> a.txt
    [root@aminglinux-02 ~]# cat a.txt 
    ls: 无法访问aaa.txt: 没有那个文件或目录
    1.txt
    2.txt
    ls: 无法访问aaa.txt: 没有那个文件或目录
    1.txt
    2.txt
  • 同时使用,正确的错误的分别重定向,也可以追加
    [root@aminglinux-02 ~]# ls [12].txt aaa.txt >1.txt 2> a.txt
    [root@aminglinux-02 ~]# cat 1.txt
    1.txt
    2.txt
    [root@aminglinux-02 ~]# cat a.txt 
    ls: 无法访问aaa.txt: 没有那个文件或目录
  • < 输入重定向
    [root@aminglinux-02 ~]# wc -l <1.txt    ---打印1.txt的行数,左边必须是命令
    2
    [root@aminglinux-02 ~]# 2.txt < 1.txt
    -bash: 2.txt: 未找到命令
  • command >1.txt 2>&1,
    command命令调用指定的指令并执行,命令执行时不查询shell函数,无视同名函数。command命令只能够执行shell内部的命令,这里的相当于将正确与错误的信息都写入1.txt上,&1相当于1.txt

shell介绍,history,别名,通配符及重定向

原文:http://blog.51cto.com/akui2521/2105549

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!