試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ファイル/ディレクトリの基本的な操作を行うコマンドについて

ここでは、ファイルマネージャ上で行うような基本的な各種操作を行うコマンドを扱う。

  1. 作業ディレクトリの移動
  2. 空のファイルとディレクトリの作成
    1. ファイル
    2. ディレクトリ
  3. 削除
  4. コピー
  5. 名前変更/移動

作業ディレクトリの移動

作業ディレクト*1はシェルの組み込みコマンドのcdpushd,popdで行う。

(ディレクトリを移動)
$ cd [移動先ディレクトリ]
もしくは
$ pushd [移動先ディレクトリ]

(cdで移動したディレクトリを1つ戻る)
$ cd -
(pushdで移動したディレクトリを1つ戻る)
$ popd

cdpushd,popdの違いについては「コマンド行シェルで作業ディレクトリを戻る作業について」を参照。
cdpushdで引数を省略するとホームディレクトリに移動する。

空のファイルとディレクトリの作成

ファイル
タイムスタンプを変更するtouchコマンドで(存在しない)パスを指定すると内容が空のファイルが作成できる他、結合用途のcatでも作成できる。ただし、いずれも存在しないディレクトリの中には直接作成できないので、既に存在するディレクトリの中の場所を指定する。

$ touch [新しいファイルの場所...]

空の内容の代わりに任意の内容のファイルを作成することもできる。

$ echo "[文字列(途中の改行は「\n」)]" > [新しいファイルの場所]
もしくは
$ cat > [新しいファイルの場所]
(ここで任意の内容(複数行可)を入力(空でもOK)後そのままCtrl+Dを押す)

ディレクト
ディレクトリを作成するにはmkdirコマンドを用いるが、存在しない階層を複数掘る場合は-pオプションが必要。「install -d」を用いてもディレクトリが作成できるが、こちらは存在しない階層を複数掘ることができる。
いずれのコマンドも-m [属性値]オプションにより、アクセス可否を示す属性(パーミッション)値を作成時に設定することができる。

(存在するディレクトリ内にディレクトリを作成)
$ mkdir (-m [属性値]) [新しいディレクトリの場所...]
(存在しないディレクトリがある場合はそれも含めてディレクトリを作成)
$ mkdir -p (-m [属性値]) [新しいディレクトリの場所...]
$ install -d (-m [属性値]) [新しいディレクトリの場所...]

削除

ファイルやディレクトリの削除にはrm*2コマンドを用いるが、これはゴミ箱に送るものではなく、直接削除作業を行うものである点には注意が必要。
-iオプションを付けると削除の実行前に問い合わせ*3を行い、-fオプションを付けると問い合わせを行わずに実行する。これらは後に付けたほうが優先される。
-fオプションを付ける場合は、入力途中の誤操作(Enterが誤って押される)により意図しない対象を削除してしまうのを防ぐため、一番最後に付けるのがおすすめ。*4

$ rm -i [削除したいファイル...]
$ rm [削除したいファイル...] -f

空のディレクトリを削除するにはrmdirを用いるが、これは空でないディレクトリには処理をしたくないときに役に立つ。

$ rmdir [空のディレクトリ...]

ファイルやディレクトリをまとめて(子ディレクトリも含めて)削除したいときには-f-rの2つのオプションを付ける。これは危険なので、実行する場合には十分注意する。また、「rm -fr」と続けて記述するのは特に危険なのでおすすめできない。

$ rm [削除したいファイルやディレクトリ...] -fr

なお、ハードリンク(関連記事)を用いた場合、この「削除」操作を行うと複数あるリンクの内の1つを削除し、全てのリンクが消えたときに初めてデータが消える。

コピー

一般的なコピーはcp*5というコマンドで行う。

$ cp ( [オプション...] ) [コピー対象] [コピー後のパス]
$ cp ( [オプション...] ) [コピー対象...] [コピー先ディレクトリ]
$ cp -a ( [オプション...] ) [コピー対象] [コピー後のパス]
$ cp -a ( [オプション...] ) [コピー対象...] [コピー先ディレクトリ]

ディレクトリのコピーには-R/-r/-aといったオプションのいずれかを付ける。*6元の状態を可能な限りそのままコピーするには-aオプションを付ける。
引数と挙動に関する詳しい部分は「cpコマンドの引数について」も参照。
-f-iといったオプションの挙動はrmコマンドと同様(後述のmvも同様)。

名前変更/移動

名前変更と移動は異なる操作のようだが、ファイルのパスを変更するという点において共通するため、コマンドもmv*7という共通のものを用いる。
引数の扱いはcpと似ている。

$ mv ( [オプション...] ) [移動対象] [移動後のパス]
$ mv ( [オプション...] ) [移動対象...] [移動先ディレクトリ]

-f-iといったオプションの挙動はrmcpコマンドと同様。
(2014/9/11)関連URLのリンク先を修正

関連URL:

使用したバージョン:

*1:現在いるディレクトリでログイン時はホームディレクト

*2:「remove」より

*3:実行するなら「y」、しないなら「n」を入力してEnterを押す

*4:コマンドの文法としては最後に付けても正常に処理される

*5:「copy」より

*6:付けないと「omitting directory」と出てコピーされない

*7:「move」より