Help us understand the problem. What is going on with this article?

Bashのコンソール上でよく使う操作まとめ[カーソル移動、文字の削除 ]

More than 1 year has passed since last update.

概要

 プログラミングやファイルの操作などでCUIでの操作をメインにするようになると、ターミナルでの操作を1日に数百回、数千回の単位で行うようになります。
 そのときに今まで限られたショートカットしか使っていなかったのですが、ショートカットを使って効率化できると、時間の節約になると思い、まとめていみました。

環境

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.

 ターミナル(bash)上でman bash を入力することでbashの説明を見ることができます。
 今回は、キーバインドをみたかったので、
/key bindingsで検索すると目的の箇所を見ることができます。

カーソル移動、文字の削除

Ctrl+A,E,U,Kだけでもだいぶ楽になります。

man bash での説明
カーソル移動について
image.png

文字の削除、コピーについて
image.png

参考
https://qiita.com/odacoh/items/b94be0deecaaa27b0263
http://yonchu.hatenablog.com/entry/20110214/1297662332

よく使うキー 動作
Ctrl + A カーソルを先頭に移動
Ctrl + E カーソルを末尾に移動
ESC + F カーソルを1単語進める
ESC + B カーソルを1単語戻る
Ctrl + U カーソル位置から行頭までを削除
Ctrl + K カーソル位置から行末までを削除 
Ctrl + W カーソル位置から単語の先頭までを削除
ESC + D カーソルから単語の末尾まで削除

ESCを使う操作での注意

ESC + F,Bの操作で戸惑ったのは、連続で複数の単語間を移動したい場合に、

例えばこの例で、行末からcpまで移動したい場合

$ mv fileA dirB & cp fileC dirB

ESC を押しっぱなしにして、Bを2回連続でいくと、2回目のbは普通の入力とと判定されてしまうので、

mv fileA dirB & cp fileC bdirB

というように、1単語分戻ったあと、bが入力されてしまうことになります。 
 
 そのため、2単語分戻りたい場合は、Esc+b Esc+bともう一度Escキーから指を話してキーを押しなおす必要があります。

雑感:一文字の移動、操作について

また、僕は一文字進めるぐらいなら矢印キーを使ってもかわらない気もするので、Ctrl+B,Ctrl+Fなどは使っていませんが、常にホームポジションから動かずに全ての操作をしたいという人には一文字移動や、一文字削除のキーバインドも覚えるといいと思います。

Metaキーの変更

上にスクショしたbashのマニュアルをみて貰えばわかりますが、ESCキーを押しましょうと僕が書いているところは、マニュアルではM-と表記してあります。

これは、Metaキーの略です。

 Metaキーが標準ではESCに割り当てられているみたい(Altキーにも割り当て?)なので、説明ではESC+と書いていたのですが、ESCキーはキーボードの一番左上にあるので、押しにくいですよね。

 しかもESCを使う操作での注意 で書いたように連続しての入力の際に、いちいちキーを押しなおす必要があるという欠点があります。

 これらの問題は、Metaキーをoptionにも割り当てることで解決されます。

参考:http://playet.jugem.jp/?eid=167

ターミナル -> 環境設定 -> プロファイル -> キーボード で

メタキーとしてOptionキーを使用にチェックを入れるとOptionキーがMetaキーとして使えるようになります。

image.png

Adaachill
Atcoderとかスパコン、バイオインフォなどでの調べたこと、メモなど
https://twitter.com/protozoanprogr1
qiitadon
Qiitadon(β)から生まれた Qiita ユーザー・コミュニティです。
https://qiitadon.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away