永続シェルパラメータ

永続シェルパラメータ

私はしばしば一連のパラメータに対して一連のコマンドを実行する自分自身を見つけます。

たとえば、

$ nmap -Pn -sS 192.168.1.5
$ ssh 192.168.1.5
$ curl 192.168.1.5
$ wget -r 192.168.1.5

パラメータを変数に入れて作業を高速化できます。

$ a=192.168.1.5
$ nmap -Pn -sS $a
$ ssh $a
$ curl $a
$ wget -r $a

次のようないくつかの機能を使用して速度をさらに向上させます。

$ more .zshrc
...
paa() { PERSIST_ARGS+=("$@"); }
pa() { eval "$@" "${PERSIST_ARGS[@]}"; }
...
$ paa 192.168.1.5
$ pa nmap -Pn -sS
$ pa ssh
$ pa curl
$ pa wget -r

スピードを上げる方法はありますか?例えば、

$ <start special mode> 192.168.1.5
$ nmap -Pn -sS
$ ssh
$ curl
$ wget -r
$ <exit special mode>

bashまたはzsh解決策を探しています。ソリューションはすべてのコマンドセットを使用する必要があります。

ベストアンサー1

Alt-_最後のコマンドの最後の単語が挿入されました。私にとってはこれで十分でしたが、スペース、最後の単語、および行を許可する(Enter)を挿入するために別のキーバインディングを追加できます。

そしてtcshまたはzsh(についてAlt-SSについてsame):

bindkey -s '\es' ' \e_\r'

そしてbash

bind '"\es": " \e_\r"'

次に、次のように入力します。

$ nmap -Pn -sS 192.168.1.5
$ ssh<Alt-S>
$ curl<Alt-S>
...

と少なくともzshtcsh数値引数(つまり、前に追加するとAlt-<number>)スペース文字に適用されます。これはあまり役に立ちません(Alt-3Alt-S3つのスペースを挿入し、最後の単語を一度挿入して行を許可します)。次のいずれかを挿入すると便利です。N最後のコマンドの最後の単語、またはN最後のコマンドまたは最後N最後のコマンドの単語です。

少なくともzshマクロを使用する代わりに、新しいウィジェットを定義できます。たとえば、

use-last-word() {
  LBUFFER+=" "
  zle insert-last-word
  zle accept-line
}

zle -N use-last-word
bindkey '\es' use-last-word

Alt-3Alt-S最後のコマンドの最後の3番目の単語が挿入されます

最後から3番目のコマンドに最後の単語を挿入するには、次のようにします。

use-last-word() { 
  LBUFFER+=" "
  local n=$NUMERIC
  unset NUMERIC
  repeat ${n:-1} zle insert-last-word
  zle accept-line
}

最後のコマンドの最後の3単語を挿入するには:

use-last-word() { 
  for ((NUMERIC=${NUMERIC:-1}; NUMERIC; NUMERIC--)) {
    LBUFFER+=" "; zle insert-last-word
  }
  zle accept-line
}

おすすめ記事