Linux重要知識點匯總——認識和學習bash

來源:互聯網
上載者:User

Linux重要知識點匯總——認識和學習bash 硬體、核心與shell我們必須要通過“shell”將我們輸入的命令與核心通訊,好讓核心可以控制硬體來正確無誤地工作。  www.2cto.com  作業系統其實是一組軟體,由於這組軟體在控制整個硬體與管理系統的活動監測,如果這組軟體隨意被使用者操作,若使用者應用不當,將會使整個系統崩潰。 只要能夠操作應用程式的介面都能夠稱為shell。狹義的shell指的是命令列方面的軟體。廣義的shell則包括圖形介面的軟體。 shell的好處:命令列介面的shell,大家都一樣遠端管理:命令列介面就是比較快管理系統的關鍵系統的合法shell與/etc/shells功能目前的Linux可以使用的shell(/etc/shells檔案): /bin/bash(Bourne Again SHell,Linux預設的shell)/bin/ksh(Kornshell由AT&T Bell lab發展出來,相容於bash)/bin/tcsh(整合C shell,提供更多的功能)/bin/zsh(基於ksh發展出來,功能更強大)使用者何時取得shell工作以及使用者預設的shell記錄在/etc/passwd檔案內  www.2cto.com  bash shell的功能命令記憶能力(history)命令與檔案補全功能(【Tab】按鍵的好處)命令別名設定功能(alias)作業控制、前台、後台控制(job control, foreground, background)程式指令碼(shell script)萬用字元(Wildcard)bash shell的內建命令:type瞭解命令是來自於外部命令(指的是其他非bash所提供的命令)或是內建在bash當中 type [-tpa] name 參數: type:不加任何參數時,type會顯示出name是外部命令還是bash內建命令 -t:type將name以下面這些字眼顯示出它的意義: file:表示位外部命令 alias:表示該命令為命令別名所設定的名稱 builtin:表示內建命令 -p:如果後面接的name為外部命令時,才會顯示完整檔案名稱 -a:會有PATH變數定義的路徑中,將所有含name的命令都列出來,包含alias 命令的執行反斜線(\)轉移字元 shell的變數功能變數的可變性與方便性影響bash環境操作的變數:PATH變數在進入shell之前,由於系統需要一些變數來提供他資料的訪問(或者是一些環境的設定參數值,例如是否要顯示彩色等的),所以就有一些所謂的“環境變數”需要來讀入系統。為了區別與自訂變數的不同,環境變數通常以大寫字元來表示指令碼程式設計(shell script)的好幫手變數的顯示與設定:echo,unset變數的顯示echo只需要在變數名稱前面加上$,或者是以${變數}的方式來顯示都可以。 設定或者修改變數的內容:用“等號(=)”串連變數與它的內容 在bash中,當一個變數名稱尚未被設定時,預設的內容是“空”的。 變數的設定規則:變數與變數以一個等號“=”來串連等號兩邊不能直接接空格符變數名稱只能是英文字母與數字但是開頭字元不能是數字變數內容若有空格符可使用雙引號或單引號將變數內容結合起來,但是雙引號類的特殊字元如$等,可以保留原本特性;單引號類的特殊字元則僅為一般字元(純文字)可用逸出字元“\”將特殊符號變成一般字元在遺傳命令中,還需要通過其他的命令提供的資訊,可以使用反單引號“`命令`”或“$(命令)”。若該變數為了增加變數內容時,則可使用“$變數名稱”或${變數}累加內容若該變數需要在其他子進程中執行,則需要以export來使變數變成環境變數通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元方便判斷取消變數的方法為使用“unset 變數名稱”子進程:在目前這兒shell的情況下,其開啟另一個新的shell,新的shell就是子進程。在一般狀態下,父進程的自訂變數是無法在子進程內是使用的。但通過export將變數編程環境變數以後,就能夠在子進程下面使用了。 環境變數的功能用env(environment)查看環境變數與常見環境變數說明HOSTNAME:這台主機的主機名稱 TERM=這個終端機使用的環境是什麼類型 SHELL=目前這個環境下使用的shell是哪一個程式 HISTSIZE=記錄命令的條數,在CentOS中預設可記錄1000筆 USER=使用者的名稱 LS_COLORS=一些顏色顯示 MAIL=和這個使用者取用的mailbox位置 PATH:執行檔案命令尋找路徑 INOUTERC=與鍵盤功能有關,可以設定特殊按鍵 PWD=目前使用者所在的工作目錄 LANG=這個與語系相關 HOME=這個使用者的主資料夾 _=上一次使用的命令的最後一個參數(或命令本身) RANDOM:“隨機數”變數,內容介於0~32767之間 用set查看所有變數(含環境變數與自訂變數)HISTFILE=曆史命令記錄的放置檔案,隱藏檔案 MAILCHECK=每60秒去掃描一次信箱有無新信 PS1=命令提示字元的設定值 PS2=使用轉義符號第二行以後的提示符 $目前這個shell所使用的PID ?剛才執行完命令的回傳碼 一般來說,不論是否為環境變數,只要跟目前這個shell的介面操作有關的變數,通常都會被設定為大寫字元,也就是說,基本上,在Linux預設的情況中,使用{大寫字元}來設定的變數一般為系統內定需要的變數。 PS1(提示符的設定) $(關於本shell的PID) ?(關於上個執行命令的回傳碼) 一般來說,如果成功執行命令,則會回傳一個0值,如果執行過程中發生錯誤,就會回傳“錯誤碼”,一般就是以非0的數值來替代 export:自訂變數轉成環境變數環境變數與自訂變數的差異:該變數是否會被子進程所繼續使用 子進程僅會繼承父進程的環境變數,子進程不會繼承父進程的自訂變數 影響顯示結果的語系變數(locale)locale 變數的有效範圍環境變數可以被子進程所引用,但是其他的自訂變數內容就不會存在於子進程中 當啟動一個shell,作業系統會分配一個記憶塊給shell使用,此記憶體類的變數可讓子進程取用若在父進程利用一個export功能,可以讓自訂變數的內容寫到上述記憶塊當中(環境變數)當載入另一個shell時,子shell可以將父shell的環境變數所在的記憶塊匯入到自己的環境變數塊當中變數鍵盤的讀取、數組與聲明:read,array,declareread:讀取來自鍵盤輸入的變數 參數: -p:接提示資訊 -t:接等待的“秒數” declare/typeset:聲明變數類型 參數: -a:數群組類型 -i:整型 -x:環境變數 -r:readonly類型,該變數不可被更改內容,也不能重設 在預設的情況下,bash對於變數有幾個基本的定義: 變數類型預設為“字串”bash環境中的數值運算,預設最多僅能達到整數類型與檔案系統及程式的限制關係:ulimitulimit [-SHacdfltu] [配額] 參數: -H:hard limit,嚴格的設定,必定不能超過這個設定的數值 -S:soft limit,警告的設定,可以超過這個數值,但是若超過則有警告資訊 -a:列出所有的限制額度 -c:當某些進程發生錯誤時,系統會將該進程在記憶體中的資訊寫成檔案(排錯用),這種檔案就被稱為核心檔案(core file),此為限制每個核心檔案的最大容量 -f:此shell可以建立的最大檔案容量(一般為2GB)單位為KB -d:進程可使用的最大斷裂記憶體(segment)容量 -l:用於鎖定(lock)的記憶體量 -t:可使用的最大CPU時間 -u:單一使用者可以使用的最大進程(process)數量 變數內容的刪除、替代與替換命令別名設定:alias,unalias 曆史命令:history 【n】 history 【-c】 history 【-raw】 histfiles 參數: n:數字,是要列出最近的n條命令列 -c:將目前的shell所有的history內容全部消除 -a:將目前新增的history命令新增入histfiles中,若沒有加histfiles,則預設寫入~/.bash_history -r:將histfiles的內容讀到目前這個shell的history記憶中 -w:將目前的history記憶內容寫入histfiles中(預設為~/.bash_history) 曆史命令在登出時,會將最近的HISTSIZE條記錄到記錄檔案當中 !number:執行第幾條命令 !command:有最近的命令向前搜尋命令串開頭為command的那個命令,並執行 !!:執行上一個命令 Bash Shell的作業環境路徑與命令尋找的順序:以相對/絕對路徑執行命令由alias找到該命令執行由bash內建的(builtin)命令來執行通過$PATH這個變數的順序找到的第一個命令來執行bash的登陸與歡迎資訊:/etc/issue,/etc/motdbash的環境設定檔login與no-login shelllogin shell:取得bash時需要完整的登陸流程,讀取/etc/profile(系統整體設定),~/.bash_profile或~/.bash_login或~/.profile(屬於使用者個人設定) no-login shell:取得bash介面的方法不需要重複登入的舉動,讀取~/.bashrc source讀入環境設定檔其他相關設定檔 /etc/man.config:規定了使用man的時候man page的路徑到那裡去尋找 ~/.bash_history:曆史命令記錄 ~/.bash_logout:記錄登出bash後系統完成的操作 終端機環境設定:stty,set萬用字元與特殊符號資料流重新導向執行一個命令的時候,這個命令可能會由檔案讀入資料,再將資料輸出到螢幕上。 standard output:標準輸出,命令執行所回傳的正確資訊 standard error output:標準錯誤輸出,命令執行失敗後,所回傳的錯誤資訊 資料流重新導向可以將standard output(簡稱stdout)與standard error output(簡稱stderr)分別傳送到其他的檔案或裝置去,分別傳送所用的特殊字元如下: 標準輸入(stdin):代碼為0,使用<或<<;標準輸出(stdout):代碼為1,使用>或>>;標準錯誤輸出(stderr):代碼為2,使用2>或2>>;1>:以覆蓋的方法將正確的資料輸出到指定的檔案或裝置上 1>>:以累加的方法將正確的資料輸出到制定的檔案或裝置上 /dev/null垃圾桶黑洞裝置與特殊寫法如果知道錯誤將要發生,將錯誤資訊忽略掉而不顯示或儲存 將錯誤和正確的資料通通寫入一個檔案:2>&1也可以是&> standard input:<與<<將原本需要由鍵盤輸入的資料改由檔案內容替代 <<代表結束輸入的意思 使用命令輸出重新導向的原因: 螢幕輸出的資訊很重要,而且需要將它存下來後台執行中的程式,並不希望它幹擾螢幕正常的輸出結果一些系統的例行命令的執行結果,希望它可以存下來時一些執行命令的可能已知錯誤資訊時,想以“2>/dev/null”將它丟掉時錯誤資訊與正確資訊需要分別輸出時命令執行的判斷依據:cmd;cmd(不考慮命令相關性的連續命令執行) $? (命令回傳碼)與&&或|| cmd1 && cmd2:若cmd1執行完畢且正確執行($?=0),則開始執行cmd2 cmd1 || cmd2:若cmd1執行完畢且正確執行($?=0),則cmd2不執行 一般來書,假設判斷式有三個:cmd1 && cmd2 || cmd3,cmd2和cmd3會放置肯定可以執行成功的命令 管道命令(pipe) 管道命令“|”僅能處理經由前面一個命令傳來的正確資訊,也就是standard output的資訊,對於standard error output並沒有直接的處理能力。 在每個管道後面接的第一個資料必定是“命令”,而且這個命令必須要能接受standard input的資料才行 選取命令:cut:將一段資訊的某一段“切”出來,處理的資訊是以“行”為單位 cut –d ‘分隔字元’ –f fields(取出第幾段) cut –c 字元範圍(以字元的單位去除固定字元區間) grep:分析一行資訊,若當中有需要的資訊,就將該行拿出來 grep [-acinv] [—color=auto] ‘尋找字串’filename 參數: -a:將binary檔案以text檔案的方式尋找資料 -c:計算找到‘尋找字串’的次數 -i:忽略大小寫 -n:輸出行號 -v:反向選擇,即顯示沒有‘尋找字串’內容的哪一行 --color=auto:將找到的關鍵字部分加上顏色顯示 排序命令:sort:排序命令,依據不同的資料類型排序 uniq:將重複的資料僅列出一個顯示 wc:檔案裡面的字數,行數和字元數 雙重新導向:tee同時將資料流送與檔案與螢幕(screen);而輸出到標準螢幕的,其實就是stdout,可以讓下個命令繼續處理 tee –a file:以累加的方式,將資料加入file中 字元轉換命令: tr:刪除一段資訊當中的文字,或者是進行文字資訊的轉換 tr [-ds] set1 參數; -d:刪除資訊當中的set1這個字串 -s:替換掉重複的字元 col [-xb] 參數: -x:將tab鍵換成對等的空格鍵 -b:在文字內有反斜線(/) col經常被利用於將man page轉存為純文字檔案以方便查閱的功能 join,將兩個檔案當中有相同資料的那一行加在一起 join [-ti12] file1 file2 參數: -t:join預設以空格符分隔資料,並且對比“第一個欄位”的資料 -i:忽略大小寫 -1:代表第一個檔案要用哪個欄位來分析 -2:代表第二個檔案要用哪個欄位來分析 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.