3. シェル / bash

シェルコマンドの使い方は,一朝一夕では身につかない. 常に利用し続ける姿勢を持ちながら,少しずつ習得していくとよい.

ここでは,備忘録程度の内容をまとめている. 詳細な使い方は教科書などを読んだり,man コマンドを利用したり,ウェブ検索をして調べること.

なお,コマンド例に書かれている $ はプロンプトである.自身で入力する必要はない.

3.1. シェルの使い方(基本)

3.1.1. ショートカットキー

ショートカットキーを覚えると格段に操作効率があがる. 表 2 ぐらいは覚えておくと良い. なお,これらのショートカットキーはEmacsの操作と共通な場合もある.

表 2 シェルの画面でよく使うショートカットキー

キー

効果

または

過去のコマンド実行履歴を呼び出す.

[Tab]

途中まで入力されたコマンドやファイル名を補完する.

C-a

カーソルを行頭に移動する.

C-e

カーソルを行末に移動する.

C-u

カーソル位置から行頭までを消す.

C-k

カーソル位置から行末までを消す.

C-l

端末画面の文字を全て消す.

3.1.2. コマンドヘルプ・マニュアル

Linuxのコマンドで使い方がわからないときには,まず,コマンドヘルプやマニュアルを読んでみよう. 例えば,grep コマンドの使い方を知りたいならば,以下のどちらかを試してみるとよい.

$ grep --help
$ man grep

なお,ほとんどのLinuxで使えるコマンドは,--help オプションで簡易ヘルプが見られるように作られている.

man コマンドは,

  • space で1ページ進む.b で1ページ戻る

  • q で終了

である.(後述の less コマンドと同じ.)

3.2. ls -- ファイル一覧

指定したファイルの情報,または,指定したディレクトリの情報を表示する.

例)カレントディレクトリのファイル一覧を表示する(簡易)

$ ls

例)拡張子が .c のファイルの一覧を表示する(簡易)

$ ls *.c

例)カレントディレクトリのファイル一覧を表示する(詳細)

$ ls -al

例)カレントディレクトリにある final_report ディレクトリに入っている,ファイル一覧を表示する(詳細)

$ ls -al final_report

3.3. less -- ページャー

ファイルの中身を簡単に確認することができる. 似たようなコマンドとして lvmore がある.

例)カレントディレクトリの sample.csv を開く

$ less sample.csv

3.3.1. less の基本的な使い方

  • space で1ページ進む.b で1ページ戻る

  • q で終了

3.3.2. less で検索

  • / で検索することができる./ の後に,検索したい文字列を入力して,エンターを押す.

  • 次の検索単語へは n で移動できる.

  • Shift + n (つまりは,大文字の N)で,前の検索単語に移動できる.

3.3.3. less の起動オプション(抜粋)

  • -N をつけると,行番号を表示できる.

  • -M をつけると,画面最下部に詳細な情報を表示させることができる.

3.4. head -- 先頭の10行を表示するコマンド

ファイルの先頭だけ確認したいときは head コマンドを使うとよい. なお,オプションとして -n5 などとすると,先頭5行が表示される.

類似のコマンドとして tail がある.(headは頭から,ならば,tailは・・・?)

3.5. egrep -- 文字列を検索して表示するコマンド

指定したファイルから文字列を検索するコマンドである. 教科書にならい,grep ではなく egrep の使い方を説明する.

例)カレントディレクトリの sample.csv から,Primary School という文字を 含む 行だけを表示する

$ egrep "Primary School" sample.csv

例)カレントディレクトリの sample.csv から,Primary School という文字を 含まない 行だけを表示する

$ egrep -v "Primary School" sample.csv

3.6. alias -- 別名をつけるコマンド

例えば,gcc を実行する際,いつも -Wall をつけているのであれば,

alias gcc='gcc -Wall'

を実行すると,今後 gcc hogehoge.c などと書いた際には, gcc -Wall hogehoge.c と同じように扱われる. 例えば,

alias xspim='xspim -mapped_io'

も便利かもしれない.常用するのであれば,後述のbashrcへの記載を考えるとよい.

なお,このaliasの設定をする際に & を含めることは推奨しない. ジョブをバックグラウンドで実行することは利用者が明示的に知っているべきであろう.

3.7. パイプ

各種コマンドはパイプで接続することで強力なツールとなる.

例) sample.csv から Primary School を含む行のうち,先頭から10行を表示する.

$ egrep 'Primary School' < sample.csv | head

例) sample.csv の先頭100行を対象として,その中で Primary School を含まない行を表示する.

$ head -n 100 sample.csv | egrep -v 'Primary School'

3.8. シェルに関する設定

3.8.1. 設定ファイル

ユーザの設定ファイルは以下に格納されている.~ はホームディレクトリである.

  • ~/.bashrc

最初から書かれている内容を消さないように注意すること. 自身で書き加える場合は,同ファイルの下方に書いていくとよい.

※各種情報源において,~/.bash_profile~/.profile に書け,という指示があった場合でも,演習室の環境では .bashrc に書けばよい.

3.8.2. ~/.bashrc の設定例

以下のような内容を ~/.bashrc に書いておくと便利である. 元々書かれている内容を消さないこと.あくまで末尾に追加するだけである.

なお,# 以降はコメントである.

11# User specific aliases and functions
12## Prompt with commands that may lose your files
13alias cp='cp -i'
14alias mv='mv -i'
15alias rm='rm -i'
16## Less command with line number
17alias less='less -MN'

3.9. FAQ

►Q. 設定ファイルが壊れてしまった.初期状態に戻したい.

A. テンプレートファイルからコピーすればよい.コマンドは以下の通り.

$ cp -i /etc/skel/.bashrc ~/.bashrc
$ cp -i /etc/skel/.bash_profile ~/.bash_profile

※コマンド例の先頭に書かれている $ はプロンプトである.自身で入力する必要はない.

►Q. 端末画面でコマンドを受け付けなくなってしまった.

A. 誤って Ctrl + s を押していないか?もしそうであれば, Ctrl + q で復帰できる. (Ctrl + s は端末画面の更新を一時停止させるコマンドである.)

►Q. (GUI) 画面上でマウスカーソルは動かせるが,左クリックも右クリックも反応しない.

A. デスクトップ画面の再起動を試してみてほしい.手順は以下の通り.

  1. キーボードの Alt + Fn + 2 を同時に押す.

  2. 出てきたテキストボックスに r と1文字入力し,エンターキーを押す.

  3. デスクトップ画面が再起動する.クリックが可能になったかどうか,確認する.