生成任意大小的檔案
檔案許可權、所有權和粘滯位
建立不可修改檔案
生成空白檔案
查詢符號鏈結及其指向目標
head 與 tail
只列出目錄的其他方法
在命令列中用 pushd 和 popd 快速定位(cd -)
統計檔案的行數、單詞數和字元數
生成任意大小的檔案
$ ddif=/dev/zero of=junk.data bs=1m count=1
if**輸入檔案(input file), of代表輸出檔案(output file),bs代表每個檔案的大小(block size),count代表需要被複製的塊數。
/dev/zero是乙個字元裝置,它會不斷的放回0值位元組(\0)。if也可以指定自己的其他檔案。
檔案許可權、所有權和粘滯位
linux系統中每乙個檔案都與多種型別的許可權相關聯。這些許可權中,我們通常要和三類許可權打交道(使用者,使用者組,其他使用者)。使用者(user)是檔案的所有者。使用者組(group)是多個使用者的集合(由系統管理員指定),系統允許這些使用者對檔案進行某種形式的訪問。其他使用者(others)是除檔案使用者或使用者組之外的任何人。
用命令ls -l檢視檔案
-rwxrwxr-x 1 fzk fzk 311 12月 6 20:35 test.sh
第一列說明了檔案的型別:
- —— 普通檔案
d —— 目錄
c —— 字元裝置
b —— 塊裝置
l —— 符號鏈結
s —— 套接字
p —— 管道
剩下的部分可以分為三組,每組三個字元(--- --- ---)。第一組的3個字元(---)對應使用者許可權(所有者),第二組對應使用者組許可權,第三組對應其他使用者許可權。這9個字元(即9個許可權)中的每乙個字元指明是否其設定了某種許可權。如果已設定,對應位置上會出現乙個字元,否則出現乙個 '-', 表明沒有設定對應的許可權。
目錄有乙個特殊的許可權,叫做粘滯位(sticky bit)。如果目錄設定了粘滯位,只有建立該目錄的使用者才能刪除目錄中的檔案,即使使用者組和其他使用者也有寫許可權,也無能無力。粘滯位出現在其他使用者許可權中的執行許可權( x )位置。它使用 t 或 t 來表示。如果沒有設定執行許可權,但設定了粘滯位,就使用 t ;如果同時設定了執行許可權和粘滯位,就使用 t 。
例如: ------rwt , ------rwt
$ chmod u=rwx g=rw o=r filename #u代表user g代表group o代表other$ chmod o+x filename #增加使用者執行許可權
$ chmod a+x filename #a**所有
$ chmod a-x filename #刪除使用者執行許可權
$ chmod a+x dir -r #dir是目錄名,連同子目錄下的檔案全部增加執行許可權。-r在後面
也可用八進位制來設定許可權。
想設定什麼許可權就把相應的許可權對應的數字加和。
chmod u=rwx g=rw o=r filename 和 chmod 764 filename 乙個效果更改所有權
$ chownuser.group filename
$ chown fzk.fzk test.sh
建立不可修改的檔案
$ chattr +i file #設定不可修改$ chattr -i file #取消不可修改
這樣設定完之後就算執行 sudo rm -f file也不能刪除
生成空白檔案:touch filename
建立鏈結
$ ln -s target symbolic_link_name$ ls -l | grep "^l" #檢視符號鏈結
$ find . -type l -print
$ readlink web #檢視鏈結的目標路徑
上面中的grep 對ls -l的輸出進行過濾,^顯示以 l 起始的行,^是字串的起始標記。也就是每個符號鏈結的許可權(lrwxrwxrwx)都是l開頭。
檢視檔案頭幾行,後幾行(head tail)
$ headfile
#前10行
$ cat text | head
#從stdin讀取資料前10行
$ head -n 4
file
#讀取前4行
$ head -n -5
file
#列印除了最後5行之外的其他行
$ seq
11 | head -n -5 #seq
11 能生成1 - 11
$ tail
file
#列印最後10行
$ cat text | tail
$ tail -n 5
file
#列印最後5行
$ tail -n +(m+1
) #列印除了前m行之外的所有行
$ tail -f growing_file #能隨著資料的增長保持更新
$ tail -f file --pid $pid #pid的程序一直向file中寫資料,如果pid結束,那麼tail也結束。
tail -f 後也可以跟乙個 -s 引數,指定多少秒跟新一次。
只列出目錄的各種方法
$ ls -d */$ls -f | grep"/$
"$ ls -l | grep"^d
"$ find . -type d -maxdepth 1 -print
目錄間快速切換:
$ pushd /var/www #將路徑壓入棧$ dirs #檢視棧中目錄
/usr/src /var/www ~ /usr/share /etc
$ pushd +n #將上面目錄從左到右從0開始編號,切換到第n個目錄
$ pop #從棧中刪除最後乙個目錄
$ pop +n #刪除第n個目錄
$ cd - #上個目錄之間進行切換,如果只有兩個目錄,這個方法非常方便
統計檔案的行數、單詞數和字元數(wc (word count))
$ wc -l file #列印行數7 file
$ cat file | wc -l
7$ wc -c file #-w 單次數
$ cat file | wc -w
$ wc -c file #-c 字元數
$ cat file | wc -c
$ wc file #分別列印出行數,單詞數,字元數(1435 15763 112200)
$ wc -l #最長的一行長度
Linux Shell指令碼攻略(三)
一.find命令 1.根據檔名或正規表示式匹配搜尋 2.基於目錄深度的搜尋 maxdepth mindepth 3.根據檔案型別搜尋 4.根據檔案時間搜尋 atime 訪問時間 mtime 修改時間 ctime 變化時間 eg find type f atime 7 print 最近7天訪問的檔案 ...
linux shell指令碼攻略 一
變數數 算 重定向陣列 別名終端資訊 日期相關 除錯指令碼 函式和引數 管道命令 字段分隔符和迭代器 迴圈算術比較 檔案系統相關測試 字串比較 日期內容 格式星期 a 例如 sat a 例如 saturday 月 b 例如nov b 例如 november 日 d 例如31 固定格式日期 d 例如 ...
linux shell 指令碼攻略第3版 讀書筆記
第2章 1shell會擴充套件沒有引號或是出現在雙引號 中 的萬用字元。單引號能夠阻止shell擴充套件 txt,使得該字串能夠原封不動地傳給find命令。2find 命令 如果需要用到正規表示式使用單引號 例如 查詢 home slynux下面 所有以txt結尾的檔案並列印出來 find home...