目錄
一、Linux常用命令
1、常用工具
(1)Xshell:XShell是一個模塊化模擬器,因爲它提供了許多下拉選項卡。然後,用戶可以單擊這些選項卡以創建完全獨立的窗口,它旨在允許計算機充當終端。
(2)WinSCP :WinSCP 是一個 Windows 環境下使用的 SSH 的開源圖形化 SFTP 客戶端。同時支持 SCP 協議。它的主要功能是在本地與遠程計算機間安全地複製文件,並且可以直接編輯文件。
(3)SecureCRT:SecureCRT是一個出色的終端管理器和安全驗證器,可以幫助保護您最敏感的數據。
2、目錄和文件命令
(1)用戶目錄:位於/home/user,稱之爲用戶工作目錄;
(2)ls:是英文單詞list的簡寫,其功能爲列出目錄的內容;
- ls -a 列出隱藏文件,文件中以開頭的均爲隱藏文件,如:~/.bashrc
- ls -l 列出文件的詳細信息
- ls -R 連同子目錄中的內容起列出
(3)cd:change dir 改變當前所在路徑,使用“cd”命令跳轉到相應目錄。使用時要確認後面的目標目錄是否存在。比如:cd file1;cd file1/file2;cd ..(返回上一級目錄);cd(返回根目錄)
(4)which:查看指定命令所在的路徑,如:which ls
(5)pwd:查看當前所在路徑,當打開終端時,如果需要自己目前在哪一個目錄,可以使用pwd命令,它返回一個絕對的路徑(從根“/”開始的路徑)
(6)mkdir:mkdir用於創建目錄,可以一次創建多個
(7)rmdir:rmdir用於刪除空目錄,可以一次刪除多個
(8)touch:將每個文件的訪問及修改時間都更新爲目前的時間,如果文件不存在則創建一個字節數爲0的文件,它可以產生任何文件,可以是一個空的txt文件,也可以是一個空的zip文件等。
(9)rm: 使用rm命令刪除文件。但是rm不能簡單地刪除目錄。使用“rm - rf”刪除目錄(跟一個參數r),此時,會刪除文件夾和文件夾中的文件。rm -rf bazel* 表示刪除所有以bazel爲前綴的文件。sudo rm -rf protobuf/ 表示強制遞歸刪除 protobuf文件夾下的所有文件。
(10)mv:使用mv命令重命名文件或移動文件;例:mv A B(將目錄A重命名爲目錄B),mv hello /mnt/f/linux/(將hello文件移動到linux目錄下)
(11)cp:拷貝文件和拷貝目錄;它需要兩個參數:第一個是:從哪裏copy文件,第二個參數是把文件copy到哪裏去例:cp file1 file2,cp file1 /dir,cp file1 ../,cp - r /usr/xu/ /usr/liu/ 表示將/usr/xu目錄中的所有文件及其子目錄拷貝到目錄/usr/liu中。
(12)cat:查看文件內容,輸出到終端,如果cat時沒有跟文件名,則讀標準輸入,遇到\n後,輸出到標準輸出,終端下輸入Ctrl -d表示結束;cat命令是linux下的一個文本輸出命令,通常是用於觀看某個文件的內容的
-
$ cat filename # 顯示整個文件內容
-
$ cat > filename # 創建一個文件,並把標準輸入輸出到filename文件中,以ctrl+d作爲輸入結束 ; cat<<EOF>filename或cat>filename<<EOF,以EOF作爲輸入結束,和ctrl+d的作用一樣
-
$cat file1 file2 > file #將幾個文件合併爲一個文件
(13)more:查看文本文件的內容,屏幕顯示完一屏就等待用戶按下任意鍵再滾動到下屏,如果中途不想繼續看下去了,可以按Ctrl+C或q終止顯示;more file1;
(14)less:查看文本文件的內容,屏幕顯示完一屏就等待用戶按鍵,用戶可以向上或向下查看,如果中途不想繼續看下去了,可以按Ctrl+C或q終止顯示;
(15)head:顯示指定文件的前面幾行。如果沒有指定文件,將從標準輸入(鍵盤)上讀取。如果沒有指定要顯示的行數,則默認顯示前10行。如果要顯示文件的前5行:head -5 file1;
(16)tail:顯示指定文件的最後幾行。若沒有指定顯示的行或字符數,則默認顯示末尾10行。如果要顯示文件的末5行:tail -5 file1;
(17)wc:利用 wc 指令我們可以計算文件的 Byte 數、字數、或是列數,若不指定文件名稱、或是所給予的文件名爲“-”,則 wc 指令會從標準輸入設備讀取數據。
- -c 或–bytes 或–chars 只顯示 Bytes 數。
- -l 或–lines 只顯示列數。
- -w 或–words 只顯示字數。
(18)du:查看某個目錄的大小;以M爲單位:du -hm /home/asialee/test;以B爲單位:du -hb ./*;以K爲單位,4K的整倍數:du -hk ./*;
(19)df:查看磁盤的使用情況;
- df --block-size=GB
- df--block-size=MB
3、安裝和卸載軟件命令
(Ubuntu環境下安裝和卸載軟件命令)
(1)apt-get:在Linux中,使用apt來安裝軟件包(需要在root權限下操作,用sudo命令)
更新源服務器列表:sudo vi /etc/apt/sources.list;
更新完服務器列表後需要更新下源:
- sudo apt-get update 更新源(更新軟件庫),只檢查,不更新(已安裝的軟件包是否有可用的更新,給出彙總報告)
- sudo apt-get install package 安裝包
- sudo apt-get remove package 刪除包
- sudo apt-cache search package 搜索軟件包
- sudo apt-cache show package 獲取包的相關信息,如說明、大小、版本等
- sudo apt-get install package --reinstall 重新安裝包
- sudo apt-get -f install 修復安裝
- sudo apt-get remove package --purge 刪除包,包括配置文件等
- sudo apt-get build-dep package 安裝相關的編譯環境
- sudo apt-get upgrade 更新已安裝的包,更新已安裝的軟件包,用法:sudo apt upgrade 軟件包名。
- sudo apt-get dist-upgrade 升級系統
- sudo apt-cache depends package 瞭解使用該包依賴那些包
- sudo apt-cache rdepends package 查看該包被哪些包依賴
- sudo apt-get source package 下載該包的源代碼
- sudo apt-get clean && sudo apt-get autoclean 清理無用的包
- sudo apt-get check 檢查是否有損壞的依賴
- bazel clean: 清除bazel編譯的緩存
注:sudo:超級用戶命令, sudo是在Linux命令行廣泛使用的“超級用戶”命令。例如,如果想要進入administrator或root權限,就可以使用sudo命令。
(2)源碼安裝
- 解壓縮源代碼包
- cd dir
- ./configure 檢測文件是否缺失,創建Makefile,檢測編譯環境
- make 編譯源碼,生成庫和可執行程序
- sudo make install 把庫和可執行程序,安裝到系統路徑下
4、壓縮包管理
(1)tar:可以解壓一些類型的文件,如.tar,.tar.gz,.tar.bz2等。
- .tar文件:打包,tar cvf dir.tar dir;解壓,tar xvf dir.tar dir;
- .tar.gz文件:打包,tar zcvf dir.tar.gz dir;解壓,tar zxvf dir.tar.gz;
- .tar.bz2文件:打包,tar jcvf dir.tar.bz2 dir;解壓,tar jxvf dir.tar.bz2;
(2)rar
- rar a -r newdir dir ;打包:把dir壓縮成newdir.rar
- unrar x newdir.rar ;解包:把newdir.rar解壓縮到當前目錄
(3)zip
- zip -r dir.zip dir;用zip壓縮文件,比如:“zip -r file.zip file”表示將file目錄壓縮爲file.zip;“zip -r file.zip file1 file2”表示將file1文件和file2文件壓縮成爲file.zip;
- unzip dir.zip;用unzip解壓zip文件,比如:“unzip file.zip”表示file.zip直接解壓到當前目錄裏面;“unzip file.zip -d dir”表示file.zip解壓到dir目錄裏面;“unzip file\*.zip”表示file1,file2同時解壓到當前目錄裏。
5、文件屬性、用戶用戶組及查找與檢索命令
(1)whoami:查看當前登錄用戶;
(2)chmod:改變文件權限命令
- chmod [who] [+|-|=] [mode] 文件名:文字設定法
操作對象who可是下述字母中的任一個或者它們的組合
- u 表示“用戶(user)”,即文件或目錄的所有者。
- g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。
- o 表示“其他(others)用戶”。
- a 表示“所有(all)用戶”。它是系統默認值。
操作符號表示:
- + 添加某個權限。
- -取消某個權限。
- =賦予給定權限並取消其他所有權限(如果有的話)。
設置mode所表示的權限可用下述字母的任意組合
- r 可讀。
- w 可寫。
- x 可執行。
- chmod [mode] 文件名:數字設定法
數字表示的屬性的含義:
- 0表示沒有權限,
- 1表示可執行權限,
- 2表示可寫權限,
- 4表示可讀權限
(3)chown和chgrp
(4)find:根據文件名查找
(5)grep:根據內容檢索
- -c:只輸出匹配行的計數。
- -I:不區分大小寫(只適用於單字符)。
- -h:查詢多文件時不顯示文件名。
- -l:查詢多文件時只輸出包含匹配字符的文件名。
- -n:顯示匹配行及行號。
- -s:不顯示不存在或無匹配文本的錯誤信息。
- -v:顯示不包含匹配文本的所有行。
- -R: 連同子目錄中所有文件一起查找。
比如到系統頭文件目錄下查找所有包含printf的文件:$ grep 'printf' /usr/include -R;
6、網絡管理命令
(1)ifconfig:查看IP地址,網卡信息;
- sudo ifconfig eth0 down:關閉網卡;
- sudo ifconfig eth0 up:開啓網卡eth0;
- sudo ifconfig eth0 IP:給eth0配置臨時IP;
(2)ping:ping 主機名/IP地址;使用ping檢查與服務器的連接,比如:“ping www.baidu.com"。
(3)netstat
(4) nslookup
(5)finger:查詢用戶的信息,通常會顯示系統中某個用戶的用戶名、主目錄、停滯時間、登錄時間、登錄shell等信息等。
(6)遠程登陸命令
ssh 是一個用來登錄到遠程機器並執行命令的程序(遠程連接);
ssh user@host //登錄到的機器地址 (ssh [email protected])
ssh -p port user@host // 連接到特定端口的選項 (ssh -p 22 [email protected])
退出遠程連接:exit或Ctrl+D
7、其他命令
(1)Tap:可以自動填充剩餘內容。例如,一個文件爲hello.c,你只要按”vi he+TAB“就可以自動把後面的"llo.c"自動補足。
(2)man,help:如果對某個命令不熟悉,不知怎樣使用,這個命令可以幫助您瞭解命令以及如何使用命令,使用man命令,它顯示命令的手冊頁。例如,“man cd”顯示了cd命令的用法。同樣功能,也可以用“help cd ”來實現。
(3)clear:清屏,使光標和提示符回到屏幕第一行。快捷鍵可以使用:Ctrl -l。
(4)date :顯示當前時間;cal :顯示年月的日曆。
(5)locate: 類似於Windows中的搜索命令一樣。當你不知道保存文件的位置或文件的實際名稱時,此命令非常有用。例如,你想搜索一個含有“hello”的文件,它會給出一個Linux系統中所有包含“hello”的文件的列表。
(6)free -m:查看空閒內存。
(7)uname -a:查看內核版本信息。
(8)nano,vi:編輯命令,nano, vi,都是已經在Linux命令行中安裝的文本編輯器。nano是一個很好的文本編輯器,用顏色表示關鍵字,可以兼容大多數語言,如“nano check.txt”可以創建一個check.tx文件;vi比nano更簡單,也可以用來創建新文件或修改文件。
(9)Ctrl+Z強制退出。
(10)sudo halt,或者 sudo reboot,重啓系統 。
二、Linux vi/vim常用命令
vi/vim 基本共分爲三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)
vi/vim 常用按鍵說明
1、一般模式主要有光標移動、搜索替換和刪除複製粘貼等
(1)移動光標的方法
移動光標的方法 | |
---|---|
h 或 向左箭頭鍵(←) | 光標向左移動一個字符 |
j 或 向下箭頭鍵(↓) | 光標向下移動一個字符 |
k 或 向上箭頭鍵(↑) | 光標向上移動一個字符 |
l 或 向右箭頭鍵(→) | 光標向右移動一個字符 |
如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起的,因此可以使用這四個按鈕來移動光標。 如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動作即可! | |
[Ctrl] + [f] | 屏幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用) |
[Ctrl] + [b] | 屏幕『向上』移動一頁,相當於 [Page Up] 按鍵 (常用) |
+ | 光標移動到非空格符的下一行 |
- | 光標移動到非空格符的上一行 |
n<space> | 那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向後面移動 20 個字符距離。 |
0 或功能鍵[Home] | 這是數字『 0 』:移動到這一行的最前面字符處 (常用) |
$ 或功能鍵[End] | 移動到這一行的最後面字符處(常用) |
G | 移動到這個檔案的最後一行(常用) |
nG | n 爲數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu) |
gg | 移動到這個檔案的第一行,相當於 1G 啊! (常用) |
n<Enter> | n 爲數字。光標向下移動 n 行(常用) |
(2)搜索替換
搜索替換 | |
---|---|
/word | 向光標之下尋找一個名稱爲 word 的字符串。例如要在檔案內搜尋 vbird 這個字符串,就輸入 /vbird 即可! (常用) |
?word | 向光標之上尋找一個字符串名稱爲 word 的字符串。 |
n | 這個 n 是英文按鍵。代表重複前一個搜尋的動作。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 後,會向下繼續搜尋下一個名稱爲 vbird 的字符串。如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱爲 vbird 的字符串! |
N | 這個 N 是英文按鍵。與 n 剛好相反,爲『反向』進行前一個搜尋動作。 例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。 |
使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重複的找到一些你搜尋的關鍵詞! | |
:n1,n2s/word1/word2/g | n1 與 n2 爲數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代爲 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 並取代爲 VBIRD 則: 『:100,200s/vbird/VBIRD/g』。(常用) |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !(常用) |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !且在取代前顯示提示字符給用戶確認 (confirm) 是否需要取代!(常用) |
(3) 刪除、複製和粘貼
刪除、複製與貼上 | |
---|---|
x, X | 在一行字當中,x 爲向後刪除一個字符 (相當於 [del] 按鍵), X 爲向前刪除一個字符(相當於 [backspace] 亦即是退格鍵) (常用) |
nx | n 爲數字,連續向後刪除 n 個字符。舉例來說,我要連續刪除 10 個字符, 『10x』。 |
dd | 刪除遊標所在的那一整行(常用) |
ndd | n 爲數字。刪除光標所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用) |
yy | 複製遊標所在的那一行(常用) |
nyy | n 爲數字。複製光標所在的向下 n 行,例如 20yy 則是複製 20 行(常用) |
p, P | p 爲將已複製的數據在光標下一行貼上,P 則爲貼在遊標上一行! 舉例來說,我目前光標在第 20 行,且已經複製了 10 行數據。則按下 p 後, 那 10 行數據會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用) |
u | 復原前一個動作。(常用) |
[Ctrl]+r | 重做上一個動作。(常用) |
這個 u 與 [Ctrl]+r 是很常用的指令!一個是復原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦! | |
. | 不要懷疑!這就是小數點!意思是重複前一個動作的意思。 如果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了! (常用) |
2、一般模式切換到編輯模式的可用的按鈕說明
進入輸入或取代的編輯模式 | |
---|---|
i, I | 進入輸入模式(Insert mode): i 爲『從目前光標所在處輸入』, I 爲『在目前所在行的第一個非空格符處開始輸入』。 (常用) |
a, A | 進入輸入模式(Insert mode): a 爲『從目前光標所在的下一個字符處開始輸入』, A 爲『從光標所在行的最後一個字符處開始輸入』。(常用) |
o, O | 進入輸入模式(Insert mode): 這是英文字母 o 的大小寫。o 爲『在目前光標所在的下一行處輸入新的一行』; O 爲在目前光標所在處的上一行輸入新的一行!(常用) |
r, R | 進入取代模式(Replace mode): r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 爲止;(常用) |
上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--』或『--REPLACE--』的字樣。 由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案裏面輸入字符時, 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔! | |
[Esc] | 退出編輯模式,回到一般模式中(常用) |
3、一般模式切換到指令行模式的可用的按鈕說明
指令行的儲存、離開等指令 | |
---|---|
:w | 將編輯的數據寫入硬盤檔案中(常用) |
:w! | 若文件屬性爲『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關啊! |
:q | 離開 vi (常用) |
:q! | 若曾修改過檔案,又不想儲存,使用 ! 爲強制離開不儲存檔案。 |
注意一下啊,那個驚歎號 (!) 在 vi 當中,常常具有『強制』的意思~ | |
:wq | 儲存後離開,若爲 :wq! 則爲強制儲存後離開 (常用) |
:w [filename] | 將編輯的數據儲存成另一個檔案(類似另存新檔) |
:r [filename] | 在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』 這個檔案內容加到遊標所在行後面 |
:n1,n2 w [filename] | 將 n1 到 n2 的內容儲存成 filename 這個檔案。 |
4、vim的環境變更
vim 環境的變更 | |
---|---|
:set nu | 顯示行號,設定之後,會在每一行的前綴顯示該行的行號 |
:set nonu | 與 set nu 相反,爲取消行號! |
5、vim 中批量添加註釋
方法一 :塊選擇模式
批量註釋:
Ctrl + v 進入塊選擇模式,然後移動光標選中你要註釋的行,再按 Shift+i 進入行首插入模式輸入註釋符號如 // 或 #,輸入完畢之後,按兩下 ESC,Vim 會自動將你選中的所有行首都加上註釋,保存退出完成註釋。
取消註釋:
Ctrl + v 進入塊選擇模式,選中你要刪除的行首的註釋符號,注意 // 要選中兩個,選好之後按 d 即可刪除註釋,ESC 保存退出。
方法二: 替換命令
批量註釋:
使用下面命令在指定的行首添加註釋。使用名命令格式: :起始行號,結束行號s/^/註釋符/g(注意冒號)。
取消註釋:
使用名命令格式: :起始行號,結束行號s/^註釋符//g(注意冒號)。
例子:
- 在 10 - 20 行添加 // 註釋 :10,20s#^#//#g
- 在 10 - 20 行刪除 // 註釋 :10,20s#^//##g
- 在 10 - 20 行添加 # 註釋 :10,20s/^/#/g
- 在 10 - 20 行刪除 # 註釋 :10,20s/#//g
三、Linux下軟件源更新失敗問題解決
Ubuntu18.04LTS 設置失效,配置軟件源,軟件源更新失敗:無法安全地用該源進行更新 ,錯誤如下:
解決方法如下:
1、下載Ubuntu對應版本的鏡像源
注意:Ubuntu版本要和本地的版本對應。
2、進入文件所在目錄,把下載的 sources.list 文件移動到 /etc/apt/ 目錄下覆蓋原來的 sources.list 。