Linux 筆記分享三:Linux 命令

yuanshang發表於2019-01-03

1、命令提示符

[root@localhost ~]#

root: 當前登入的使用者

localhost: 主機名(linux不同於windows,主機名可以相同)

~: 當前所在目錄(~代表家目錄)

#: 超級使用者的提示符

$: 普通使用者的提示符

2、命令格式

命令 [選項] [引數]

個別命令使用不遵循此格式

當有多個選項時,可以寫到一起

簡化選項與完整選項 -a 等於 --all

選項作用是調節命令的功能

3、ls

查詢目錄中的內容

ls [選項] [檔案或目錄]
  • 選項

-a 顯示所有檔案,包括隱藏檔案

-l 顯示詳細資訊

-d 檢視目錄屬性

-h 人性化顯示檔案大小

-i 顯示inode

  • 注意

不加檔案或目錄,顯示當前目錄

ll命令是ls -l的簡化

所以以點開頭的檔案都是隱藏檔案

-d 檢視當前目錄的有關屬性,即./

-i 檢視檔案儲存的i節點號

  • ll返回資訊含義
總用量 4
-rw-------. 1 root root 1541 6月  15 00:39 anaconda-ks.cfg

-rw-------: 代表檔案或目錄的許可權

.: ACL許可權

1: 引用計數

root: 檔案或目錄所有者

root: 檔案或目錄所屬組

1541: 檔案大小,單位位元組b

6月 15 00:39: 最後一次檔案或目錄修改時間

  • 許可權表示方式

file

目錄也是檔案,可以叫目錄檔案

1、mkdir

建立目錄

mkdir -p [目錄名]

-p 遞迴建立

英文: make directories

2、cd

切換所在目錄

cd [目錄]
  • 注意

英文: change directories

ctrl+l: 清屏

  • 簡化操作

cd ~ 或者 cd: 進入當前使用者的家目錄

cd /: 返回根

cd ..: 進入上一級目錄

cd -: 進入上一次目錄

  • Tab鍵

補全命令或者路徑

3、pwd

查詢所在目錄位置

pwd

print working directory

4、rmdir

刪除空目錄

rmdir [目錄名]

remove empty directories

基本不用這個命令,用下一個

5、rm

刪除檔案或者目錄

rm -rf [檔案或目錄]

-r 刪除目錄

-f 強制

英文: remove

  • 注意

這個命令很危險,字元介面linux是沒有回收站的,刪了就沒啦

rm -rf /: 終結命令,這是原子彈,用了就gameover啦

6、cp

複製命令

cp [選項] [原檔案或目錄] [目標目錄]
  • 選項

-r 複製目錄,不加則複製檔案

-p 連帶檔案屬性複製(檔案時間問題)

-d 若原檔案是連結檔案,則複製連結屬性

-a 相當於 -pdr

英文: copy

  • 注意

如果目標檔案有檔名則改名複製,否則原名複製

7、mv

剪下或改名命令

mv [原檔案或目錄] [目標目錄]

move

  • 注意

mv命令不需要加-r,預設支援檔案和目錄的移動

如果目標目錄加檔名,則實現改名移動

8、touch

新建空檔案

touch [檔名]

在當前目錄新建

9、常用目錄作用

  • /

根目錄

  • /bin 和 /sbin

根目錄下的bin和sbin,usr目錄下的bin和sbin,這四個目錄都是用來儲存系統命令的

bin目錄下的命令是任何使用者都可以執行,sbin目錄下的命令只有超級使用者可以執行

  • /boot

啟動目錄,存放啟動和引導檔案

  • /dev

特殊檔案儲存目錄,儲存硬體檔案等

  • /etc

放配置檔案的目錄

  • /home

普通使用者的家目錄

  • /root

超級使用者的家目錄

  • /lib

存放linux函式庫的位置

  • /media

外接光碟掛載空目錄

  • /misc

磁外接掛載空目錄

  • /mnt

U盤、行動硬碟外接掛載空目錄

  • /proc 和 /sys

這兩個目錄儲存的是記憶體的掛載點,所以不能直接操作,因為記憶體有限,且重啟資料丟失

  • /tmp

臨時目錄

  • /usr

系統軟體資源目錄

  • /var

系統可變文件目錄

1、ln

生成連結檔案

ln -s [原檔案] [目標檔案]
  • 選項

-s 建立軟連結

英文: link

  • 硬連結

擁有相同的i節點和儲存block塊,可以看做是同一個檔案

可以通過i節點識別

不能跨分割槽

不能針對目錄使用

我的理解是:在相同分割槽儲存空間建立兩個檔案,指向同一個索引

