Terminal使いへの道(3) - 簡単なファイル操作

前回、ちょっとだけファイル操作をしました。
さすがにあれだけでは普段の作業には足りないので基本的な操作をやりましょう。

↑ 普段は普通にファイルをD&Dなどで操作していると思いますが、 Terminal.appでやるとキーボードのホームポジションから移動せずにコマンドだけで処理することができます。

慣れるとちょっとした作業でマウス取りに行かなくて済むのがすごい便利( ´ ▽ ` )ノ

ということで、今回は簡単なファイル操作をするための三つのコマンドの説明をしたいと思います。

ファイルをコピーしたり移動したり

実は普通にコピペと同じで、Command+C → Command+V or Command+X → Command-V でファイルのコピペも出来るのですが(ついでにCommand+Zでやり直しも出来るのは凄い良いところw)、仮にPC初心者に使い方を教えるなら…

↑ 右クリック(タッチパッドなら二本指で)で出るメニューから複製を選べばコピーできるし、ファイル摘んでフォルダ移動させたら移動できるよ、と教える気がします。

 

なので、Terminal.appを始める方には…

ファイルコピーしたければ CoPy コマンド使って、移動したければ MoVe コマンド使えば出来るよ。
と教えたいと思いますw

 

↑ ということで、こんな操作のイメージ( ´ ▽ ` )ノ

ファイルをコピーして、コピーしたファイルを移動(このパターンだとリネームと言った方が良いかも?)しています。

あ、因みに、前回と同じフォルダ構成で、Desktopの下に居ることが前提として始めてます。

 

cp - CoPy files

先にファイル名の指定の仕方を説明しておくと…

SYNOPSIS
     cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
     cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory

ファイル名はだいたいタイピングの順番なのですが、コピー元ファイル(source_file)とコピー先ファイル(target_file)の順番で指定します。
二段目の書式は同じように見えますが、コピー先をディレクトリ指定することが出来るという違いがり、この場合、複数のコピー元ファイルをコピー先ディレクトリにコピーすることが出来ます。

ファイルの指定順番の法則とかは、偶に違うコマンドもありますがだいたいどのコマンドでも同じなので、感覚で慣れますw

 

各パラメータの間は、スペースで空白を開けることで分割します。

$ cp D

ここまでタイプしたらTABで補完

$ cp DSC_0019.jpg 

source_fileとtarget_fileの間の空白まで入力してくれるので、続けてコピー先を…

コピー先は「今は無い」ファイルなので自分で名前を付けましょう。

$ cp DSC_0019.jpg hanami.jpg
$ ls
DSC_0019.jpg            hoge.txt
hanami.jpg          名称未設定フォルダ/

何も考えずに花見の写真だから hanami と付けてみました( ´ ▽ ` )ノ

↑ ちゃんとFinderで見てもコピーされてるのが確認できた!!

 

mv - MoVe files

念のため、こちらもコマンド指定方法確認してみますが…

SYNOPSIS
     mv [-f | -i | -n] [-v] source target
     mv [-f | -i | -n] [-v] source ... directory

若干表現が違うけど、左から右にうけなg元→先ファイルを指定するので同じですね(^_^;)

 

適当に hanami って名付けましたが、ちょっと気に入らないので日本語にします。
※ Terminal.app上でも普通のアプリと同様に Command+Space などで日本語入力のON/OFFは可能です

$ mv hanami.jpg 花見.jpg
$ ls
DSC_0019.jpg            花見.jpg
hoge.txt            名称未設定フォルダ/

↑ ちゃんとFinder上でも反映された!!
# 念のため補足ですが、mvコマンド投入の際にFinder上の並び(位置)が変わる場合がありますが、そういうものですので気にしなくて大丈夫です(^_^;)

 

ファイルを削除したり

日本語になってわかりやすくなったところで、古いファイルを削除してみたいと思います( ´ ▽ ` )ノ
# 最初から mv しとけばいいじゃん、という突っ込みは、その通りなので黙殺します。

rm - ReMove directory entries

$ rm DSC_0019.jpg
$ ls
hoge.txt            名称未設定フォルダ/
花見.jpg

さてここで問題が。

 

Terminal.appでrmを使って削除を行った場合、削除したファイルはゴミ箱には入りません
いきなりそのままどこかに消えていってしまいます…

削除したときにゴミ箱に一時的に待避して間違えて削除してしまっても大丈夫な様にするのはFinderの機能なので、Terminal.appで削除する場合は気にしてくれないわけです…

 

これではちょっと誤操作が怖いので、せめて削除してもいいかどうかの確認くらいして欲しいところ(^_^;)

 

確認してもらいましょう( ´ ▽ ` )ノ

$ rm -i hoge.txt
remove hoge.txt? n  
$ ls
hoge.txt            名称未設定フォルダ/
花見.jpg
$ rm -i hoge.txt
remove hoge.txt? y
$ ls
花見.jpg          名称未設定フォルダ/

hoge.txt学術的に意味が無いよくある普通のファイルですが、今まで使わず無駄に転がっていたので削除してみます。

 

パラメータで-iを付けると、「本当に削除していいか?」の確認をしてくれます。
問題無ければ Yes とか y とか答えましょう( ´ ▽ ` )ノ

SYNOPSIS
  rm [-dfiPRrvW] file ...

DESCRIPTION
  -i Request confirmation before attempting to remove each file, regardless of the file's per-
     missions, or whether or not the standard input device is a terminal.  The -i option over-
     rides any previous -f options.

僕も実はよくわかってないのですが、たぶん先頭が y とか Y なら確認したことになります。

 

逆にyY以外を指定すると削除にならないので、怪しい場合はとにかくy以外を入力しましょう。

$ rm -i 花見.jpg 
remove 花見.jpg? ok
$ ls
花見.jpg          名称未設定フォルダ/

Terminal.appは気が利かないので ok と言っても言うことを聞いてはくれません。

 

因みに、この -i オプションは cpmvでも有効で、コピー or 移動先に既に同じ名前のファイルがあった場合、上書きしてしまうかどうかの確認をしてくれます( ´ ▽ ` )ノ

 

あ、せっかく弄った 花見.jpg なんですが、既に記事書くのに使ったので用済みだったw

↑ ということでさっくり削除してみました。

$ rm -i 花見.jpg 
remove 花見.jpg? 否
$ ls
花見.jpg          名称未設定フォルダ/
$ rm -i 花見.jpg 
remove 花見.jpg? Yeeeaaah
$ ls
名称未設定フォルダ/

デスクトップに物があふれているの嫌なので、これでだいぶすっきり…  

ところで

$ rm 名称未設定フォルダ/
rm: 名称未設定フォルダ/: is a directory

rmではディレクトリは削除出来なかったりします。

 

ということで、今回はファイル操作(その2)くらいの勢いでファイルのコピー・移動・削除を紹介しました。

# 次回はディレクトリの操作する方法を紹介します( ´ ▽ ` )