Linux shell(1)
1.什麽是linux
linux是一種操作系統,它可劃分為以下四部分
1.linux內核(Linux系統的核心,負責管理系統內存,硬件驅動,文件系統等)
2.GNU工具(一組軟件工具,提供一些類UNIX系統命令)
3.圖形化桌面環境
4.應用軟件
2.linux shell
shell是GNU工具包下的一個交互式工具。它為用戶提供了啟動程序、管理文件系統中的文 件以及運行在Linux系統上的進程的途徑。shell的核心是命令行提示符。命令行提示符是shell負責 交互的部分。它允許你輸入文本命令,然後解釋命令,並在內核中執行。shell作為一種程序,反應在linux中就是一個進程。shell顧名思義就是殼,有區別於內核,用於人機交互。GUI桌面也是一種shell,shell不一定是命令行。
- linux 文件系統
文件系統是用戶最直觀最平凡接觸的部分,因此有必要先了解一下Linux的文件系統,特別是長期使用windows操作系統的人。
Linux的目錄與windows最直觀的區別在於-沒有盤符,Linux的目錄結構是單目錄結構以‘/’為根目錄節點。
linux其實是靠‘掛載點’來實現分區的功能。如上圖的例子,/根目錄掛載到disk1分區上,/home掛載到disk2分區上(簡單理解就是/home這個目錄的所有文件都存儲在disk2分區上)。按windows的邏輯來理解就是‘c’這個盤符掛載到disk1分區,‘d’這個盤符掛載到disk2分區。
4.一些常用的文件操作命令提示符
cd 切換目錄
ls 顯示當前目錄下的文件或子目錄list
pwd 顯示當前所在的目錄路徑
touch 創建空文件
mkdir 創建目錄
cp 復制文件 例子:cp test_one.txt test_two.txt cp -R Scripts/ Cpoy/(-R參數拷貝目錄)
mv 重命名或移動文件或目錄 移動到同一目錄下就相當於重命名
rm 刪除文件 rm -f 強制刪除(不會有任何提示信息)
5.內建命令和外部命令
外部命令其實就是存在於shell之外的程序,外部命令程序通常位於/bin、/usr/bin、/sbin或/usr/sbin中。如ps,ls等都是外部命令。
作為外部命令,執行時會有shell創建一個子進程(fork)。
內建命令其實就是shell程序的一部分,被編譯在一個程序之中。所以使用內建命令不需要創建子進程,內建命令的使用要比外部命令的開銷要小。
6, linux環境變量
無論是在linux還是windows中安裝一些軟件(如JAVA,Maven)都需要配置環境變量。特別是在GUI的windows中配置,使得環境變量特別難於理解是個什麽東西。其實環境變量說白了就是key=value形式的一組變量而已,就像java編程中的properties文件一樣。Linux環境變量會存儲在一個配置文件之中,shell程序啟動的時候會去讀取這個文件(/etc/profile),然後作為shell進程中的變量。環境變量分為局部變量和全局變量,/etc/profile這個配置文件中的變量一般作為全局變量,也可以在shell中自己定義局部變量,但是局部變量只是存在於內存中,是沒有保存到/etc/profile文件中的,所以重啟shell之後局部變量就沒有了。抓住本質,其實環境變量就是配置文件中的數據而已,最常見的用途就是讓shell知道去哪個目錄下去查找外部命令程序,例如吧java/bin這個路徑配置到PATH變量中,shell在執行的時候才能找到java這個外部命令。就像java編程時要配置數據庫的datasoure.properties文件一樣。
7.重定向和管道
命令執行的結果往往輸出在控制臺上,但是我們可以通過重定向的方式將結果輸出到另一個位置(如文件)。重定向可以用於輸出也可以用於輸入。例子:ls > file.list 這樣就把ls命令執行的結果輸出到了file.list文件中。
我們還可以通過管道將一個命令的輸出作為另一個命令的輸入。當然這個操作我們也可以通過重定向的方式來實現,只是重定向的方式略顯復雜
重定向:rpm -qa > rpm.list sort < rpm.list
管 道:rpm -qa | sort
查詢日誌時我們常常可以使用管道來達到‘並且’的效果。
grep ‘關鍵字1‘ info.log | grep ‘關鍵字2‘ info.log 這樣可以達到搜索同時包含關鍵字1和關鍵字2的日誌信息。
Linux shell(1)