區別太小,限制太多,不建議使用

  • 軟連結

類似windows快捷方式

軟連結擁有自己的i節點和block塊,但是資料塊中只儲存原檔案的路徑和i節點,並沒有實際的檔案資料

lrwxrwxrwx l為軟連結 且軟連結檔案許可權都為rwxrwxrwx

修改任意檔案,另一個都改變

刪除原檔案,軟連結不能使用

重點:軟連結原檔案必須寫絕對路徑

1、locate

檔案搜尋命令

locate [部分檔名]

locate是從/var/lib/mlocate資料庫中進行搜尋,find是遍歷整個資料夾,所以find比較耗費資源,當然也就比較慢

locate不能馬上搜尋到新建的檔案,因為/var/lib/mlocate資料庫是一天一更新

locate是搜尋的是資料庫,所以預設根據公共配置檔案搜尋全部檔案

不同的linux版本的locate資料庫名字可能不同

缺點是隻能按照檔名搜尋

  • 公共配置檔案

/etc/updatedb.conf

PRUNE_BIND_MOUNTS = "yes"
# 開啟搜尋限制

PRUNEFS = "..."
# 搜尋時,不搜尋的檔案系統

PRUNENAMES = "..."
# 搜尋時,不搜尋的檔案型別(副檔名)

PRUNEPATHS = "..."
# 搜尋時,不搜尋的路徑

2、updatedb

更新locate資料庫

updatedb

預設全域性更新

3、whereis

搜尋命令所在路徑及幫助文件所在位置

whereis [命令名]

-b 只查詢可執行檔案

-m 只查詢幫助檔案

4、which

搜尋命令所在路徑及命令的別名

which [命令名]

為什麼ls會有顏色,通過which ls可以看到ls的別名是ls --color=auto,原因就是這個color等於auto

  • whereis和which的注意事項

不是所有的命令都能通過這兩個命令找到,比如cd,原因是cd是linux中shell的內建命令

shell初步認為是字元介面

因此上述兩個命令只能找外部安裝的命令

  • 檢視PATH環境變數
echo $PATH

5、find

強大的搜尋命令

find [搜尋範圍] [搜尋條件]
  • 根據檔名搜尋
find /root -name install.log

避免大範圍搜尋,尤其是線上上,非常耗費資源

檔名搜尋預設完全匹配

要想實現模糊查詢,請加萬用字元,且檔名用雙引號括起來

萬用字元

* 匹配任意內容
? 匹配任意一個字元
[] 匹配任意一箇中括號內的字元
  • 根據檔名搜尋(不區分大小寫)
find /root -iname install.log

其它情況同上一個

  • 根據檔案所有者搜尋
find /root -user root
  • 查詢沒有所有者的檔案(垃圾檔案)
find /root nouser

沒有所有者的檔案是垃圾檔案,可以清理

注:核心生成的檔案和外來檔案是沒有所有者的,這不是垃圾檔案

  • 根據檔案時間搜尋
find /var/log -mtime +10
  • 檔案時間條件

atime 檔案訪問時間

ctime 修改檔案屬性時間

mtime 修改檔案內容時間

  • 時間條件,預設天

-10 10天內修改的檔案

10 10天當天修改的檔案

+10 10天前修改的檔案

  • 根據檔案大小搜尋
find . size 25k

-25k 小於25KB的檔案

25k 等於25KB的檔案

+25k 大於25KB的檔案

  • 注意

.: 代表當前目錄

預設單位是一個扇區,不要用

千位元組小寫k

兆位元組大寫M

  • 根據i節點搜尋
find . -inum 262422

這個命令與ls -i配合使用

  • 根據檔案大小搜尋(與或運算)
find /etc -size +20k -a -size -50k

上面代表搜尋/etc下大於20k且小於50k的檔案

-a and 與運算

-o or 或運算

  • 對搜尋結果執行操作
find /etc -size +20k -a -size +50k -exec ls -lh {} \;

搜尋到內容,並顯示詳細資訊

-exec 命令 {} \;,此為固定格式,對搜尋結果執行操作

  • 一個刪除操作
find /root -name "cangls*" -exec rm -rf {} \;

6、grep

在檔案中匹配符合字串的行,並列出

grep [選項] 字串 檔名

-i 忽略大小寫

-v 排除指定字串,取反

7、grep與find的區別

  • find命令: 在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配
  • grep命令: 在檔案當中搜尋符合條件的字串,如果匹配,使用正規表示式進行匹配,正規表示式時包含匹配

1、man

獲取指定命令的幫助格式

man [命令]

英文: manual

返回格式裡的NAME: 是命令的作用解釋

返回格式裡的SYNOPSIS: 是命令的格式

