Linux 常用命令入門手冊

Linux 常用命令入門手冊

截止目前,含有 41+ 命令。

注:這裏只列出常用命令, 基本上能滿足日常工作所需, 如果想要更系統的可能需要翻閱官方手冊。

目錄

head

顯示某個文件的前十行

# 查看 README.md 前10行
head README.md
# 或者指定多個文件
head README.md package.json
# 指定行數, 覆蓋默認的10行
head -n 100 README.md

tail

顯示指定文件的末尾部分

# 默認爲顯示末尾10行
tail README.md

# 顯示末尾20行
tail -n 20 README.md

# 實時監聽README.md文件變化
tail -f README.md

# 根據文件名進行追蹤, 如果刪除後創建相同的文件名會繼續追蹤
tail -F README.md

# 顯示文件的最後10個字符
tail -c README.md

top

實時查看系統執行中的程序

# 實時監聽進程變化
top

# 顯示2條
top -n 2

# 顯示指定的進程信息
top -pid 620

ls

顯示目錄列表

# 只顯示目錄列表
ls

# 顯示目錄列表的詳細信息
ls -l

# 顯示指定目錄
ls ./src

# 顯示目錄列表詳細信息和大小
ls -lh

# 列出所有文件包括隱藏
ls -a

pwd

顯示當前工作目錄

# 沒有太多有用的參數,用法很簡單
pwd

wc

統計文件的行數、字數、字節數, 常見用於統計代碼行數

# 統計字節數
wc -c README.md

# 統計行數
wc -l README.md

# 統計字數
wc -w README.md

# 統計字符數
wc -m README.md

whoami

顯示自身的用戶名稱, 此命令等價於 id -un

xiejiahe@192 golang % whoami
xiejiahe  # 輸出

alias

用於簡化較長的命令

# 列出所有已設置的別名
alias

# 刪除所有別名
unalias -a

# 設置別名
alias ll='ls -l'

wget

用於從網絡下載文件到本地

# 下載某個文件
wget https://www.xiejiahe.com/robots.txt

# 指定下載後文件名
wget -O ro.txt https://www.xiejiahe.com/robots.txt

# 斷開續傳,一般用於大文件,防止重新下載
wget -c https://www.xiejiahe.com/robots.txt

# 使用後臺下載, 對於大文件非常有用
wget -c https://www.xiejiahe.com/robots.txt
tail -f wget-log   # 查看後臺下載進度

df

顯示磁盤信息

# 顯示系統磁盤信息
df

# 格式化大小,以kb以上進行顯示
df -h

# 查看全部文件系統信息
df -a

find

指定某個目錄下查找文件

# 在當前目錄遞歸搜索文件名爲 README.md 文件
find . -name README.md

# 通過通配符進行查找, 必須用引號括着, 這裏查找所有後綴爲 .md 文件
find . -name "*.md"
find . -iname "*.md"  # 忽略文件大小寫

# 排除文件,只要加 ! , 排除掉所有 .md 後綴的文件
find . ! -name "*.md"

# 根據類型進行過濾搜索
# f 普通文件, l 符號連接
# d 目錄, c 字符設備
# b 塊設備, s 套接字, p Fifo
find . -type f

# 限定目錄遞歸深度
find . -maxdepth 3  # 最大爲3個目錄
find . -mindepth 3  # 最小爲3個目錄

# 可以利用find命令進行代碼統計,如下
# 統計所有後綴爲 .js 文件,忽略掉 node_modules test dist 相關文件
find . -path "*.js" ! -path "*node_modules*" ! -path "*test*" ! -path "*dist*" | xargs wc -l

# 查找文件大小大於 25k 文件 
find /root -size +25k

# 查找10天前文件 -mtime 修改時間、 -ctime 創建時間、 -atime 訪問時間
find /root -mtime +10

mkdir

創建目錄

# 在當前目錄下創建 temp 目錄
mkdir temp

# 創建多層目錄
mkdir -p temp/temp2/temp3

# 基於權限創建
mkdir -m 777 temp

touch

創建新的文件

# 創建一個空文件, 如果文件存在只會修改文件的創建時間
touch README.md

ssh

遠程連接服務器工具

# 簡單的連接, 省略了端口號,默認爲22
ssh [email protected]

# 指定端口號連接
ssh -p 23 [email protected]

nohup

程序以掛起方式運行, 不會影響終端交互

因爲程序會以後臺的方式運行,所以終端不會輸出, 默認情況下會在當前目錄生成一個叫 nohup.out 文件,裏面包含了終端內容。

# 例如運行一個 node.js 程序
nohup node main.js

# 在當前目錄會出現 nohup.out 文件,裏面包含了 Hello World
nohuo echo "Hello World"

cd

進入指定目錄

# 進入當前 src 目錄
cd src

# 回到上一次目錄
cd -

