shell介紹,history,別名,通配符及重定向
阿新 • • 發佈:2018-04-20
通配符 重定向 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,別名,通配符及重定向