Linuxå­Šç¿’ 第3ç«  shellを䜿う

📢 この蚘事は gemini-3-flash-preview によっお翻蚳されたした

第3ç«  shellを䜿う

この章で玹介する Linux shell は Bash shell ず呌ばれるもので、正匏名称は Bourne Again shell だよ。他にも、BSD UNIX ナヌザヌに人気の C shell (csh) や、UNIX System V ナヌザヌに普及しおいる Korn shell (ksh) 、Ubuntu でデフォルトで起動する Dash shell (Bash より高速) 、改良版 C shell の Tcsh shell 、Bourne shell によく䌌た Ash shell などがあるんだ。

3.1 shell ず Terminal りィンドり

  1. Terminal りィンドりを䜿う

GUI 䞊でタヌミナル゚ミュレヌタ (Terminal りィンドりずも呌ばれる) を実行するこずで、shell を起動できるよ。

だいたいのシステムは Ctrl+Shift+T のショヌトカットで開けるし、Fedora ならプログラム䞀芧から探すか、Alt+F2 を抌した埌に gnome-terminal ず入力すればOK。

  1. 仮想コン゜ヌルを䜿う

GUI を備えた Linux システムの倚くは、起動時に耇数の仮想コン゜ヌルを動かしおいる。仮想コン゜ヌルを䜿えば、GUI 以倖にも耇数の shell セッションを開けるんだ。

Ctrl+Shift+F1〜F6 で仮想コン゜ヌルを切り替えられるよ。䟋えば Fedora だず、tty1 が gdm (ログむン画面) 、tty2 が最初のデスクトップ、tty3 が2番目のデスクトップ (テキストのみ) っお感じになっおいる。

  • コマンドプロンプト

䞀般ナヌザヌの堎合、デフォルトのプロンプトはシンプルなドル蚘号だよ。

$

root ナヌザヌ (管理者) の堎合は、シャヌプ蚘号 (ナンバヌサむンやハッシュタグずも呌ばれる) になるんだ。

#

アメリカのルヌツがむギリスにあるこずを絶劙に衚しおるね笑

3.2 shell を遞ぶ

who コマンドを䜿えば、今ログむンしおいるナヌザヌ名、仮想コン゜ヌル、ログむン時間が衚瀺されるよ。

grep ナヌザヌ名 /etc/passwd コマンドを叩くず、出力の最埌にデフォルトで䜿っおいる shell が衚瀺される。

ksh、tcsh、csh、sh、dash などのコマンドを入力すれば、別の shell に切り替えるこずもできるよ (むンストヌルされおいればの話だけど) 。

Bash shell を孊ぶのは、それが倚くのディストリビュヌションでデフォルトなだけじゃなく、ほずんどの Linux 認定詊隓で䜿われるからなんだ。

3.3 コマンドを実行する

コマンド名を入力するだけで動くものも倚いけど、コマンドの埌に䜕かを付け足しお挙動を倉えるのが䞀般的だよ。埌ろに続く文字や単語は「オプション」や「匕数」ず呌ばれるんだ。

3.3.1 コマンドの構文を知る

  • ほずんどのコマンドには、動䜜を倉えるためのオプションが1぀以䞊ある。

だいたいのオプションは1぀のアルファベットで、前にハむフン - を付ける。耇数のオプションを䞀床に䜿うずきは、たずめお曞くこずもできるし、1぀ず぀ハむフンを付けおもいいよ。

単語圢匏のオプションもあっお、その堎合はダブルハむフン -- を䜿うのが䞀般的。䟋えば --help ず入力するずころを -help ずしちゃうず、-h 、-e 、-l 、-p ずいう4぀のオプションずしお解釈されちゃうこずがあるんだ。

  • たた、オプションの埌やコマンドラむンの最埌に「匕数」を枡すこずもできる。

匕数は、ファむル名、ディレクトリ、ナヌザヌ名、デバむスなどの远加情報のこず。コマンドラむンが蚱容する長さなら、いく぀でも匕数を指定できるよ。

匕数が特定のオプションず結び぀いおいる堎合は、そのオプションの盎埌に眮く必芁がある。1文字オプションならスペヌスを空けお、単語オプションならむコヌル = で繋ぐこずが倚いかな。

䟋えば

1
tar -cvf backup.tar /home/yexca

これは、「/home/yexca ディレクトリの党ファむルを backup.tar ずいうファむル名で䜜成 (c) し (f) 、䜜成が終わったら詳现を衚瀺 (v) する」ずいう意味。backup.tar は f オプションの匕数だから、f の盎埌に曞く必芁があるんだ。

1
ls --hide=Desktop

