【俺用メモ】Linuxのコマンドラインでよく使いそうなの
いろいろ覚えてると便利なんですけど、使わないコマンドって忘れちゃいますよね。
なのでメモしておきます。
余談ですけど、Qiitaでコマンドラインのシンタックスハイライトって何の言語を選ぶのがいいんですかね。文字列の色を変えてくれるcを適当に選んじゃいましたけど。
findコマンドのメモ
-d オプション
-d A synonym for -depth, for compatibility with FreeBSD, NetBSD, MacOS X and OpenBSD.
階層の深さを指定できるので深掘りしすぎてfindコマンド終わらない みたいなことがなくなるので幸せになれますね。
指定の文字列を含むファイル検索
find ./ -type f -name "*.rb" -print | xargs grep "hoge"
Rubyファイルでhogeという文字列を含むファイルを表示するコマンド。
alias
でgrepまでを登録しておいてfgr hoge
みたいな使い方してます。
これはよく使うし、これで事足りるので覚えてますが、発展形は忘れることがあります。
これをベースにした発展形が以下の通り。
ファイル名に特定の文字列を含むファイルは除く
find ./ -type f -name "*.rb" ! -name "include.rb" -print
コメントで教えていただいたコマンドを記載します。
man find
を読んだところ演算子が用意されてました。
! expression
-not expression
This is the unary NOT operator
他にも-andや-orもあったので上手く組み合わせると、より柔軟な検索ができそうです。
find ./ -type f -name "*.rb" -print | xargs grep hoge | grep -v "exclude_filename"
こちらは元々私が記述したもの。
grep
の-vオプションで特定の文字列を除外します。
grepした結果に対してやってるのでファイル名と同じ行にしか適用できませんけど。
swpファイルを除きたいとか拡張子を指定しないでgrepしたあとで.phpだけ除外するとか、そんな使い方でしょうか。
たまに使いますし、-v程度なら忘れません。
ファイル名だけ表示
find ./ -type f -name "*.rb" -print | xargs grep -l "hoge"
コメントで教えていただいたコマンドを記載します。
man grep
をしたところ-lオプションというのが用意されてました。
-l, --files-with-matches
Only the names of files containing selected lines are written to standard output.
マッチしたファイル名だけを表示する、ということができます。
なので下記のようにわざわざcut & uniqなんてする必要ありません!
find ./ -type f -name "*.rb" -print | xargs grep "hoge" | cut -d':' -f1 | uniq
基本形(grepで特にオプションを指定しない場合)の実行結果は
「ファイルパス:該当行」
といった感じになります。
プログラムでインデントが深かったり、あるいはfind対象がcsvとかtsvの場合は結果がえらいことになります。
ので、cut
コマンドでファイルパスと該当行を分割して1列目だけを表示するようにしてます。
また1ファイルで何回もその文字列が出てくる場合も往々にしてありますのでuniq
で一意にしてます。が、前述の-lオプションがあれば不要です。
ディスクの空き容量がなさそうなとき
使用量確認
df -h
どのディレクトリが容量食ってるか確認
du -hs /*
以降ディレクトリを掘っていって特定する運用。
上記の例だとルートディレクトリ以下に対してやってるので時間かかるし、rootとかじゃないとパーミッションで怒られるので適宜ディレクトリを変える。
*つけない場合はそのディレクトリの総計のバイト数が表示されて、どこがいくら使ってるとかは見れない。
-h
オプションについて
print sizes in human readable format (e.g., 1K 234M 2G)
人間の読みやすい形にしてくれる
-s
オプションについて
display only a total for each argument
サマリ(翻訳諦めた)
コメントで教えていただいたこと
@tukiyo3さんに教えていただきました。
元記事を削除したためこちらで紹介、御礼を申し上げます。
パーミッションで怒られるのを回避(エラーメッセージを表示していないだけで、集計はできていない)
du -sh /* 2>/dev/null
ギガのものだけ抽出
du -sh /* 2>/dev/null | grep G
容量の大きい物順に表示
du -sh /* 2>/dev/null | grep "G¥t" | sort -nr
Author And Source
この問題について(【俺用メモ】Linuxのコマンドラインでよく使いそうなの), 我々は、より多くの情報をここで見つけました https://qiita.com/zom/items/77f2f7e8ecd8f9c398a1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .