1. 程式人生 > >shell介紹,history,別名,通配符及重定向

shell介紹,history,別名,通配符及重定向

通配符 重定向

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,別名,通配符及重定向