新しいLinuxの教科書 ファイルを探す

# アクションは検索ヒットしたファイルに対しての操作
find 検索開始ディレクトリ 検索条件 アクション
検索条件 動作
-name 大文字、小文字を区別して検索
-iname 大文字、小文字を区別しないで検索
-type f 通常ファイルを検索
-type d ディレクトリ検索
-type l シンボリックリンク検索
アクション 動作
-print パスを表示(デフォルト)
その他のオプション 動作
-a 検索条件のAND 省略可能
# *と?(ワイルドカード)で検索しやすくなる
$ find . -name “*.html”

ワイルドカードの注意点

ワイルドカードを使う場合、検索文字列をシングルかダブルクォートで囲むこと。
-nameには一つの引数しか受け付けないが、ワイルドカードを使うと、パス名展開されて、-nameに対して複数の引数を割り当ててしまうため。

$ ls
index.html
index1.html

# 検索結果で複数出ると検索
$ find . -name *.html
↓
$ find . -name index.html index1.html

# 展開されない
$ find . -name “*.html”

# 検索条件は組み合わせることができる。
# 通常のファイルでindex.htmlという名前で検索
$ find . -type f -name index.html 

locate

データベースを作ることでfindより速い検索が可能
ただ、データベースタイミングもあるので、作成してしばらくたったものを検索したほうがいい。
名前での単純な検索しかできない。

# データベース更新
# locateインストールで自動で実行するらしいが、うまく検索できなかったら走らせてみるといいかも
$ updatedb
オプション 動作
-i —ignore-case 大文字、小文字無視
-b --basename ファイル名だけ検索 (結構使いそう)
-A AND検索
# OR検索
# testとenvironmentでOR検索
$ locate test environment

# AND検索
#  testとenvironmentでAND検索
$ locate -A test environment

コマンドの使い方が分からないとき。

—helpを使う

manを使う

—helpより詳しいみたい。
これを知らなかったのは衝撃的。

# コマンドのマニュアル表示
$ man コマンド名

# やりたいことができるコマンドを検索
# なにかdeleteできるコマンドを探してる。
$ man -k delete

# manで表示されるマニュアルはセクションというもので別れている。
# lsのコマンドというセクションでマニュアル開く
# 特にセクションを指定しなくても1のコマンドのセクションで開くみたい。
$ man 1 ls

# セクションの一覧を表示
# -wはマニュアルファイルのパスを表示してくれる。これだけだと、セクション1しか表示されない。
# -aはすべてのマニュアルを表示する。1セクションごとに閲覧でき、qを押すことで、次のセクションに行ける。
# - w と -a が組み合わさって、すべてのマニュアルのパスを表示してくれる。
$ man -wa crontab

コマンドを探す

そもそもコマンドの仕組み

/bin/catではなくcatでコマンドを実行できるのは。環境変数$PAHTに参照先を登録してあるから。
catの場合、$PATHに/binが書いてある。
環境変数の設定方法はMacと一緒。
catとかlsと打つと、$PATHのディレクトリを順番に探しに行くらしい。

which

コマンドの実行ファイルのパスを表示してくれる。

# 最初にヒットしたものだけ表示
$ which ls

# ヒットしたものすべて表示
$ which ls

マニュアルやヘルプを日本語に表示する

$ LANG=ja_JP.UTF-8 ls —help