
目錄
- linux常用指令
- ls指令
- . 和 . .的意思
- cd的常用方式
- Linux的目錄結構
- touch指令
- 面試三問:
- mkdir指令(重要)
- tree
- rmdir指令 && rm 指令(重要)
- .man指令(重要):
- cp指令(重要)
- mv指令(重要):
- cat
- more指令
- less指令(重要)
- head指令
- tail指令
- 時間相關的指令date顯示
- Cal指令
- find指令
- which
- alias
- grep指令
- zip/unzip指令
- tar指令
- bc指令
- uname
- top
- free
- df -h
- linux熱鍵
- 擴展命令
linux常用指令
ls指令
語法:ls
功能:對于目錄: 列出該目錄下的所有子目錄與檔案,對于檔案: 將列出檔案名以及其他資訊
針對目錄顯示的效果:

針對檔案顯示的效果:

ls常用選項:推薦使用ls - al
-a 列出目錄下的所有檔案,包括以 . 開頭的隱含檔案,
-d 將目錄象檔案一樣顯示,而不是顯示其下的檔案, 如:ls –d 指定目錄
-i 輸出檔案的 i 節點的索引資訊, 如 ls –ai 指定檔案
-k 以 k 位元組的形式表示檔案的大小,ls –alk 指定檔案
-l 列出檔案的詳細資訊,
-n 用數字的 UID,GID 代替名稱, (介紹 UID, GID)
-F 在每個檔案名后附上一個字符以說明該檔案的型別,“*”表示可執行的普通檔案;“/”表示目錄;“@”表
示符號鏈接;“|”表示FIFOs;“=”表示套接字(sockets),(目錄型別識別)
-r 對目錄反向排序,
-t 以時間排序,
-s 在l檔案名后輸出該檔案的大小,(大小排序,如何找到目錄下最大的檔案)
-R 列出所有子目錄下的檔案,(遞回)
-1 一行只輸出一個檔案
. 和 . .的意思
在linux中以.開頭的都是隱藏檔案,一般ls去顯示檔案的時候是不會去顯示隱藏檔案的,所以通常情況下ls會組合一些選項比如ls - a,這樣就可以查看隱藏檔案,使用ls -a后就可以去查看隱藏檔案,當然 . 和. .也是屬于隱藏檔案,所以在通常情況下使用ls是看不到的

. 和 . .也表示當前目錄和上級目錄

使用舉例
執行當前目錄下的程式
./a.out
回退到上級目錄
cd ..
語法:whoami
功能:顯示主作業目錄
whoami //顯示主作業目錄
//普通用戶登錄的作業目錄是:/home/xxx
//root登錄的作業目錄是:/root
效果:當前是root用戶

語法:pwd
功能:顯示用戶當前所在的目錄
pwd //顯示當前所處的目錄
cd的常用方式
語法:cd
功能:進入一個目錄
cd opt //進入根目錄下的opt目錄
cd + ls//進入一個目錄顯示當前目錄下的檔案或者目錄
進入根目錄下的opt目錄顯示當前目錄下的目錄

cd的快捷方式
cd ~ //快速進入主作業目錄 ,~指的是用戶的主作業目錄
進入根目錄
cd -//快速進入最近保存路徑
效果:

另外一種方式:
cd / //快速進入根目錄

補充:
“- ”:這個符號會記錄,是從哪個路徑下來的,保存最近路徑
cd . . : 回傳上級目錄
cd /home/litao/linux/ : 絕對路徑
cd …/day02/ : 相對路徑
cd ~:進入用戶家目錄
cd -:回傳最近訪問目錄
Linux的目錄結構
Linux系統中,磁盤上的檔案和目錄被組成一棵目錄樹,每個節點都是目錄或檔案

絕對路徑訪問:

絕對路徑只有一種,不容易出錯
相對路徑訪問:

相對路徑可以有多種,不容易出錯
touch指令
語法:touch + 檔案名(包含檔案后綴)
功能:touch命令引數可更改檔案或目錄的日期時間,包括存取時間和更改時間,或者新建一個不存在的檔案
注意:touch只能創建普通檔案

echo:將后面的內容以字串的形式顯示到螢屏
cat : 查看檔案中的資料
面試三問:
問題:如果在win下創建一個空檔案,這個檔案占不占用空間?
答:占用,檔案是由檔案的內容和檔案的屬性組成的
檔案的屬性屬于是資料嗎?檔案的型別是檔案的屬性嗎?
是,要被保存
win vs Linux保存檔案型別的方式有什么差別?
win:通過檔案名后綴來區分檔案型別
linux:檔案型別和檔案后綴沒有直接關系,但是依舊會保留后綴這種做法
linux用屬性資訊列的第一個字母來區分檔案的型別,d表示的是目錄,”-“表示的是普通檔案
mkdir指令(重要)
語法:mkdir + dirname
功能:在當前目錄下創建一個名為 “dirname”的目錄
常用選項:
-p, --parents 可以是一個路徑名稱,此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;

這里我們可以看到 filename.c這個目錄并不存在,那么使用mkdir -p的方式會自動將他創建,但是myproject_cpp已經存在了,并沒看到mkdir 執行后在當前目錄下創建一個myproject_cpp目錄
舉例:
mkdir –p test/test1 : 遞回建立多個目錄

創建出來了一個路徑的目錄
總結:
mkdir可以創建多個一連串的目錄,并且他們存在父子關系(一個目錄里包著一個目錄),默認創建的即使你是普通檔案也會把你當作目錄創建
tree
語法:tree + 目錄名
功能:樹狀結構展示目錄結構
tree test //使用tree去遍歷剛剛創建出來的test目錄
效果:

rmdir指令 && rm 指令(重要)
rmdir是一個與mkdir相對應的命令,mkdir是建立目錄,而rmdir是洗掉命令,
語法:rmdir [-p][dirName]
適用物件:具有當前目錄操作權限的所有使用者
功能:洗掉空目錄
常用選項
-p 當子目錄被洗掉后如果父目錄也變成空目錄的話,就連帶父目錄一起洗掉
使用 rm -r 洗掉遞回創建出來的目錄,他是倒著往回洗掉的,是一種二叉樹的后序遍歷思想

當使用rm -r指令洗掉目錄時,系統詢問你的選擇

使用rm -rf指令去洗掉系統不會詢問,可以一直刪完
總結:
rm可以去洗掉普通檔案,也可以去洗掉目錄檔案,還可以洗掉空目錄 rm -r 可以去遞回洗掉目錄
rmdir只能洗掉空目錄
rm -f (強制洗掉)
推薦使用rm指令,萬萬不能使用rm -rf /
rm -rf / //會將整個根目錄給洗掉,這樣子系統就崩了
.man指令(重要):
Linux的命令有很多引數,我們不可能全記住,我們可以通過查看聯機手冊獲取幫助,訪問Linux手冊頁的命令是man 語法: man [選項] 命令
-k 根據關鍵字搜索聯機幫助
num 只在第num章節找
-a 將所有章節的都顯示出來,比如 man printf 它預設從第一章開始搜索,知道就停止,用a選項,當按
下q退出,他會繼續往后面搜索,直到所有章節都搜索完畢,
解釋一下,面手冊分為8章
1 是普通的命令
2 是系統呼叫,如open,write之類的(通過這個,至少可以很方便的查到呼叫這個函式,需要加什么頭文
件)
3 是庫函式,如printf,fread4是特殊檔案,也就是/dev下的各種設備檔案
5 是指檔案的格式,比如passwd, 就會說明這個檔案中各個欄位的含義
6 是給游戲留的,由各個游戲自己定義
7 是附件還有一些變數,比如向environ這種全域變數在這里就有說明
8 是系統管理用的命令,這些命令只能由root使用,如ifconfig
cp指令(重要)
語法:cp [選項] 源檔案或目錄 目標檔案或目錄
功能: 復制檔案或目錄
說明: cp指令用于復制檔案或目錄,如同時指定兩個以上的檔案或目錄,且最后的目的地是一個已經存在的目錄,則它會把前面指定的所有檔案或目錄復制到此目錄中,若同時指定多個檔案或目錄,而最后的目的地并非一個已存在的目錄,則會出現錯誤資訊
常用選項:
-f 或 --force 強行復制檔案或目錄, 不論目的檔案或目錄是否已經存在
-i 或 --interactive 覆寫檔案之前先詢問用戶
-r遞回處理,將指定目錄下的檔案與子目錄一并處理,若源檔案或目錄的形態,不屬于目錄或符號鏈
接,則一律視為普通檔案處理
-R 或 --recursive遞回處理,將指定目錄下的檔案及子目錄一并處理
cp指令注意的地方:

cp將檔案拷貝至絕對路徑,使用相對路徑也是類似
cp test.txt /myproject_cpp
使用絕對路徑,將test.txt拷貝至根目錄下的myproject_cpp
目錄中
原目錄拷貝到目標目錄
cp - r src_dir dst_dir
將src目錄拷貝到dst目錄下,
這樣就可以清晰的看到在dst_dir目錄下有src_dir 這個目錄了

mv指令(重要):
mv命令是move的縮寫,可以用來移動檔案或者將檔案改名(move (rename) files),是Linux系統下常用的命令,經常用來備份檔案或者目錄,
語法: mv [選項] 源檔案或目錄 目標檔案或目錄
功能:
- 視mv命令中第二個引數型別的不同(是目標檔案還是目標目錄),mv命令將檔案重命名或將其移至一個新的
目錄中, - 當第二個引數型別是檔案時,mv命令完成檔案重命名,此時,源檔案只能有一個(也可以是源目錄名),它
將所給的源檔案或目錄重命名為給定的目標檔案名, - 當第二個引數是已存在的目錄名稱時,源檔案或目錄引數可以有多個,mv命令將各引數指定的源檔案均移至
目標目錄中,
-f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆寫
-i :若目標檔案 (destination) 已經存在時,就會詢問是否覆寫
給檔案名重命名,還可以給目錄重命名
mv hh.txt test.txt
//將hh.txt檔案名修改為test.txt
效果:

mv的另外一個功能:檔案轉移到指定的目錄下,也可以將一個目錄轉移到另外一個目錄中,操作是一樣的
mv test.txt dst_dir
將test.txt檔案轉移到dst_dir目錄下
效果:

cat
語法:cat [選項][檔案]
功能: 查看目標檔案的內容
常用選項
-b 對非空輸出行編號
-n 對輸出的所有行編號
-s 不輸出多行空行
tac + 檔案名 :逆向輸出
對輸出的所有行編號

不輸出多行空行

more指令
語法:more [選項][檔案]
功能:more命令,功能類似 cat ,對檔案進行逐行閱讀,回車下翻
常用選項
-n 對輸出的所有行編號
q 退出more
假設我們現在想細致地查看檔案中的內容又不想他一下子就劃走了,這里可以不用cat改用more,而more他最先給你顯示滿螢屏的資訊,不斷的回車可以查看接下來的資訊,下面是他呈現的效果

使用 ‘/’ 可以搜索資訊,也可以直接看最后一行的資訊,而cat在這種場景下肯定是不適用的,所以想細致的查看可以選用more

less指令(重要)
語法: less [引數] 檔案
功能:less與more類似,但使用less可以隨意瀏覽檔案,而more僅能向前移動,卻不能向后移動,而且less在查看之前不會加載整個檔案,
-i 忽略搜索時的大小寫
-N 顯示每行的行號
/字串:向下搜索“字串”的功能
?字串:向上搜索“字串”的功能
n:重復前一個搜索(與 / 或 ? 有關)
N:反向重復前一個搜索(與 / 或 ? 有關)
q:quit
-
1、less 工具也是對檔案或其它輸出進行分頁顯示的工具,應該說是linux正統查看檔案內容的工具,功能極其強大,
2、less 的用法比起 more 更加的有彈性,在 more 的時候,我們并沒有辦法向前面翻, 只能往后面看但若使用了 less
時,就可以使用上下等按鍵的功能來往前往后翻看檔案,更容易用來查看一個檔案的內容!3、除此之外,在less 里頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜
head指令
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾
語法: head [引數]… [檔案]…
功能:head 用來顯示檔案的開頭至標準輸出中,默認head命令列印其相應檔案的開頭10行,
選項:
-n<行數> 顯示的行數
head 后面加引數只顯示20行資訊,如果想要看最后面的可以使用tail

