Linux コマンド
-
端末でコマンドの説明を表示させるには、コマンド 半角スペース --help と入力する。全角スペースだと表示されない。例えば ls の説明を表示させたければ、ls --help と入力する。
-
ls は list の略で、ファイルの情報を表示するコマンドである。-l オプションをつけると、詳細な情報が用事され、権限の情報も表示される。
-
chmod は change mode の略で、権限を変更するコマンドである。権限は所有者、グループユーザー、その他のユーザーの順に表示する。読み込みに 4、書き換えに 2、実行に 1 の数字を振る。
次の7通りの場合がある。
読み込み |
書き込み |
実行 |
数字表示 |
○ |
○ |
○ |
4+2+1=7 |
○ |
○ |
× |
4+2=6 |
○ |
× |
○ |
4+1=5 |
○ |
× |
× |
4 |
× |
○ |
○ |
2+1=3 |
× |
○ |
× |
2 |
× |
× |
○ |
1 |
chmod 751 Shiken.txt と書けば、「Shiken.txtは、所有者に読み込み、書き込み、実行の権限を与え、グループユーザーに読み込み、実行の権限を与え、その他のユーザーに実行の権限を与える。」ということである。
-
カレントフォルダのパスは . で表すことができる。 ./あるフォルダ名 と書くとカレントフォルダの中にある「あるフォルダ名」という名のフォルダへのパスである。
-
ubuntuをインストールした時、rootユーザー名をzhangとすると、homeフォルダの中にzhangというフォルダが自動的につくられる。zhangのパスは/home/zhangになる。このzhangはホームフォルダと言われ、通常ユーザーがつくったファイルはこのホームフォルダに保存される。端末はホームフォルダ、この場合はzhangフォルダをカレントフォルダとして起動する。
zhangフォルダの中に、試験文書というフォルダをつくり、その中にあいさつ.txtというテキストファイルをつくる。zhangフォルダの中にもう1つ試験文書2というフォルダをつくる。あいさつ.txtを試験文書2フォルダにコピーしたいのだが、コマンドはどのように書けばよいのだろうか。あいさつ.txtのパスは /home/zhang/試験文書/あいさつ.txt であり、試験文書2フォルダのパスは /home/zhang/試験文書2 である。コピーするコマンドは cp だから、
cp /home/zhang/試験文書/あいさつ.txt /home/zhang/試験文書2/あいさつ.txt
となる。この時、cpと/home/zhang/試験文書/あいさつ.txt /home/zhang/試験文書/あいさつ.txtと/home/zhang/試験文書2/あいさつ.txtの間は半角スペースを置く。これを次のように、全角スペースにするとエラーになる。
cp /home/zhang/試験文書/あいさつ.txt /home/zhang/試験文書2/あいさつ.txt
cp /home/zhang/試験文書/あいさつ.txt /home/zhang/試験文書2/あいさつ.txt
端末は起動した時、 zhangフォルダがすでに、カレントフォルダになっているのだから、/home/zhang/を省略して、
cp 試験文書/あいさつ.txt 試験文書2/あいさつ.txt
と書くこともできる。このほうが簡単だから、通常こちらが使われる。しかし
cp /試験文書/あいさつ.txt /試験文書2/あいさつ.txt
と書くことはできない。 / はルートフォルダを表す。ルートフォルダの中に homeフォルダはあるが、 ルートフォルダの中に 試験文書フォルダはない。試験文書フォルダはルートフォルダの中の homeフォルダの中の zhangフォルダにあるのである。だから上のコマンドを実行すると、エラーとなり、「そのようなフォルダはない」というコメントが返ってくる。
cp home/zhang/試験文書/あいさつ.txt home/zhang/試験文書2/あいさつ.txt
もエラーになる。 homeの前に / がないと、カレントフォルダ(この場合は zhangフォルダ)の中のhomeフォルダを探そうとする。zhangフォルダ の中にhomeフォルダをつくっていないと、エラーになり、「そのようなフォルダはない」というコメントが返ってくる。上のコマンドをエラーなく実行させようとするなら、zhangフォルダ の中にhomeフォルダをつくり、homeフォルダの中に、さらにzhangフォルダをつくり、zhangフォルダの中に試験文書フォルダと 試験文書2フォルダをつくり、試験文書フォルダの中に あいさつ.txtをつくらなければならない。
USBフラッシュメモリーはmediaフォルダの中のdiskフォルダにあるから、USBフラッシュメモリーのパスは、/media/disk になる。
cp /home/zhang/試験文書/あいさつ.txt /media/disk/あいさつ.txt
で、USBフラッシュメモリーにコピーできる。/home/zhang/は省略できるから、
cp 試験文書/あいさつ.txt /media/disk/あいさつ.txt
と簡単に書くこともできる。
フォルダを中のファイルとともに、コピーするには、-r オプションを使う。
cp -r 試験文書 /media/disk
と書き、コマンドを実行すると、 試験文書フォルダが中のファイルとともに、USBフラッシュメモリーにコピーされる。
-u オプションは同じファイル名のファイルがある時、新しいファイルだとコピーするが、古いファイルだとコピーしない。
cp -r -u 試験文書 /media/disk
と書く。数台のパソコンで同じファイル名の文書をつくっていると、どれが一番新しい文書であるのが、わからなくなることがある。新しいファイルを古いファイルで上書きしてしまい、しまったと思うことがある。新しいファイルだけ上書きするという -u オプションはありがたいオプションである。上のコマンドは
cp -ru 試験文書 /media/disk
のようにハイフォンを省略して書くこともできる。
cp -r 試験文書 /media/diskk は
cp --recursive 試験文書 /media/disk
と書くこともできる。一見文が長くなり、大変なように見えるが、rという省略した形でなく、意味のある単語を書いてあるので、理解しやすい。
cp -r -u 試験文書 /media/disk は
cp --recursive --update 試験文書 /media/disk
と書くこともできる。uはupdateのuをとっているのである。
USBフラッシュメモリーの試験文書フォルダを中のファイルとともに、ホームフォルダのzhangに新しいファイルだけコピーするには、
cp -ru /media/disk/試験文書 /home/zhang
になる。
次にLAMPというフォルダの中にPHPというフォルダがあり、PHPフォルダの中にshiken1.txt、shiken2.txtという二つのテキストファイルがあるとする。もう一つLAMP2というフォルダをつくり、shiken1.txt、shiken2.txtをコピーしたい。どう書けばいいだろうか。
cp LAMP/PHP LAMP2 と書けば、エラーになる。
cp -r LAMP/PHP LAMP2 と書けばLAMP2の中にPHPフォルダができ、その中にshiken1.txt、shiken2.txtがコピーされる。cp -r LAMP/PHP LAMP2/ cp -r LAMP/PHP/ LAMP2 と書いても、同じ結果になる。
次にLAMP2のなかにPHPという空のフォルダをつくる。その後 cp -r LAMP/PHP LAMP2 を実行すれば、LAMP2フォルダのPHPフォルダの中にshiken1.txt、shiken2.txtがコピーされる。cp -r LAMP/PHP LAMP2/PHP を実行すれば、LAMP2フォルダのPHPフォルダの中にさらにPHPフォルダができ、その中にshiken1.txt、shiken2.txtがコピーされる。
cp -r LAMP/PHP/* LAMP2 と書けば、LAMP/PHPフォルダの中身shiken1.txt、shiken2.txtだけが、LAMP2フォルダにコピーされ、PHPフォルダはコピーされない。
-
cp で注意すべきは、オプションをつけないと、更新日がコピーした日にちになってしまうことである。CtrlキーとCキーでコピーしてCtrlキーとVキーで貼り付けた時は、元の更新日でコピーされるから、cp も元の更新日でコピーされるものと思ってしまう。最近に作成したファイルを取り出す時によくファイルを更新日順に並びかえることがある。最近作成したファイルは最後のほうに並ぶから取り出しやすいのである。ところがcp でフォルダをすべてコピーすると、その中にあるファイルは更新日がすべてコピーした日にちになってしまう。これでは更新日順に並びかえることができない。更新日を元の日にちのままコピーするには -a オプションをつける必要がある。
今試験1フォルダにあいさつ1.txt とあいさつ2.txt があるとする。また試験2フォルダ、試験3フォルダもあるとする。試験1フォルダの中身を丸ごと試験2フォルダにコピーするには cp -r -u 試験1/* 試験2 と書く。-r はフォルダを中のファイルとともにコピーするオプションであり、-u は同じファイル名のファイルがある時、新しいファイルだとコピーするが、古いファイルだとコピーしないオプションである。これで試験2フォルダにあいさつ1.txt と あいさつ2.txt がコピーされるが、あいさつ1.txt と あいさつ2.txt の更新日がコピーした日にちに変わってしまう。
-a オプションをつけて、cp -r -u -a 試験1/* 試験3 と書けば、試験3フォルダにあいさつ1.txt と あいさつ2.txt がコピーされ、更新日は元のままである。更新日が変わることはない。
ハイフォンをとり、cp -rua 試験1/* 試験3 と書くこともできる。
なおWindows コマンドでは、Linux コマンドの cpにあたるものに、copy や xcopy があるが、これはコピーしても更新日が変わることはなく、元のままである。
-
man manはmanualの略である。manの後ろにコマンド名を書くと、そのコマンドの説明を表示させることができる。例えばman rm と書いてEnterキーを押すと、rmの説明が表示される。
fキーかスペースキーを押すと1画面進み、bキーを押すと1画面戻る。↓キーかEnterキーを押すと1行進み、↑キーを押すと1行もどる。もとの画面にもどすには、qキーを押す。
-
rm はremoveの略である。ファイルやフォルダを削除する。フォルダを中のファイルとともに削除するには、-r または--recursiveのオプションをつける。
-
ySQLのパスワードが1234で、Shikenという名のデータベースがあるとする。ホームフォルダのなかに、Backupという名のフォルダがあり、USBメモリーにもBackupというフォルダがあるとする。今Shikenデータベースのバックアップ(Shiken_Backup.txtというファイル名にする)をホームフォルダとUSBメモリーにとりたいのだが、どうすればいいのだろうか。ホームフォルダへのバックアップはmysqldumpコマンドを使い、
mysqldump -u root -p1234 Shiken > Backup/Shiken_Backup.aim
でできる。
Backup/Shiken_Backup.aimをUSBメモリーにコピーするのは、画面のBackup内のShiken_Backup.aimのアイコンを出して、Ctrlキー + Cキーでコピーして、USBメモリーのBackupフォルダを開いて、Ctrlキー + Vキーで貼り付ければできる。しかし少し面倒である。Linuxコマンドにも cp というコピーをするコマンドがあるから、mysqldump と cp コマンドをつなぐことができれば、マウスでクリックしてコピーする作業はいらないわけである。コマンドとコマンドをつなぐのが、&& の役割である。&& は前のコマンドが成功した場合にのみ、後ろのコマンドを実行する。この場合は次のようになる。
mysqldump -u root -p1234 Shiken > Backup/Shiken_Backup.aim && cp Backup/Shiken_Backup.aim /media/disk/Backup/Shiken_Backup.aim
-
grepはglobal regular expression print の略である。
-
chmodはchange mode の略である。
-
端末からファイルを開くには、gnome-open あるいは xdg-open を使う。例えば、homeフォルダにアマゾン.odt というOpenOffice.org Writerのファイルがあるとすると、
gnome-open アマゾン.odt
xdg-open アマゾン.odt
でファイルが開く。homeフォルダ内のDocumentフォルダにあるなら、
gnome-open Document/アマゾン.odt
xdg-open Document/アマゾン.odt
とする。
-
FirefoxでHTML文書を開くには、firefoxコマンドを使う。
例えばホームフォルダにShiken.htmというHTML文書があると、
firefox Shiken.htm
でFirefoxで開くことができる。
-
/var/shiken の中にファイルがたくさんあり、その中にあるディレクトリの権限を見たいと思っても、
ls -l /var/shiken
では、たくさんのファイルが端末に表示されディレクトリがどこにあるのかわからないことがある。ディレクトリのみ表示させるには、
ls -pl /var/shiken | grep /
と書けばディレクトリのみ表示される。
-p は、ディレクトリ名の最後に/を付けて表示するオプションである。
-
cat ファイルの内容を表示する。
-
ファイルを捜し、更新順に並べる
ls -tl `find . -name "*.pl"` | more
find で捜したファイルを更新順に並べるのは、ls を利用する。
この場合は.pl のつくファイルを捜し、更新順に並べている。
more は最初のファイルを画面に出している。ファイルが多いと最初の画面が出ないためである。Enterキーを押すと1行ずつ下の行が出る。
ls -t
はファイルを新しい順に並べるが、古い順に並べるには、
ls -tr
とする。
なお
find . -name "*.pl"
を囲んでいるのは、バッククォート (backquote)(`)であり、アポストロフィ(')でない。
参考文献
小林 準 (2007) 『独習Linux』 翔泳社
ホームにもどる
「パソコンについて」にもどる