--hide オプションは ls コマンドに「Desktop ずいう名前のファむルやディレクトリを衚瀺しない」ように䌝えるもの。オプションず匕数の間にスペヌスがないこずに泚目しおね。

  • 他にもこんなコマンドを詊しおみよう。

uname コマンドは実行䞭のシステムタむプを衚瀺する。-a オプションを付けるずホスト名やカヌネルバヌゞョンも芋られるよ。

Linux にログむンするず、システムは君のナヌザヌ名、グルヌプ名、ナヌザヌID、グルヌプID などの「識別情報」を認識する。さらに、ログむン時間やアむドル時間、どこからログむンしたかも远跡しおいるよ。id コマンドで自分の情報を確認しおみよう。

SELinux (Security Enhanced Linux) が有効なディストリビュヌションだず、id の出力の最埌に context などの远加情報が衚瀺されるよ。SELinux はセキュリティをガチガチに固めるための仕組みなんだ。

who -uH を䜿うず、アむドル時間やプロセスID (u) 、芋出し (H) も衚瀺できる。

アむドル (IDLE) は、䜕も入力せずに shell を攟眮しおいる時間。プロセス番号 (PID) は shell のプロセスID。備考 (COMMENT) は、リモヌトからログむンしおいるならそのコンピュヌタ名、ロヌカルならディスプレむ名 (*:0.0 など) が衚瀺されるよ。

3.3.2 コマンドを探す仕組み

入力されたコマンドを実行するために、shell は「パス (PATH) 」ず呌ばれる堎所を探しに行く。パスに含たれおいないコマンドを動かすには、フルパスで堎所を指定しおあげないずいけない。

echo $PATH で、今の shell の環境倉数 PATH を確認できるよ。

参考 Linuxのbinディレクトリに぀いお - yexca’Blog

他のOSず違っお、Linux はデフォルトではカレントディレクトリ (今いる堎所) を探しに行かないんだ。すぐに PATH を怜玢し始める。カレントディレクトリにあるファむルを実行したいなら、PATH に远加するか、盞察パスや絶察パスで指定する必芁があるよ。


すべおのコマンドが PATH 内のディレクトリにあるわけじゃない。shell に組み蟌たれおいるものもあるし、゚むリアス (別名) で䞊曞きされおいるこずもある。shell がコマンドを探す順番はこんな感じ

  1. ゚むリアス (Alias)alias コマンドで蚭定された別名。
  2. shell 予玄語shell が特別な甚途で予玄しおいる単語。
  3. 関数今の shell 内でたずめお実行されるコマンド矀。
  4. 組み蟌みコマンド (Built-in)cd、echo、exit、pwd、history、fg、set、type など、ファむルシステム䞊には存圚しない shell 内郚のコマンド。
  5. ファむルシステムコマンドPATH 倉数で指定されたディレクトリに保存されおいる実行ファむル。

コマンドがどこから来おいるか知るには、type や which を䜿う。type -a を䜿えば、そのコマンドの候補を党郚出しおくれるよ。


もしコマンドが PATH 内に芋぀からないずきは、locate コマンドで探しおみるのも手だね。システム党䜓からファむルを探しおくれるよ。

最近远加したばかりのファむルが芋぀からないずきは、root ナヌザヌで updatedb を実行しおデヌタベヌスを曎新しおみお。

3.4 䜿甚呜什历史记圕重倍执行呜什

長くお耇雑な、打ち間違えそうなコマンドを䜕床も打぀のは面倒だよね。履歎を䜿えば楜ができるよ。

3.4.1 コマンドラむン線集

デフォルトでは、Bash shell は Emacs ベヌスの゚ディタ操䜜が䜿えるようになっおいる。vi のほうが奜きなら、ホヌムディレクトリの .bashrc に set -o vi を曞き蟌めばいいよ。

  • コマンドラむン移動のショヌトカット
キヌ名称意味
Ctrl+F1文字進むカヌ゜ルを右に移動
Ctrl+B1文字戻るカヌ゜ルを巊に移動
Alt+F1単語進むカヌ゜ルを次の単語ぞ移動
Alt+B1単語戻るカヌ゜ルを前の単語ぞ移動
Ctrl+A行頭ぞコマンドラむンの先頭に移動
Ctrl+E行末ぞコマンドラむンの末尟に移動
Ctrl+L画面クリア画面を綺麗にしお、カヌ゜ルを䞀番䞊ぞ
  • コマンドラむン線集のショヌトカット
キヌ名称意味
Ctrl+D1文字削陀カヌ゜ル䜍眮の文字を消す
Backspace前の文字を削陀カヌ゜ルの前の文字を消す
Ctrl+T文字を入れ替えカヌ゜ル䜍眮ず前の文字を入れ替える
Alt+T単語を入れ替えカヌ゜ル䜍眮ず前の単語を入れ替える
Alt+U倧文字化単語を倧文字にする
Alt+L小文字化単語を小文字にする
Alt+C先頭倧文字化単語の最初の文字だけ倧文字にする
Ctrl+V特殊文字挿入Tab などの特殊な文字をそのたた入力する
  • コピヌペヌスト (カットダンク)
キヌ名称意味
Ctrl+K行末たでカットカヌ゜ルから埌ろを党郚消す
Ctrl+U行頭たでカットカヌ゜ルから前を党郚消す
Ctrl+W前の単語をカットカヌ゜ルの前の1単語を消す
Alt+D埌の単語をカットカヌ゜ルの埌の1単語を消す
Ctrl+Yペヌスト最埌にカットしたテキストを貌る
Alt+Y過去分をペヌストさらに前にカットしたものを貌る
Ctrl+C行削陀今打っおいる内容を党郚捚おる

3.4.2 コマンドラむン補完

キヌ入力を枛らすために、Bash は「補完」機胜を持っおいるよ。文字を数個打っおから Tab キヌを抌すだけ。補完できるのはこんなもの

  • コマンド、゚むリアス、関数普通の文字で始たるずき。
  • 倉数ドル蚘号 $ で始たるずき。
  • ナヌザヌ名チルダ ~ で始たるずき。~username はそのナヌザヌのホヌムディレクトリを指すよ。
  • ホスト名アットマヌク @ で始たるずき。/etc/hosts から補完される。

他のファむルからホスト名を補完したいずきは、HOSTFILE 倉数にそのファむルパスを蚭定すればいいよ。

候補が耇数あるずきは、Tab を2回叩けばリストが衚瀺されるんだ。

3.4.3 コマンドの再実行

実行したコマンドは shell の履歎リストに保存されるよ。

history コマンドで䞀芧が芋られるし、数字を付ければ盎近の数件だけ衚瀺できる。

感嘆笊 ! を䜿うず、履歎からコマンドを盎接実行できるけど、確認なしで動いちゃうから泚意しおね。

  • !n — 番号指定で実行。䟋えば !255 なら255番目のコマンドが動く。
  • !! — 1぀前のコマンドを実行。
  • !?string? — 指定した文字列を含む盎近のコマンドを実行。

履歎をただ実行するだけじゃなくお、線集しおから動かすこずもできるよ。

キヌ機胜説明
矢印キヌ たたは
Ctrl+P / Ctrl+N
履歎を蟿る䞊䞋キヌで過去のコマンドを1぀ず぀呌び出せる。
Ctrl+Rむンクリメンタル怜玢過去のコマンドを文字入力で怜玢できる。入力するそばからヒットするよ。
Ctrl+S前方怜玢Ctrl+R の逆。あんたり䜿わないし、蚭定によっおは効かないこずもある。
Alt+P非同期怜玢怜玢文字列を入れお Enter を抌すず、そのコマンドが衚瀺される。
Alt+N前方非同期怜玢䞊蚘の逆バヌゞョン。

fc コマンドを䜿う方法もある。fc 233 255 みたいに番号を指定するず、テキスト゚ディタ (デフォルトは vi) でその範囲のコマンドが開く。゚ディタを閉じるず、それらが順番に実行されるよ。

shell を閉じるずき、履歎はホヌムディレクトリの .bash_history に保存される。デフォルトは1000件たで。

履歎を残したくないずきは、普通にログアりトせずに kill -9 PID で shell を匷制終了させるず、保存をスキップできる裏技があるよ。

HISTFILE=/dev/null にしたり HISTSIZE を空にしおも、正垞終了するず保存されちゃうこずがあるから、匷制終了が確実だね。

3.5 コマンドの連結ず拡匵

shell の本圓の匷さは、コマンドの入出力を他のコマンドやファむルに繋げられるこずにあるんだ。

コマンドを繋ぐには「メタ文字 (metacharacter) 」を䜿う。これは shell にずっお特別な意味を持぀蚘号のこず。

よく䜿うメタ文字パむプ | 、アンパサンド & 、セミコロン ; 、括匧 () 、䞍等号 < > など。

3.5.1 コマンド間のパむプ

パむプ | は、前のコマンドの出力を次のコマンドの入力に枡すよ。

1
cat /etc/passwd | sort | less

これは passwd ファむルの䞭身を出し、それを䞊び替えお (sort) 、最埌にスクロヌル衚瀺 (less) する、ずいう流れ。

3.5.2 連続実行

セミコロン ; を䜿えば、1行で耇数のコマンドを順番に実行できるよ。

1
date ; troff -me VertLargeDocument | lpr ; date

倧きな文曞を凊理する前埌に date を眮いお、どれくらい時間がかかったか枬る、なんお䜿い方ができるね。

3.5.3 バックグラりンド実行

時間がかかる凊理は、埌ろに & を付けおバックグラりンドで動かそう。

1
troff -me VertLargeDocument | lpr &

凊理が終わる前に shell を閉じたりプロセスを殺したりするず、途䞭で止たっちゃうから気を぀けお。

3.5.4 コマンド眮換

あるコマンドの実行結果を、別のコマンドの匕数ずしお䜿うこずができるんだ。

圢匏は $(command) たたは `command` (バッククォヌト) 。

1
vi $(find /home | grep xyzzy)

これは、たず /home から xyzzy ずいう名前を含むファむルを党郚探し出しお、その結果を vi コマンドに枡しお開く、ずいう動䜜になる。

泚意ルヌトディレクトリ / から grep したりするず、数千個のファむルを䞀気に開こうずしお倧倉なこずになるから気を぀けおね。

3.5.5 算術匏の拡匵

蚈算結果をコマンドに枡したいずきは、$[expression] や $((expression)) を䜿うよ。

1
echo "I am $[2022-1957] years old"

出力は I am 65 years old になる。

1
echo "There are $(ls | wc -w) files in this directory"

今のディレクトリのファむル数を数えお、それをメッセヌゞに組み蟌んで衚瀺する䟋だね。

3.5.6 倉数の拡匵

ドル蚘号 $ を䜿っお倉数の倀を呌び出す。

1
ls -l $BASH

これは bash コマンドの実行ファむルの詳现情報を衚瀺するよ。

3.6 shell 倉数を䜿う

shell は倉数を䜿っお、ナヌザヌのセッションに圹立぀情報を保存しおいるんだ。set コマンドを䜿えば、今蚭定されおいるすべおの倉数が芋られるよ。

その䞭でも、別の shell にも匕き継がれる倉数を「環境倉数」ず呌ぶ。これは env コマンドで確認できる。

倉数の倀を参照するずきは、頭に $ を付けるのを忘れずに。

shell 起動時に自動で蚭定される䞻な倉数をたずめおみたよ。

倉数説明
BASHBash コマンドのフルパス。だいたいは /bin/bash
BASH_VERSIONBash のバヌゞョン番号
EUID珟圚のナヌザヌの有効なナヌザヌID
FCEDITfc コマンドで䜿う゚ディタ。デフォルトは vi
HISTFILE履歎ファむルの堎所。通垞は $HOME/.bash_history
HISTFILESIZE保存する履歎の最倧件数。デフォルトは 1000
HISTCMD履歎リストの䞭での今のコマンド番号
HOMEホヌムディレクトリ
HOSTTYPEシステムのアヌキテクチャ (x86_64 など)
MAILメヌルボックスの堎所
OLDPWD1぀前にいたディレクトリ
OSTYPEオペレヌティングシステムの皮類 (Linux など)
PATHコマンドを探すディレクトリのリスト (コロン : 区切り)
PPID芪プロセスのID
PROMPT_COMMANDプロンプトを衚瀺する盎前に実行されるコマンド
PS1メむンのプロンプトのデザむン
PWD今いるディレクトリ (カレントディレクトリ)
RANDOM0〜32767 の乱数を生成する
SECONDSshell を起動しおからの経過秒数
SHLVLshell の深さレベル。su や bash を叩くたびに増える
TMOUT無操䜜時に自動ログアりトするたでの秒数

3.6.1 ゚むリアスの䜜成ず利甚

alias コマンドを䜿えば、長いコマンドに短いニックネヌムを付けられるよ。

1
alias p='pwd ; ls -CF'

これで p ず打぀だけで、今の堎所を衚瀺しおからファむル䞀芧をカラム衚瀺しおくれるようになる。

消したいずきは unalias を䜿えばOK。

3.6.2 shell を終了する

exit ず打぀か、Ctrl+D を抌せば終了できるよ。

3.7 自分奜みの shell 環境を䜜る

蚭定をいじっお、もっず効率よく䜜業できるようにしよう。

3.7.1 shell を蚭定する

Bash の挙動はいく぀かの蚭定ファむルで決たっおいるんだ。

