よく使うコマンドを覚えよう!! ファイル操作編
今回は、UNIX/Linuxのファイル操作に関する基本的なコマンドの使い方をを覚えましょう。
ファイルまたは標準入力の内容をそのまま標準出力に出力するコマンド cat
concatnate
ファイルまたは標準入力の内容をそのまま標準出力に出力したり、複数のファイルを連結する時に使います。
- head
- tail
- more
- less
ファイルの先頭から表示する head
ファイルの先頭から表示する。(デフォルトは10行表示)
$ head [オプション] ファイル名
| オプション | 意味 |
| -c 数字 | 先頭から指定したバイト数のみ表示する。 |
| -n 数字 | 先頭から指定した行数のみ表示する。 |
| -q | ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う) |
| -v | 常にファイルごとのヘッダ出力を行う |
ファイルの末尾を表示する tail
ファイルの末尾を表示する。(デフォルトは10行表示)
$ tail [オプション] ファイル名
| オプション | 意味 |
| -c 数字 | 末尾の指定したバイト数のみ表示する。 |
| -n 数字 | 末尾の指定した行数のみ表示する |
| -q | ファイルごとのヘッダ表示を行わない(複数ファイル指定時に使う) |
| -v | 常にファイルごとのヘッダ出力を行う |
| -f | ファイルを監視して内容が追加されるたびに末尾に表示する(ログ監視などに使用する。[Ctrl]+[C]キーで終了) |
※ headコマンド・tailコマンドは、上記の使い方の他に、他のコマンドの実行結果の1部分を表示する時に使います。
テキストファイルの内容をページ単位で表示する more
テキストファイルの内容をページ単位で表示する。他のコマンドの実行結果を1画面ずつ表示する。
$ more [オプション] ファイル名
| オプション | 意味 |
| +数値 | 数値で指定した行から表示する |
| +/文字列 | 指定した文字列を検索して、見つけた行の2行上から表示する |
| -s | 連続した空行を1行にする |
| -l | 改ページを無視する |
| -u | 下線の処理を行わない |
| -数値 | 画面の行数を指定する |
| -f | 画面での行数ではなく、データの行数を表示する |
| -d | 無効なキーが入力された場合には、ビープ音の代わりに簡単なヘルプを表示する |
※ 行番号付きで表示する時はcatコマンドと組み合わせます。
$ cat /home/hoge/hogehoge.txt | more
サブコマンド
| コマンド | 意味 |
| 数値 s | 指定行数分スキップする。数を指定しなかった場合は1行、または直前に指定した行数分スキップ |
| 数値 f | 「2 f」で2画面分、「3 f」で3画面分スキップする(forward) |
| 数値 b | 「2 b」で2画面分、「3 b」で3画面分戻る(back)※moreコマンドでテキストファイルを開いている場合のみ有効 |
| = | 現在の行番号を表示する |
| . | 直前のコマンドを繰り返す |
| /正規表現 | 文字列を検索する(現在表示している箇所より後ろが対象) |
| n | 直前の検索を繰り返す |
| h | ヘルプを表示する |
テキストファイルの内容を1画面ずつ表示する less
$ less [オプション] ファイル名
| オプション | 意味 |
| +行数,-行数 | 指定した行から表示する |
| +/文字列 | 指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能) |
| -p文字列 | 指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能) |
| -oファイル | パイプ(|)などで標準入力から入力した内容を表示する際、指定したファイルにコピーを保存する。既存ファイルを指定した場合は、上書きするか、追加するかを確認するメッセージが表示される |
| -Oファイル | 「-o」と同じだが、既存ファイルを指定した場合は、確認せずに上書きする |
| -kファイル名 | lesskeyファイル(キー定義ファイル、「lesskey」コマンドで生成)を指定する |
| -L | 環境変数LESSOPEN(lessコマンド用のオプションを定義した環境変数)を無視する |
検索関係
| オプション | 意味 |
| -i | 検索時に大小文字を区別しない(ただし、検索文字列に大文字を使用した場合は大小文字を区別する) |
| -I | 検索時、常に大小文字を区別しない |
| -a | 画面に表示されている次の行以降を検索する(デフォルトは画面内の2行目以降、または最後の検索対象が見つかった行以降を検索する) |
| -g | 検索時、最初に見つけた分だけをハイライト表示する(デフォルトでは見つけた箇所を全てハイライト表示) |
| -G | 検索時のハイライト表示をしない |
| -w | 画面単位でスクロールした際、新しく表示された行の先頭部分をハイライト表示する |
| -W | 新しく表示された行の先頭部分を常にハイライト表示する |
| -tタグ | タグを定義する(タグはソースコードで定義箇所にジャンプしたりする際に使用する) |
| -Tタグファイル | タグのリストが書かれたファイルを指定する(タグファイルは「ctags」コマンドで生成) |
スクロール、表示方法関係
| オプション | 意味 |
| -s | 連続した空行を1行にする |
| -S | 画面幅より長い行を折り返さない |
| -# | 水平方向にスクロールする際のデフォルトの移動桁数(「0」にするとデフォルト値が画面幅の半分になる) |
| -数、-z数 | スクロールするウィンドウの大きさを指定する(1画面より小さくする際は負の数で行数を指定。例えば、ウィンドウが24行で「-z-4」とした場合は、20行でスクロールする) |
| -q | ファイル末尾まで表示したときのビープ音を鳴らさない(入力コマンドエラー時は鳴らす) |
| -Q | 「-q」のときも含め、ビープ音を一切鳴らさない |
| -e | ファイルの末尾に2回達したら表示を終了する(実行例4を参照) |
| -E | ファイルの末尾に到達したら表示を終了する |
| -F | 1画面で表示できる場合はすぐに終了する |
| -K | [Ctrl]+[C]キーで終了する |
| -n | 行番号を表示しない |
| -N | 行番号を表示する |
| -J | 画面の左にステータス行を表示する(例えば、検索時に該当する行に「*」記号が表示される) |
| -m | moreコマンド同様、プロンプトに現在の表示位置をパーセントで表示する |
| -M | 「-m」より詳細なプロンプトを表示する |
| -f | 通常のファイル以外も強制的に表示する |
| -r | 制御文字をそのまま表示する(デフォルトでは「^A」のようにキャレット記号を使って表示する) |
| -R | 「-r」と同様だが、可能な限り画面表示を正しく維持する |
| -XXX | 表示できない誤った文字を表示する際にマーク文字(〓)を使用する(デフォルトではバイナリとして表示) |
| -u | バックスペースとキャリッジリターンを印刷可能文字として扱う |
| -U | バックスペース、タブ、キャリッジリターンを制御文字として扱う(「-u」「-U」ともに指定していない場合は、これらの文字を使って重ね打ちによる太字や下線を表示する) |
| -x数,… | タブストップの位置を設定する。「-x4」の場合4の倍数、「-x9,17」は「9,17,25,33…」となる(デフォルトは8) |
| -~ | ファイル末尾以降のチルダ記号(~)を表示しない |
ファイルやディレクトリをコピーするコマンド cp
ファイルやディレクトリをコピーする。
$ cp [オプション] コピー元 コピー先
| オプション | 意味 |
| -a | 元ファイルの属性とディレクトリの構成を保持してコピーする。可能な限り。 |
| -b | 上書きされるファイルのバックアップを作成する |
| -d | シンボリックリンクをコピーする時は実体をコピーする |
| -f | コピー先に同じ名前のファイルがあっても警告なしで上書きをする。 |
| -i | 上書きされるファイルがある場合、確認が入る。 |
| -l | ハードリンクを作成する |
| -P | ディレクトリをつけてコピーする |
| -p | 元のファイルのオーナー、グループ、パーミション、タイムスタンプを保持 |
| -r | ディレクトリごとコピーする(再帰的) |
| -s | シンボリックリンクを作成する |
| -u | 保存先が同じファイル名のファイルだったとき、タイムスタンプを確認して、新しいor同じだったときコピーしない。 |
| -v | コピーの詳細情報を表示 |
ファイルやディレクトリを移動するコマンド mv
move
ファイルやディレクトリを移動する。ファイル名を変更する。
$ mv [オプション] 移動元 移動先
| オプション | 意味 |
| -f | 移動先に同名ファイルがあっても確認せずに上書きする |
| -i | 上書き前に確認する |
| -n | 既存のファイルを上書きしない |
| -u | 移動先にある同名ファイルのタイムスタンプが同じ、または新しい場合は移動しない |
| -tディレクトリ名 | 「-t」で指定したディレクトリに移動する |
| -T | 移動先(最後の引数)がディレクトリでも特別扱いしない |
| -b | 上書きされるファイルのバックアップを作る(「ln」コマンド参照)[方法]:「numbered」または「t」の時は番号の添え字、「simple」または「never」の時は、ファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の時は既にあるファイルに従う(ない場合はで「simple」と同じ) |
| -S | バックアップファイルを作る際の、ファイル名末尾に付ける文字(無指定時は、「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う) |
| -v | 経過を表示する |
ファイルやディレクトリを削除するコマンド rm
remove
ファイルやディレクトリを削除する。
$ rm [オプション] 削除するファイル名
| オプション | 意味 |
| -d | ディレクトリごと削除できる。スーパーユーザーのみ使用が可能 |
| -f | 警告メッセージを表示しない |
| -i | ファイルを削除してよいかを問い合わせる |
| -r -R | ディレクトリ内を再帰的に削除する |
| -v | ファイルを削除する前にファイル名を表示する |
| –help | rmコマンドの使用法を表示する |
| name | 削除するファイルやディレクトリを指定する。ワイルド・カードを使用できる |
ファイルをさまざまな条件で検索するコマンド find
ファイルを検索する。
$ find [オプション] [検索パス] [検索式]
| オプション | 意味 |
| -P | シンボリックリンクをたどらない(デフォルト) |
| -L | 全てのシンボリックリンクをたどる |
| -H | コマンドラインで指定したシンボリックリンクをたどる |
| -Dオプション | 診断用の情報(デバッグ情報)を出力する。オプションには次の文字列が入る help:デバッグ用オプションの説明を表示 tree:検索式を構造化した情報 stat:statやlstatを使ってファイルを調べたときのメッセージ opt:検索式を最適化する際の情報 rates:各処理の成功した回数と失敗した回数を表示 |
| -Oレベル | 最適化レベル。「-O1」はファイル名による判別を先に行う(デフォルト)。「-O2」「-O3」では別の判定を先に行うなどで処理を高速化する |
ファイル名・ファイルの種類で検索
| 検索式 | 意味 |
| -name パターン | ファイル名がパターンと一致するファイル(「-name “*.txt”」のような指定が可能) |
| -iname パターン | -nameと同じだが、大文字小文字を区別しない |
| -lname パターン | シンボリックリンクのリンク先ファイル名がパターンと一致するファイル |
| -ilname パターン | -lnameと同じだが、大文字小文字を区別しない |
| -path パターン | パスがパターンと一致するファイル |
| -ipath パターン | -pathと同じだが、大文字小文字を区別しない |
| -regex パターン | ファイル名がパターンと一致するファイル、パターンに正規表現が指定可能 |
| -iregex パターン | -regexと同じだが、大文字小文字を区別しない |
| -type タイプ | ファイルタイプ(通常ファイルだけを対象としたい場合は「f」、ディレクトリは「d」、シンボリックリンクは「l」) |
| -xtype タイプ | -typeと同じだが、「-H」や「-P」が指定されている場合はリンク先のファイルタイプで判定する |
| -executable | 実行可能なファイルまたは検索可能なディレクトリ(-permと違いACLなども考慮する) |
| -readable | 読み込み可能なファイルにマッチする(-permと違いACLなども考慮する) |
| -writable | 書き込み可能なファイルにマッチする(-permと違いACLなども考慮する) |
| -fstype タイプ | ファイルが置かれているファイルシステムのタイプ(ufs、nfs、tmpなど) |
タイムスタンプで検索
| 検索式 | 意味 |
| -name パターン | ファイル名がパターンと一致するファイル(「-name “*.txt”」のような指定が可能) |
| -iname パターン | -nameと同じだが、大文字小文字を区別しない |
| -lname パターン | シンボリックリンクのリンク先ファイル名がパターンと一致するファイル |
| -ilname パターン | -lnameと同じだが、大文字小文字を区別しない |
| -path パターン | パスがパターンと一致するファイル |
| -ipath パターン | -pathと同じだが、大文字小文字を区別しない |
| -regex パターン | ファイル名がパターンと一致するファイル、パターンに正規表現が指定可能 |
| -iregex パターン | -regexと同じだが、大文字小文字を区別しない |
| -type タイプ | ファイルタイプ(通常ファイルだけを対象としたい場合は「f」、ディレクトリは「d」、シンボリックリンクは「l」) |
| -xtype タイプ | -typeと同じだが、「-H」や「-P」が指定されている場合はリンク先のファイルタイプで判定する |
| -executable | 実行可能なファイルまたは検索可能なディレクトリ(-permと違いACLなども考慮する) |
| -readable | 読み込み可能なファイルにマッチする(-permと違いACLなども考慮する) |
| -writable | 書き込み可能なファイルにマッチする(-permと違いACLなども考慮する) |
| -fstype タイプ | ファイルが置かれているファイルシステムのタイプ(ufs、nfs、tmpなど) |
アクション付き検索
| 検索式 | 意味 |
| 見つけたファイルをフルパスで出力する(デフォルト) | |
| -ls | 見つけたファイルを「ls -dgils」形式で出力する |
| -print0 | 見つけたファイルのフルパスをNULL区切りで出力 |
| -printf フォーマット | 見つけたファイルをフォーマットに従った書式で出力する |
| -fprint ファイル | -printと同じ書式で指定したファイルに出力する |
| -fls ファイル | -lsと同じ書式で指定したファイルに出力する |
| -delete | 見つけたファイルを消去する |
| -exec コマンド ; | 見つけたファイルを引数にコマンドを実行する(オプションも指定可能。以下同) |
| -execdir コマンド ; | 見つけたファイルのあるディレクトリでコマンドを実行する |
| -ok コマンド ; | 見つけたファイルを引数に、確認メッセージを表示しながらコマンドを実行する(オプションも指定可能、以下同) |
| -okdir コマンド ; | 見つけたファイルのあるディレクトリで、確認メッセージを表示しながらコマンドを実行する |
| -an、-a | 条件をANDで結ぶ |
| -or、-o | 条件をORで結ぶ |
| -not | 条件を否定する |
| -true | 常に真 |
| -false | 常に偽 |
| -quit | 直ちに終了する |
| -depth 深さ | 検索するディレクトリの深さを指定 |
| -maxdepth 深さ | 検索するディレクトリの最大の深さ(「-maxdepth 0」でコマンドラインで指定したディレクトリのみ検索) |
| -mindepth 深さ | 検索するディレクトリの最小の深さ(「-mindepth 1」でコマンドラインで指定したディレクトリより深いディレクトリを検索) |
| -prune | ディレクトリに降りない |
| -mount | 他のファイルシステムにあるディレクトリを探索しない |
| -noleaf | 「ディレクトリのハードリンク数から2を引いたものが、そのディレクトリに含まれるサブディレクトリの数である」という最適化を行わない |
時間指定オプション
| オプション | 概要 |
| -mmin | ファイルのデータが最後に修正された日時(分指定) |
| -mtime | ファイルのデータが最後に修正された日時(日指定) |
| -amin | ファイルのデータに最後にアクセスされた日時(分指定) |
| -atime | ファイルのデータに最後にアクセスされた日時(日指定) |
| -cmin | ファイルのデータとステータスが最後に修正された日時(分指定) |
| -ctime | ファイルのデータとステータスが最後に修正された日時(日指定) |
その他の検索
| 検索式 | 意味 |
| -uid 数値 | 所有者のユーザーIDが指定した数値のファイル |
| -user 名前 | 所有者の名前が指定した名前のファイル |
| -gid 数値 | 所有グループID番号が指定した数値のファイル |
| -group 名前 | 所有グループ名が指定した名前のファイル |
| -nouser | ユーザーIDに対応するユーザーがいないファイル |
| -nogroup | ユーザーグループID番号に対応するグループがないファイル |
| -perm モード | パーミッションがモードと一致したファイル(「-モード」で指定したモードを全て許可しているファイル、「/モード」で指定したモードのいずれかを許可しているファイル) |
| -empty | 空のファイルまたは空のディレクトリ |
| -size サイズ | ファイルサイズが指定したサイズに一致したファイル(「-size +3k」でサイズが3KBより大きなファイル) |
| -links リンク数 | リンク数が指定したリンク数に一致したファイル |
| -inum 番号 | iノード番号が番号に一致したファイル |
| -samefile ファイル | 指定したファイルと同じiノード番号を参照しているファイル(「-L」オプションが有効な場合はシンボリックリンクも含まれる) |
ファイルやディレクトリファイルやディレクトリを高速検索するコマンド locate
locateコマンドは、あらかじめ検索しておいたファイルやディレクトリのリストのデータベースを検索することで、高速な検索を行う。
findコマンドは直接、ファイルやディレクトリを探す。
$ sudo updatedb
$ locate [オプション] パターン
| オプション | 意味 |
| -dパス | データベースの位置を指定する |
ファイルを新規作成する・タイムスタンプを変更するコマンド touch
ファイルの新規作成(ファイルサイズ 0)、ファイルのタイムスタンプを変更する。
$ touchコマンドの概要 | 書式 | オプション一覧
| オプション | 意味 |
| -t スタンプ | 「[[CC]YY]MMDDhhmm[.ss]」形式で指定した日時に変更する |
| -d | 文字列で指定した日時に変更する |
| -r | 指定したファイルのタイムスタンプと同じ日時にする |
| -a | 最終アクセス日時のみ変更する(指定しない場合は、最終更新日時と最終アクセス日時が変更される) |
| -m | 最終更新日時のみ変更する(指定しない場合は、最終更新日時と最終アクセス日時が変更される) |
| –time=指定 | 指定した種類の時刻を変更する。指定が「access」「atime」「use」ならばアクセス日時(「-a」相当)、「modify」「mtime」の場合は更新日時のみ変更する(「-m」相当) |
| -c | ファイルを作成しない |
| -h | シンボリックリンクの場合、リンク先ではなくシンボリックそのもののタイムスタンプを変更する(ファイルシステムが対応している場合のみ) |
今日、覚えたいUNIX/Linuxのファイル操作に関連する基本コマンド
- cat
head
tail
more
less - cp
- mv
- rm
- find
- locate
- touch