# 返回上一級目錄
cd ..
cd ../../..   # 返回多級

# 進入家目錄
cd ~
cd  # 或者不帶任何參數

# 將上一個命令的參數作爲cd參數使用
cd !$

echo

輸出字符串或者變量

注: 一般情況下字符串不必加雙引號, 如果包含轉義字符就必須要加

# 在終端輸出 Hello World
echo "Hello World"
echo Hello World    # 也可以不加雙引號
echo "Hello\nWorld" # 必須加雙引號, 否則無法轉義

# 輸出變量, 前面加 $ 符號即可, 如果變量不存在輸出爲空
echo $say

# 也可以將內容輸出到指定文件
echo Hello World > 1.txt

time

測試某條命令執行所需花費時間

# time 後面跟着要測試的命令
# 輸出:  0.02s user 0.01s system 0% cpu 6.233 total
time curl https://github.com/xjh22222228/linux-manual

clear

用於清除當前終端所有信息,本質上只是向後翻了一頁,往上滾動還能看到之前的操作信息

注:筆者用得比較多的是 command + K 可以完全清除終端所有操作信息。

clear

rm

刪除指定目錄或文件

注: 使用此命令需要非常小心, 一但刪除無法恢復

# 刪除當前 1.txt 文件
rm 1.txt

# 這條命令比較常用, 強制刪除目錄或文件
# -r 如果是目錄遞歸刪除, -f 強制刪除 不發出任何警告
rm -rf ./src

rmdir

刪除指定空目錄

注:rmdir 實際上用得並不多,因爲不是很靈活,基本上使用 rm 代替

# 刪除當前 temp 空目錄, 如果不是空目錄會發出警告
rmdir temp

# -p 參數可以刪除多層空目錄, 發現temp3是空目錄刪除掉,然後接着往父級找如果還是空目錄繼續刪除...
rmdir -p temp1/temp2/temp3

watch

通常用於監聽1個命令的運行結果、定時執行命令

# 每5秒執行一次 tail 命令, 如果不指定-n 默認爲2秒
watch -n 5 "tail README.md"

# -d 高亮顯示變化內容
watch -n 5 -d "tail README.md"

ping

測試目標地址是否可連接、延遲度

# 測試 github.com 連通性, 按 ctrl + C 停止 
ping github.com

# ping 5次後斷開
ping -c 5 xiejiahe.com

# 每5秒ping 一次
ping -i 5 xiejiahe.com

cp

拷貝文件或目錄

# 將當前 README.md 文件拷貝到上一層
cp ./README.md ../README.md

# -a 將原文件屬性一同拷貝
cp -a ./README.md ../README.md

# -r 拷貝目錄
cp -r home ../home

# -i 如果目標文件存在會詢問用戶是否需要覆蓋
cp -i README.md README.md

which

查找某個命令存儲在哪個位置, 輸出絕對路徑, which 會在環境變量 $PATH 設置的目錄裏去查找。

注: 可以通過 echo $PATH 查看設置的目錄.

which top  # /usr/bin/top

# 查找pwd發現會找不到,因爲 pwd 是bash的內置命令
which pwd

cat

查看指定文件內容

# 查看 README.md 文件所有內容
cat README.md
cat README.md README2.md  # 或者一次性顯示多個文件

# -n 指定顯示行號
cat -n README.md

mv

mv 有2個用途:

  • 將文件或目錄移動到另一個位置
  • 將文件或目錄重命名

注:實際上 mv 是用來移動文件或目錄,只不過有類似重命名的功能而已。

# 將 README.md 重命名爲 README-2.md, 如果 README-2.md 存在會直接覆蓋。
mv README.md README-2.md

# 將 README.md 移動到上一層目錄
mv README.md ../README.md

# -i 交互式操作,如果目標文件存在則進行詢問是否覆蓋
mv -i README.md ../README.md

cal

顯示當前日曆

cal
# 輸出
     June 2020        
Su Mo Tu We Th Fr Sa  
    1  2  3  4  5  6  
 7  8  9 10 11 12 13  
14 15 16 17 18 19 20  
21 22 23 24 25 26 27  
28 29 30

# 顯示臨近3個月, 只能是3個月
cal -3

last

顯示用戶最近登錄信息

last # root     pts/0        Sun Jun 14 00:12   still logged in    192.0.0.0

# 指定顯示條目數
last -n 1

shutdown

將系統關機或重啓操作。

# 立即重啓系統
shutdown -r now

# 關機系統
shutdown -h  關機

# 把前一個關機或重啓取消掉
shutdown -c 

# 設定一個時間關機, 加 & 可以繼續用終端命令
shutdown -h 05:33 &
shutdown +5 "5分鐘後關機" # 5分鐘後關機,同時送出警告信息給登入用戶:

reboot

有點類似 shutdown 命令, 用於重新啓動系統。

