Linux常用快捷鍵、文件管理和查詢


有話要說

為什么要用Linux?要用Linux的原因太多,想說說不完啊。
如果你說用Linux只是為了裝逼,那證明你真的還很菜。不排除有裝逼了因素,那也只占非常少的比例,可以忽略不計。
我們反問一下,為什么不用Linux呢?回答無非就是:沒有圖像界面、操作太復雜、和我以前的使用習慣不一樣、學習新的系統需要學習成本。
其實只是我們排斥未知的恐懼,從心底里面抵觸,而找的各種理由。要想做好一件事,我們會去找各種方法。不想做一件事,我們會去找各種理由。
.net core的推出絕對不是讓我們在Windows上玩玩的。特別是多年經驗的.net er,需要快速適應這種變化,不然這是個危險的信號啊。
我們正在進行一場革命,革的不好就沒命了。微軟都已經擁抱Linux了,你還有在堅持什么呢?(當然,如果你只是想玩.net framework的話,當我沒說。

image

進入Linux你將進入另一個世界,下面開始我們Linux的學習吧~

Shell應用技巧,常用快捷鍵

Shift + insert #粘貼 Ctrl + insert #復制 Tab【按鍵】或者 Ctrl + i #命令補齊 【這個快捷鍵太有用了,這不就是linux下的智能提示么】
Ctrl + w #刪除前一個單詞 Ctrl + u #刪除光標前全部字符 Ctrl + k #刪除光標后全部字符 Ctrl + d #刪除光標所在字符 Ctrl + y #將刪除的字符粘出來
Ctrl + a #將光標移動到行首 Ctrl + e #將光標移動到行尾 ← 或者 ctrl + b #光標左移動 → 或者 Ctrl + f #光標右移動
↑ 或者 Ctrl + p            #顯示上一條命令 ↓ 或者 ctrl + n #顯示下一條命令 ctrl + s #暫時凍結輸入 ctrl + q #解凍(解凍后會自動輸入之前的輸入)
Ctrl + l #清屏 Ctrl + c #退出正在的執行命令或另起一行 Ctrl + d #退出登錄 Ctrl + z

幫助命令

man (幫助命令)

原意:manual
語法:man [命令或配置文件]  
首先我們學習linux命令太多,不可能記住所有命令。那么這個man命令就是個很好的幫助命令。  
示例:
man 1 passwd # 1查看命令幫助 ,1默認可以省略 man 5 passwd # 5查看配置文件幫助 #只要按下/,光標就會跑到這個地方來,你就可以開始輸入搜尋字串(n繼續往下查詢,N方向查詢) #q退出、空格向下翻頁、pgup向上翻頁

info (和man差不多)

原意:information 語法:info [任何關鍵字]

whatis (查詢基本信息,等效於man -f)

#mandb 更新whatis數據庫

help (幫助)

可以查詢一些shell內置命令幫助,如 cd、pwd

--help (獲取選項信息【常用】)

示例: 
[root@localhost ~]# cat --help 用法:cat [選項]... [文件]... 將[文件]或標准輸入組合輸出到標准輸出。 -A, --show-all 等於-vET -b, --number-nonblank 對非空輸出行編號 -e 等於-vE -E, --show-ends 在每行結束處顯示"$" -n, --number 對輸出的所有行編號 -s, --squeeze-blank 不輸出多行空行 -t 與-vT 等價 -T, --show-tabs 將跳格字符顯示為^I -u (被忽略) ... 有了這個命令,我們學習起來就有了訣竅。 

alias (別名)

查看別名:alias 命令別名:alias mycp='cp' 這樣起的別名只在當前窗口有效,如果要是命令長期有效則要修改配置文件.bashrc,在/root目錄下。 這樣就很方便我們定制自己的個性命令了。比如重啟supervisorctl reload這個命令記不住,太長了。我們可以別名alias reloadsupervisorctl='supervisorctl reload'。這樣我們只要記住reload然后按tab鍵就可以自動補全了。

文件管理、文件搜索命令

cd (切換目錄)

原意:change directo 語法:cd [目錄]

pwd (顯示當前目錄)

原意:print working directory 語法:pwd

特殊目錄

. 代表此層目錄(cd ./dotnet 和 cd dotnet等效) .. 代表上一層目錄 - 代表前一個工作目錄(上次執行cd前的目錄) ~ 代表“目前使用者身份”所在的主文件夾(和直接執行cd等效) ~account 代表 account 這個使用者的主文件夾( account是個帳號名稱) 示例: cd ~ #和直接cd 等效 cd .. #返回上層目錄 cd - #回到上次執行cd執行前的目錄

ls (顯示目錄文件)

- 原意:list - 語法:ls [-ald] [文件或目錄]

touch (創建空文件)

語法:touch [文件名]
查看文件的時間信息:
modification time ( mtime):內容數據變更時 status time ( ctime):狀態改變時 access time ( atime) :該文件的內容被取用時 示例: [root@localhost dotnet]# ls -l dotnet #查看dotnet文件的創建時間(默認就是mtime) -rwxr-xr-x. 1 1002 27 105664 7月 21 07:16 dotnet [root@localhost dotnet]# ls -l --time=atime dotnet #查看dotnet文件的讀取時間 -rwxr-xr-x. 1 1002 27 105664 8月 19 17:31 dotnet [root@localhost dotnet]# ls -l --time=ctime dotnet #查看dotnet文件的狀態更新時間 -rwxr-xr-x. 1 1002 27 105664 8月 15 20:23 dotnet 

mkdir (創建新目錄)

語法:mkdir [目錄名]

cp (復制文件或目錄)

語法:cp -r [原文件或目錄][目的目錄] 示例: [root@localhost ~]# cp mytest.txt mytest2.txt #復制mytest.txt 到 mytest2.txt [root@localhost ~]# cp project project2 #復制文件夾(如果文件夾里面有內容賦值失敗) cp: 略過目錄"project" [root@localhost ~]# cp -r project project2 #復制文件夾 (需要帶上 -r參數,遞回持續復制)

mv (移動文件或重命名)

原意:move
語法:mv [源文件或目錄 ][目的目錄]

rm (刪除文件)

原意:remove 語法:rm -rf [文件或目錄] #r是刪除目錄 f是不需要確認 示例: [root@localhost ~]# rm mytest2.txt #刪除文件mytext2.txt(會默認給出提示) rm:是否刪除普通文件 "mytest2.txt"?y [root@localhost ~]# rm -f mytest.txt #刪除文件不需要提示(帶上 -f參數) [root@localhost ~]# rm project2 #不能刪除目錄 rm: 無法刪除"project2": 是一個目錄 [root@localhost ~]# rm -rf project2 #刪除目錄需要帶上-r(-r遞回刪除、帶上f是不需要確認提示,如果一百個文件,提示一百次會瘋的) [root@localhost project2]# rm System.Xml* #刪除System.Xml開頭的文件 rm:是否刪除普通文件 "System.Xml.ReaderWriter.dll"?y rm:是否刪除普通文件 "System.Xml.XDocument.dll"?y 

cat (顯示文件內容)

原意:Concatenate 語法:cat [文件名] 示例: [root@localhost ~]# cat mytest.test #查看文件mytest.test [root@localhost ~]# cat -n mytest.test #-n顯示行號 (類似nl命令) 這個命令有個缺點,就是顯示全部信息,如果內容過多,瀏覽就不方便了。

more (分頁顯示文件內容)

語法:more [文件名] 
 空格或f顯示下一頁
 回車顯示下一行
 q退出
示例:
[root@localhost ~]# more 三體.txt 輸入/ 然后輸入關鍵字比如“三” /三 ...跳過 相關文章 《三體3》未獲雨果獎 ... 《三體》電影確定上映日程,... #把帶“三”的行都搜索出來了。

less (分頁查詢,比more更加強大)

more 只能翻下一頁,less可以上下翻頁。
參數:
[pagedown]:向下翻動一頁; [pageup] :向上翻動一頁; /字串 :向下搜尋“字串”的功能; ?字串 :向上搜尋“字串”的功能; n :重復前一個搜尋 ( 與 / 或 ? 有關!) N :反向的重復前一個搜尋 ( 與 / 或 ? 有關!) g :前進到這個數據的第一行去; G :前進到這個數據的最后一行去 ( 注意大小寫) ; q :離開 less 這個程序; 示例: [root@localhost ~]# less 三體.txt 輸入/ 然后輸入關鍵字比如“三” 可以高亮關鍵字。

head (查看文件的前幾行)

語法:head -num [文件名] 示例: [root@localhost ~]# head -n 5 三體.txt #顯示前五行 [root@localhost ~]# head -n 5 三體.txt #不顯示后五行

tail (查看文件的后幾行)

語法:tail -num [文件名]

ln (產生鏈接文件)

原意:link
語法:ln -s [源文件] [目標文件]
示例:  
ln -s /home/testfile /home/testfile.soft #創建文件的軟鏈接testfile.soft ls -s /home.testfile /home/testifle.hard #創建文件的硬鏈接testfile.hard

which (顯示系統命令所在目錄)

語法:which [命令名稱] 示例: [root@localhost dotnet]# which ifconfig /usr/sbin/ifconfig

find (查找文件或目錄)

語法:find [搜索路徑][搜索關鍵字] -a 邏輯與 -o 邏輯或 -name文件名 -size文件大小 -cteime文件修改時間 示例: find /etc -name init #查找目錄下名字是inti的文件 find /etc -size +204800 #查找目錄下大於100M的文件 find /etc -ctime -1 #查找24小時內被修改過屬性的文件和目錄 find mytest -exec ls -l {} \; #查看當前目錄mytest文件夾下的文件執行 ls -l 命令。 -exec {}\; 是固定格式。 find mytest -name F* #查找mytest文件夾下以F開頭的文件 find mytest -name F??? #查找mytest文件夾下以F開頭的並且文件名只有四個字母

locate (尋找文件或目錄)

用法:locate [搜索關鍵字]
示例:
[root@localhost dotnet]# locate dotnet #查詢所有包含dotnet的文件和目錄 [root@localhost dotnet]# locate Dotnet #查詢不到,因為區分大小寫 [root@localhost dotnet]# locate -i Dotnet #查找所有路徑或文件名包含dotnet關鍵字文件路徑,且不區分大小寫 [root@localhost dotnet]# locate -ic Dotnet#查詢搜索結果的數量 3661 說明: 查詢緩存數據庫里查詢(可以使用updatedb命令 [建立目錄文件的數據庫],默認每天更新一次)

grep (在文件內容中搜索匹配的行並輸出)

用法:grep [指定字符串][源文件] 示例: grep 我 testfile #搜索當前目錄下的文件testfile中包含“我”的行

其他

輸入/輸出重定向

- > 輸出重定向 示例: ls -l > mytest.txt #將當前目錄的所以文件信息寫入mytest.txt文件下。 - < 輸入重定向 示例:wall < mytest.txt #將mytest.txt文件里面的內容廣播(wall廣播命令) - 2> 錯誤重定向 示例:ggg 2> err.txt # err.txt將記錄錯誤信息 (ggg是個錯誤命令)

history (顯示歷史命令)

| (管道)

ls查詢到的文件可能很多,如果我們想要分頁瀏覽,我們可以使用管道命令  
ls -l /etc | more              #分頁查看etc目錄下的文件 ls -l /etc | grep init #查看etc目錄下文件名包含init的文件 ls -l /etc | grep init | wc -l #查看etc目錄下文件名包含init的文件的個數

命令連接符

 ; 
示例:cd /home ; ls #跳轉到home目錄並且查看里面的文件(就算是錯誤的命令也會繼續執行后面的命令。) && 示例:ggg && ls #不會查看目錄下的文件(中間有錯誤的命令存在就不會執行后面的命令) || 示例:ggg || ls #會執行查看目錄下的文件(遇到可以執行成功的命令就會停止執行后面的命令)

命令替換符

用法:命令1 `命令2`
示例:
ls -l `which cd` #查看cd命令的文件信息(which定位命令的位置)

netstat

netstat -lntp  #查看監聽(Listen)的端口 netstat -antp #查看所有建立的TCP連接 netstat -tunlp #查看端口使用情況 (如 netstat -tunlp | grep 3306 查看3306端口是否被使用) netstat -n | grep tcp | grep 80 | wc -l #監控網絡客戶連接數

負載信息

ps -eLf | grep dotnet | wc -l #監控dotnet線程數 mpstat #不但能查看所有CPU的平均信息,還能查看指定CPU的信息。 top -u mysql #查看使用情況 按鍵盤數字“1”,可監控每個邏輯CPU的狀況 (http://blog.csdn.net/dxl342/article/details/53507673) df -lh #顯示所有硬盤的使用狀況

firewall防火牆

firewall-cmd --zone=public --add-port=80/tcp --permanent #開放80端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent #關閉80端口 firewall-cmd --reload #重新載入,使其生效 systemctl restart firewalld #重啟防火牆 firewall-cmd --zone=public --list-ports #查看防火牆開啟的端口 http://www.cnblogs.com/moxiaoan/p/5683743.html

其他

- su #用戶切換 [root@localhost dotnet]# su BennyZhao [BennyZhao@localhost dotnet]$ su root - 圖形界面與字符界面切換 init 5 #切換到圖形界面 init 3 #切換到命令行界面 - 安裝rz yum install lrzsz #安裝rz和sz命令 - curl訪問 curl #訪問 注意:除了 / 之外,所有的符號都可以為文件或文件夾命名。命名大小寫敏感。 yum list installed | grep dotnet #查找已經安裝的程序 yum remove dotnet #卸載安裝的程序

推薦

我的博客只是個人學習總結,並不適合園友用來學習。
這里推薦《鳥哥的Linux 私房菜》:http://linux.vbird.org/linux_basic/0220filemanager.php 這是網頁版(默認是繁體字,可以使用chrome瀏覽器自動翻譯成簡體。可以用pocket插件在手機端看)網上也有PDF、mobi版。
然后喜歡看視頻的可以:http://study.163.com/course/introduction.htm?courseId=266032#/courseDetail?tab=1 李明老師的視頻也很不錯,你也可以下載網易雲課堂手機版在公交車或地鐵上看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM