Linux常用命令

七落安歌發表於2024-03-14

Linux常用命令

一、Linux檔案系統

  • 檔案系統是作業系統用於明確儲存裝置(如磁碟)上的檔案的方法和資料結構;即在儲存裝置上組織檔案的方法。

  • 作業系統中負責管理和儲存檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。

  • 檔案系統的結構通常叫做目錄樹結構,從/根目錄開始。

  • Linux號稱“萬物皆檔案”,意味著針對Linux的操作,大多數時間是在針對Linux檔案系統操作。

image-20240310013948840

  • 檔案系統都是從/根目錄開始的,windows檔案系統會以磁碟機代號來區分不同檔案系統;

  • 目錄樹中節點分為兩個種類:目錄(directory)、檔案(file);

  • 從根目錄開始,路徑具有唯一性

  • 只有在目錄下才可以繼續建立下一級目錄,換句話說目錄樹到檔案終止蔓延。

特殊符號

  • . 目錄或者檔案以.開始表示隱藏檔案

  • .. 當前目錄的上一級目錄

  • ~ 當前使用者的home目錄,比如root使用者home目錄是/root

  • / 根目錄

# 進入當前目錄下的a
cd ./a
# 進入根目錄下的a
cd /a
# 進入當前目錄上一級下的a
cd ../a
# 進入當前操作使用者home目錄下的a
cd ~/a
# 進入當前目錄下的a  a是隱藏的
cd .a

混淆概念

  • 當前路徑:也叫當前工作目錄,當下使用者所屬的位置;

  • 相對路徑:相對當前工作目錄開始的路徑,會隨當前路徑變化而變化;

  • 絕對路徑:不管工作目錄在哪,絕對路徑都是從/根目錄開始,唯一不重複。

image-20240310014852190

二、Linux常見的操作命令

便捷使用:

  • Tab可以使用自動補全和提示
  • history命令可以顯示歷史執行記錄,或者使用方向鍵來切換前後執行過的命令

檔案系統相關的命令

顯示目錄內容:

ls(list files)命令:用於顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)

  • -l 除檔名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出 注意 ls -l = ll
  • -a 顯示所有檔案及目錄 (.開頭的隱藏檔案也會列出)
ls path
ls -a path  # 檢視所有檔案 包括隱藏檔案
ls -l =ll   # 檢視檔案詳細資訊 包括許可權 型別 時間 大小等
ll -h  path    # 表示以人性化的顯示內容
ll  *      # *萬用字元表示任意字元  ?表示有且只有一個字元

切換目錄:

cd(change directory)命令:用於切換當前工作目錄。切換的路徑可為絕對路徑或相對路徑。若路徑省略,則變換至使用者的home目錄 。

  • ~ 也表示為home目錄的意思

  • . 則是表示目前所在的目錄

  • .. 則表示目前目錄位置的上一層目錄

pwd  #檢視自己當前所在目錄 
cd path  #注意自己寫的是相對還是絕對的  還可以結合特殊符號使用
cd ./ 
cd /
cd ../
cd ~

建立、刪除:

mkdir(make directory)命令:用於建立目錄。

-p 確保父目錄名稱存在,不存在的就建一個。

rm(remove)命令:用於刪除一個檔案或者目錄。

-f 強制直接刪除,無需使用者確認。

-r 將目錄及以下所有遞迴逐一刪除。

