格式說明:
操作
概念
命令
說明及舉例
五.索引、硬鏈接、軟連接、inode表、file、重定向、tr、管道、用戶、組
索引節點
原數據保存在inode table表中
每個文件或目錄都有一個獨立的inode number(節點編號在一個分區中是唯一的,每個分區都有自己的inode table)
ls -i 查看節點編號
硬鏈接
ln f1 dir/f11 為f1文件創建硬鏈接并放到dir文件夾下,名稱為f11.跨設備跨分區不能創建。
鏈接數=文件名字的數量,為一個文件創建多個硬鏈接相當于給一個文件取了多個名字,修改任何一個文件都等于全部修改,刪除其中一個硬鏈接,只相當于刪除了這文件的名字之一
目錄不能創建硬鏈接
軟連接(符號鏈接)
ln -s f2 f2kuaijiefangshi 為f2文件創建軟連接f2kuaijiefangsh
給文件創建軟連接,相當于給文件創建快捷方式,寫軟鏈接的時候,文件的路徑必須寫清楚(相對于軟連接的路徑,而不是當前工作目錄的路徑),軟連接的路徑無所謂
inode表結構
前12個是數據塊,每個存4k,第13個是指針快,不直接指向數據塊,可存4kx1024=4M文件;第14個是二重指針塊,后面跟兩個指針塊,可存4kx1024x024=4G文件,以此類推.
df -i 查詢每個分區最大節點數及已用節點數量
節點號消耗完也會提示磁盤空間滿了
練習:解釋cp rm mv命令的系統后臺動作
file命令
flie -f +文檔 把想查看的文件目錄寫到文檔里,可以都查看
標準輸入和輸出
標準輸出、錯誤
標準默認輸出在當前窗口,標準輸出錯誤也在當前窗口
重定向
ls > /dev/pts/0 在pts0窗口上顯示 ls > /testdir/ls.log 讓輸出內容重定向到ls.log文件中(沒有這個文件會創建,如果存在會覆蓋) ls >> /testdir/ls.log 將信息寫到ls.log文件中,保留原有內容
>是重定向標準輸出的正確結果的; >=1>
2>是重定向錯誤信息的
ls /dev /ddd > /tesedir/dui.log 2> /testdir/cuo.log 將命令中正確信息寫到dui.log ,錯誤信息寫到cuo.log
ls /dev /ddd &> /tesedir/all.log 把命令中所有標準輸出都寫到all.log里
以上命令是覆蓋
以下命令是累加
ls /dev /ddd >> /tesedir/dui.log 2>> /testdir/cuo.log 將命令中正確信息寫到dui.log ,錯誤信息寫到cuo.logls /dev /ddd &>> /tesedir/all.log 把命令中所有標準輸出都寫到all.log里
多條命令重定向:用括號把多條命令括起來
標注輸入重定向
cat < f1 將f1里的信息輸出 cat < f1 > f2 將f1里的信息輸出到f2里 cat f1 f2 > f3 將f1 f2的內容輸出到f3里 mail -s hello wang 回車后寫內容,結束按. wang 用戶 輸入mail mail -s hello wang < f1.txt 將f1.txt中內容作為正文發送 多行重定向 cat <<E >f1 直到打結束的E 才重定向到f1中 (<<+關鍵字開始。再出現獨立的一行關鍵字結束)
tr命令
轉換和刪除字符
tr 'a-z' 'A-Z' 將所有輸入的小寫字母轉換成大寫字母 tr 'a-z' 'A-Z' < f1 將f1 文件中所有小寫字母轉換為大寫 r 'a-z' 'A-Z' < f1 > f2 將f1 文件中所有小寫字母轉換為大寫并存到f2中(f1中內容不變)
tr 'abc' 'xyz'
tr 'abc' 'xy'
tr 'ab' 'xyz'
tr -c 'a-z' 取反 tr -d 'abc' 有a/b/c的都干掉 tr -d -c 'abc' 'xxx' < f1 將文件f1 中的除了abc以外的字符都換成xxx tr -s ‘x’ 合并重復的x為1個
tr -d '\n' < f1 將f1文件中的換行都干掉
tr ' ' '\n' <f1 將f1文件中的空格轉換城換行mail -s help root <<end
Hello,I amwhoami
the system version is here,please help me to check it,thanks!< /etc/issue
end
管道
管道接收的是標準輸出,不能是標準錯誤
練習用管道讀文檔發郵件
ls /err |& tr 'a-z' 'A-Z' 不管前面是否是錯誤,都處理(|&=2>&1) ls |tee f2 將ls輸出內容存到f2文件,但是前臺也顯示 重定向輸出信息不想看的話最后加 /dev/null
用戶、組和權限
組的類別
用戶的主要組-主組
用戶必須屬于一個且只有一個主組
組名同用戶名,且僅包含,,,
Linux中默認創建一個用戶wang,就會創建一個wang組,組里只有wang一個
查看命令 id
Linux用戶和組的配置文件
用戶配置文件
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/shadow:用戶密碼及其相關屬性
例:m:$6$8BhKzFY7Pl02tuZK$M9ppDJCf6Y8sSx/kFGbmG6Mat/Z2JE.OJ6Mao.izesjpwW0t5MiFxxrtzwLrAwfP6/xvlZ7MG8Y4LeGIAd6Me0:17001:0:99999:7:::
$6=sha512加密算法 $1=md5加密算法 后面兩個$中間的玩意($8BhKzFY7Pl02tuZK$)是加的延,目的是即使相同密碼加密后也看不出來是相同 ;17001代表時間,后面的0表示隨時可以改密碼,改成3就是3天以后才能改。后面難道99999代表有效期,7代表提前7天通知;倒數第二個可以填個數,代表此賬號的有效期,到時間自動鎖定,格式也是類似17001天。
組配置文件
/etc/group:組及其屬性信息
/etc/gshadow:組密碼及其相關屬性
groups +用戶名 查看用戶屬于什么組 getent passwd 用戶名,查看某用戶的密碼信息
將用戶加到root組中,該用戶創建的文件所有者及所屬組依然是該用戶(其主組)
newgrp bin 將用戶的主組切換為bin 但是需要密碼 gpasswd bin 給組設置密碼
改密碼命令
vipw 改用戶密碼,格式改錯會報警用法等于 vim /etc/passwd vigr 改組密碼。格式改錯會報警用法等于 vim /etc/group
原創文章,作者:自己泡面,如若轉載,請注明出處:http://www.www58058.com/39180