前言
本文收錄了 linux 常用指令,這裏面有個小技巧,基本上所有指令後面跟上 --h 可以顯示其使用方法。故不必死記硬背,知其意乃通其形。
分類如下:
- 文件 & 目錄操作(16 個)
- 查看文件 & 內容處理(18 個)
- 文件壓縮 & 解壓縮(3 個)
- 信息顯示(11 個)
- 搜索文件(4 個)
- 進程管理(11 個)
- 用戶管理(7 個)
- 網絡操作(11 個)
- 磁盤 & 文件系統(7 個)
- 系統權限(3 個)
- 關機重啓(5 個)
- 其他(6 個)
文件 & 目錄操作(16 個)
ls
- ls -a 查看所有文件,包含隱藏文件
- ls -l 簡寫 ll,查看詳細信息
- ls -h 文件大小以易讀的方式顯示
cd
- cd ../ 返回上級目錄
- cd ~ 前往家目錄
- cd - 返回上一次所在目錄
cp
- cp -r 複製目錄及目錄下文件
find
- find / -name 'target' 查詢根目錄下面文件名爲 target 的文件
mkdir
- mkdir -p /tmp/test 遞歸創建目錄
mv
- mv -f source destination 強制
pwd
- pwd 顯示當前路徑
rm
- rm -rf / 強制刪除根目錄及目錄下的文件,就是我們通常所說的刪庫跑路
touch
- touch target 創建 target 文件,若文件存在則改變文件時間戳
tree
- tree 功能是以樹形結構顯示目錄下的內容
basename
- basename /tmp/1 顯示文件名
dirname
- dirname /tmp/1 顯示路徑
chattr
- chattr +i /tmp/1 加 i 屬性,防止文件被修改
lsattr
- lsattr /tmp/1 查看文件的擴展屬性
file
- file /tmp/1 顯示文件類型
md5
- md5 /tmp/1 顯示文件 MD5 值
查看文件 & 內容處理(18 個)
cat
- cat -n 顯示行號
- cat file1 file2 打開文件 1 和 2
more
- more file1 逐頁顯示
less
- less file1 也是逐頁顯示,與 more 方向相反
head
- head -n file 顯示文件頭 n 行
tail
- tail -n file 顯示文件尾 n 行
- tailf file 實時顯示文件尾 10 行,常用於跟蹤日誌信息
cut
- who|cut -b 1-3,5 輸出每行的 1 至 3 個字節和第 5 個字節
- who|cut -c -3 輸出每行的 1 至 3 個字符
- who|cut -c 3- 輸出每行的第 3 個字符到行尾
- who|cut -d ' ' -f 1 以空格爲分隔符,輸出第一個域
split
- split -b 10k date.file 將文件分割爲 10k 的多個子文件
- split -b 10k date.file split_file 指定子文件前綴爲 split_file
paste
- psate file1 file2 file3 將 3 個文件按列合併
sort
- sort -n 按照數值大小排序
- sort -r 倒序排序
- sort -t 指定分隔符
- sort -u 忽略相同行
uniq
- uniq -c 顯示出現次數,只有相鄰的纔算重複
- uniq -d 只顯示重複的行
- unqi -u 只顯示不重複的行
wc
- wc -l 顯示列數
diff
- diff file1 file2 比較兩個文件差異
rev
- rev file 反向輸出文件內容
grep
- grep 'target' file 過濾輸出文件中包含 target 的行
- grep -v 'target' file 過濾輸出文件中不包含 target 的行
- grep -c 'target' file 過濾輸出文件中包含 target 的行數
- grep -i 'target' file 忽略大小寫
- egrep '[1-9]|a' file 過濾輸出正則匹配到的行
- seq 10 | grep "5" -A 3 顯示匹配某個結果之後的 3 行
- seq 10 | grep "5" -B 3 顯示匹配某個結果之前的 3 行
- seq 10 | grep "5" -C 3 顯示匹配某個結果的前三行和後三行
join
- join file1 file2 將兩個文件中,指定欄位內容相同的行連接起來
tr
- cat text | tr '\t' ' ' 將製表符替換成空格
vim
三種模式:
- 編輯模式(命令模式)
- 輸入模式
-
末行模式
模式的轉換
編輯 -> 輸入
i: 在當前光標所在字符的前面,轉爲輸入模式; a: 在當前光標所在字符的後面,轉爲輸入模式; o: 在當前光標所在行的下方,新建一行,並轉爲輸入模式; I:在當前光標所在行的行首,轉換爲輸入模式 A:在當前光標所在行的行尾,轉換爲輸入模式 O:在當前光標所在行的上方,新建一行,並轉爲輸入模式;
輸入 -> 編輯
ESC
編輯 -> 末行:
:
末行 -> 編輯:
ESC,ESC
打開文件
vim +# :打開文件,並定位於第#行 vim +:打開文件,定位至最後一行 vim +/PATTERN : 打開文件,定位至第一次被PATTERN匹配到的行的行首
關閉文件
:q 退出 :wq 保存並退出 :q! 不保存並退出 :w 保存 :w! 強行保存
移動光標(編輯模式)
-
逐字符移動
h: 左 l: 右 j: 下 k: 上 #h: 移動#個字符
-
以單詞爲單位移動
w: 移至下一個單詞的詞首 e: 跳至當前或下一個單詞的詞尾 b: 跳至當前或前一個單詞的詞首 #w: 移動#個單詞
-
行內跳轉
0: 絕對行首 ^: 行首的第一個非空白字符 $: 絕對行尾
-
行間跳轉
#G:跳轉至第#行 gg: 第一行 G:最後一行
翻屏
Ctrl+f: 向下翻一屏 Ctrl+b: 向上翻一屏 Ctrl+d: 向下翻半屏 Ctrl+u: 向上翻半屏
刪除單個字符
x: 刪除光標所在處的單個字符 #x: 刪除光標所在處及向後的共#個字符
刪除命令: d
dd: 刪除當前光標所在行 #dd: 刪除包括當前光標所在行在內的#行;
撤消編輯操作
u:撤消前一次的編輯操作 #u: 直接撤消最近#次編輯操作 連續u命令可撤消此前的n次編輯操作 撤消最近一次撤消操作:Ctrl+r
查找
/PATTERN ?PATTERN n 下一個 N 上一個
文件壓縮 & 解壓縮(3 個)
tar
- tar zxvf FileName.tar.gz 解壓
- tar zcvf FileName.tar.gz DirName 壓縮
zip
- zip -r html.zip/home/html 遞歸壓縮
unzip
unzip test.zip -d /tmp 解壓到指定目錄下
信息顯示(11 個)
uname
- uname -a 顯示系統全部信息
hostname
- hostname 顯示主機名
dmesg
- dmesg 顯示開機信息
uptime
- uptime 顯示系統運行時間及負載
stat
- stat 顯示文件的狀態信息
du
- du -sh 顯示路徑下所有文件大小
- du -sh local 顯示路徑下 local 目錄文件大小
- du -sh * 顯示路徑下所有目錄文件大小
df
- df -h 顯示系統磁盤空間的使用情況
top
- top 實時顯示系統資源使用情況
free
- free -m 以 M 爲單位查看系統內存
date
- date +"%Y-%m-%d" 2019-05-28
- date -d "1 day ago" +"% Y-% m-% d" 輸出昨天日期
- date -d "+1 day" +% Y% m% d 顯示前一天的日期
- date -d "-1 day" +% Y% m% d 顯示後一天的日期
- date -d "-1 month" +% Y% m% d 顯示上一月的日期
- date -d "+1 month" +% Y% m% d 顯示下一月的日期
- date -d "-1 year" +% Y% m% d 顯示前一年的日期
- date -d "+1 year" +% Y% m% d 顯示下一年的日期
cal
- cal 日曆信息
搜索文件(4 個)
which
- which pwd 顯示命令路徑
find
- find /-name 'target' 查詢根目錄下面文件名爲 target 的文件
whereis
- whereis php 查找二進制命令
locate
- locate target 從數據庫 (/var/lib/mlocate/mlocate.db) 查找目標文件,使用 updatedb 更新庫
進程管理(11 個)
jobs
- jobs 查看當前有多少在後臺運行的命令
bg
- bg 1 將一個在後臺暫停的命令,繼續執行,1 爲作業號
(ctrl+z)可以掛起程序,返回作業號
fg
- fg 1 將後臺中的命令調至前臺繼續運行 ,1 爲作業號
kill
- kill 進程號 殺進程
- kill -9 進程號 強殺進程
killall
- killall php 通過進程名字殺進程
- killall -9 php 通過進程名字強殺進程
pkill
- 用法同上
crontab
- crontab -l 查看定時任務
- crontab -e 編輯定時任務
- crontab -l -u user1 查看 user1 定時任務,只有 root 纔有權限
- crontab -e -u user1 編輯 user1 定時任務,只有 root 纔有權限
ps
- ps -ef 查看進程,顯示 UID,PPIP,C 與 STIME,每個程序所使用的環境變量欄位
- ps -axu 查看所有進程,並顯示屬於用戶
pstree
- pstree -p 顯示當前所有進程的進程號和進程 id 樹
- pstree -a 顯示所有進程的所有詳細信息樹
nohup
- nohup command & 退出賬戶時不掛斷程序,仍在後臺運行
pgrep
- pgrep -l httpd 查找 http 相關的進程號
用戶管理(7 個)
useradd
- useradd boy -u 888 建立一個新用戶賬戶,並設置 ID
- useradd –g sales jack –G company,employees
-g:加入主要組 -G:加入次要組
usermod
- usermod -G staff newuser2 將 newuser2 添加到組 staff 中
- usermod -l newuser1 newuser 修改 newuser 的用戶名爲 newuser1
- usermod -L newuser1 鎖定賬號 newuser1
- usermod -U newuser1 解除對 newuser1 的鎖定
userdel
- userdel -f user1 強制刪除用戶
- userdel -r user1 刪除用戶的同時,刪除與用戶相關的所有文件
groupadd
- groupadd -g 1000 group1 建立一個新組,並設置組 ID 加入系統
passwd
- passwd user1 修改 user1 密碼
- passwd -l user1 鎖住密碼
- passwd -d user1 刪除密碼
su
- su root 切換身份
sudo
- sudo command 已管理員身份運行命令
網絡操作(11 個)
telnet
- telnet 127.0.0.1 登錄遠程主機
ssh
- ssh [email protected] -p22 登錄遠程主機
scp
- scp local_file remote_username@remote_ip:remote_folder 本地拷貝到遠程
- scp remote_username@remote_ip:remote_folder local_file 遠程拷貝到本地
wget
- wget url 下載一個文件
- wget --limit-rate=300k url 限速下載
- wget -c url 斷點續傳
- wget -b url 後臺下載
ping
- ping www.baidu.com -c 2 收到兩個包就結束
route
- route 顯示當前路由
ifconfig
- ifconfig 查看、配置、啓用或禁用網絡接口
ifup
- ifup eth0 開啓 eth0 網卡
ifdown
- ifdown eth0 關閉 eth0 網卡
netstat
- netstat -at 列出所有 tcp 端口
- netstat -au 列出所有 udp 端口
- netstat -l 只顯示監聽端口
ss
- ss -t -a 顯示所有 tcp 鏈接
- ss -l 顯示處於監聽狀態的套接字
磁盤 & 文件系統(7 個)
mount
- mount /dev/hda1 /mnt 將 /dev/hda1 掛載到 /mnt 目錄下
umount
- umount -v /mnt/mymount/ 卸載 /mnt/mymount/
fsck
- fsck -y /dev/hda2 檢查並修復 Linux 文件系統
dumpe2fs
- dumpe2fs /dev/hda1 查看文件系統信息
dump
- dump -0u -f /tmp/homeback.bak /home
將 /home 目錄所有內容備份到 /tmp/homeback.bak 文件中,備份層級爲 0 並在 /etc/dumpdates 中記錄相關信息
fdisk
- fdisk /dev/sdb
輸入 m 列出可以執行的命令
輸入 p 列出磁盤目前的分區情況
輸入 d 然後選擇分區,刪除現有分區
輸入 print 查看分區情況,確認分區已經刪除
輸入 n 建立新的磁盤分區
輸入 w 最後對分區操作進行保存
mkfs
- mkfs -t ext3 /dev/sda6 將 sda6 分區格式化爲 ext3 格式
系統權限(3 個)
chmod
- chmod 777 file1 修改 file1 文件權限爲 777
- chmod u+x,g+w file1 爲 file1 設置自己可以執行,組員可以寫入的權限
chown
- chown -R root /usr/meng 修改將目錄 /usr/meng 及其下面的所有文件、子目錄的文件主改成 root
chgrp
- chgrp -R mengxin /usr/meng 將 /usr/meng 及其子目錄下的所有文件的用戶組改爲 mengxin
關機重啓(5 個)
shutdown
- shutdown -h now 立即關機
- shutdown +5 "System will shutdown after 5 minutes" 指定 5 分鐘後關機,同時送出警告信息給登入用戶
halt
- halt -p 關閉系統後關閉電源
- halt -d 關閉系統,但不留下紀錄
poweroff
- poweroff -f 強制關閉操作系統
logout
- logout 退出當前登錄的 Shell
exit
- exit 退出當前登錄的 Shell
其他(6 個)
echo
- echo 'hello' 打印字符串、變量
- printf 'hell0' 格式化輸出字符串
rpm
- rpm -ivh your-package.rpm 安裝 rpm 包
- rpm -Uvh your-package.rpm 升級 rpm 包
- rpm -e package 卸載
- rpm -qa 列出所有安裝過的包
- rpm -ql 包名 rpm 包中的文件安裝到那裏去
yum
- yum install php 安裝 php
- yum remove php 卸載 php
clear
- clear 清屏
history
- history 10 最近使用的 10 條歷史命令