[root@node1 ~]# mkdir /a/b/c
mkdir: cannot create directory ‘/a/b/c’: No such file or directory
[root@node1 ~]# mkdir -p /a/b/c
[root@node1 ~]# rm -rf /a/b/c
[root@node1 ~]# rm -rf /a
-f  #強制刪除  不給與提示
-r #遞迴刪除 針對資料夾
-rf #殺傷力極大 問問自己在幹什麼
坐牢眼:rm -rf /*

複製、移動:

cp(copy file)命令:用於複製檔案或目錄。

  • -r:若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。
cp -r 1.txt aaa/ # -r 表示遞迴複製
# 表示將1.txt檔案複製到 aaa資料夾中

mv(move file)命令:用來為檔案或目錄改名、或將檔案或目錄移入其它位置。

cp [options] source... directory
mv source_file(檔案) dest_file(檔案) #將原始檔名 source_file 改為目標檔名 dest_file
mv source_file(檔案) dest_directory(目錄)  #將檔案 source_file 移動到目標目錄 dest_directory中
mv source_directory(目錄) dest_directory(目錄) #目錄名 dest_directory 已存在,將source_directory 移動到目錄名 dest_directory 中;目錄名 dest_directory 不存在則 source_directory 改名為目錄名 dest_directory
mv source_directory(目錄) dest_file(檔案)  #出錯

檔案內容檢視:

cat(concatenate)命令:用於連線檔案並列印到標準輸出裝置如console控制檯上。適合小檔案內容檢視。

more 命令:類似cat,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,翻頁結束自動退出。適合大檔案檢視。

  • 按space鍵翻下一頁,按b往回(back)上一頁

less 命令:與more類似,less可以隨意瀏覽檔案,支援翻頁和搜尋,支援向上翻頁和向下翻頁。結束不會自動退出。

  • 按space鍵翻下一頁,按enter鍵翻下一行

  • 按b向上翻一頁

  • 按q退出

head 命令:用於檢視檔案的開頭部分的內容。

  • -n 用於顯示行數,預設為10,即顯示 10 行的內容。

tail 命令:用於檢視檔案的結尾部分的內容。

  • -n 用於顯示行數,預設為10,即顯示 10 行的內容。

  • -f 用於實時顯示檔案動態追加的內容。會把檔案裡的最尾部的內容顯示在螢幕上,並且不斷重新整理,只要 檔案有更新,就可以看到最新的檔案內容。

其他:

| 管道命令:將前一個命令執行的結果作為內容交給下一個命令處理。

  • 命令1|命令2 可以將命令1的結果透過命令2作進一步的處理

image-20240310033358625

echo 命令:用於字串的輸出,屬於shell命令。

  • echo string
[root@node1 ~]# ls
1.txt  anaconda-ks.cfg  hello  lrzsz-0.12.20.tar.gz  test  test.file
[root@node1 ~]# ls | grep ^t
test
test.file  
#相當於print 將內容輸出console控制檯
[root@node1 test]# echo 111
111
[root@node1 test]# echo "hello "
hello 

> 輸出重定向(覆蓋)命令

  • command > file 執行command然後將輸出的內容存入file,file內已經存在的內容將被新內容替代。
echo "hello" > 1.txt
# 覆蓋當前資料夾下1.txt中的內容

>> 輸出重定向(追加)命令

command >> file 執行command然後將輸出的內容存入file,新內容追加在檔案末尾。

echo "hello" >> 1.txt
# 向1.txt檔案中追加內容

命令1 && 命令2 命令1執行成功才執行命令2

命令1 || 命令2 命令1執行失敗才執行命令2

三、搜尋相關的命令

find搜尋:

find 命令:用來在指定目錄下查詢檔案。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。

find <指定目錄> <指定條件> <指定動作>
預設是搜尋當前目錄下,所有檔案,結果顯示在螢幕上

find . -name "*.log" -ls 在當前目錄查詢以.log 結尾的檔案, 並顯示詳細資訊。
find /root/ -perm 777 查詢/root/目錄下許可權為 777 的檔案
find . -type f -name "*.log" 查詢當目錄,以.log 結尾的普通檔案
find . -type d | sort 查詢當前所有目錄並排序
find . -size +100M 查詢當前目錄大於 100M 的檔案

grep搜尋:

grep 命令:用於查詢檔案裡符合條件的字串。通常配合|管道對命令執行的結果進行搜尋。

ps -ef | grep sshd 查詢指定 ssh 服務程序
ps -ef | grep sshd | grep -v grep 查詢指定服務程序,排除 gerp 本身
ps -ef | grep sshd -c 查詢指定程序個數

which搜尋:

which命令:用於查詢檔案。會在環境變數$PATH設定的目錄裡查詢符合條件的檔案

可用於快速定位已安裝並配置環境變數的軟體目錄。

[root@node1 ~]# which java
/export/server/jdk1.8.0_65/bin/java
[root@node1 ~]# which hadoop
/export/server/hadoop-3.3.0/bin/hadoop

四、軟\硬 連結

  • ln(英文全拼:link files)命令:為某一個檔案在另外一個位置建立一個同步的連結。可以將連結視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link)

  • 硬連結的意思是一個檔案可以有多個名稱;而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置,類似於windows中的快捷方式

  • 軟、硬連結建立的區別就是有無 -s引數

    • ln -s 目標檔案的絕對路徑 軟連結名(快捷方式)
    • ln 目標檔案的絕對路徑 硬連結名(可以保護資料)
# 目錄/root/aaa/bbb/下的1.txt檔案 改名為666.txt檔案
ln -s /root/aaa/bbb/1.txt 666.txt 

image-20240310042945555

  • l開頭 代表連線
  • -r開頭 代表檔案
  • d 開頭代表資料夾

五、解壓縮命令

打包、解包

tar(tape archive )命令:常用於備份檔案。是用來建立,還原備份檔案的工具程式,它可以加入,解開備份檔案內的檔案。

  • -c 或--create 建立新的備份檔案。

  • -x 或--extract或--get 從備份檔案中還原檔案。

  • -v 或--verbose 顯示指令執行過程。

  • -f <備份檔案>或--file=<備份檔案> 指定備份檔案。

# 將1.txt與2.txt檔案打包到ange中,但是並沒有壓縮
tar -cvf ange.tar 1.txt 2.txt 

# 將ange.tar中的1.txt檔案與2.txt檔案解包
tar -xvf ange.tar

# 將ange.tar中的1.txt檔案與2.txt檔案解包到ccc檔案中
tar -xvf abge.tar -C ccc/

打包壓縮、解包解壓縮

在打包備份或者解包的過程中,可以透過指定壓縮演算法,對打包的檔案進行壓縮,解壓的時候也需要指定相應的演算法。

  • -z 或--gzip或--ungzip 透過gzip指令處理備份檔案。

  • 最重要的搭配:tar -zxvf xxxxx.tar.gz

# 打包壓縮
[root@node1 test]# ll
-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root     0 Aug 10 19:27 2.txt

[root@node1 test]# tar zcvf test.tar.gz 1.txt 2.txt  
[root@node1 test]# tar zcvf test.tgz 1.txt 2.txt     
[root@node1 test]# ll

-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root     0 Aug 10 19:27 2.txt
-rw-r--r-- 1 root root   142 Aug 10 19:35 test.tar.gz
-rw-r--r-- 1 root root   142 Aug 10 19:35 test.tgz

# 解壓縮包
[root@node1 test]# tar zxvf test.tar.gz   #解壓到當前目錄
1.txt
2.txt

[root@node1 test]# tar zxvf test.tar.gz -C /root/   #-C引數可以設定解壓到指定目錄
1.txt
2.txt