Linux 高階命令進階
?
(一)輸出重定向
? ? ? ? ? ?1、?>?:正確覆蓋輸出,會覆蓋掉原先的文件內容
把文本寫入文檔中
? ? ? ? ? ? ? ?# vim test
? ? ? ? ? ? ? ?# cat test
? ? ? ? ? ? ? ?this is ken
? ? ? ? ? ? ? ?# echo “this is oscar” > ?test
? ? ? ? ? ? ???# cat test
? ? ? ? ? ? ? this is oscar ?(把this ...追加到 test 中)
? 2、?>>?:正確追加輸出,不會覆蓋原始文件內容,會在原始內容末尾繼續添加
# echo “this is ken” >> test
# cat test
this is oscar
this is ken
3、?2>?:錯誤覆蓋輸出,會覆蓋掉原先的文件內容,,不能省略2。
2>>?:錯誤追加輸出,會覆蓋掉原始文件內容,會在原始內容末尾繼續添加
在工作中,可以將報錯的信息全都導入文件
通常導入 # ? /dev/null ?黑洞文件,類似于清空回收站。
4、 &>?:將標準輸出與錯誤覆蓋輸出共同寫入到文件中。覆蓋原有內容
&>>?:將標準輸出與錯誤追加輸出共同寫入到文件中(追加到原有內容的后面)。
第四周 寫 shell 腳本會大量應用。
vim命令模式、(二)輸入重定向 ?<
? ?# wc -l < /etc/passwd ? 統計etc 文檔下passwd的行數。
?
(三)管道符 “|” :作用是把前一個命令原本要輸出到屏幕的標準正常數據當作是后一個命令的標準輸入。把前一個命令的執行結果交給“|”再運行一次。
linux基礎命令。 # cat /etc/passwd | grep "root" ?| wc -l
用于數據動態監控,輸出結果為1 ,說明命令在執行;為0則未執行。
查看ip :# ip a
抓取IP :# ip a | grep “global” ?| ?awk -F “/” ?' {print ?$1}'
linux shell命令、 # ip a | grep “global” ?| ?awk -F “/” ? '{print ?$1}' | ?awk -F ?“ +” ?‘{print ?$3}’
(四)通配符:
通配符就是通用的匹配信息的符號,比如
1、?星號(*)代表匹配零個或多個字符(可以為0個)
? ? ? ? ? ? ? ?# ls /dev/sd* ?:查看dev 目錄下以 sd 開頭的所有文件。
2、?問號(?)代表匹配單個字符(單個字符必須存在)
vim實用技巧、? ? ? ? ? ? ? # ls /dev/sd? ?:查看dev 目錄下以 sd 開頭,后面有一個字符的所有文件。
? ? ? ? ? ? ? # ls /dev/sd?? ?:查看dev 目錄下以 sd 開頭,后面有兩個字符的所有文件。
3、?中括號內加上數字[0-9]代表匹配0~9之間的單個數字的字符,
? ? ? ? ? ? ?# ls /dev/sd?[12]??:查看dev 目錄下以 sd 開頭,后面分別有一個字符和兩個 字符的所有文件。
LINUX教程、 4、?中括號內加上字母[abc]則是代表匹配a、b、c三個字符中的任意一個字符。
# ls /dev/sda[a-z]???:查看dev下以sda開頭,后面跟上字母的文件
通配符可放在任意位置,也可以組合使用。# ls /dev/*[a-z] [a-z]?
(五)三種引號的作用
? ? ?1、?單引號(''):轉義其中所有的變量為單純的字符串。
name = ken name:變量,ken:變量值。
所見即所得。不改變引號中的東西,原樣輸出。
2、?雙引號(""):保留其中的變量屬性,解釋變量,不進行轉義處理。
3、?反引號(``):把其中的命令執行后返回結果。
? 先執行反引號中的命令,再執行引號外的操作。
單雙引號能一起使用,沒有變量時,單雙引號作用相同。
單引號中的特殊符號失去其特殊作用。雙引號中的部分失去作用,如# $ ?依舊生效。
反引號中的:# echo `ls` ??引號中的先執行再輸出。
?
(六)軟連接和硬連接
【軟鏈接相當于快捷方式,硬鏈接相當于復制粘貼】
創建完成后,源文件、軟鏈接和硬鏈接均可以查看到文件內容。
編輯源文件,軟、硬鏈接跟著動。
刪除源文件,軟鏈接失效,硬鏈接無影響。再重新建一個與源文件同名的文件,軟鏈接就直接鏈接到新的文件,而硬鏈接不變。因為軟鏈接是按著名稱進行鏈接。
1、?軟連接:
# ln - s 原路徑 目標路徑 ? ?# ls -l
特點:( s = soft )
1、就是相當于win中的快捷方式
2、刪除鏈接文件 # rm -rf 文件 # cat 文件,源文件無影響
3、刪除源文件,鏈接文件失效
4、修改源文件\鏈接文件,內容發生改變,(同步)
5、源文件被刪除,再創建新的同名源文件,鏈接文件會自動鏈接。
2、 硬鏈接:ln 源文件 目標文件
? ? ? ?總結:
1、刪除鏈接文件,源文件無影響
2、刪除源文件,鏈接文件無影響
3、修改源文件\鏈接文件,內容都發生改變
實際用得少,相當于復制,當文件較大時,會占用物理內存。
(七)一切從“/”開始:
在Linux系統中并不存在C/D/E/F等盤符,Linux系統中的一切文件都是從“根(/)”目錄開始的,并按照文件系統層次化標準(FHS)采用樹形結構來存放文件,以及定義了常見目錄的用途。
? ? ? 另外,Linux系統中的文件和目錄名稱是嚴格區分大小寫的。
/root/Desktop :僅第一個 / 表示根目錄,,后面出現的 / 僅代表分割。
/home :普通用戶家目錄。/usr/local :用戶自己安裝的軟件。 ? /etc ?:存放配置文件。 ? /root ?:root 用戶家目錄。/tmp :共享臨時文件。 ?/var ?:存放經常變動的文件。 /dev ? :磁盤文件。
?(八)絕對路徑和相對路徑:
? ? ? ? ? ? ? ? ? ? ? ? 絕對路徑:# ls -l /root/ken1/1/test -d ?
?相對路徑: # ls -ld ken1/1/test
# mkdir /ken ? :(把ken文件創立在 / 目錄下,所以# ls ? / ?)
-name "文件名” ? :指定要查找的文件名
{} ?:暫時存放文件。
\; :分號不能直接放在命令里,要在前面加一個 \ 轉義。
?
# grep root /etc/passwd ?
?;順序執行
Mkdir cjk && cd cjk ??: 邏輯執行,,前者執行成功后者執行,,前者失敗后者不執行。
ls || echo 1 ?:前者不執行則后者執行,前者執行后者不執行。
單引號中的特殊符號失去其特殊作用。雙引號中的部分失去作用,如# $ ?依舊生效。
反引號中的:# echo `ls` ??引號中的先執行再輸出。