Linux のターミナル¶
Linux のターミナル操作に慣れるようにします.
ターミナルの起動¶
ターミナルを開くには下記のアイコンをクリックします.
2つ目のターミナルを次のいずれかの方法で開きます.
- ターミナル上で右クリックして "Open Terminal" を選択する.
- "File" メニューから "Open Terminal" を選択する.
ターミナルウィンドウが選択されているときに "Ctrl+Shift+T" を押すと, 同じウィンドウ内に2つ目のターミナルが開きます.
2つ目のターミナルのタブを次のいずれかの方法で閉じてください.
- ターミナルタブにある小さな 'x' をクリックする. (メインのターミナルウィンドウの 'x' ではありません)
exit
とタイプして Enter を押す.
ウィンドウは次のような1行が表示されています.
ros-industrial@ros-i-kinetic-vm:~$
これは「プロンプト」と呼ばれるものでコマンドを入力する場所です. このプロンプトにはデフォルトでは3つの情報が表示されています.
- ros-industrial は現在のユーザのログイン名です.
- ros-i-kinetic-vm はコンピュータのホスト名です.
- ~ は現在のターミナルがいるディレクトリです.(後で詳述)
exit
を入力するか ウィンドウタイトルバーにある赤い 'x' をクリックして ターミナルウィンドウを閉じます.
ディレクトリの移動とファイルのリスト表示¶
環境の準備¶
- ファイルブラウザでホームフォルダを開いてください.
- 前の演習で作成した
ex0.3
フォルダを ダブルクリックしてください.- このフォルダを利用してターミナルの さまざまなファイル操作を説明します.
- 現在のディレクトリでターミナルを開くために, ファイルブラウザのメインウィンドウで右クリックして "Open in Terminal" を選択してください.
- ターミナルウィンドウで次のコマンドを入力して
この後の演習で使ういくつかのサンプルファイルを作成します.
cp -a ~/industrial_training/exercises/0.3/. .
ls コマンド¶
- ターミナルで
ls
と入力してください.test.txt
とnew
がリスト表示されるはずです. (new
が表示されない場合は 前回の演習 を完遂してください.)new
のようなディレクトリは青色になっています.- ファイル
sample_job
は緑色になっています. これは「実行」のためのビットセットを有しているという印で, コマンドとして実行可能であることを意味しています.
ls *.txt
と入力してください.test.txt
だけが表示されるはずです.ls -l
とターミナルに入力してください.-l
オプションを追加すると,1行に1つのエントリが表示され, ディレクトリ内の各エントリに関する追加情報が表示されます.- 最初の10文字はファイルの種類とアクセス許可を示します.
- エントリがディレクトリの場合,最初の文字は
d
です. - 次の9文字はファイルのパーミション(許可)ビットです.
- 3番目と4番目のフィールドはそれぞれ所有するユーザーとグループです.
- 2番目から最後までのフィールドは、ファイルが最後に更新された時刻です.
- ファイルがシンボリックリンクの場合, リンクのファイル名の後ろにリンクのターゲットファイルがリストされます.
ls -a
とターミナルに入力してください.- ここでは隠しファイルが1つ追加で表示されます.
ls -a -l
もしくはls -al
とコマンド入力してください.- これで
hidden_link.txt
ファイルが.hidden_text_file.txt
を指していることがわかります.
- これで
pwd
と cd
コマンド¶
pwd
とターミナルに入力してください.- 現在の作業ディレクトリの完全なパスを表示します.
cd new
とターミナルに入力してください.- プロンプトが変わって
ros-industrial@ros-i-kinetic-vm:~/ex0.3/new$
と表示されるはずです. - ここで
pwd
を入力すると/home/ros-industrial/ex0.3/new
ディレクトリにいることを表示します.
- プロンプトが変わって
cd ..
とターミナルに入力してください.- 前の演習 で
..
が親フォルダであることを示しました. - プロンプトは現在の作業ディレクトリが
/home/ros-industrial/ex0.3
であることを示すはずです.
- 前の演習 で
cd /bin
と入力してからls
を実行してください.- このフォルダには
最も基本的な Linux コマンドのリストが含まれています.
pwd
とls
はこのフォルダにあります.
- このフォルダには
最も基本的な Linux コマンドのリストが含まれています.
cd ~/ex0.3
と入力して 本演習の作業ディレクトリに戻ります.- Linux では
~
文字を ホームディレクトリの省略表現として使用します. - コマンドラインのコマンドで ファイルとパスを参照する便利な方法です.
- 本演習で沢山この
~
を入力しますので是非憶えてください.
- Linux では
本節のコマンドの全オプションを知りたい場合は,
コマンドラインに man <command>
と入力します.
( <command>
は欲しい情報があるコマンド名です.)
これによりコマンドの組込みドキュメントが表示されます.
スクロールするには矢印と Page Up/Down キーを使い,
終了するには q
を使います.
ファイルの変更¶
mv コマンド¶
mv test.txt test2.txt
と入力してからls
を行ってください.test2.txt
にファイル名が変更されているはずです.
ここではmv
でファイル名を変更する方法を見ました.
mv test2.txt new
と入力してからls
を行ってください.- ファイルがフォルダ内にないことがわかると思います.
cd new
と入力してからls
を行ってください.- フォルダ内にファイル
test2.txt
があるはずです.
ここではmv
でファイルを移動する方法を見ました.
- フォルダ内にファイル
mv test2.txt ../test.txt
と入力してからls
を行ってください.test2.txt
はそこにはないはずです.
cd ..
と入力してからls
を行ってください.test.txt
が再び表示されているはずです.
ここではmv
で ファイル名の変更と移動を同時に行う方法を見ました.
cp コマンド¶
cp test.txt new/test2.txt
と入力してからls new
を行ってください.test2.txt
がnew
フォルダ内にあるはずです.
cp test.txt "test copy.txt"
と入力してからls -l
を行ってください.test.txt
がtest copy.txt
に コピーされているはずです.
引用符"
はスペースや特殊文字が ファイル名に含まれる場合に必要となります.
rm コマンド¶
rm "test copy.txt"
を入力してからls -l
を行ってください.test copy.txt
が無くなっているはずです.
mkdir コマンド¶
mkdir new2
を入力してからls
を行ってください.new2
というフォルダができているはずです.
-i
フラグを cp
や mv
および rm
コマンドとともに使用すると,
ファイルの上書きまたは削除を行うときに注意喚起されます.
ジョブの管理¶
ジョブの停止¶
./sample_job
を実行してください.- プログラムが開始します.
- Control+C を押してください.
- プログラムから抜けます.
./sample_job sigterm
を実行してください.- プログラムが開始します.
- Control+C を押してください.
- 今回はプログラムは停止しません.
制御不能ジョブの停止¶
- 新たにターミナルのウィンドウを開きます.
ps ax
と入力してください.- ターミナルをスクロールアップして
python ./sample_job sigterm
を見つけてください.- これは先程の1つ目のウィンドウで実行したジョブです.
- テーブルの最初のフィールドはプロセス ID です.
(
man ps
で他のフィールドについても学習してください.)
ps ax | grep sample
と入力してください.- より少ない行が表示されているはずです.
- これは特定のプロセスを見つけたい場合に便利です.
- 注: これはパイピングという応用技術で, あるプログラムの出力が次のプログラムの入力に渡されます. これは本演習の目的の範囲を超えていますが, ターミナルをより広範に使用するようでしたら便利な機能です.
kill <id>
と入力してください.<id>
はps ax
で調べたジョブ番号です.- 1つ目のターミナルで
./sample_job sigterm sigkill
と入力してください.- プログラムが開始されます.
- 2つ目のターミナルでプロセス ID を得るために
ps ax | grep sample
と入力してください. kill <id>
と入力してください.- 今回はプロセスが終了しません.
kill -SIGKILL <id>
と入力してください.- 今回はプロセスが終了するはずです.
プロセスとメモリの使用状況の表示¶
- ターミナルで
top
と入力してください.- テーブルが表示され,1秒につき1回更新されます. システムの全プロセスと 全体の CPU と メモリの使用状況が表示されます.
- Shift+P キーを押してください.
- これは CPU の利用割合の順番で並び替えを行います.
どのプロセスが最も CPU を使用しているかを判断するのに利用できます.
- これは CPU の利用割合の順番で並び替えを行います.
- Shift+M キーを押してください.
- これはメモリの利用割合の順番で並び替えを行います.
どのプロセスが最もメモリを使用しているかを判断するのに利用できます.
- これはメモリの利用割合の順番で並び替えを行います.
- q か Ctrl+C でプログラムを終了します.
テキストの編集とその他の GUI コマンド¶
gedit test.txt
と入力してください.- 新しくテキストエディタのウィンドウが開いて
test.txt
が読み込まれます. - ウィンドウを閉じるまで ターミナルのプロンプトは戻ってきません.
- 新しくテキストエディタのウィンドウが開いて
- プロンプトが戻ってくるようにする方法は
2つありますので両方とも試してみてください.
- プログラム開始と同時にプロンプトを回復させる:
gedit test.txt &
と入力してください.&
の文字はコマンドの実行を バックグラウンドで行うことをターミナルに指定します. つまりプロンプトがすぐに戻ってくることを意味します.
- gedit ウィンドウを閉じて,
ターミナルで
ls
と入力してください.- ターミナルにはファイルリストが表示されるだけでなく
gedit
が完了したことも通知されます.
- ターミナルにはファイルリストが表示されるだけでなく
- 既に開始しているプログラムをバックグラウンド実行に変更する:
gedit test.txt
と入力してください.- ウィンドウが開いてターミナルでは プロンプトが待機状態にはなっていないはずです.
- ターミナルのウィンドウ内で Ctrl+Z を押してください.
- ターミナルには
gedit
が終了した旨が表示されて, プロンプトが現れます.
- ターミナルには
gedit
ウィンドウを使ってみてください.- 一時停止状態のためウィンドウは動作しません.
- ターミナルで
bg
と入力してください.gedit
ウィンドウは動作をします.
- gedit ウィンドウを閉じて,
ターミナルで
ls
と入力してください.- 前と同じようにターミナルには
gedit
が完了したことが通知されます.
- 前と同じようにターミナルには
ルートとしてのコマンド実行¶
- ターミナルで
ls -a /root
と入力してください.- 端末は
/root
フォルダを読むことができないことを示します. - 普通のユーザーとしては実行できないコマンド を実行する必要がある場合が多くあり, その時は「スーパーユーザー」として コマンドを実行する必要があります.
- 端末は
- 前のコマンドを root として実行するには,
コマンドの先頭に
sudo
を追加します.- この場合
sudo ls -a /root
と入力してください. - 実行において端末はパスワードを要求します.
(本例では
rosindustrial
) - パスワードを入力すると,
/root
ディレクトリの内容が表示されます.
- この場合
警告:sudo
は
実行に際して指示の健全性のチェックを行わない
強力なツールですので
使用する際に 特に注意 してください.