1 linux 目錄介紹
Linux 文件系統采用層次化的目錄結構,所有目錄都從根目錄 / 開始
1.1 核心目錄
/ (根目錄)
整個文件系統的起點、包含所有其他目錄和文件
/bin (基本命令二進制文件)
存放系統最基本的shell命令:如 ls, cp, mv, rm, cat 等,所有用戶都可使用。
/sbin (系統二進制文件)
存放系統管理命令,如 fdisk, ifconfig, reboot 等,通常需要 root 權限才能執行
/boot (引導加載程序文件)
包含 Linux 內核、初始 RAM 磁盤映像和引導加載程序配置文件。如 vmlinuz, initrd.img, grub/
/dev (設備文件)
包含所有設備文件,如 /dev/sda (硬盤), /dev/tty (終端), /dev/null (空設備)
/etc (系統配置文件)
包含系統和應用程序的配置文件,如 /etc/passwd (用戶賬戶), /etc/fstab (文件系統表)
/home (用戶主目錄)
普通用戶的個人目錄,每個用戶通常有自己的子目錄,如 /home/username
/lib (系統庫文件)
存放系統最基本的共享庫和內核模塊,如 /lib/modules/ (內核模塊)
1.2 重要系統目錄
/media (可移動媒體掛載點)
自動掛載的可移動設備,如 U 盤、光盤
/mnt (臨時掛載點)
用于臨時手動掛載文件系統
/opt (可選應用程序)
第三方應用程序的安裝位置
/proc (虛擬文件系統)
包含系統進程和內核信息的虛擬文件系統,如 /proc/cpuinfo (CPU 信息), /proc/meminfo (內存信息)
/root (root 用戶主目錄)
超級用戶 root 的主目錄
/run (運行時數據)
存儲系統運行時的臨時數據,如 /run/lock (鎖文件)
/tmp (臨時文件)
存放臨時文件,系統重啟后通常會被清空
1.3 系統資源目錄
/usr (用戶程序)
包含用戶應用程序和文件
1.3.1 重要子目錄:
-
/usr/bin: 用戶命令
-
/usr/sbin: 系統管理命令
-
/usr/lib: 庫文件
-
/usr/local: 本地安裝的軟件
-
/usr/share: 共享數據
/var (可變數據)
存放經常變化的文件
重要子目錄:
-
/var/log: 系統日志
-
/var/cache: 應用程序緩存
-
/var/spool: 隊列數據
-
/var/www: Web 服務器目錄 (常見)
1.4 特殊目錄
/sys (虛擬文件系統)
提供內核數據結構接口, 用于配置設備和內核參數
/srv (服務數據)
包含特定服務提供的數據, 如網站數據、FTP 數據等
/lost+found (恢復文件)
文件系統修復后找到的丟失文件
2 常見shell 指令
Shell 是 Linux/Unix 系統的命令行界面,是與操作系統交互的主要方式。以下是常用的 Shell 指令分類介紹:
2.1 文件和目錄操作
2.1.1 ls - 列出目錄內容
ls # 列出當前目錄內容
ls -l # 詳細列表(長格式)
ls -a # 顯示隱藏文件(以.開頭)
ls -lh # 人類可讀的文件大小顯示
2.1.2 cd - 切換目錄
cd /path/to/dir # 切換到指定目錄
cd ~ # 切換到用戶主目錄
cd .. # 切換到上級目錄
cd - # 切換到上一個工作目錄
2.1.3 pwd - 顯示當前工作目錄
pwd # 打印當前目錄的完整路徑
2.1.4 mkdir - 創建目錄
mkdir dirname # 創建單個目錄
mkdir -p dir1/dir2 # 創建多級目錄
2.1.5 rm - 刪除文件或目錄
rm file.txt # 刪除文件
rm -r dirname # 遞歸刪除目錄
rm -f file.txt # 強制刪除,不提示
2.1.6 mv - 移動或重命名文件/目錄
mv file1 file2 # 重命名
mv file1 dir/ # 移動文件
2.1.7 touch - 創建空文件或更新文件時間戳
touch file.txt # 創建空文件或更新訪問時間
2.2 文件查看和編輯
2.2.1 cat - 查看文件內容
cat file.txt # 顯示文件內容
cat -n file.txt # 顯示行號
2.2.2 less/more - 分頁查看文件
less file.txt # 可前后翻頁
more file.txt # 只能向下翻頁
2.2.3 head/tail - 查看文件開頭/結尾
head -n 5 file.txt # 查看前5行
tail -f logfile # 實時查看日志更新
2.2.4 grep - 文本搜索
grep "pattern" file.txt # 搜索包含pattern的行
grep -i "pattern" file.txt # 忽略大小寫
grep -r "pattern" /path # 遞歸搜索目錄
2.3 系統信息
2.3.1 ps - 查看進程
ps aux # 查看所有運行中的進程
ps -ef # 另一種格式顯示進程
2.3.2 top/htop - 動態查看系統狀態
top # 動態顯示進程和資源使用
htop # 更友好的交互式top(需安裝)
2.3.3 free - 查看內存使用
free -h # 以人類可讀格式顯示內存信息
2.3.4 df - 查看磁盤空間
df -h # 顯示磁盤使用情況(人類可讀)
2.3.5 uname - 顯示系統信息
uname -a # 顯示所有系統信息
2.4 網絡相關
2.4.1 ping - 測試網絡連接
ping example.com # 測試到example.com的連接
2.4.2 ifconfig/ip - 網絡接口配置
ifconfig # 顯示網絡接口信息(較舊)
ip addr # 顯示網絡接口信息(新版)
2.4.3 netstat/ss - 網絡統計
netstat -tuln # 顯示監聽端口(較舊)
ss -tuln # 顯示監聽端口(新版)
2.4.5 wget/curl - 下載工具
wget http://example.com/file # 下載文件
curl -O http://example.com/file
2.5 權限管理
2.5.1 chmod - 修改文件權限
chmod 755 file.sh # 設置權限(rwxr-xr-x)
chmod +x file.sh # 添加執行權限
2.5.2 chown - 修改文件所有者
chown user:group file.txt # 修改所有者和組
2.5.3 sudo - 以超級用戶權限執行
sudo command # 以root權限執行命令
2.6 壓縮和解壓
2.6.1 tar - 打包和解包
tar -czvf archive.tar.gz dir/ # 創建gzip壓縮包
tar -xzvf archive.tar.gz # 解壓gzip包
2.6.2 zip/unzip - ZIP壓縮/解壓
zip archive.zip file1 file2 # 創建zip壓縮包
unzip archive.zip # 解壓zip包
2.6.3 gzip/gunzip - GZIP壓縮/解壓
gzip file.txt # 壓縮文件(生成file.txt.gz)
gunzip file.txt.gz # 解壓文件
2.7 其他實用命令
2.7.1 find - 查找文件
find /path -name "*.txt" # 按名稱查找
find . -type f -size +1M # 查找大于1M的文件
2.7.3 which/whereis - 查找命令位置
which ls # 顯示ls命令的路徑
whereis ls # 顯示命令及其手冊頁位置
2.7.4 alias - 創建命令別名
alias ll='ls -alF' # 創建ll別名
2.7.5 history - 查看命令歷史
history # 顯示命令歷史
!n # 執行歷史記錄中第n條命令
2.7.6 man - 查看命令手冊
man ls # 查看ls命令的手冊頁
2.7.7 echo - 輸出文本
echo "Hello" # 輸出文本
echo $PATH # 輸出環境變量
2.7.8 date - 顯示或設置日期時間
date # 顯示當前日期時間
date +"%Y-%m-%d" # 格式化輸出
sudo date -s "2024-03-15 14:30:00"
3 Shell 腳本
Shell 腳本是 Linux/Unix 系統中自動化任務和系統管理的重要工具。以下是 Shell 腳本開發的全面指南:
3.1 初步了解
第一行 #!/bin/bash 稱為 shebang,指定解釋器
#!/bin/bash
# 這是一個注釋
echo "Hello, World!"
3.2 運行方式
chmod +x script.sh # 添加執行權限
./script.sh # 直接執行bash script.sh # 指定解釋器執行
sh script.sh # 使用 sh 解釋器執行
source script.sh # 在當前 shell 環境中執行
3.3 變量定義與使用
name="Alice" # 定義變量
echo $name # 使用變量
echo ${name} # 推薦使用大括號readonly PI=3.14 # 只讀變量
unset name # 刪除變量
3.4 特殊變量
$0 # 腳本名稱
$1-$9 # 腳本參數
$# # 參數個數
$* # 所有參數
$@ # 所有參數(推薦)
$? # 上條命令的退出狀態
$$ # 當前進程PID
$! # 最后一個后臺進程PID
3.5 字符串操作
str="Hello World"# 字符串長度
echo ${#str} # 11# 子字符串
echo ${str:0:5} # Hello# 替換
echo ${str/World/Bash} # Hello Bash# 大小寫轉換
echo ${str^^} # 轉大寫
echo ${str,,} # 轉小寫
3.6 數組
# 定義數組
fruits=("Apple" "Banana" "Orange")# 訪問元素
echo ${fruits[0]} # Apple
echo ${fruits[@]} # 所有元素# 數組長度
echo ${#fruits[@]} # 3# 遍歷數組
for fruit in "${fruits[@]}"; doecho $fruit
done
3.7 條件判斷
if [ $a -eq $b ]; thenecho "a等于b"
elif [ $a -gt $b ]; thenecho "a大于b"
elseecho "a小于b"
fi
3.8 # 定義函數
greet() {local name=$1 # 局部變量echo "Hello, $name"
}# 調用函數
greet "Alice"# 返回值
add() {return $(($1 + $2))
}
add 3 5
echo $? # 8
4 綜合案例
4.1 備份腳本
#!/bin/bash
# 簡單備份腳本BACKUP_DIR="/backup"
SOURCE_DIR="/home/user"
DATE=$(date +%Y%m%d)if [ ! -d "$BACKUP_DIR" ]; thenmkdir -p "$BACKUP_DIR"
fitar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR" && \
echo "備份成功完成" || echo "備份失敗"
4.2 系統監控腳本
#!/bin/bash
# 系統資源監控echo "=== 系統監控 ==="
echo "當前時間: $(date)"
echo "主機名: $(hostname)"
echo "=== 系統負載 ==="
uptime
echo "=== 內存使用 ==="
free -h
echo "=== 磁盤空間 ==="
df -h