rename:對文件重命名
rename [options] expression replacement file
# rename -v cut.exe cut.exe3 cut.exe
`cut.exe’ -> `cut.exe3′
注:rename 源文件名 改后名 源文件名
-V:顯示版本信息并退出
# rename -V
rename from util-linux 2.23.2
tree:顯示目錄樹
按樹狀結構顯示某一目錄下的文件列表
tree [options]
options:
-d:只顯示目錄
-L:設定顯示的層次
tree -L 2 lianxi/
lianxi/
├── 8yu
├── a123
├── a123.bak
├── a123.bak.bak
├── access_log
├── acl2.txt
├── k\ 67
├── mode
│ ├── a123
│ ├── access_log
│ └── cut2.txt
├── m.z
├── passw
└── sort
1 directory, 13 file
mkdir: 創建目錄
mkdir [OPTION]… DIRECTORY..
-p:自動創建父目錄
mkdir -p haha/hehe
-v:顯示詳細信息
# mkdir -pv 666/888
mkdir: created directory ‘666’
mkdir: created directory ‘666/888’
-m:直接指定權限
mkdir -m 640 mc
rmdir:刪除目錄(非空目錄不能刪除)
-p:自動刪除空的父目錄
rmdir -p testdir/dir2/
索引節點:
inode:表中包含文件系統的所有列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括:
文件類型,權限,UID,GID
鏈接數(指向這個文件名路徑名稱個數)
該文件大小和不同的時間戳
有關文件的其他數據
inode在特定范圍內是唯一的
cent6.8 根分區inode默認從2開始;centos7默認64開始
lost+found :相當于收容所,系統突然斷電等非正常關機所找不到存放地的文件都在此。
目錄:
文件引用一個inode號(系統自動分配)
人是通過文件名來引用一個文件
一個目錄是目錄下的文件名和文件inode號之間的映射。
對于目錄:目錄里存放的是子目錄或文件對應的節點編號,文件名存放在目錄里
df 參看磁盤空間使用狀況
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 4029708 48373492 8% /
devtmpfs 918976 0 918976 0% /dev
tmpfs 933644 84 933560 1% /dev/shm
tmpfs 933644 9172 924472 1% /run
tmpfs 933644 0 933644 0% /sys/fs/cgroup
/dev/sda5 10475520 32944 10442576 1% /app
/dev/sda1 1038336 172112 866224 17% /boot
tmpfs 186732 16 186716 1% /run/user/42
tmpfs 186732 0 186732 0% /run/user/0
-i:查看節點使用情況,而不是空間
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 26214400 119707 26094693 1% /
devtmpfs 229744 401 229343 1% /dev
tmpfs 233411 6 233405 1% /dev/shm
tmpfs 233411 556 232855 1% /run
tmpfs 233411 16 233395 1% /sys/fs/cgroup
/dev/sda5 5242880 3 5242877 1% /app
/dev/sda1 524288 330 523958 1% /boot
tmpfs 233411 17 233394 1% /run/user/42
tmpfs 233411 1 233410 1% /run/user/0
watch -n 1 `command`
每隔1秒就執行一次后面的命令
cp命令(復制):
分配一個空閑的inode號,在inode表中生成新條目在目錄中創建一個目錄項,將名稱與inode編號關聯拷貝數據生成新的文件
語法格式:
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE..
options:
-a :same as -dR –preserve=all
-i : 交互式操作
-f : 強制操作
-r :遞歸
-v :顯示過程信息
…
# cp -v sort haha/
‘sort’ -> ‘haha/sort’
rm 命令(刪除文件或目錄):
連接數遞減,從而釋放的inode號可以被重用
把數據塊放在空閑列表中
刪除目錄項
數據實際不會被馬上刪除,但當另一個文件使用數據塊時將被覆蓋。
語法格式:
rm [OPTION]… FILE…
-i : 交互式操作,需要用戶確認(例如:輸入y)
-f : 強制操作
-r :遞歸操作
-v :顯示過程信息
…
# rm -i k\ 67
rm: remove regular empty file ‘k 67’? y
mv命令:
如果mv命令的目標和源在相同的文件系統,作為mv命令用新的文件名創建對應新的目錄項,刪除舊目錄條目對應的舊的文件名,不影響inode表 (除時間戳)或磁盤上的數據位置;沒有數據被移動!
如果目標和源在一個不同的文件系統,mv相當于cp和rm
語法格式:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
options:
-i: 交互式操作
-f: 強制操作
-v: 顯示過程信息
示例:
# mv -v fule bufu
‘fule’ -> ‘bufu’
shred :碎紙機k,覆蓋文件內容,并刪除該文件內容
語法格式:
shred [OPTION]… FILE…
options:
-z 清零
-v 顯示過程信息
-n 操作次數
示例:
# shred -zvn5 bufu
shred: bufu: pass 1/6 (random)…
shred: bufu: pass 2/6 (ffffff)…
shred: bufu: pass 3/6 (random)…
shred: bufu: pass 4/6 (000000)…
shred: bufu: pass 5/6 (random)…
shred: bufu: pass 6/6 (000000)…
hexdump:以不同的格式顯示文件內容
語法格式:
hexdump [options] file […]
options:
-
-b: 以八進制格式顯示
-
-C:以十六進制+ascII顯示
-
-d: 以十進制顯示
-
ln filename linkname 創建硬鏈接
-
硬鏈接:不同的路徑名指向同一個文件
-
硬鏈接不支持目錄,只支持文件
-
硬鏈接不能跨文件系統
-
創建硬鏈接會增加鏈接計數
-
每個目錄引用相同的inode號
ln -s filename linkname:創建軟連接,符號鏈接
-
一個符號鏈接指向另一文件
-
符號鏈接可以跨文件系統
-
不會增加inode引用計數
-
可以跨文件系統
-
可以跨目錄
-
符號鏈接指向的是另一個文件路徑,大小為指定路徑的大小。
file 顯示文件類型
語法格式:
file [options] filename
示例:
# file 666
666: setgid directory
options:
-b:列出文件辨識結果時,不顯示文件名
# file -b 666
setgid directory
-f:列出文件中文件名的文件類型(前提是文件內保存的文件名是真實存在)
# file -f file.txt
/etc/passwd: ASCII text
/usr/share/: directory
-F:使用指定分隔符替換輸出文件名后默認的”:”分隔符
-L:查看軟連接對應的文件的文件類型
file -L /etc/localtime
/etc/localtime: timezone data, version 2, 2 gmt time flags, 2 std time flags, no leap seconds, 16 transition times, 2 abbreviation chars
reset:重置當前的工作環境
Linux給程序提供三種IO設備
-
標準輸入(STDIN) -0 默認接受來自鍵盤的輸入
-
標準輸出 stdout -1 默認輸出到當前終端窗口
-
標準錯誤 stderr -2 默認輸出到終端窗口
I/O 改變默認位置
輸出重定向:
-
> file: 覆蓋輸出重定向
-
>> file:追加輸出重定向
錯誤輸出重定向:
-
2> file 錯誤覆蓋輸出重定向
-
2>> file 錯誤追加輸出重定向
聯合重定向,正確和錯誤的都輸出到同一個文件:
-
ls /err /boot > /app/all 2>&1
-
ls /err /boot &> /app/all
-
ls /err /boot >& /app/all
set -C :禁止覆蓋已有文件
set +C: 取消上述功能
ls /boot >| /app/ls.log 強行覆蓋
(echo err 1>&2) > /app/f1把正確輸出轉為錯誤輸出
(cmd1;cmd2) > f1 把兩個命令的結果輸出到f1
多行重定向:
cat > filename << EOF(結束符)(此處生成文檔)
>ddd
>skdfjlsd
>EOF
mail -s ‘sanqueyi’ username@hostname <<EOF
mail 郵件發送程序 -s 指定標題 username@hostname 郵件接收者地址,執行上述命令,則開始輸入正文,輸入EOF則結束輸入,郵件發送
輸入重定向操作(tr命令請看下面內容):
tr ‘a-z’ ‘A-Z’ > f2 < /etc/issue
cat > f1單行重定向
wall xxxx ;發送廣播信息
tr:轉換或刪除字符
語法格式:
tr [options] set1 [set2]
options:
-
-c:取補集
-
-d:把set1中定義的內容刪除
-
-s:把set1中重復的字符壓縮為一個
-
-t:將set1中的字符轉換為set2,對位替換
管道
cmd1 | cmd2 :把命令1的標準輸出當作命令2的標準輸入,一般情況前面的成功才能正確執行
-
ls /boot /err 2>&1 | tr ‘a-z’ ‘A-Z’
-
ls /boot /err |& tr ‘a-z’ ‘A-Z’\
stderr默認不能通過管道轉發,不過可以利用2>&1或者|& 實現
最后一個命令會在當前shell進程的子shell進程執行、
一頁一頁地查看輸入:
ls -l /etc | less
mail:通過電子郵件發送輸入:
lpr:把輸入發送給打印機
echo “test print” | lpr -P printer_name
– 符號:
-是取前一個命令的stdout
tar -zcf – /home | tar -zxf –
ls /etc | tee file3: tee命令可以把前一個命令的輸出同時保存到指定文件又輸出到屏幕
tee:重定向到多個目標
command1 | tee 文件名 | command2
把命令1的stdout保存到文件名中,然后管道輸入給命令2
tee -a :附加,原文件的內容不進行覆蓋操作,保留原有內容。
作用:
-
保存不同階段的輸出
-
復雜管道的故障排除
-
同時查看和記錄輸出
readlink linkname 查看鏈接文件對應的原始文件
chown 設置的屬主屬組(普通用戶不可以執行,無權限)
-
chown onwer: file 默認把文件的屬主改為onwer屬組改為onwer的屬組
-
chown :grp file 默認修改file的屬組為grp,屬主不改變
-
chown owner:grp file
-
chown [options] –reference=RFILE FILE..
-
chgrp 設置文件的屬組信息 (普通用戶屬于的組可以執行)
-
chgrp [options]..group file..
-
chgrp [options] ..–reference=RFILE FILE..
options:
-R 遞歸修改
文件的權限主要針對三類對象進行定義:
owner:屬主,u
group:屬組,g
other:其它,o
每個文件針對對每類訪問者都定義了三種權限:
r:readable
w:writeable
x:eXcutable
對目錄:
-
r讀:可以使用ls查看文件列表,使用ls等
-
w寫:可以對目錄內創建刪除目錄內的文件
-
x執行:cd到目錄內或者ls -l
對文件:
-
r讀:可以使用文件查看類工具獲取其內容
-
w寫:可以修改文件內部內容
-
x執行:可以將可執行文件提請為一個進程
-
X:大x,給目錄設定x權限,不給文件x權限
X只設定目錄執行權限,而不給文件執行權限(但是,當文件本身任何一權限擁有執行權限的時候,大X將賦予該文件執行權限)
例: aa文件權限為-r–rw—x+
執行chmod a+X 后,權限為-r-xrwx–x+
bb文件權限為-r–rw—-+
執行chmod a+X 后,權限為-r–rw—-+
X一般配合-R對目錄使用;對目錄下的子目錄加x權限,但對無執行權限的文件不會加x
目錄的執行權限是一個基本權限,通常會有該權限;
權限檢查順序:
所有者,組,其他人
先檢查當前用戶與當前文件的屬主是否相同,相同則只運用文件的屬主權限,而不管其他用戶權限;如果用戶屬主不是文件的屬主,則檢查用戶屬組和文件屬組是否相同,同,則運用屬組權限,而不管其他權限;以上兩者都不是,則只運用其他權限
chmod :改變文件的各執行權限
語法格式:
-
chmod [OPTION]… MODE[,MODE]… FILE…
-
chmod [OPTION]… OCTAL-MODE FILE…
-
chmod [OPTION]… –reference=RFILE FILE…(復制RFILE到FILE中)
options:
-R 遞歸修改
mode表示法
賦權表示法,直接操作某一類用戶的所有權限
授權表示法:直接操作一個用戶的一個權限
數字法:
umask本質意義:
對位最大權限的unamsk相應位的權限去除,得出默認權限
-
目錄的默認權限:777-umask
-
文件的默認權限:666-umask
結果中,有奇數加一,偶數不
-
umask -S 模式方式顯示
-
umask -p 輸出方式可調用
-
umask -p >> /etc/bashrc
非特權用戶umask是002
root的umask 是022·
文件的特殊權限:
SUID,SGID,Sticky
SUID:
只能作用在可執行的二進制程序,作用在目錄上無意義,執行該程序時,繼承的是該程序的屬主身份,訪問文件時,則以程序屬主去訪問文件
設置SUID(顯示占用u的執行權限位):
chmod u[+|-]s file
如果文件本身有執行權限,則u的執行權限位為s,否則,為S。
SGID:可以作用在文件和目錄上,對于目錄,有SGID,在內部創建文件,默認繼承目錄的屬組,對文件,如某程序,執行該程序時,繼承了該程序的屬組,訪問某文件,就是以程序的屬組身份去訪問文件。
chmod g[+|-]s file
sticky:只作用在目錄上有意義,用戶只能在此目錄內刪除自己創建的文件,但可以看其他人的文件。
chmod o[+|-]t file
隱藏屬性
chattr +i 不能刪除,修改,更改
chattr +a 只能增加、追加,(編輯文件算修改),新建用戶也不行,
lsattr 查看隱藏屬性
chattr +A 鎖定文件訪問時間
ACL訪問控制列表
-
Access Control List:實現靈活的權限管理,除了文件的所有者,所屬組和其他人,可以對更多的用戶設置權限。
-
-
centos7 默認創建的xfs和ext4文件系統有ACL功能。
-
-
centos7之前的版本,默認手工創建的ext4文件系統無ACL功能,需要手動增加:
-
tune2fs -o acl /dev/sdb1 調整文件系統的屬性、增加acl功能
-
mount -o acl /dev/sdb1 /mnt/test 掛載文件系統,支持acl
-
-
文件屬性上末尾有+代表設置了acl,一旦有了acl,中間原來文件屬組位權限所代表的不是原來的含義了,即為facl的umask。
-
-
getfacl file|directory:獲取文件或目錄的訪問控制列表
-
-
setfacl -m u:wang:r file 設定用戶facl
-
-
setfacl -Rm u:wang:r f2 遞歸設置facl權限
-
-
setfacl -M file.acl file|directory
-
file.acl為facl模版文件,通??蓤绦術etfacl f1.txt > file.acl 獲取某文件facl來充當模版
-
-
setfacl -m g:admin:rw f2 設定指定組的facl權限
-
-
setfacl -m d:u:wang:rx directory:設定指定目錄下文件的facl權限,但目錄不設置,默認acl
-
-
setfacl -x u:wang f2 刪除后續用戶的facl權限
-
-
setfacl -X file.acl directory 以前一個文件內部的facl模版刪除后續文件的facl權限
-
-
base ACL不能刪除
-
-
setfacl -d dir 設置默認的facl權限 ( setfacl -m d:u:wang:rx directory )
-
-
setfacl -k dir 刪除默認的facl權限(僅限于目錄)
-
-
setfacl -b file 刪除全部的擴展facl權限
-
-
setfacl -m mask::r file 設定facl的mask值
注意:后續設置的facl權限會影響到mask,mask會自動調整以使后續設置的facl生效,達到目的。
mask: 限高線,所有facl列表擴展用戶的最高權限不能超過mask
acl mask只影響所有者和other以外的所有人:所屬組,自定義用戶,自定義組
setfacl -m mask::rx file:設定mask值
批量設置facl權限(備份和恢復acl):
1、getfacl file1 > file.acl
2、setfacl –set-file=file.acl file2
備份和恢復ACL
getfacl -R /tmp/dir > acl.txt :遞歸備份該文件和文件下的子文件acl
setfacl -R -b /tmp/dir 遞歸刪除acl
setfacl -R –set-file=acl.txt /tmp/dir 遞歸恢復acl
setfacl –restore acl.txt :–restore=file:從文件恢復備份的acl規則(這些文件可由getfacl -R產生)。通過這種機制可以恢復整個目錄樹的acl規則。此參數不能和除–test以外的任何參數一同執行。
–set選項會把原有的ACL項都刪除,用新的代替,需要注意是一定要包含UGO的設置,不能像-m一樣只是添加ACL
setfacl –set u::rw,u:wang:r,g::r,o::- file
執行時,遍歷facl列表,如果某個用戶存在于多個acl設定,可進行權限累加 ,最終權限是多個acl的權限和。
ACL生效順序:所有者,所屬組,自定義用戶,自定義組,其他人
tune2fs -l /dev/ 查看文件系統的屬性
mkfs.ext4 /dev/ 創建文件系統
blkid /dev/查看磁盤文件系統格式,UUID
mount -o loop /xx/file mountpoint 掛載本地文件,模擬成掛載磁盤
字典: /usr/share/dict/linux.words
netstat -nt 顯示訪問當前ip的鏈接信息
原創文章,作者:switch,如若轉載,請注明出處:http://www.www58058.com/70027