tail指令
tail 命令從指定點開始將檔案寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日志檔案,tail -f filename會把filename里最尾部的內容顯示在螢屏上,并且不但重繪,使你看到最新的檔案內容.
語法: tail[必要引數][選擇引數][檔案]
功能: 用于顯示指定檔案末尾內容,不指定檔案時,作為輸入資訊進行處理,常用查看日志檔案,
選項:
查看中間
-f 回圈讀取
-n<行數> 顯示行數
查看中間
head -5000 ds.txt | tail -10 //顯示小于5000的前10行
效果:

時間相關的指令date顯示
date 指定格式顯示時間: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]
常用的標記串列如下
%H : 小時(00..23)
%M : 分鐘(00..59)
%S : 秒(00..61)
%X : 相當于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相當于 %Y-%m-%d
顯示系統當前時間
date +%Y/%m/%d_%H:%m:%s
效果:

將時間戳轉換為日期格式的時間
date +%Y/%m/%d_%H:%M:%S -d @1688888888
效果:

Cal指令
cal命令可以用來顯示公歷(陽歷)日歷,公歷是現在國際通用的歷法,又稱格列歷,通稱陽歷,“陽歷”又名“太陽歷”,系以地球繞行太陽一周為一年,為西方各國所通用,故又名“西歷”,
命令格式: cal [引數][月份][年份]
功能: 用于查看日歷等時間資訊,如只有一個引數,則表示年份(1-9999),如有兩個引數,則表示月份和年份
常用選項:
-3 顯示系統前一個月,當前月,下一個月的月歷
-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)
-y 顯示當前年份的日歷
cal -y //y也可以用數字來指定顯示哪一年的日歷
效果:

cal -3
效果:

find指令
語法: find pathname -options
功能: 用于在檔案樹中查找檔案,并作出相應的處理(可能訪問磁盤)
//在當前目錄下按照檔案名查找檔案
find -name ds.txt
也可以指定目錄下查找
find test -name ds.txt //在test目錄下查找ds.txt檔案
效果:

在當前目錄下指定查找型別為d(目錄)的檔案
find . -type d
效果:

which
語法: which + 命令
功能:查找命令所在的目錄,命令實際上在linux中也是一個程式他會保存在一個系統目錄下,而使用which就可以查找這條命令在哪個目錄下

一般我們的命令都會存放在usr/bin目錄下
效果:

命令也是屬于一個程式

如何證明命令就是一條指令呢?我們想把自己寫的程式當作系統指令使用,只需要將這個程式放到系統目錄下的/usr/bin目錄下,就可以直接當作指令使用

這里 我們先將一個程式寫出來,在用它生成一個可執行檔案mycmd
//將test.c編譯生成一個叫mycmd的可執行檔案
gcc -o mycmd test.c
這個可執行程式可以運行不過都是要加 ./來執行

我們可以將生成的mycmd拷貝到/usr/bin目錄下就可以把這個執行檔案當作命令使用了,最后一步也能看到顯示結果

當把mycmd從/usr/bin目錄下洗掉后再直接使用mycmd就不行了,只能使用 ./的方式去執行

find vs which
總結:
1、find可以找任意位置的檔案
2、which只會去查找一個特定的命令在哪個路徑
whereis ls
//可以查看一條路徑上所有關于有ls關鍵字的都會顯示出來
效果:

