目錄管理 ls、cd、pwd、mkdir、rmdir、tree ls(list) 列出,列表 用法: ls -l:長格式 文件類型: -:普通文件 (f) d: 目錄文件 b: 塊設備文件 (block) c: 字元設備文件 (character) l: 符號鏈接文件(symbolic link f ...
目錄管理
ls、cd、pwd、mkdir、rmdir、tree
ls(list) 列出,列表
用法:
ls
-l:長格式
文件類型:
-:普通文件 (f)
d: 目錄文件
b: 塊設備文件 (block)
c: 字元設備文件 (character)
l: 符號鏈接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
文件許可權:9位,每3位一組,每一組:rwx(讀,寫,執行), r--
文件硬鏈接的次數
文件的屬主(owner)
文件的屬組(group)
文件大小(size),單位是位元組
時間戳(timestamp):最近一次被修改的時間
訪問:access
修改:modify,文件內容發生了改變
改變:change,metadata,元數據
-h:做單位轉換
-a: 顯示以.開頭的隱藏文件
. 表示當前目錄
.. 表示父目錄
-A
-d: 顯示目錄自身屬性
-i: index node, inode
-r: 逆序顯示
-R: 遞歸(recursive)顯示
cd(change directory)
用法:
cd ~USERNAME:進入指定用戶的家目錄
cd ..:進入父級目錄
cd -:在當前目錄和前一次所在的目錄之間來回切換
cd:進入當前用戶主目錄
pwd(Printing Working directory)
顯示當前路徑
mkdir(make directories)
-p:創建目錄樹
-v:顯示創建目錄的信息
此兩個命令聯合使用最有效。
mkdir -pv /hehe/heihei/haha
創建多級目錄
mkdir /test/{x/m,y}
mkdir /test/{a,d}_{b,c}
rmdir(remove directory)
-p 若目錄為多級目錄,從最後一個目錄開始刪除。
文件管理
touch、stat、file、rm、cp、mv
touch(change file timestamps)修改文件時間戳
-a:修改文件訪問時間
-m:修改文件修改時間
-t:使用[[CC]YY]MMDDhhmm[.ss]格式修改文件時間戳
-c:創建空文件
rm(remove)
移除文件或者目錄
-i:進行確認提示。(在同時給定了-f和-i選項時,列在最後的生效。)
-f:忽略不存在的文件,並且從不向用戶提示。
-r:或者 -R 遞歸地移除目錄樹。
cp(copy)
-i 與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
-f 覆蓋已經存在的目標文件而不給出提示。
-p 除複製文件的內容外,還把修改時間和訪問許可權也複製到新文件中。
-r 若給出的源文件是一個目錄文件,此時將複製該目錄下所有的子目錄和文件。
-l 建立硬鏈接,而非複製
-d 複製符號鏈接
mv(move)
移動(改名)文件
-t: 指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。
日期時間
date、clock、hwclock、cal
顯示日期的指令: date(顯示系統時間)
hwclock(顯示硬體時間)
-w:系統時間同步到硬體時間
-s:硬體時間同步到系統時間
顯示日曆: cal
計算器: bc
查看文本
cat、tac、more、less、head、tail、tee
cat 連接文件併在標準輸出上輸出
-n:顯示文本行數
-E:在每行結束顯示 $
head:查看前n行
tail:查看後n行
-n
tail -f: 查看文件尾部,不退出,等待顯示後續追加至此文件的新內容;
tee:既顯示輸出內容,又把內容輸入到文件中。
文本處理
cut:
-d: 指定欄位分隔符,預設是空格
-f: 指定要顯示的欄位
-f 1,3
-f 1-3
文本排序:sort
-n:數值排序
-r: 降序
-t: 欄位分隔符
-k: 以哪個欄位為關鍵字進行排序
-u: 排序後相同的行只顯示一次
-f: 排序時忽略字元大小寫
uniq: 刪除排序中重覆的行
-c: 顯示文件中行重覆的次數
-d: 只顯示重覆的行
文本統計:wc (word count)
-l:輸出換行符統計數
-w:輸出單詞統計數
-c:輸出位元組統計數
-L:輸出最長的行的長度
字元處理命令:tr —— 轉換或刪除字元
tr [OPTION]... SET1 [SET2]
-d: 刪除出現在字元集中的所有字元
命令歷史
history 查看
-c:清空命令歷史
-d OFFSET [n]: 刪除指定位置的命令
-w:保存命令歷史至歷史文件中
命令歷史的使用技巧:
!n:執行命令歷史中的第n條命令;
!-n:執行命令歷史中的倒數第n條命令;
!!: 執行上一條命令;
!string:執行命令歷史中最近一個以指定字元串開頭的命令
!$:引用前一個命令的最後一個參數;
用戶與用戶組及其許可權管理
用戶管理
useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage
useradd,添加用戶
-c 描述
-d 家目錄
-g 所屬組
-G 附屬組
-s 環境變數
-u uid
例:useradd -c thisisauser -d /home -g whych -G whych -u 2017 -s /sbin/nologin
chage 修改賬號密碼有效期限
-M 最大天數
-m 最小天數
userdel 刪除用戶
-r 同事刪除用戶的家目錄
usermod,修改用戶信息
-c<備註>:修改用戶帳號的備註文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改帳號的有效期限;
-f<緩衝天數>:修改在密碼過期後多少天即關閉該帳號;
-g<群組>:修改用戶所屬的群組;
-G<群組>;修改用戶所屬的附加群組;
-l<帳號名稱>:修改用戶帳號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入後所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。
id:查看用戶的帳號屬性信息
-u:顯示用戶id
-g:顯示組id
-G:顯示附加組
-n:顯示真實id
finger: 查看用戶帳號信息
finger USERNAME
chsh: 修改用戶的預設shell
chfn:修改註釋信息
組管理
groupadd, groupdel, groupmod, gpasswd
創建組:groupadd
groupadd
-g GID
-r:添加為系統組
groupmod
-g GID
-n GRPNAME
groupdel
gpasswd:為組設定密碼
許可權管理
chown, chgrp, chmod, umask
chown: 改變文件屬主(只有管理員可以使用此命令)
chown USERNAME file,...
-R: 修改目錄及其內部文件的屬主
--reference=/path/to/somefile file,...
chown USERNAME:GRPNAME file,...
chown USERNAME.GRPNAME file,...
chgrp GRPNAME file,...
-R:同上
chmod: 修改文件的許可權
chmod +|- MODE file,...
-R:同上
修改某類用戶或某些類用戶許可權:
u,g,o,a
chmod 用戶類別=MODE file,...
修改某類用戶的某位或某些位許可權:
u,g,o,a
chmod 用戶類別+|-MODE file,...
特殊許可權(suid、sgid、sticky)
一個可執行文件, 那麼在執行時, 一般該文件只擁有調用該文件的用戶具有的許可權. 而setuid, setgid 可以來改變這種設置。
setuid: 使文件在執行階段具有文件所有者的許可權。
setgid: 該許可權只對目錄有效. 目錄被設置該位後, 任何用戶在此目錄下創建的文件都具有和該目錄所屬的組相同的組。
sticky bit: 該位可以理解為防刪除位。一個文件是否可以被某用戶刪除, 主要取決於該文件所屬的組是否對該用戶具有寫許可權. 如果沒有寫許可權, 則這個目錄下的所有文件都不能被刪除, 同時也不能添加新的文件. 如果希望用戶能夠添加文件但同時不能刪除文件, 則可以對文件使用sticky bit位. 設置該位後, 就算用戶對目錄具有寫許可權, 也不能刪除該文件。
換種理解方法如下:
SUID:運行某程式時,相應進程的屬主是程式文件本身的屬主,而不是啟動者。
SGID:運行某程式時,相應進程的屬組是程式文件本身的屬組,而不是啟動者。
Sticky:在一個公共目錄,每個都可以創建文件,刪除,而其它人不能。
操作:
chmod u+s file — 為file加上setuid標誌. (setuid 只對文件有效)
如果file本身有執行許可權,則s顯示小寫,否則大寫。
chmod g+s file — 為file目錄加上setgid標誌 (setgid 只對目錄有效)
如果file本身有執行許可權,則s顯示小寫,否則大寫。
chmod o+t file — 為file文件加上sticky標誌 (sticky只對文件有效)
如果file本身有執行許可權,則t顯示小寫,否則大寫。
許可權位:SUID(4),SGID(2),STICKY(1)
000:
001:只有sticky
. . .:
111:suid+sgid+sticky(6)
chmod 3755 /tmp/test 此處是4位許可權位。3就代表是sgid+sticky
所以經常看到的umask總是四位
umask 0022
文件預設不能具有執行許可權,如果算得的結果中有執行許可權,則將其許可權+1
umask 022
預設創建文件和目錄的許可權就是:
文件:666-022
目錄:777-022
facl (filesystem access control list)
可以針對單一用戶、單一文件或者目錄來進行rwx的許可權控制。如某一個文件,不讓單一的某個用戶訪問。
setfacl :設置某個文件/目錄的ACL設置項目
-m:設置後續acl參數
-x:刪除
-R:遞歸設置
getfacl:
取得某個文件/目錄的ACL設置項目
文件查找
locate
非實時,模糊匹配,查找是根據全系統文件數據進行的。
速度快
find
實時,精確,支持眾多查找標準
遍歷指定目錄中的所有文件完成查找,速度慢。
-name 'FILENAME':對文件名作精確匹配
文件名通配:
*:任意長度的任意字元
?
[]
-iname 'FILENAME': 文件名匹配時不區分大小寫
-regex PATTERN:基於正則表達式進行文件名匹配
-user USERNAME: 根據屬主查找
-group GROUPNAME: 根據屬組查找
-uid UID: 根據UID查找
-gid GID: 根據GID查找
-nouser:查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件
-type
f:普通文件
d:目錄
c:特殊字元文件
b:特殊塊文件
l:符號鏈接
s:套接字
-size [+|-]
k
M
G
精確匹配:
-perm MODE
-MODE:任意以為匹配即滿足條件
/MODE:文件許可權能完全包含次MODE時才符合條件
find / -perm /222
組合條件
-a:and
-o:or
-not:
-mtime n 查找系統中最後n*24小時數據修改的文件
-ctime n 查找系統中最後n*24小時狀態被改變的文件
-atime n 查找系統中最後n*24小時訪問的文件
-mmin n 查找系統中最後n分鐘數據修改的文件
-cmin n
-amin n
xargs與-exec
xargs命令可以通過管道接受字元串,並將接收到的字元串通過空格分割成許多參數(預設情況下是通過空格分割) 然後將參數傳遞給其後面的命令,作為後面命令的命令行參數。
# find . -name test11.txt | xargs rm
-exec rm {} \;:{} 表示命令的參數即為所找到的文件,以;表示comman命令的結束。\是轉義符。
# find . -name test222.txt -exec rm {} \; 對每個匹配的文件執行一個單獨的rm操作
登錄信息命令
w,who,last,lastb,lastlog
終端:
pty #:物理終端
tty #:虛擬終端
ttys #:串列終端
pts #:偽終端
w:顯示已經登錄的用戶以及他們在做什麼
who:顯示已經登錄的用戶
last:顯示 /var/log/wtmp文件用戶登錄歷史及系統啟動歷史
-n #:顯示最近#次的歷史
lastb:顯示/var/log/btmp文件,顯示用戶錯誤的登錄嘗試
-n #:顯示最近#次的歷史
lastlog:顯示每一個用戶最近一次的成功登錄信息
-u USERNAME:顯示特定用戶最近的登錄信息
basename:
$0:執行腳本時的腳本路徑及名稱