Linux常用基础指令、Linux常用工具(软件包)使用带图详解
目錄
目錄相關(guān)指令:
文件相關(guān)指令:
?壓縮解壓縮指令:
匹配查找指令:
權(quán)限相關(guān)指令:
Linux常用工具:
?指令使用規(guī)則:指令 [該指令的詳細操作選項] [操作對象(通常有路徑)],后面兩可不加.
目錄相關(guān)指令:
ls:瀏覽目錄,但不會使當前位置進入到該目標操作對象,-a是把該目錄下包括隱藏文件(以'' . ''開頭的文件,單個點表示當前目錄,兩個點表示上層目錄,比如./test就表示當前目錄下的test目錄)所有文件顯示,-l查看文件詳細信息.
?注意: ./test和直接打test效果一樣的
?cd:進入某目錄改變當前位置,cd ~ 返回用戶家目錄即/home/qifei
pwd:顯示當前所造位置
所以值得一提的是Linux指令嚴格區(qū)分大小寫
mkdir:創(chuàng)建一個目錄,mkdir ./test/aaa在test目錄下創(chuàng)建aaa目錄,-p選項:多級創(chuàng)建,若test還沒有創(chuàng)建就創(chuàng)建test目錄再在test下創(chuàng)建aaa目錄
rmdir:只能刪除空目錄
rm: rm -r [目錄名] 刪除目錄,也將該目錄下的文件刪除了,rm [文件名]直接刪除文件?
cp:cp -r [被復(fù)制源目錄] [要復(fù)制到的目錄]
mv:剪切(移動)一個目錄或者文件,mv [要移動的目錄] [要移動到的位置]
文件相關(guān)指令:
touch:創(chuàng)建一個新文件,若文件已存在則刷新該文件的時間屬性
cat:打印所有文件內(nèi)容
more:分頁顯示文件內(nèi)容,回車下一行,空格ctrl+f下一頁,ctrl+b上一頁,q退出
less:分頁顯示文件內(nèi)容,ctrl+f下一頁,ctrl+b上一頁,上下箭頭或者j/k按行滾動,q退出,/字符串向下查找指定字符串,?字符串向上查找
|:管道符,鏈接兩個命令前面的結(jié)果在進行后面的命令,只打印passwd文件第三行內(nèi)容:
head -n 3 ./passwd | tail -n 1
?echo:echo "字符串" >> [目標文件],將字符串寫入目標文件末尾.? echo "字符串" >?[目標文件],刪除原有文件內(nèi)容重寫.
?壓縮解壓縮指令:
zip:zip [壓縮后名字] [要壓縮的文件]??
unzip:unzip [要解壓的文件名] -d [要解壓到的位置],
? ? ? ? ? unzip [要解壓的文件名],直接解壓到當前位置
?gzip/gunzip 和 bzip2/bunzip2 格式的壓縮指令相同
?
?打包:tar -czvf 打包后的名字.tar.gz? ?文件名1? ?(文件名2)
解包:tar -xzvf 包名
以gzip打包的的后綴名用 .tar.gz,不同格式有不同后綴名.
匹配查找指令:
在指令目錄查找文件:
find:? ?find ./ -name "*e*",按文件名尋找中間字符有e的目錄和文件
? ? ? ? ? find ./ -type [f(普通文件)d(目錄)p(管道)l(符號鏈接)c(字符設(shè)備)b(塊設(shè)備)],按文件類型查找
? ? ? ? ? find ./ size +10M,找大于10M的文件
? ? ? ? ? find ./ -[a(最后一次訪問時間)m(最后一次修改時間)c(最后一次狀態(tài)改變時間)]time -1,
? ? ? ? ? 以24小時為一個單位,上例是找一天以內(nèi)修改過的文件
? ? ? ? ??find ./ -[a(最后一次訪問時間)m(最后一次修改時間)c(最后一次狀態(tài)改變時間)]min?-1,
? ? ? ? ? 以分鐘為單位
在指定文件查找內(nèi)容:
grep:
?
?gerp路徑在最后,find路徑在操作選項前,grep沒有模糊查找*,find可以有*
權(quán)限相關(guān)指令:
su:切換用戶,su 用戶名或root
sudo:臨時提權(quán),當使用需要更高權(quán)限的操作的時候在命令前加sudo
若沒有配置好,先進入root,然后visudo指令,光標在最后一用戶名上按o,打上需要用sudo的用戶名,后面的all啥的全復(fù)制下來,然后按esc,再按 :wq 保存退出.
用戶分類:文件所有者u,文件所屬組g,其他用戶o
操作分類:文件(-) :? -或r是否可讀,-或w是否可寫,-或x是否可執(zhí)行
? ? ? ? ? ? ? ?目錄(d) :? -或r是否可瀏覽,-或w是否創(chuàng)可建刪除,-或x是否可進入
?rwx rwx r-x? >> 111 111 101 >> 775 :文件所有者7可讀可寫可執(zhí)行 , 文件所屬組7可讀可寫可執(zhí)行 , 其他用戶5可讀可執(zhí)行不可寫.
umask:查看或修改創(chuàng)建文件時系統(tǒng)默認的權(quán)限掩碼
查看:
修改:umask 033
?777和掩碼取反(~umask)后按位與&,得到的就是touch創(chuàng)建文件時的權(quán)限:
033>>000 011 011>>取反111 100 100>>和111 111 111按位與>>得本身111 100 100
(也可以直接777減033)
?chmod:修改已存在的文件權(quán)限
? ? ? ? ? ? ?chmod [u(所有者)g(所屬組)o(其他用戶)a(三者)] [+或-]? [r w x] 文件名? 或者
? ? ? ? ? ? ?chmod 775?文件名 , 給所有者7所屬組7其他用戶5
?
?dir是目錄名,使用該命令后其他用戶權(quán)限x那位就變成t
刪庫跑路指令:rm -rf /*
Linux常用工具:
yum:軟件包管理工具,用于第三方工具軟件的安裝卸載.?
yum list查看可安裝的包,yum search+名字(可模糊查找).
root下 yum install vim/gcc/gdb/make/git安裝,? yum remove+名字刪除.
vim:編輯器,寫代碼的.
vim不支持鼠標,有12中操作模式,但常用的只有3種:
1.普通模式:其他的模式下切換成普通模式按一下或兩下esc鍵.普通模式按以下命令:
dd刪除(剪切)本行,ndd從光標所在行開始刪除(剪切)n行,(n)yy復(fù)制所在行,x刪除(剪切)光標所在字符,dw刪除(剪切)光標所在單詞,A跳到光標所在行行尾,p粘貼(dd,ndd,x,dw后可以再粘貼出來),u撤銷上一次操作,crtl+r還原撤銷,hjkl左上下右(或上下左右鍵),ctrl+f/b上下翻頁,gg=G全文對齊,G光標移動到文件最后一行開頭,gg移動到文件第一行開頭
2.插入模式:普通模式下按i進入插入模式,開始正常碼代碼.
3.底行模式:普通模式下打:或/或?都可以進入底行模式
:w 保存? ? ? :q 退出? ? ? :wq 保存? ? ?:q!強制退出不保存? ? ? ? /string,?string?匹配,查找字符串(該字符串高亮)? ?:1,12s/printf/scanf/g ,將1-12行的printf全部替換成scanf.%s是全文替換.
g++:編譯器,將高級語言編譯為機器指令,編譯過程:
預(yù)處理:展開代碼進行引入頭文件,進行宏替換,消除注釋等操作
編譯:語法語義檢測,沒錯才能將代碼解釋為匯編指令.
匯編:將匯編指令解釋為二進制機器指令.
鏈接:將所有需要的.o文件,庫文件打包生成可執(zhí)行文件,和函數(shù)的實現(xiàn)聲明有關(guān).鏈接分為靜態(tài)鏈接和動態(tài)鏈接.
靜態(tài)鏈接:將庫中使用到的代碼寫入可執(zhí)行程序,但使程序變大,雖然不需要依賴庫了,但是調(diào)用多個相同的庫函數(shù)時會使運行時內(nèi)存存在重復(fù)的冗余代碼.
動態(tài)鏈接:在可執(zhí)行程序中記錄庫函數(shù)符號信息表,沒有將庫函數(shù)的實現(xiàn)寫入程序,是在程序運行時加載庫,生成的程序較小,內(nèi)存中共享庫,但運行時依賴庫的存在.
gcc默認動態(tài)鏈接.
gcc常見選項:-o,指定生成的目標文件對象名稱.
????????????????????-E,只進行到預(yù)處理完成:gcc -E main.c -o mian.i
? ? ? ? ? ? ? ? ? ? -S,只進行到編譯完成:gcc -S main.i -o main.s
? ? ? ? ? ? ? ? ? ? -c,只進行到匯編完成:mian.s -o mian.o
? ? ? ? ? ? ? ? ? ? -g,可以使用gdb調(diào)試的前提,生成debug調(diào)試程序:gcc -g main.c -o main
gdb:調(diào)試器,調(diào)試程序的運行過程, gdb mian開始調(diào)試上面生成的main文件
常見指令: run,直接運行結(jié)束,有斷點就運行到斷點
? ? ? ? ? ? ? ? strat,逐步調(diào)試(不常用).
? ? ? ? ? ? ? ? list main.c:5,查看指定文件的第五行附近代碼,也可不指定文件.
? ? ? ? ? ? ? ? n/next,下一行,遇到函數(shù)是直接執(zhí)行完函數(shù).s/step,下一行遇到函數(shù)是進入到函數(shù)再按行? ? ????????????????調(diào)試c/continue從目前的調(diào)試位置運行到下一個斷點位置.若是遇到循環(huán),比如for(){},值得? ? ? ? ? ? ? ? ? 注意的是單個{或}不算一行,給for()這行打斷點用n/s效果一樣,都要進入循環(huán)一句句運行用? ? ? ? ? ? ? ? ? c就可以直接運行到下一次循環(huán).
? ? ? ? ? ? ? ? until mian.c:5,直接運行到指定行.
? ? ? ? ? ? ? ? b/break mian.c:5,給指定文件指定行加斷點,也可不指定文件.
????????????????b/break test_fun,給函數(shù)打斷點.
? ? ? ? ? ? ? ? print+變量名,查看變量數(shù)據(jù).
? ? ? ? ? ? ? ? watch+變量名,比如for循環(huán)里的i,給變量打監(jiān)控斷點,變量發(fā)生變化時觸發(fā)斷點.
? ? ? ? ? ? ? ? backtrace,查看函數(shù)調(diào)用棧,可以快速找到程序崩潰的函數(shù),棧頂函數(shù)(沒出棧)就是有問題? ? ? ? ? ? ? ? ? ? 的那個位置.
make:項目自動構(gòu)建工具
先vim makefile,創(chuàng)建一個名為makefile的文本文件,里面寫的時項目的構(gòu)建規(guī)則.
在目錄下打make命令會在當前目錄下找到名為makefile的文件進行解釋執(zhí)行.
makefile編寫規(guī)則:
目標對象:依賴對象
[tab鍵]為了生成目標對象所執(zhí)行的指令.
$@,目標對象? ? ? ? $^,所有的依賴對象? ? ? ? $<,依賴對象中的第一個
例:main:mian.c child.c
? ? ? ? gcc? -g $^ -o $@
用main.c和child.c生成一個main可執(zhí)行文件.
在該目錄下打make命令就是執(zhí)行了: gcc? -g main.c child.c -main
(打gcc命令前按一次tab鍵,四個空格也不行.)
為了解釋上圖,下圖意思是第一個目標對象是main,為了生成main,先得生成main.o和child.o就會遞歸下去找到生成main.o和child.o的語句若前兩句放在最后面則只生成了一個(第一個)main.o文件make命令就退出結(jié)束了?
下圖是先進行src找到所有當前目錄下.c文件再obj把所有.c文件進行到匯編后的.o文件然后再生成目標文件,clean默認不會執(zhí)行,若make后再執(zhí)行make clean就會把中間生成的所有.o文件刪除.c不刪
?特殊情況:當前目錄下已有名為clean的文件(與我們的項目沒關(guān)系)此時make clean就會有沖突因為這個clean文件沒有內(nèi)容修改是最新的然后make clean就不執(zhí)行了,這時我們需要使用.PHONY偽對象來解決,如下圖:
git:項目版本管理工具
總結(jié)
以上是生活随笔為你收集整理的Linux常用基础指令、Linux常用工具(软件包)使用带图详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html 在 ul 加分隔线,的Html
- 下一篇: 备份Linux到ntfs硬盘,Linux