alias
語法:alias
功能:取別名
alias myls='ls -al'
//對ls -al 這個指令取別名為myls,
//此后myls就可以當作ls -al 使用了
效果:

grep指令
語法: grep [選項] 搜尋字串 檔案
功能: 在檔案中搜索字串,將找到的行列印出來,文本行過濾工具,以行為基本單位
常用選項:
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行
先創建一個輸出1到1000個”hello linux“的 test.sh程式
for i in {1..1000}
do
echo "hello linux $i"
done
再創建一個txt檔案存放這段資訊
bash test.sh > ds.txt
這里我們如果想要查找某個字串的話可以使用grep指令去搜索
//可以去顯示txt檔案中出現字符9的位置
grep "9" ds.txt
效果:

這里是演示grep 的-v選項,前兩個選項我們已經輕車熟路了

grep的使用場景:過濾日志,一般性的文本處理
zip/unzip指令
語法: zip 壓縮檔案.zip 目錄或檔案
功能: 將目錄或檔案壓縮成zip格式
常用選項:
-r 遞回處理,將指定目錄下的所有檔案和子目錄一并處理
----------------------------------------------
使用方法:
將test2目錄壓縮:zip test2.zip test2/*
解壓到tmp目錄:unzip test2.zip -d /tmp
先打包:
zip dir1.zip dir1/* //如果不寫*符號的話只會將目錄給打包
效果:

解壓縮:
unzip dir1.zip
效果:

tar指令
語法: tar [-cxtzjvf] 檔案與目錄 … 引數:
功能:打包/解包,不打開它,直接看內容
-c :建立一個壓縮檔案的引數指令(create 的意思);
-x :解開一個壓縮檔案的引數指令!
-t :查看 tarfile 里面的檔案!
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的程序中顯示檔案!這個常用,但不建議用在背景執行程序!
-f :使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加引數!
-C : 解壓到指定目錄
打包:
tar -czf dir1.tgz dir1 //打包并解壓縮
//解釋czf
//c:創建一個壓縮檔案
//z:z表示的是檔案具有gzip 屬性,不僅打包還要壓縮
//f:需要打包的那個檔案,就寫哪個檔案的名字
效果:

解包:
tar -xzf dir1.tgz -C test
// x:表示的是解包
// z:表示的是曾經使用過某些壓縮演算法壓縮過,所以這里要進行的是解壓
// f:表示的是對應要解壓縮到的檔案
// C:這個C是大寫的,表示要將壓縮檔案解壓縮到哪個目錄中去
效果:

打包并顯示被打包的檔案
tar -czvf dir1.tgz dir1
//創建一個gzip的檔案壓縮包并指定打包dir1檔案中的內容
//打包的時候顯示出來被打包的資訊
效果:

案例:
范例一:將整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <== 僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <== 打包后,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <== 打包后,以 bzip2 壓縮
bc指令
功能:相當于linux下的計算器
優勢:bc命令可以很方便的進行浮點運算
演示:

bc的便捷用法:

uname
語法:uname [選項]
功能: uname用來獲取電腦和作業系統的相關資訊,
補充說明:uname可顯示linux主機所用的作業系統的版本、硬體的名稱等基本資訊,
常用選項:
-a或–all 詳細輸出所有資訊,依次為內核名稱,
主機名,內核版本號,內核版本,硬體名,處理器類
型,硬體平臺型別,作業系統名稱
uname –r //顯示系統內核版本號
效果:

top
功能:相當于linux中的任務管理器,可以查看一些程式的運行情況

free
功能:查看記憶體使用情況

df -h
功能:查看硬碟的使用資訊

linux熱鍵
[Tab]按鍵—具有『命令補全』和『檔案補齊』的功能
[Ctrl]-c按鍵—讓當前的程式『停掉』
[Ctrl]-d按鍵—通常代表著:『鍵盤輸入結束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用來取代exit
擴展命令
讀者想要使用可以直接用man查看這個指令的功能和使用方法即可


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357112.html
標籤:其他
上一篇:資料結構(C語言版)之佇列

