警告

本資料は参考情報として提供されています。内容についてのご質問には必ずしもお答えできない可能性がございます。

1. ターミナル操作の基本#

注釈

ToMMoスパコンで以下の手順を実施する場合には事前に利用開始方法の概要に従ってスパコンへの接続をお済ませください。FastXを使ったGUI環境を使っている場合には左下のメニューからターミナルを開くと進めることができます。

1.1. シェル#

ターミナルを開くと次のような表示になります。

project__personal-id@hostname:~
$
  • project__personal-idにはログインしているユーザー名が表示されます。

  • hostnameにはログイン先のサーバー名(ホスト名)が表示されます。

  • ~にはカレントディレクトリが表示されます。(~ホームディレクトリを表す記号です)

  • 末尾の$マークは「シェル」がコマンドの入力を待機していることを表します。

サーバーにログインすると、ユーザーと対話的にコマンドを入力・実行・出力するためのプログラムが起動します。このようなプログラムをシェルと呼びます。デフォルトではbashが起動します。

ヒント

最もシンプルな設定では、$のみが表示されます。本資料では、シェル上での実行例は$を行頭に表記する形式で統一しています。

1.2. コマンド#

基本的にコマンドは次のように表記されます。

command [option(s)] [argument(s)]

慣例では、commandは全て小文字なことが多いです。

コマンドの後に書かれる項目は引数と呼ばれます。コマンドや引数はスペースで区切ることで区別されます。引数は大きく分けてオプション(option, parameter)とコマンドライン引数(argument)に分けられます。

$ ls -l file.txt

この例では、lsがコマンド、-lfile.txtが引数で、前者がオプション、後者はコマンドライン引数です。

コマンドを入力してEnterキーを押すと、コマンドが実行されます。この時、実行したコマンドが終了するまでシェルは新しい入力を受け付けません。

ヒント

実行中のコマンドを中断するにはCtrl+Cを押します。

ヒント

ssh先のシェル(ログインシェル)を終了するにはlogoutコマンドを、一般にシェルを終了するにはexitコマンドを実行します。どちらの場合もCtrl+Dで代用することができます。

1.2.1. オプション#

引数のうちダッシュ-で始まるものをオプションと呼びます。オプションを与えることで、コマンドの挙動を設定・変更することができます。

-lのようにダッシュが1つのオプションはショートオプションと呼ばれます。通常、ショートオプションはダッシュの後に英数字が1字続きます。

複数のショートオプションは1つのダッシュにまとめることができます。次の2つのコマンドは等価です。

$ ls -l -i -a
$ ls -lia

--listのようにダッシュ2つから始まるオプションはロングオプションと呼ばれます。ロングオプションでは、ダッシュの後に具体的なオプション名が続きます。

$ ls -l --inode --all  # `ls -lia`と同じ

ここで、#コメントを意味します。#から文末までに書かれている内容はコマンドに影響しません。

ダブルダッシュ--はオプション表記の終わりを示します。これにより、ダッシュから始まるコマンドライン引数をオプションと区別することができます。

$ ls -l -- -unusual-file-name  # `-unusual-file-name`という名前のファイルを表示

1.3. 便利なショートカットキー#

1.3.1. Tabキーで補完する#

Tabキーはターミナルでの作業で特に多用されるキーです。Tabキーを押すと、途中まで入力したコマンド名やファイルパスの候補を表示したり、自動で補完することができます。

$ fTab  # fから始まるコマンドの一覧が表示される
fg         fgrep
$ fgTab
$ fgrep  # 候補が1つしかない場合は自動で補完される

コマンドを全て自分で入力する必要はありません。Tabキーが使いこなせるようになると、ターミナルでの作業効率が大きく向上します。

1.3.2. カーソルの移動#

カーソルの移動は矢印キー左右でも行えますが、先頭・末尾への移動やブロック単位の移動ができるようになると、コマンドの修正等がとても楽になります。

Ctrl+F

1文字右へ(Forward)

Ctrl+B

1文字左へ(Back)

Ctrl+A

行の先頭に移動(Ahead)

Ctrl+E

行の末尾に移動(End)

Option+F

1ブロック右へ

Option+B

1ブロック左へ

Ctrl+W

カーソルから直前の空白文字までを削除

Option+BackSpace

カーソルから直前の区切り文字までを削除

1.3.3. コマンド履歴#

矢印キー上下で以前実行したコマンドの履歴を辿ることができます。また、Ctrl+Rの後にコマンドの一部を入力することで、履歴から検索をすることができます。

1.4. ヘルプを参照する#

あるコマンドの使い方を確認したくなる事は多々ありますが、そのような場合に役立つ機能がCLI環境自体に備わっています。

まずはコマンドそのものです。たいていのコマンドはヘルプを表示するオプションを備えており、-h--helpオプションをつけてコマンドを実行することで詳しい使い方を表示させることができます。

