回答:
あなたは古典的な歴史の拡張、またはReadline処理について話していますか?cd !$
次の入力行では、前の行の最後の引数を置換するかM-.、M-_Readlineを使用してヤンクします。
cd !$
。「古典的な歴史の拡張またはReadline処理」私はあなたが何を意味するのか正確に理解していません
!$
は履歴拡張です。シェルは、コマンドを解析するときにそれを処理します。M-。readlineキーストロークです。readlineは、押した各キーを処理するライブラリであり、M-を押したことがわかります。最後のコマンドの最後の引数を自動的に入力します
コマンド履歴へのアクセスに関する質問の場合は、このわかりやすいコマンドを試してください
history
また、Ctrl+を試してr、最近入力したことを思い出そうとしているコマンドの入力を開始することもできます。
(reverse-i-search)`cd ': cd mydir/data/
ヒットESCしてコマンドを選択するか、終了します。これは少なくともSuSEで機能します。他のディストリビューションについてはわかりません。
history | grep ...
!
vi
コマンドラインの管理に使用する方法について読んだだけです。超かっこいい。 viを使用してシェルコマンドを編集する
Alt+と同じくらい簡単です.
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
<kbd></kbd>
タグを使用してキーを囲みます。
<kbd>
もしbashを使用している場合、私は示唆pushd
してpopd
。ディレクトリのスタックを作成して、すばやく参照できます。この例を参照してください。
PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$
$
デモンストレーションを行うpushd
ときなどにPWDを表示するのが便利であることを理解しています)
関連するメモでは、bashでhistverifyを使用することをお勧めします。これを〜/ .bashrcに入れてください:
shopt -s histverify
これにより、bashは!$またはその他の履歴関数を展開した後にコマンドを出力し、実際に実行するためにもう一度Enterキーを押す前にそれを見る機会を与えます。私にとって、健全性チェックは時折余分なキーを押す価値があります。cd foo
コマンドではなく、コマンドを実行していることを確認したいrm -rf foo
...
私も頻繁にCtrl-Rアプローチを使用しますAlt-.(これは、説明するシナリオに適しています)。ときどき!$を使用します。
これらは非常に便利な汎用テクニックです。
しかし、特定の質問に対処するには:
ディレクトリを作成し、そのディレクトリに直接cdすることは、一般的な組み合わせであるため、それをラップする機能があると便利です。
function mcd {
local newdir='_mcd_command_failed_'
if [ -d "$1" ]; then # Dir exists, mention that
echo "$1 exists..."
newdir="$1"
else
if [ -n "$2" ]; then # We've specified a mode
command mkdir -p -m $2 "$1" && newdir = "$1"
else # Plain old mkdir
command mkdir -p "$1" && newdir="$1"
fi
fi
builtin cd "$newdir" # No matter what, cd into it
}
使用法: mcd thisismyfolder
シェルがreadlineを使用している場合(これはの場合ですbash
)、ATL+を.一緒に押すなどのことができますか?
yank-last-arg(M-。またはM-_)
前のコマンドの最後の引数(前の履歴エントリの最後の単語)を挿入します。引数を指定すると、yank-nth-argとまったく同じように動作します。yank-last-argを連続して呼び出すと、履歴リストに戻り、各行の最後の引数が順番に挿入されます。
cd this<TAB>