一、Linux 基本命令概覽
? ? ? ? 以下是一些常用的Linux命令操作,后續我們會對其每個單獨如何使用進行講解。
操作類型 | 常用命令示例 |
---|---|
文件/目錄操作 | ls,?cd,?cp,?mv,?rm,?mkdir,?rmdir |
查看文件內容 | cat,?less,?more,?head,?tail |
查找操作 | find,?grep,?locate,?which |
權限管理 | chmod,?chown,?chgrp |
軟件安裝 | apt,?yum,?dnf,?zypper,?snap,?flatpak |
系統管理 | ps,?top,?htop,?df,?du,?free,?uptime |
用戶管理 | adduser,?passwd,?su,?sudo,?whoami |
網絡管理 | ping,?ifconfig,?ip,?curl,?wget |
打包壓縮 | tar,?gzip,?zip,?unzip |
二、Linux命令行基礎操作
1、pwd命令
pwd?是 “Print Working Directory” 的縮寫,顯示當前用戶所在的路徑
pwd/root
路徑的類型:絕對路徑和相對路徑
1. 絕對路徑
從根目錄?/?開始
不依賴于當前工作目錄
cd /etc cd /home/user/Documents
pwd /Users/junye/Desktop #絕對路徑
2. 相對路徑
相對于當前工作目錄
更靈活但可能不直觀
常見相對路徑符號:
符號
含義
.
當前目錄
..
上一級目錄
~
當前用戶主目錄
-
上一個訪問的目錄
2、?ls命令
????????ls?是 Linux 中最常用的命令之一,用于列出目錄中的文件和子目錄,類似于 Windows 中的“查看文件夾內容”。
?顯示當前路徑下的文件或者目錄名稱
[root@iZwz9b70mwpeltilcusk8bZ ~] ls Linux_commands
最常用選項整
命令
功能說明
ls
顯示當前目錄下的文件名(按列排布)
ls -l
詳細信息(long format),顯示權限、擁有者、大小等
ls -a
顯示所有文件,包括以.開頭的隱藏文件
ls -h
與?-l?一起使用,顯示人類可讀的文件大小(如 KB, MB)
ls -t
按修改時間排序,最新的排最上面
ls -r
倒序排列(與其他排序一起使用)
ls -S
按文件大小排序(默認從大到小)
ls -d */
只列出目錄
ls -R
遞歸列出所有子目錄內容
ls --color=auto
顯示彩色輸出(區分目錄、可執行文件等)
ls -lh
常用組合:詳細信息 + 人類可讀大小
ls -alh
顯示全部文件,詳細信息,大小可讀 ——?最常用組合之一!
拓展:配合通配符使用
ls *.txt ? ? ? ? ?# 顯示所有 txt 文件
ls dir*/ ? ? ? ? ?# 顯示所有以 dir 開頭的目錄
ls [a-z]*.sh ? ? ?# 顯示以小寫字母開頭的 .sh 文件
3、cd?切換目錄
????????cd?是 “change directory” 的縮寫,用于切換當前工作目錄,即進入另一個文件夾。
cd .. ? ? ? ? # 返回上一級
cd ./folder ? # 進入當前目錄下的 folder
cd ~/Desktop ?# 進入用戶的桌面目錄
cd - ? ? ? ? ?# 回到上一個工作目錄
命令
功能說明
cd
切換到當前用戶的主目錄(/home/用戶名)
cd ~
同上,~?代表主目錄
cd /path/to/dir
切換到指定的絕對路徑目錄
cd ..
切換到上一級目錄
cd .
停留在當前目錄(通常用于命令測試)
cd -
返回上一次所在的目錄
cd ~/Downloads
切換到主目錄下的 Downloads 子目錄
cd ../folder
相對于當前目錄,切換到上級目錄的 folder 子目錄
注意事項:
cd?只能進入“目錄”,不能進入“文件”。
如果目錄不存在,會提示錯誤:
如果路徑中帶有空格,需加引號或用轉義符:
cd "My Documents" cd My\ Documents
根目錄 / 是文件系統的起點
所有文件、目錄、設備等都從?/?派生
每個目錄可能包含子目錄或文件,構成一棵樹
Linux 文件系統的典型目錄樹結構(簡化圖)
/
├── bin/ ? ? ? ? ? # 系統基本命令,如 ls、cp、mv 等
├── boot/ ? ? ? ? ?# 引導系統所需的文件,如 vmlinuz、grub 等
├── dev/ ? ? ? ? ? # 設備文件,如硬盤、終端、U盤等
├── etc/ ? ? ? ? ? # 系統配置文件,如 passwd、hosts
├── home/ ? ? ? ? ?# 普通用戶的主目錄(如 /home/zhang)
│ ? ├── user1/
│ ? └── user2/
├── lib/ ? ? ? ? ? # 系統運行的共享庫(.so 文件)
├── media/ ? ? ? ? # 自動掛載外部設備(U盤、光盤)
├── mnt/ ? ? ? ? ? # 手動掛載用的掛載點
├── opt/ ? ? ? ? ? # 可選的第三方軟件
├── proc/ ? ? ? ? ?# 虛擬文件系統,存儲進程和內核信息
├── root/ ? ? ? ? ?# 超級用戶 root 的主目錄
├── run/ ? ? ? ? ? # 系統運行時的臨時文件
├── sbin/ ? ? ? ? ?# 系統管理員用的命令,如 reboot、mount
├── srv/ ? ? ? ? ? # 提供服務相關的數據
├── sys/ ? ? ? ? ? # 內核相關的系統信息(虛擬文件系統)
├── tmp/ ? ? ? ? ? # 臨時文件目錄,重啟后自動清空
├── usr/ ? ? ? ? ? # 二級程序目錄(用戶安裝的程序)
│ ? ├── bin/ ? ? ? # 一般用戶可執行程序
│ ? ├── lib/ ? ? ? # 程序庫
│ ? └── share/ ? ? # 共享資源
├── var/ ? ? ? ? ? # 經常變化的數據,如日志、緩存、郵件
└── (其他可能目錄,如 swap, lost+found, etc.)
Linux文件目錄
可以將?/?理解為 “C盤根目錄”,但 Linux 只有一個樹狀結構,沒有?C:/ D:/。
所有磁盤、U盤、網絡掛載都會作為一個“目錄”掛載到樹上。例如:
/etc
├── apache2
│???├── apache2.conf
│???└── sites-available
├── bash.bashrc
├── hostname
└── network
Linux 的文件系統是樹結構,從根?/?開始向下展開
沒有 Windows 的盤符(C:\ D:\),所有設備都掛載在樹的某個位置
通過路徑+文件名訪問具有唯一性
熟悉?/etc/、/home/、/usr/、/var/?等核心目錄非常關鍵
使用?tree?命令可以更清晰地查看結構
Linux 下載tree 命令
? ? ? ? 下載tree 利用sudo權限
#輸入 sudo yum install tree
????????如果在root權限下直接利用yum即可
yum install -y tree
Macos 下載tree命令
????????利用homebrew 來安裝tree
brew install tree
4. touch創建文件
創建空文件
修改文件的訪問時間(atime)和修改時間(mtime)
如果文件不存在就創建它,如果文件存在則更新時間戳
touch file.txt # 創建空文件
1、利用touch創建cpp文件
touch test.cpp
然后利用 vim查看并修改文件
vim test.c
shift+:輸入i進入修改模式,寫一個簡單的c++腳本,hello world!
然后利用 g++ 或者 clang++ 進行文件的編譯輸出一個后綴為.out的文件
g++ test.cpp -otest.out
然后運行test.out文件。
./test.out
輸出描述:
hello world!
2、創建多個文件:
touch a.txt b.txt c.txt
?3. 更新文件的時間戳(不更改內容)
touch existing.txt
這個命令會把?existing.txt?的“最后訪問時間”和“最后修改時間”更新為當前時間,但不更改內容。
4. 設置特定時間(使用?-t?選項)
touch -t 202501010000 file.txt
表示將時間設置為:2025 年 1 月 1 日 00:00
5. 不創建文件,只修改已有文件的時間(使用?-c)
touch -c file.txt
6、常用選項
選項
含義說明
-c
不創建文件(如果不存在)
-a
只改變訪問時間(atime)
-m
只改變修改時間(mtime)
-t [[CC]YY]MMDDhhmm[.ss]
指定時間
-r 文件名
復制另一個文件的時間戳
選項
含義說明
-c
不創建文件(如果不存在)
-a
只改變訪問時間(atime)
-m
只改變修改時間(mtime)
-t [[CC]YY]MMDDhhmm[.ss]
指定時間
-r 文件名
復制另一個文件的時間戳
5. mkdir 創建目錄
5、mkdir?的基本語法
1. 創建單個目錄
mkdir [選項] 目錄名
2. 一次創建多個目錄
mkdir dir1 dir2 dir3
3. 創建嵌套目錄(推薦使用?-p 選項)
????????加上?-p,如果父級目錄不存在,它會一并創建。
mkdir -p parent/child/grandchild
4.?使用絕對路徑或相對路徑創建目錄
mkdir /home/user/newdir # 絕對路徑 mkdir ./newdir # 當前目錄下創建 mkdir ../siblingdir # 在上一級目錄中創建
5. 常用選項
選項
含義
-p
創建多層目錄結構,如目錄已存在則不報錯
-v
顯示每個被創建的目錄名稱(verbose 模式)
-m
設置目錄權限(mode)
6、Linux 文件的三種時間戳
時間戳類型
含義
英文縮寫
可用命令查看
修改時間
文件內容被更改的時間
mtime
ls -l?or?stat
訪問時間
文件被讀取(或執行)時的時間
atime
stat
狀態改變時間
文件的元數據(權限、所有者等)改變的時間
ctime
stat
1?? 修改時間(mtime)
表示文件內容被更改的時間。
舉例:使用?vim?或?echo >>?修改了文件內容,mtime?會被更新。
常用于:判斷文件是否有被修改。
查看方式:
ls -l file.txt # 或者 stat file.txt
2?? 訪問時間(atime)
表示文件"被訪問(讀取)"的時間。
舉例:使用?cat,?less,?vim?打開文件,只要讀取了內容,就會更新?atime。
注意:為了性能,有些系統會禁用?atime?自動更新(尤其是 SSD),可通過掛載參數查看或設置。
查看方式:
stat file.txt
3?? 狀態改變時間(ctime)
????????表示文件的元信息被修改的時間(比如權限、所有者、鏈接數等),不是內容!
舉例:
chmod,?chown,?mv?等更改元數據都會更新?ctime, 但不一定修改了內容.
不能手動更改 ctime(除非重新寫入或使用特殊工具)。
查看方式:
stat file.txt
7、為什么時間戳那么重要?
?????????1. 自動化備份與同步工具的依據
工具如?rsync,?make,?cron,?tar?等都會根據?mtime?判斷文件是否需要重新復制、打包或編譯。
舉例:rsync?默認會比較源文件和目標文件的?mtime。
?????????2. 日志分析與審計
可以分析某個文件最近是否被訪問(atime),或者是否改動(mtime)。
系統安全人員經常會查看是否有非法訪問。
????????3. 性能優化和 SSD 生命周期
atime?更新頻繁,對 SSD 磁盤有寫損耗。
因此許多 Linux 系統用?noatime?或?relatime?掛載選項減少寫操作。
? ? ? ?4、touch?對時間戳的控制
命令示例
效果
touch file.txt
同時更新 atime 和 mtime 為當前時間
touch -a file.txt
僅更新 atime
touch -m file.txt
僅更新 mtime
touch -t 202501011200 file.txt
手動指定 atime 和 mtime
touch -r another.txt file.txt
把另一個文件的時間戳復制過來
? ? ? ??