$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
...

manコマンドはマニュアルを表示するコマンドです。man コマンド名と入力することで対応するマニュアルを表示します。manページの操作方法は、lessコマンドの説明を参照してください。

$ man ls  # lsコマンドの詳しい使い方を表示

また、manと似たコマンドとしてinfoコマンドがあります。大抵はmanコマンドで事足りますが、infoコマンドでより詳細な情報が得られる場合があります。

1.5. 初歩的なコマンド#

注釈

本資料では使われることの多い機能に絞って紹介します。実際の機能はコマンドのヘルプやmanコマンドを参照してください。

1.5.1. ls#

lsはファイルの一覧を表示するコマンドです。詳細は次の節で説明します。

1.5.2. echo#

echoは与えられた引数をそのまま(標準出力に)出力するコマンドです。

1.5.3. clear#

clearコマンドは画面の表示をリセットします。表示されていた内容は実際には削除されず、カーソルのある行が先頭になるようにターミナルの画面をスクロールさせるコマンドです。

Ctrl+Lclearコマンドと同じ効果が得られます。

1.5.4. history#

historyコマンドは実行したコマンドの履歴を表示します。

1.5.5. whoami#

whoamiコマンドは現在ログインしているユーザーのユーザー名を表示します。

1.5.6. id#

idコマンドはユーザーやユーザーが所属しているグループの名前やID等を表示します。

1.5.7. logout#

logoutコマンドはリモートシェル(ssh先のシェル)を終了します。

1.5.8. exit#

exitコマンドはシェルを終了します。

注釈

bashの場合、logoutコマンドはリモートシェルの場合のみ機能しますが、exitコマンドはシェルがリモートでもローカルでも同様に機能します。また、Ctrl+Dでもシェルを終了できます。

1.6. 特殊な記号とクォート#

シェルではいくつかの記号が特殊な意味を持って扱われます。このようなメタ文字(Metacharacter)は直接入力しても文字列(例えばファイル名)としては扱われません。

ここで全てのメタ文字の役割を把握する必要はありませんが、これらの記号をシェル上で文字列として認識させるにはクォートが必要になるため、ファイル名等では使用しないことが推奨されます。

bashのメタ文字#

記号

意味

スペース、タブ

コマンドや引数の区切り

改行(Enter)、;

コマンドの終端。;は1行で複数のコマンドを書く場合に使う。

*,?

glob

/

パス(→ファイルの操作

#

コメント

\

エスケープ文字、コマンドの改行

''

クォート

""

クォート($,`,\,!を除く)

$

変数コマンド置換など

`

コマンド置換

!

履歴置換

:

何もしないコマンド

%

ジョブの参照

<,>

リダイレクト

[],[[]]

glob,testコマンド

()

サブシェルの実行、配列など

{}

グループコマンドの実行、シェル関数など

|,||

パイプ、コマンドを続けて実行(OR演算子

&,&&

バックグラウンドで実行、コマンドを続けて実行(AND演算子

クォートはシングルもしくはダブルクオーテーション、そしてバックスラッシュを使う方法があります。

'' シングルクォーテーション もしくは "" ダブルクォーテーション

クォートで囲まれた文字列に含まれるメタ文字をそのまま表示する。ただし、ダブルクォーテーションの場合いくつかのメタ文字は意味を失わない。

\ バックスラッシュ

直後のメタ文字をそのまま表示する。\そのものを表示する場合は\\と表記する。

$ echo p < 0.05  # `<`はリダイレクトの意味があるため、`0.05`という名前のファイルを読み込もうとしてしまう。
-bash: 0.05: No such file or directory
$ echo "p < 0.05"  # クォートする
p < 0.05
$ echo p \< 0.05  # バックスラッシュでもクォートできるが、見にくいのであまり使われない。
p < 0.05

ヒント

クォーテーションを表示するには別の種類のクォーテーションで囲んだりバックスラッシュを使用します。

$ echo '' ""  # クォートの中身がない場合は空文字とみなされクォート記号も表示されない

$ echo "'" '"'  # クォートそのものをクォートすると表示される
' "
$ echo "Texts that contain shell's \"meta-characters\" should be quoted."
Texts that contain shell's "meta-characters" should be quoted.

シングルクォーテーションの中ではバックスラッシュを使ってもシングルクォーテーションを書くことができません。その場合は一度クォートを閉じてシングルクォーテーションを入力する必要があります。

$ echo 'It'\''s hard to write "quoted" strings if you'\''re trying to use both quotes.'
It's hard to write "quoted" strings if you're trying to use both quotes.

ヒント

\が行末に置かれた場合はコマンドが継続することを意味し、1つのコマンドを複数行に渡って表記することができます。主にシェルスクリプトで長いコマンドを記述する際に用いられます。