介紹(摘自百度百科):linux
Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行 。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到內核。不只如此,Shell有本身的編程語言用於對命令的編輯,它容許用戶編寫由shell命令組成的程序。Shell編程語言具備普通編程語言的不少特色,好比它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其餘應用程序具備一樣的效果。
Linux提供了像MicrosoftWindows那樣的可視的命令輸入界面--X Window的圖形用戶界面(GUI)。它提供了不少桌面環境系統,其操做就像Windows同樣,有窗口、圖標和菜單,全部的管理都是經過鼠標控制。GNOME。
每一個Linux系統的用戶能夠擁有他本身的用戶界面或Shell,用以知足他們本身專門的Shell須要。
同Linux自己同樣,Shell也有多種不一樣的版本。
主要有下列版本的Shell: Bourne Shell:是貝爾實驗室開發的。 BASH:是GNU的Bourne Again Shell,是GNU操做系統上默認的shell。 Korn Shell:是對Bourne SHell的發展,在大部份內容上與Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。 Z Shell:The last shell you’ll ever need! Z是最後一個字母,也就是終極Shell。它集成了bash、ksh的重要特性,同時又增長了本身獨有的特性。shell
history:顯示使用過的全部命令;
history -c:清空當前內存中的歷史命令,沒法清空配置文件;
!!:執行上一條命令;
!n:執行命令歷史中的第n條;
!字符串:執行最近一次使用這個字符串開頭的命令編程
系統內置的環境變量,它決定了你所能保存的命令歷史的條數vim
[root@centos001 ~]# echo $HISTSIZE 1000
在/etc/profile中修改;
用/HISTSIZE找到並修改;
source /etc/profile重啓生效。centos
[root@centos001 ~]# vi /etc/profile [root@centos001 ~]# source /etc/profile [root@centos001 ~]# echo $HISTSIZE 5000
[root@centos001 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" [root@centos001 ~]# history 1 2017/11/15 23:35:22dhclient 2 2017/11/15 23:35:22ip addr 3 2017/11/15 23:35:22vi /etc/sysconfig/network-scripts/ifcfg-ens33 4 2017/11/15 23:35:22systemctl restart network.service
需更改配置文件;
打開配置文件/etc/profile; 找到HISTSIZE變量的位置並在下面添加HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
保存退出後並重啓服務bash
[root@centos001 ~]# vim /etc/profile [root@centos001 ~]# source !$ source /etc/profile
chattr +a ~/.bash_history追加權限(沒法刪除);
在沒有正常退出的狀況下,history保存的命令歷史是不完整的。編程語言
以前屢次使用的 TAB鍵,能夠幫咱們補全一個指令、路徑或文件名。連續按兩次,則會吧全部的相關文件名或指令列出來。注:centos7默認不支持補全命令須安裝一個包bash-completion,且 重啓後生效。centos7
語法:**alias【別名】=‘命令’ **, 當命令過長時咱們能夠給它設置別名,方便咱們使用;
存放位置:第一個是存放在用戶家目錄下的 .bashrc 文件中,第二個是存放在 /etc/profile.d 目錄下的 colorls.sh 和 colorgrep.sh 腳本中定義的。操作系統
在bash下,可使用***來匹配零個或多個字符。用?**來匹配一個字符rest
[root@centos001 ~]# ls 111 234 3.txt aminglinux dir3 ls2 123 2.txt aling anaconda-ks.cfg.1 dir3.tar test 22.txt 2.txt.zip aming d6z linux計劃.txt yum.log [root@centos001 ~]# ls *.txt 22.txt 2.txt 3.txt linux計劃.txt [root@centos001 ~]# ls *txt 22.txt 2.txt 3.txt linux計劃.txt [root@centos001 ~]# ls *txt* 22.txt 2.txt 2.txt.zip 3.txt linux計劃.txt [root@centos001 ~]# ls 1* 111: aming3 123: [root@centos001 ~]# ls ?.txt 2.txt 3.txt [root@centos001 ~]# ls [0-3].txt //可一用括號加數字顯示範圍 2.txt 3.txt [root@centos001 ~]# ls {1,2}.txt // 花括號也能夠 可是裏面用逗號 ,表或者的意思 ls: 沒法訪問1.txt: 沒有那個文件或目錄 2.txt
輸入定向用於改變命令的輸入,輸出定向用與改變命令的輸出。輸出定向更經常使用,用於將命令的結果輸入文件中,而不是屏幕上
輸入是**<,且輸入重定向,左邊必須是命令,不支持文件輸入重定向到文件中的;
輸出是>** ;
錯誤重定向命令:2>:它會把命令產生的錯誤信息指定輸入到一個文件中去;
追加劇定向命令:**>>**在原來基礎上增長。
[root@centos001 ~]# lsaaa -bash: lsaaa: 未找到命令 [root@centos001 ~]# lsaaa 2> 2.txt -bash: 2.txt: 權限不夠 [root@centos001 ~]# lsaaa 2> 1.txt [root@centos001 ~]# cat 1.txt -bash: lsaaa: 未找到命令 [root@centos001 ~]# lsaaa 2>> 1.txt [root@centos001 ~]# cat 1.txt -bash: lsaaa: 未找到命令 -bash: lsaaa: 未找到命令 [root@centos001 ~]# ls [12].txt aaa.txt & > a.txt //1.把正確錯誤一塊兒輸出到一個文件 [2] 27725 [root@centos001 ~]# ls: 沒法訪問aaa.txt: 沒有那個文件或目錄 1.txt 2.txt ^C [2]- 退出 2 ls --color=auto [12].txt aaa.txt [root@centos001 ~]# ls [12].txt aaa.txt > 1.txt 2>a.txt //第二種寫法 [root@centos001 ~]# cat 1.txt 1.txt 2.txt [root@centos001 ~]# cat a.txt ls: 沒法訪問aaa.txt: 沒有那個文件或目錄 [root@centos001 ~]# cat a.txt ls: 沒法訪問aaa.txt: 沒有那個文件或目錄 [root@centos001 ~]# wc -l <1.txt //輸入重定向 2 [root@centos001 ~]# 2.txt < 1.txt //語法錯誤 -bash: 2.txt: 未找到命令