学科の1年生に贈る、Ubuntu・bashの便利技

学生の「コマンド実行の裏技を教えてほしい」をもとに、便利なキー操作やコマンド実行法を思いつくまま挙げてみました。
1
takehikom @takehikom

本日の学科1年生向け授業(学生70名、教員数名、TA数名)で、Ubuntuのシェルを使ってもらったんだけど、ある学生がある先生に、コマンド実行の裏技を教えてほしいと言ったらしい

2015-10-09 23:45:24
takehikom @takehikom

王道は、いろいろ実行して学び、書籍やWebで、整理されたもの(例えばice2o.com/bash_quick_ref…)を読んで学ぶこと

2015-10-09 23:45:37
takehikom @takehikom

自分自身は普段はCygwin使い。シェルはzsh。授業とは別にUbuntuをよく利用していて、Cygwinシェルからsshでログインしたらすぐscreenでアタッチする

2015-10-09 23:46:18
takehikom @takehikom

Cygwinシェルもzshも封印して、Ubuntu標準の「端末」とbashで、学生が動作確認できるよう、使い方を書いていこう

2015-10-09 23:46:34
takehikom @takehikom

まず知っておきたいのは、コマンド入力中にカーソルの左右移動が可能なこと

2015-10-09 23:46:57
takehikom @takehikom

例えばavcdeと打ち込んで、vじゃなかったbだと気づいたら、左矢印を3回押して、カーソルをcのところまで移動させ、BackSpace、bの順に押せば、abcdeになる

2015-10-09 23:47:16
takehikom @takehikom

打ち間違いに気づいてBackSpaceを長押し(または連打)する必要なし

2015-10-09 23:47:42
takehikom @takehikom

なお、シェルのコマンド入力ではマウスは使えない。ホイールしたら、画面外に行ってしまった出力などをさかのぼって見ることができるけれど。キー操作に戻って…

2015-10-09 23:48:03
takehikom @takehikom

1文字削除は、BackSpaceとDeleteを使い分ける。カーソルの1つ手前を削除するのがBackSpaceで、カーソルの文字を削除するのがDelete

2015-10-09 23:48:14
takehikom @takehikom

先ほどの例を使うと、avcdeと打ち込んでから、左矢印を4回押して、カーソルをvのところまで移動させ、Delete(またはCtrl+D)でvが消え、bを押したら、abcdeになる

2015-10-09 23:48:46
takehikom @takehikom

DeleteとCtrl+Dは、コマンド編集時には同じ効果。ただし要注意な話があって、何もコマンドを打ち込んでいないところでCtrl+Dを押すと、シェルが終了し、端末が消えてしまう(Deleteではそうならない)

2015-10-09 23:48:55
takehikom @takehikom

コマンドの途中の文字を編集したあと、カーソルを末尾に移動させるには、Endキー、またはCtrl+E

2015-10-09 23:49:06
takehikom @takehikom

カーソルを先頭に持っていくには、Homeキー、またはCtrl+A

2015-10-09 23:49:14
takehikom @takehikom

左右の次は、上下の使い方だよな…コマンド実行後、上矢印を押せば、直前に実行したコマンドが表示される。Enterで実行

2015-10-09 23:49:35
takehikom @takehikom

上矢印は何回でもできる(それだけコマンド実行の蓄積があれば)。戻るには、下矢印

2015-10-09 23:49:47
takehikom @takehikom

キー操作はいったんこのくらいにして、コマンド実行時に便利なものを

2015-10-09 23:50:00
takehikom @takehikom

まずhistoryコマンドを実行すると、直近に実行したコマンド(履歴)を表示してくれる

2015-10-09 23:50:09
takehikom @takehikom

出力の各行には番号が振ってある。!に続けて番号を打ち込み、Enterを押すと、その番号のコマンドを実行する

2015-10-09 23:50:25
takehikom @takehikom

!!というコマンドは、直前に実行したコマンドを再び実行する。だけど、上矢印そのあとEnterのほうが、キー入力の数は少ない

2015-10-09 23:50:36
takehikom @takehikom

1回の実行に「!番号」や「!!」は複数回書ける

2015-10-09 23:50:54
takehikom @takehikom

例えば、!!;何かコマンド;!! を1つのコマンドとして実行すると、直前に実行したコマンド・何かコマンド・直前に実行したコマンドの順に実行し、何かコマンドを実行する前後で違いを知ることができる

2015-10-09 23:51:08
takehikom @takehikom

直前のコマンドがdateだったら、何かコマンドの実行時間を知ることができる(だけどそれだったら「time 何かコマンド」を実行するほうがいい)

2015-10-09 23:51:26
takehikom @takehikom

次はワイルドカードls a*というコマンドで、aから始まるファイル(ディレクトリを含む。以下同じ)の情報だけが表示される

2015-10-09 23:51:36
takehikom @takehikom

あまり使わないけどls *aだったら、aで終わるファイルだけ

2015-10-09 23:51:43
takehikom @takehikom

便利なのはls *a*で、ファイル名のどこか(先頭や末尾でもいい)にaがあるものになる

2015-10-09 23:51:53