命令幫助主要是OPTION的相關解釋

OPTION一般包含簡和全兩種格式

  • 篩選資訊
... ...
/OPTION

例如:

... ...
/-d

以上會篩選出含有-d的OPTION選項

n鍵向下跳,shift+n向上跳

  • man的級別
1: 檢視命令的幫助
2: 檢視可被核心呼叫的函式的幫助
3: 檢視函式和函式庫的幫助
4: 檢視特殊檔案的幫助(主要是/dev目錄下的檔案)
5: 檢視配置檔案的幫助
6: 檢視遊戲的幫助
7: 檢視其它雜項的幫助
8: 檢視系統管理員可用命令的幫助
9: 檢視和核心相關檔案的幫助(這個好像取消掉了)

例如:

man ls

返回:

LS(1)  User Commands  LS(1)
... ...

上面的LS(1)就是命令的幫助

  • 檢視命令有哪些級別的幫助
man -f 命令

或者:

whatis 命令
  • 檢視具體級別的幫助(預設最小級別)
man 級別數字 命令

例如:

man 5 passwd # 檢視passwd的配置幫助
man 4 null # 檢視null特殊檔案的幫助,null相當於黑洞
man 8 ifconfig # 檢視ip配置幫助
  • 檢視與命令相關的所有命令的幫助(相當於模糊搜尋)
man -k 命令

或者:

apropos 命令

例如:

apropos passwd

這個適用於忘了命令全名,但能記得一部分字元

2、--help

獲取命令的選項幫助

命令 --help

例如:

ls --help

這個可以輸出中文,因為安裝的時候用的中文以及遠端工具支援中文

3、help

獲取shell內部命令的幫助

help shell內部命令

例如:

help cd
  • 如何確定一個命令是否是shell內部命令
whereis 命令

看是否有執行檔案,有則為外部命令,無則為內部命令

  • help和man的區別

help只能獲取shell內部命令的幫助,不能獲取shell外部命令的幫助

man能獲取shell內部命令的幫助,但是獲取的是全部shell內部命令的幫助

4、info

獲取命令的詳細幫助(非常全,相關的都給你列出來)

info 命令

回車: 進入子幫助頁面(在帶有*號的地方)

u: 進入上層頁面

n: 進入下一個幫助小節

p: 進入上一個幫助小節

q: 退出

常見壓縮格式: .zip .gz .bz2

常見壓縮格式: .tar.gz .tar.bz2

1、.zip格式

壓縮檔案

zip 壓縮檔名 原始檔

壓縮目錄

zip -r 壓縮檔名 源目錄

解壓縮zip檔案

unzip 壓縮檔案

2、.gz格式

  • 壓縮
gzip 原始檔

壓縮為.gz格式的壓縮檔案,原始檔會消失

gzip -c 原始檔 > 壓縮檔案

例如:

gzip -c cangls > cangls.gz

壓縮為.gz格式,原始檔會保留

>: 作用是將命令的結果輸入到後面的檔案中

gzip -r 目錄

壓縮目錄下所有的子檔案(挨個壓縮),但是不能壓縮目錄

  • 解壓縮
gzip -d 壓縮檔案

或者:

gunzip 壓縮檔案

解壓後,原壓縮檔案同樣消失

同樣支援解壓縮目錄,但是是挨個解壓目錄裡面的gz壓縮檔案,需要加-r

3、.bz2格式

  • 壓縮
bzip2 原始檔

壓縮為.bz2格式,不保留原始檔

bzip2 -k 原始檔

壓縮之後保留原始檔

bzip2命令不能壓縮目錄

  • 解壓縮
bzip2 -d 壓縮檔案

或者:

bunzip2 壓縮檔案

加-k,保留壓縮檔案

4、tar

打包(解包)命令(解決.gz和.bz2不能壓縮目錄的缺陷)

tar [選項] 打包檔名 原始檔

例如:

tar -cvf longzls.tar longzls
  • 選項

-c: 打包
-x: 解包
-t: 檢視包裡面的內容
-v: 顯示過程
-f: 指定打包後的檔名

  • 注意

操作步驟先打包後壓縮

原始檔只有在-c的時候有

5、.tar.gz格式

其實.tar.gz格式是先打包為.tar格式,在壓縮為.gz格式

下面是一步處理.tar.gz格式

  • 壓縮
tar -zcvf 壓縮包名.tar.gz 原始檔
  • 指定壓縮位置和多檔案壓縮
tar -zcvf /tmp/壓縮包名.tar.gz 檔案1 檔案2 ...
  • 解壓
tar -zxvf 壓縮包名.tar.gz
  • 指定解壓位置