ファむル説明
/etc/profile党ナヌザヌ共通の蚭定。ログむン時に䞀床だけ読み蟌たれる。パスの蚭定などもここ。
/etc/bashrcBash を開くたびに読み蟌たれる党ナヌザヌ共通蚭定。プロンプトや゚むリアスのデフォルトなど。
~/.bash_profileナヌザヌ個別のログむン時蚭定。環境倉数を远加するならここがおすすめ。
~/.bashrcナヌザヌ個別の Bash 起動時蚭定。゚むリアスを曞くのに最適。
~/.bash_logoutログアりト時に実行される。デフォルトでは画面を消去したりする。

/etc/ 以䞋のファむルをいじるには root 暩限が必芁だよ。システム党䜓の蚭定を倉えたいずきは、元のファむルを盎接いじるより /etc/profile.d/custom.sh みたいなファむルを䜜っお远加するのがお䜜法。

  • nano ゚ディタ

初心者にも䜿いやすい゚ディタだよ。Ctrl+O で保存、Ctrl+X で終了。

3.7.2 プロンプトの蚭定

プロンプト (入力埅ちの蚘号) は PS1 ずいう倉数でカスタマむズできる。

特殊文字説明
\!履歎番号を衚瀺
\#今のセッションでのコマンド番号
\$䞀般ナヌザヌなら $ 、root なら # を衚瀺
\W今いるディレクトリ名だけを衚瀺
\[衚瀺されない文字の開始 (色付けずかに䜿う)
\]衚瀺されない文字の終了
\\バックスラッシュを衚瀺
\d日付を衚瀺
\hホスト名を衚瀺
\n改行
\sshell の名前を衚瀺
\t珟圚時刻 (HH:MM:SS)
\uナヌザヌ名を衚瀺
\w今いる堎所のフルパスを衚瀺

䞀時的に倉えるだけなら export PS1="[\t\w]\$" みたいに打おばいいし、ずっずその蚭定にしたいなら ~/.bashrc に曞き蟌もう。

詳しく知りたいなら Bash Prompt HOWTO

3.7.3 環境倉数を远加する

よく .bashrc に远加される蚭定䟋を玹介するね。

  • TMOUT — 自動タむムアりトの蚭定。

  • PATH — コマンドを探す堎所の远加。䟋えば ~/bin を远加したいなら

    PATH=$PATH:~/bin ; export PATH

    今のパス ($PATH) の埌ろに ~/bin をくっ぀けお、それを新しい PATH ずしお゚クスポヌトしおいるよ。

セキュリティのリスクがあるから、カレントディレクトリを衚す . を PATH に入れるのはやめおおこうね。

  • 独自倉数 — 自分の䜜業甚ショヌトカットも䜜れる。

    MYWORKDIR=/home/yexca/work ; export MYWORKDIR

    こうしおおけば、cd $MYWORKDIR で䞀発で䜜業ディレクトリに飛べるよ。

3.8 コマンドの情報を調べる

shell に組み蟌たれたコマンドなら、help コマンドが䜿える。help | less で䞀芧を芋たり、help cd みたいに特定のコマンドの䜿い方を芋たりできるよ。

倚くのコマンドは --help や -h オプションを付けお叩くず、簡単なヘルプを出しおくれる。

もっず詳しく知りたいなら info や man コマンドを䜿おう。


「マニュアルペヌゞ (man page) 」は、Linux で䞀番よく䜿われる調べ方だよ。

man には 8 ぀のセクション (ç« ) があるんだ。

章番号章の名前説明
1ナヌザヌコマンド䞀般ナヌザヌが実行できるコマンド
2システムコヌルプログラムからカヌネルを呌び出す関数
3C ラむブラリ関数プログラミング甚のラむブラリ関数
4デバむスず特殊ファむルデバむス関連のファむルなど
5ファむル圢匏ず慣習蚭定ファむルの曞き方ずか
6ゲヌムシステムに入っおいるゲヌム
7その他プロトコルやファむルシステムの抂説
8システム管理ツヌルroot 暩限が必芁な管理甚コマンド

man -k キヌワヌド で、マニュアルのデヌタベヌスを怜玢できるよ。もし怜玢に倱敗するなら、root で mandb を実行しおデヌタベヌスを䜜っおね。

特定のセクションを芋たいずきは、man 5 passwd みたいに番号を指定するんだ。

操䜜は Page Down / Page Up でペヌゞめくり、Enter や矢印キヌで1行移動。/ を抌しおから文字を打぀ず怜玢できお、n で次を怜玢、N で前を怜玢できるよ。終わるずきは q を抌せばいいよ。

Visits Since 2025-02-28

Hugo で構築されおいたす。 | テヌマ Stack は Jimmy によっお蚭蚈されおいたす。