linux基礎傳送門:
shell基本命令的使用、? root表示用戶名;node1表示主機名;~表示當前目錄;#表示系統權限;$表示普通權限
? 命令 選項 參數 (三者之間要有空格,區分大小寫) ,command [-options] [args]
如果[args]
參數有多個,需要以空格間隔
? 上圖中,ls -a /home
表示查看home目錄下的文件;ls -a
表示查看當前目錄下的文件;ls -a -l
表示以列表的形式來顯示文件 的相關信息;ls -al
或者ls -la
是它的縮寫;ls -al install*
表示查找以install開頭的文件
? 當linux操作系統作為服務端,我們希望它的性能更好,所以,很多服務器端的linux系統不會安裝圖形界面, 只有命令行界面,我們很多操作都在命令行下輸入。在學習linux命令時,我們可以通過查手冊&搜索引擎來學習,也可以通過man命令與在命令后輸入--help
來學習。
? 手冊見《參考手冊&資料》,其中《鳥哥的linux私房菜:基礎學習篇 (第四版)》可以作為工具書來補充學習。
vim常用命令、? 當前虛擬機中不能直接使用 man,默認是沒有安裝的,不識別 man 命令
? 所以需要安裝 man 和 man-pages 手冊,查看命令的幫助信息
? 查看命令ls
? 輸入:q,退出命令查看
? 要想漢化 man 提示信息,系統中需要安裝 man-pages-zh-CN 軟件包。默認情況下, 系統自帶的 yum 源不包含 man-pages-zh-CN
,所以需要將下載后的第三方源epel
保存到默認的源目錄/etc/yum.repos.d/
。
linux常用的20個命令。安裝 wget
將 epel 的源放到本地,然后清除 yum 本地緩存,重新生成緩存
安裝 man-pages-zh-CN 軟件包
修改系統的語言環境為中文(臨時修改)
[root@node1 ~]# echo $LANG en_US.UTF-8
en_US.UTF-8
[root@node1 ~]# LANG=zh_CN.UTF-8
[root@node1 ~]# echo $LANG
zh_CN.UTF-8
長期修改:[root@node1 ~]# vim /etc/sysconfig/i18n
linux常用基本命令?保存退出,重啟后就可以使用了
? enter 向下一行
? 空格按頁向下翻
? b 向上翻頁
? p 直接翻到首頁
linux vim命令?? 查找按 /要查找的內容,查找 下一個/上一個:按n/N;
? 退出按 q
? 通過命令 --help
可以查看命令中參數的作用
? echo用于顯示一行文本,
? echo -n
表示不要另起新行
常用shell命令。? echo -e
表示解釋逃逸字符
? echo
也可用于顯示環境變量與自定義變量
? 當在 shell 中執行命令的時候,默認到 PATH 指定的路徑中查找可執行文件。 如果在 PATH 中的多個目錄都包含該可執行文件,則執 行最先找到的。為什么ls、mv這些命令可以直接用呢?因為都在 PATH 指定的路徑的可執行文件中
? ls 命令用于列出目錄內容 ,單獨的ls
命令用于查看當前目錄下的內容,隱藏文件并不會顯示
? ls -l
:添加-l 以長格式輸出,列出根目錄下內容的詳細列表
linux簡單命令、? ls命令可以后面跟多個目錄,列出多個目錄的內容,目錄間以空格分隔
? ls -a
顯示所有的內容,包括隱藏文件;ls -al
以列表的方式顯示所有的內容
? ls -R
:可以顯示多級目錄
? pwd
查看當前工作目錄路徑
? cd
命令可以用于切換目錄
linux常用命令詳解、? 如果 cd 后什么都不寫或者cd 后跟波浪線,表示直接回當前用戶家目錄
? root 用戶可以直接通過絕對路徑進到普通用戶的家目錄;也可以直接跟波浪線用戶名表示直接進入到某個用戶的家目錄
? cd 后也可以跟減號(-)用以表示回到最后一次切換之前的目錄,多次使用減號在最近兩個目錄之間切換
? cd ..
表示用于返回上一級目錄
? mkdir
:用于創建目錄
linux常用命令vi,? mkdir -p
:用以創建多層目錄,因為系統發現某一級目錄不存在的時候創建父目錄
? 可以使用大括號高效創建相似的目錄
? rm
命令用于刪除文件;直接刪除,需要確認 yes
? rm -f
:添加-f 選項可以不用確認強制刪除
? rm -r
(刪除文件夾):如果 rm 的參數是目錄,則會提示需要迭代刪除而不能成功,添加-r 參數表示迭代刪除;
? rm -rf
可以使用-rf 選項,迭代強制刪除某個文件或目錄,此命令慎用
cp 文件… 目標目錄
表示拷貝文件到目標目錄,可以同時拷貝多個文件,文件名之間用空格隔開
? cp -r 目錄 目標目錄
表示拷貝目錄到目標目錄,-r
表示迭代的拷貝某個目錄
? mv
用于移動或重命名文件,它與cp、rm命令不同,可以移動文件/目錄,不需要-r
? Linux 中沒有專門改名的命令,mv
命令兼職改名,可以更改文件與文件夾的名字
ln
用于創建硬鏈接或軟鏈接
? ln
創建硬鏈接,創建的是一個文件,大小與源文件相同
? ln -s
用于創建軟鏈接,當編輯ln2時,實際上打開的是profile
? 使用 ll -i
選項讓 ll 打印文件的 inode 信息,發現硬鏈接創建的文件與源文件是同一個文件。如果刪除源文件,則軟鏈接就找不到 文件,而硬鏈接可以找到
? 當將文件重新復制一份,發現軟鏈接可以找到新文件,硬鏈接與新文件不一致
? ps
命令查看系統內進程信息
? ps -ef
查看磁盤使用情況
? ps aux
觀察系統所有的程序數據 (常用),其中,
? 1. a :和輸入終端(terminal) 關聯的所有 process,通常與 x 一起使用, 列出完整信息。
? 2. x :后臺進程,通常與 a 這個參數一起使用,可列出較完整信息
? 3. u :有效使用者 (effective user) 相關的 process
? 過濾查看與pts/1有關的進程
? 以下為各選項的含義
? ? USER:該 process屬于那個使用者
? ? PID :該 process 的程序標識符。
? ? %CPU:該 process 使用掉的 CPU資源百分比
? ? %MEM:該process 所占用的物理內存百分比
? ? VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
? ? RSS :該 process占用的物理的內存量 (Kbytes)
? ? TTY :該 process 是在那個終端機上面運作,若與終端機無關則顯示 ?另外,tty1-tty6是本機上面的登入者程序,若為 pts/0 等等 ,則表示為由網絡連接進主機的程序。
? ? STAT:該進程目前的狀態,狀態顯示與 ps -l 的 S旗標相同 (R/S/D/T/Z)
? ? START:該 process被觸發啟動的時間
? ? TIME :該 process實際使用 CPU 運作的時間。
? 計算 3 > 2 的結果,打印返回值,計算 3 < 2 的結果,打印返回值。 echo $?
打印上一行命令的執行結果,成立返回 0(
? true),不成立返回 1(false)。其中,-gt
是大于,-ge
是大于等于,-lt
是小于,-le
是小于等于,-eq
是等于
? 上面的命令也可以用如下方式來表示:
? []
和內容之間一定要有空格,否則報錯。
虛擬目錄中各個目錄的用途
目錄 | 用途 |
---|---|
/ | 虛擬目錄的根目錄。通常不會在這里存儲文件 |
/bin | 二進制目錄,存放許多用戶級的 GNU 工具 |
/boot | 啟動目錄,存放啟動文件 |
/dev | 設備目錄,Linux 在這里創建設備節點 |
/etc | 系統配置文件目錄 |
/home | 主目錄,Linux 在這里創建用戶目錄 |
/lib | 庫目錄,存放系統和應用程序的庫文件 |
/media | 媒體目錄,可移動媒體設備的常用掛載點 |
/mnt | 掛載目錄,另一個可移動媒體設備的常用掛載點 |
/opt | 可選目錄,常用于存放第三方軟件包和數據文件 |
/proc | 進程目錄,存放現有硬件及當前繼承的相關信息 |
/root | root 用戶的主目錄 |
/sbin | 系統二進制目錄,存放許多 GNU 管理員級工具 |
/srv | 服務目錄,存放本地服務的相關文件 |
/sys | 系統目錄,存放系統硬件信息的相關文件 |
/tmp | 臨時目錄,可以在該目錄中創建和刪除臨時工作文件 |
/usr | 大量用戶級的 GNU 工具和數據文件都存儲在這里 |
/var | 可變目錄,用以存放經常變化的文件,比如日志文件 |
? df
查看系統掛載的磁盤情況
? df -h
以適合的單位查看系統掛載的磁盤情況
? 將光驅掛載到/mnt 目錄與卸載掉掛載的分區/mnt
? du
命令可以為目錄遞歸地匯總每個 FILE 的磁盤使用情況
? ᅳ a :列出所有的文件與目錄容量
? ᅳ h :以人們較易讀的容量格式(G/M)顯示
? ᅳ s :列出總量,而不列出每個各別的目錄占用容量
? ᅳ k :以 KBytes 列出容量顯示
? ᅳ m :以MBytes列出容量顯示
? du -s
:添加-s 參數可以生成指定目錄的匯總信息,也就是共占用多大的磁盤空間
? du -sh
:添加-h 參數可以顯示為人類可以讀懂的格式
? 將路徑寫成./*統計當前目錄下每項內容占用的磁盤空間信息
? stat
命令:顯示文件的元數據
? touch 已存在的文件,抹平各個時間 ;touch 不存在的文件,則創建文件
? cat
:直接查看一個文件的內容,適合查看行數相對較少的文件(100行左右);nl與tac指令與cat類似
? nl
命令:添加行號打印
? tac
命令:反向輸出,tac 功能與 cat 類似,但是是由文件最后一行反向連續輸出到屏幕上
? head
命令表示顯示前幾行,默認顯示前10行,可使用head -n
來控制顯示前n行
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-c5bQBIH8-1638685141211)(…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20211126142207725.png)]
? head -n -120
表示后面120行都不打印
? 命令格式:tail [ -n number] 文件
? 選項與參數: -n
:后面接數字,代表顯示幾行的意思 ;-f
:表示持續偵測后面文件內容的改變,直到按下 Ctrl+c 才會結束 tail 的偵 測。
? tail
命令:默認情況下顯示最后 10 行
? tail -n 20 文件
默認顯示后面的20行
? tail -n +50 文件
顯示從第50行開始直至文件結尾部分的內容
? tail -f 文件
表示持續偵測后面文件內容的改變,直到按下 Ctrl+c 才會結束 tail 的偵測。
? |
:管道左側的輸出作為右側的輸入,常與grep
一起使用用于過濾
? ps aux|grep bash
:過濾查看與bash有關的進程
? head -n 20 profile | tail -n 10
:查看文件的中間10行
? xargs
:將前面輸出作為后面命令的參數,將步驟 1 的內容做為步驟 2 的命令的選項參數拼接起來,執行得到的結果
? 后期,在寫shell腳本與操作時,我們會將數據重定向到別的位置
? 標準輸入(stdin):編號為 0
? 標準輸出(stdout):編號為 1
? 標準錯誤輸出(stderr):編號為 2
? 1>:以覆蓋的方法,將正確的數據輸出到文件;
? 1>>:以追加的方法,將正確的數據輸出到文件;
? 2>:以覆蓋的方法,將錯誤輸出的數據輸出到文件;
? 2>>:以追加的方法,將錯誤輸出的數據輸出到文件;
? tee 命令,將輸入分成兩個輸出 ,既向控制臺輸出,也向文件寫入
? cut
命令:顯示切割的行數據 ,源文件并不會改變
- `-s`:不顯示沒有分隔符的行- `-d`:指定分隔符對源文件的行進行分割
-f
:選定顯示哪些列 ,其中m-n
表示 m 列到 n 列 ;-n
表示 第一列到 n 列 ;m-
表示 第 m 列到最后一列;n
表示 第 n 列 ;x,y,z
表示 獲取第 x,y,z 列? -- output-delimiter
表示指定輸出的時候的各字符分隔符
? sort
:排序文件的行
-n:按數值排序
-r:倒序 reverse
-t:自定義分隔符
-k:選擇排序列
- f:忽略大小寫
? 以如下sort.txt文件為例進行排序
a b 1
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
? sort
默認按字符串字典序排序(升序),并不會改變源文件的內容
? sort -t ' ' -k 2 文件
:表示指定字段分隔符,按照第 2 個字段的字典序排序
? sort -t ' ' -k 3 -n 文件
:表示指定字段分隔符,按照第 3 個字段的值數值序排序 ,如果不添加-n
會將數字當成字符串排序
? -r
:添加-r倒序排序
? sed
又稱為行編輯器,可以將文件里的內容逐行進行讀取逐行進行編輯。使用場景是有5000臺服務集群,每個集群上都有配置文件,想要快速修改配置文件,此時,就需要sed
文件,不需要人為的打開文件,而是通過腳本定制化的修改它
命令格式:sed [選項] 'AddressCommand' file
-i
:直接修改源文件
-r
:表示使用擴展正則表達式
-d
:刪除符合條件的行
-a\string
:在指定的行后追加新行,內容為 string
i\string
:在指定行前添加新行,內容是 string
s/string1/string2/
:查找并替換,默認只替換每行第一次模式匹配到的字符串
g
:行內全局替換
i
:忽略大小寫
\(\) \1\2
? 以新建的sed.txt文件為例,
Authentication improvements when using an HTTP proxy server.
Support for POSIX-style filesystem extended attributes.
YARN's REST APIs now support write/modify operations.
a\string
:在指定的行后追加新行,內容為 string,a前面的1表示在第一行后追加string,并且未改變源文件
i\string
:在指定行前添加新行,內容是 string
-i
:直接修改源文件 ,其中 \n可用于換行
d
:刪除符合條件的行(默認刪除所有行) ,源文件未改變,可以與-i
一起使用
查找指定行/str/
,-n
表示只顯示符合條件的
s/string1/string2/
:查找并替換,默認只替換每行第一次模式匹配到的字符串
i
:忽略大小寫
? sed "s/filesystem/FS/i" sed.txt
g
:行內全局替換? sed "s/filesystem/FS/g" sed.txt
\(\) \1\2
:下面的命令格式為:s/\(\)[]\(\)/\1\2/
,\1
與\2
之間為要替換的數字? 以將啟動文件中的默認運行級別改為 5
-r
:表示使用擴展正則表達式,這是就可以簡化上面表達式? sed -r "s/(id:)[0-6](:initdefault:)/\15\2/" inittab
-n
:表示抑制自動打印,如果不添加-n
會將文件自動打印出來? 查找/etc/profile 中包含 PATH 的行,將這些行寫到profile_path.txt文件中
? awk 是一個強大的文本分析工具,相對于 grep 查找,sed 編輯,awk 在對數據分析并生成報告時更為強大,awk 把文件逐行讀入,以空格和制表符作為默認分隔符將每行切片,切開的部分再進行各種分析處理。
命令格式為:awk -F [':'] '{pattern + action}' filename
支持自定義分隔符
支持正則表達式匹配
支持自定義變量,數組 a[1] a[tom] map(key)
支持內置變量
? FS :設置輸入列分隔符,等價于命令行 -F 選項
? NF :瀏覽記錄的列的個數
? NR :已讀的行記錄數
? OFS:輸出列分隔符
? ORS :輸出行記錄分隔符
? RS :控制記錄分隔符
支持函數 :print、split、substr、sub、gsub
支持流程控制語句,類 C 語言 :if、while、do/while、for、break、continue
下面舉幾個例子學習上述命令
? 1. 搜索/etc/passwd 有 root 關鍵字的所有行
? 2. 統計/etc/passwd 文件中,每行的行號,每行的列數,對應的完整行內容
? 3. 只是顯示/etc/passwd 的賬戶,即第一列
? 4. 顯示/etc/passwd 的賬戶和賬戶對應的 shell,即第一列與第七列;而賬戶與 shell 之間以制表符分割
? 5. 在所有行開始前添加列名 name,shell,在最后一行添加"shell,end"
? 案例報表統計:合計每人 1 月總消費,0:manager,1:worker
Tom 0 2020-10-11 car 3000
John 1 2020-01-13 bike 1000
vivi 1 2020-01-18 car 2800
Tom 0 2020-01-20 car 2500
John 1 2020-01-28 bike 3500
? 新建emp.txt文件,將上述內容寫入文件中,
1.查看文件的分隔符,awk默認制表符與分隔符
2.日期是第三列,由于統計到的是一月份,所以需要拆分,以"-"進行拆分,并存放到date變量中
3.for循環進行輸出,寫法與C語言的寫法一致
awk '
{ split($3, date, "-") if (date[2] == "01"){map_name_sala[$1] += $5 if($2=="0"){ map_name_role[$1]="Manager" }else{ map_name_role[$1]="Worker" } }
}
END{for(name in map_name_sala){print name"\t"map_name_role[name]"\t" map_name_sala[name]}
}' emp.txt
? 命令格式:wc [選項列表]... [文件名列表]
,用于輸出文件中的行數、單詞書、字節數
描述 :對每個文件輸出行、單詞、和字節統計數,如果指定了多于一個文件則還有一個行數的總計。沒有指定文 件或指定的文件是 -,則讀取標準輸入。
? vi、vim的使用基本一致,推薦使用vim;vim會對于不同的字使用不同的顏色。vim有三種模式:
?
i:進入編輯模式
I:在當前行首(非空字符)進入編輯模式
a:在選定字符后插入字符
A:在當前行末進入編輯模式
o:在當前行下添加新行
O:在當前行上添加新行
ESC:退出編輯模式
shift+: 末行模式 ESC 退出末行模式
shift+ZZ:在命令模式保存并退出編輯器
:wq 保存并退出編輯器
:w 保存編輯器內容
:q! 不保存退出編輯器
? vim的使用技巧:
移動光標:h 左 j 下 k 上 l 右
w:移動到下一個單詞的詞首
e:跳至當前或下一個單詞的詞尾
b:跳至當前或下一個單詞的詞首
0:絕對行首
^:行首的第一個非空白字符
$:絕對行尾
G:文檔末尾
3G:第三行
gg:文檔開頭
ctrl-f:向下翻頁 forward
ctrl-b:向上翻頁 backward 刪除替換單個字符
x:刪除光標位置字符
3x:刪除光標開始3個字符
r:替換光標位置字符
dw:刪除單詞
dd:刪除整行
D:刪除光標所在位置到行尾
yw:復制單詞
yy:復制1行
nyy:復制n行,n是數字
p:粘貼 paste
u:撤銷 undo
ctrl+r:重做 操作結束后使用u退回到上次操作,則ctrl+r重做。重復上一步操作set:設置 ,在末行模式下
:set nu 顯示行號
:set nonu 取消行號的顯示
:set readonly 設置只讀
:/string or :?string 查找stringn:向下查找N:向上查找
:! 執行命令,可以不用退出保存就可以執行命令,再按ENTER返回vim模式查找并替換
:s/str1/str2/gi g:一行內全部替換 i:忽略大小寫 n:行號
可以在s前面添加行數如::12,17s/PATH/path/gi,也可以使用當前光標行與偏移操作如::.,+3s/PATH/path/gi.:當前光標行 +n:偏移n行
$:末尾行,$-3最后三行
%:全文
:%d :刪除全文
:.,$-1d :從當前行刪除到倒數第二行
:.,+3d :從當前行再往下數三行刪除
:.,13d :從當前行到第13行刪除
? 壓縮:指通過某些算法,將文件尺寸進行相應的縮小,同時不損失文件的內容。
? 打包:指將多個文件(或目錄)合并成一個文件,方便傳遞或部署。
壓縮文件或打包文件常見的擴展名: *.tar.gz, *.tar.bz2;linux 系統一般文件的擴展名用途不大,但是壓縮或打包文件的擴展名是必須的,因為 linux 支持的壓縮命令較多,不同的壓縮技術使用的壓縮算法區別較大,根據擴展名能夠使用對應的解壓算法。
常見文件擴展名:
gzip壓縮算法與bzip2壓縮算法相比,壓縮速度更快,但是沒有bzip2壓縮算法壓縮的小
TAR 命令,選項與參數:
-c :建立打包文件,
-t :查看打包文件的內容含有哪些文件
-x :解打包或解壓縮的功能,可以搭配-C(大寫)在特定到特定目錄解開
-j :通過 bzip2 的支持進行壓縮/解壓縮:此時文件最好為 *.tar.bz2
-z :通過 gzip 的支持進行壓縮/解壓縮:此時文件最好為 *.tar.gz
-v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來
-f filename:-f 后面跟處理后文件的全名稱(路徑+文件名+后綴名)
-C 目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項
-p :保留備份數據的原本權限與屬性,常用于備份(-c)重要的配置文件
注意 -c, -t, -x 不可同時出現在一串指令列中 ,-j,-z不可能同時出現在同一串指令中
TAR常用的指令組合:
打包與壓縮:
tar –zcv –f [/路徑/]filename.tar.gz 被壓縮的文件或目錄
tar –jcv –f [/路徑/] filename.tar.bz2 被壓縮的文件或目錄
查詢
tar –ztv –f [/路徑/] filename.tar.gz
tar –jtv –f [/路徑/] filename.tar.bz2
備份
tar –zpcv –f [/路徑/]filename.tar.gz 被備份文件或目錄
tar –jpcv –f [/路徑/]filename.tar.bz2 被備份文件或目錄
解壓到當前目錄
tar –jxv –f [/路徑/] filename.tar.bz2
tar –zxv –f [/路徑/] filename.tar.gz
解壓到指定目錄
tar -jxv -f [/路徑/] filename.tar.bz2 –C 指定目錄
tar -zxv -f [/路徑/] filename.tar.gz -C 指定目錄
將/etc 壓縮到/tmp/下 etc01.tar.gz
[root@node1 ~]# tar -zcvf /tmp/etc01.tar.gz /etc
將/tmp/下 etc01.tar.gz 解壓到/tmp/目錄下
[root@tedu ~]# cd /tmp/ #首先進入對應目錄
[root@tedu tmp]# tar -zxvf etc01.tar.gz
將/tmp/下 etc01.tar.gz 解壓到/usr/目錄下
[root@tedu tmp]# tar -zxvf etc01.tar.gz -C /usr
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态