ZSHメモ
投稿日: | |
---|---|
タグ: |
ZSHの機能に関するメモ。
名前修飾子
- **
- 再帰的。
ディレクトリhoge以下の全てのCファイル(.c)を検索。
ls hoge/**/*.c
- ファイル名(.)
- 通常ファイル
カレントディレクトリ以下の通常ファイルから,文字列MAX_ORDERを含むファイルを検索。
egrep MAX_ORDER **/*(.)
- ディレクトリ名(/)
- ディレクトリ
- ファイル名(L[kmp][+-]N)
- ファイルサイズで絞り込む。
記号 説明 k KB m MB p ブロック 記号 説明 一致 - 未満 + 大きい - 324バイトのCファイル
ls C*(L324)
- 3KB以上の全てのファイル
ls *(Lk+30)
ls *(L+30000)
- ファイル名(m[Mwhms][-+]N)
- 修正時刻で絞り込む。
- 3日以内に修正したファイル
ls *(m-3)
- カレントディレクトリ以下のhogeディレクトリ下の10時間より前に修正したファイル
ls **/hoge/*(mh+10)
日 M 月 w 週 h 時間 m 分 s 秒 記号 説明 - 指定した値以内(m-3なら3日以内) + 指定した値より前(m+3なら3日より前) - ファイル名(fSPEC)
-
アクセス権で絞り込み。SPECはchmodなどを参考に。
- 接頭辞がabcのアクセス権が755のファイル
abc*(f755)
abc*(f=755)
- 所有者はかけるが,グループは書けないCファイル
*.c(f/u+w,g-w/)
- 所有者が全ての権限のrbファイル
*.rb(f7??)
- グループとその他のユーザが書き込みできないpyファイル
*.py(f-?22)
- グループとその他のユーザが書き込み可能なpyファイル
*.py(f+?22)
記号 説明 完全一致 = - そのビットがセットされている場合 + そのビットがセットされていない場合 ファイル名(D) 接頭辞がドットのファイルを含む
読み込み 書き込み 実行 user r w x group A I E world R W X 記号 説明 s setuid S setgid t sticky - ファイル名(a[Mwhms][-+]N)
- アクセス時刻で絞り込み。
- ファイル名(i[Mwhms][-+]N)
- iノード修正時刻で絞り込み。
- ファイル名(M)
- 一致したファイルがディレクトリの時,末尾に/を付ける。
echo *(M)
- ファイル名(n)
- ファイル名を整数とみなして小さい順にソート。
echo * 1 10 2 3 4 5 6 7 8 9 echo *(n) 1 2 3 4 5 6 7 8 9 10
- ファイル名(onLlamcdN)
- ソート
- ファイル名(OnLlamcdN)
- 逆ソート
記号 説明 n ファイル名(標準) L ファイルサイズ l リンクカウント a アクセス時刻 m 修正時刻 c iノード修正時刻 d ディレクトリ優先 N 並べ替えなし - 大きいサイズ順にファイル名を表示
echo *(OL)
- ファイル名(N)
-
指定したファイル名が存在しない時エラーをおこkさない。
- 存在する場合
echo /tmp/(N/)
/tmp- 存在しない場合
echo /tm(N/)
- ファイル名(-)
- ファイルがシンボリックの時,シンボリックファイルが指すものに。
- ファイル名(@)
- シンボリックリンク
- ファイル名(*)
- 実行ファイル
- ファイル名(=)
- ソケットファイル
- ファイル名(P)
- 名前付きパイプ(FIFO)
- ファイル名(%)
- デバイスファイル
- ファイル名(%b)
- ブロックデバイスファイル
- ファイル名(%c)
- キャラクタデバイスファイル
- ファイル名(D)
- 接頭辞がドットのファイルを含む
- ファイル名(U)
- 現在のUIDのユーザが所有するファイル。
- ファイル名(G)
- 現在のGIDのユーザが所有するファイル。
- ファイル名(uID)
- UIDがIDのファイル。
- userAのファイル
- *.[hc](u:userA:)
- userBのファイル
- *.[hc](u/userB/)
- ファイル名(gID)
- GIDがIDのファイル。
NOT, AND, OR
- NOT
-
ファイル名(^)
- 通常ファイル以外の全てのファイル
*(^.)
- *(OL)と同じ
*(^oL)
- AND
-
- 7日前から2日前までに修正されたファイル
*(m+2m-7)
- 1KBより大きく10KB未満のファイル
*(Lk+1Lk-10)
- 2年前の30KBより大きい通常ファイル
*(mM+24Lk+30.)
- OR
-
カンマ(,)で区切るとORになる。
- userAかuserBのCファイルかヘッダファイル
*.[ch](u:userA:, u/userB/)
変数
- ${変数名#接頭パターン}
- 接頭パターンに対応する部分を削除。
- ${変数名##接頭パターン}
- 接頭パターンに対応する部分を削除。最長一致
- ${変数名%接尾パターン}
- 接尾パターンに対応する部分を削除。
- ${変数名%%接尾パターン}
- 接尾パターンに対応する部分を削除。最長一致。
- ${変数名/パターン/置き換え文字列}
- パターンに一致する部分を置き換え文字列で置き換える。
- ${変数名//パターン/置き換え文字列}
- パターンに一致する全ての部分を置き換え文字列で置き換える。
- ${#変数名}
- 変数の値は文字数や要素数に置き換える。
数値範囲
- [begin-end]
- []は文字の一致。
user% ls <01-09>.jpg
1 2 3 8 9
user% touch {1..10}
user% ls
1 10 2 3 4 5 6 7 8 9
user% touch {01..10}
user% ls
01 02 03 04 05 06 07 08 09 10