# 重啓系統
reboot

# -f 強制重啓
reboot -f

# 用於模擬重新啓動系統,不會真實重啓,數據會寫入 /var/log/wtmp 
reboot -w

# 在重新啓動之前關閉所有網絡界面
reboot -i

uname

打印系統信息

# 不帶任何參數打印當前操作系統內核名稱
uname # Linux  等價於 uname -s

# 打印系統所有信息
uname -a

# -r 打印系統版本 , 如果次版本號都是偶數,說明是一個穩定版
uname -r # 3.10.0-514.26.2.el7.x86_64

# 打印網絡節點主機名稱
uname -n # Yin.local

# 打印處理器名稱
uname -p # i386

ifconfig

配置或顯示系統網卡的網絡參數

# 顯示所有網絡參數信息
ifconfig

# 配置網卡IP地址
ifconfig eth0 192.168.1.111

who

顯示當前所有用戶登錄信息

# 顯示當前登錄系統的用戶
who
xiejiahe console  Jun 15 21:38
xiejiahe ttys001  Jun 15 21:44
xiejiahe ttys002  Jun 15 21:44
xiejiahe ttys003  Jun 15 21:44
xiejiahe ttys004  Jun 15 21:44
xiejiahe ttys005  Jun 15 21:44

# 顯示登錄賬號名和總人數
who -q

# 顯示上次系統啓動時間
who -b  # reboot   ~        Jun 15 21:38

whereis

用來定位指令的二進制程序、源代碼文件和man手冊頁等相關文件的路徑。

注意:whereis 是從數據庫裏查找的,因此特別快,默認情況下一星期更新一次數據,所以有時會查找刪除的數據或者剛建立的數據無法找到問題。

# 查找 nginx
whereis nginx # nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz /usr/share/man/man3/nginx.3pm.gz

# -b 指定只查找二進制
where -b nginx # nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx

# -m 指定查找說明文件 man
whereis -m nginx # nginx: /usr/share/man/man8/nginx.8.gz /usr/share/man/man3/nginx.3pm.gz

zip

將目錄或文件壓縮爲 .zip 格式

# 壓縮文件
zip README.zip README.md

# 壓縮目錄需要 -r 遞歸處理
zip -r temp.zip temp

# 包含系統隱藏文件
zip -r -S temp.zip temp

# 指定壓縮效率 1-9
zip -r -9 temp.zip temp 

unzip

解壓由 zip 壓縮的文件,通常是 .zip

# 將 demo.zip 解壓到當前目錄
unzip demo.zip

# 查看 demo.zip 文件,但不解壓
unzip -v demo.zip

# -d 指定將文件壓縮到 src 目錄下
unzip demo.zip -d src

locate

搜索文件,與 find 命令很像,但更快,因爲是從數據庫裏查找, 通常每天會進行數據更新。

# 搜索 README.md 相關文件
locate README.md

# 忽略大小寫
locate -i README.md

kill

殺死一個正在運行中的程序

注:程序進程id可通過 top 等命令查看。

# 殺死 pid 爲88 進程
kill 88

# 強制殺死
kill -KILL 88

# 徹底殺死進程
kill -9 88

# 顯示信號
kill -l

# 殺死指定用戶的所有進程
kill -u nginx

chmod

修改文件或目錄權限

chmod [參數選項] [mode, 八進制或符號表示] files…

  • u 符號代表當前用戶。
  • g 符號代表和當前用戶在同一個組的用戶,以下簡稱組用戶。
  • o 符號代表其他用戶。
  • a 符號代表所有用戶。
  • r 符號代表讀權限以及八進制數4。
  • w 符號代表寫權限以及八進制數2。
  • x 符號代表執行權限以及八進制數1。
  • X 符號代表如果目標文件是可執行文件或目錄,可給其設置可執行權限。
  • s 符號代表設置權限suid和sgid,使用權限組合u+s設定文件的用戶的ID位,g+s設置組用戶ID位。
  • t 符號代表只有目錄或文件的所有者纔可以刪除目錄下的文件。
  • + 符號代表添加目標用戶相應的權限。
  • - 符號代表刪除目標用戶相應的權限。
  • = 符號代表添加目標用戶相應的權限,刪除未提到的權限。
# README.md 文件設爲所有用戶可讀取
chmod a+r README.md

# -R 遞歸目錄下所有文件
chmod a+r src/

# 也可以用八進制符號表示
# 3個數字分別爲 x,y,z 表示User、Group、及Other的權限。
# r=4, w=2, x=1
chmod 777 README.md # 等價於 chmod a=rwx README.md

lsof

列出當前系統打開文件的工具

## 列表所有打開文件的的列表
lsof

# 查看指定端口被佔用情況
lsof -i:8080

# -p 列出指定進程號所打開的文件
lsof -p 6112

⬆ 回頂部

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章