ターミナルでスクリプトの前の行に戻る方法は?


8

スクリプトを作成しようとしていますが、ここで行き詰まっています。コードを見てください!

aug@august:~/play$ for i in {1..100..4}
> do
> echo "august"
> touch august $i+$2
> mkdir dir

前の行に行く方法はありますか?タイプミスがあったということtouch august $i+$2です。Ipressed ENTERキーので、私は新しい行のために行ってきました。どうすれば前の行に戻ることができますか?


スクリプトをファイルに書き込んで、ターミナルから実行する必要があります。前のコマンドにUPキーを使用することもできますが、コマンドを元に戻す方法はありません。
shantanu 2012

回答:


1

bashのコマンドラインエディタはこれをサポートしていません。アンウォーが提案するように実行するか、セミコロンで区切ってすべてを1行に保つか、スクリプトファイルに入れます。

余談zshですが、これに役立つ機能があります。zshラインエディタは(zle)よりフル機能エディターとマルチラインコマンド内での移動をサポートです。コマンドが長くなりすぎて処理できないzle場合は、組み込みの機能がありedit-command-line、お気に入りのエディターでコマンドラインが開きます。通常はバインドされていません。次を試してください:

bindkey "^[e" edit-command-line

Alt-e これでアクティブになり、保存して終了し、コマンドラインに戻ります。


1

を押しEnterてエラーメッセージが表示されたら、履歴に戻ることができます。

キーボードのキーを押すだけでタイプミスを修正できます。押すとキーの端末は、あなたにこの行が表示されます:

for i in {1..100..4}; do echo "august"; touch august $i+$2; mkdir;

タイプミスしたものを修正し、コマンドの最後にtouch august $i+$2a doneを追加し ます。

次に、Enterキーを押します。これで問題が解決するはずです。


1

ここで説明するように、bashには、マニュアルに記載されているように、履歴を操作するためのコマンドがあります。それらの1つですedit-and-execute-command

これにより、一時ファイルに入力済みのコマンドでエディターが開き、以前の行を簡単に修正できます。これはemacsモードでC-xC-eは、viモードvでは通常モードでを押すことで実現できます。

編集および実行コマンド(C-xC-e)

現在のコマンドラインでエディターを起動し、結果をシェルコマンドとして実行します。Bashは、$ VISUAL、$ EDITOR、emacsをこの順序でエディターとして起動しようとします。


ワオ。何年ものLinux、そして私はこれを知っています。
azzamsa

0

これは私のために働いたものです。

CTRL+ C現在からcommand。次にを押します。これで、arrow buttons- またはで移動して、目的の行を編集できます

幸運を...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.