tar -zxvf 壓縮包名.tar.gz -C /tmp/

6、.tar.bz2格式

其實.tar.bz2格式是先打包為.tar格式,在壓縮為.bz2格式

下面是一步處理.tar.bz2格式

  • 壓縮
tar -jcvf 壓縮包名.tar.bz2 原始檔
  • 指定壓縮位置和多檔案壓縮
tar -jcvf /tmp/壓縮包名.tar.bz2 檔案1 檔案2 ...
  • 解壓
tar -jxcf 壓縮包名.tar.bz2
  • 指定解壓位置
tar -jxvf 壓縮包名.tar.bz2 -C /tmp/

1、shutdown

關機與重啟

shutdown [選項] 時間(填寫實際時間,而不是多少時間之後)

例如:

shutdown -r now
  • 選項

-c: 取消前一個關機命令(因為有時間,所以可以取消)

-h: 關機

-r: 重啟

  • 注意

shutdown命令比較安全,能夠正確儲存伺服器資料,最好用這個

  • 後臺符執行,不佔用shell介面
shutdown -r 05:30 &

&: 後臺符

2、其它關機與重啟命令

關機

halt
poweroff
init 0

重啟

reboot
init 6

以上關機和重啟不怎麼用,不安全(reboot還行,能用用)

  • 關於init後面的數字問題

這個叫系統執行級別

0: 關機
1: 單使用者(類似windows的安全模式,進去進行系統修復)
2: 不完全多使用者,不含NFS服務(NFS: 檔案共享服務)
3: 完全多使用者(字元介面就是3級別)
4: 未分配
5: 圖形介面
6: 重啟

init是呼叫系統級別的命令

  • runlevel

檢視當前系統級別和上一次的系統級別

runlevel
  • 定義系統的預設執行級別
cat /etc/inittab

進去看一下,然後用vim工具修改,儲存即可

X: 在linux中代表圖形介面

3、logout

退出登入

logout
  • 注意

遠端工具關閉前,必須退出登入,防止使用者卡著,尤其windows(登出)

1、mount

檢視系統中已經掛載的裝置

mount

依據配置檔案/etc/fstab的內容,自動掛載

mount -a

正式掛載

mount [-t 檔案系統] [-o 特殊選項] 裝置檔名 掛載點
  • 選項

-t 檔案系統: 加入檔案系統型別來指定掛載的型別,可以使ext3、ext4、iso9660等檔案系統

-o 特殊選項: 可以指定掛載的額外選項

file

  • 例如修改/home掛載點的執行許可權
mount -o remount,noexec /home

上述命令,會禁用/home下的執行檔案

  • 掛載光碟

建立掛載點

mkdir /mnt/cdrom

掛載光碟

mount -t iso9660 /dev/cdrom /mnt/cdrom

或者:

mount /dev/sr0 /mnt/cdrom
  • 掛載U盤

檢視系統中已經識別的硬碟

fdisk -l

掛載U盤

mount -t vfat /dev/sdb1 /mnt/usb

2、umount

解除安裝命令

umount 裝置檔名或者掛載點

例如:

umount /mnt/cdrom

用完以後必須解除安裝,防止linux精神錯亂

3、w

檢視當前使用者的登入資訊

w
  • 命令輸出

USER: 登入的使用者名稱

TTY: 登入終端(tty1是本地,pts/NUM是遠端)

FROM: 從哪個IP地址登入

LOGIN@: 登入時間

IDLE: 使用者閒置時間

JCPU: 指的是和該終端連線的所有程式佔用的時間。這個時間並不包括過去的後臺作業時間,但卻包括當前正在執行的後臺作業所佔用的時間

PCPU: 是指當前程式所佔用的時間

WHAT: 當前正在執行的命令

4、who

檢視當前使用者的登入資訊(簡)

who
  • 命令輸出

使用者名稱
登入終端
登入時間(登入來源IP)

5、last

檢視當前登入和過去登入的使用者資訊

last
  • 注意

last命令預設是讀取/var/log/wtmp檔案資料

/var/log/wtmp是二進位制檔案,不能直接編輯,只能通過last讀取,防止黑客篡改

還能看到重啟資訊

  • 命令輸出

使用者名稱

登入終端

登入IP

登入時間

退出時間(線上時間)

6、lastlog

檢視所有使用者的最後一次登入時間

lastlog
  • 注意

lastlog命令預設是讀取/var/log/lastlog檔案內容

/var/log/lastlog也是二進位制檔案

  • 命令輸出

使用者名稱

登入終端

登入IP

最後一次登入時間

我們是一群被時空壓迫的孩子。 ---- 愛因斯坦

相關文章