私はいくつかのシェルコマンドを実行するためにAutoHotkeyマクロを使用しています。つまり
^`::
SendInput set c=".cshrc-acheong"{ENTER}
SendInput set v=".vimrc-acheong"{ENTER}
SendInput foreach d ( /home/acheong /home/tcama /userhome/andrew.cheong ){ENTER}
SendInput if ( -e $d/$c ) source $d/$c{ENTER}
SendInput if ( -e $d/$v ) alias vim "vim -N -u $d/$v"{ENTER}
SendInput end{ENTER}
return
AutoHotkeyを初めて使用する場合は問題ありません。複数行のシェルコマンドを一度に貼り付けるのと同じです。私たちの多くは、各行が実行されたときにコマンドプロンプトがどのように「非同期的に」表示されるかを見ました。
stdin
隠し(おそらくブロック)、入力(または出力)を表示せずに実行するコマンドまたはトリックはありますか?パスワードを入力するのと同じです。
上記の事項について判断しないでください。 :-(何かを事前に拒否します。
私は
csh
使用することを選択しません。はい、上位10項目を読みました。私はすべて同じネットワーク共有をマウントしない何百ものサーバーを使用しています
/home
。だから、上記のキーボードマクロが私が持っているすべてを見つけてロードできるように、rsync
「メインサーバー」を.cshrc
別のネットワーク共有にプッシュする場所を使用します。.vimrc
どこでも見つけることができます。
修正する
追加してみましたstty -echo
が、つまり
^`::
SendInput stty -echo{ENTER}
SendInput set c=".cshrc-acheong"{ENTER}
SendInput set v=".vimrc-acheong"{ENTER}
SendInput foreach d ( /home/acheong /home/tcama /userhome/andrew.cheong ){ENTER}
SendInput if ( -e $d/$c ) source $d/$c{ENTER}
SendInput if ( -e $d/$v ) alias vim "vim -N -u $d/$v"{ENTER}
SendInput end{ENTER}
SendInput stty echo{ENTER}
return
ただし、プロンプトは引き続き表示されます。
(設定を解除しようとしましたが、私がしたことの1つが交換であった$prompt
ので望んでいませんでした。).cshrc
$prompt
答え1
答え2
代替画面バッファを使用すると、望ましい効果に非常に近づくことができます。
最大(すべて?)ターミナルエミュレータには、切り替え可能な2つの画面バッファがあります。そのため、代替画面バッファに切り替えてコマンドを実行し、メイン画面バッファに戻ります。
コマンドの前に以下を実行してください。
tput smcup
最後に実行
tput rmcup
ただし、tput smcup
画面にコマンドが表示されます。
コマンドを隠すために私が考えることができる唯一の方法は、コマンドにキーバインディングを追加することです(例:ESC+ t)。私はzsh
それができることを知っていますが、私は知りませんcsh
。
そのコマンドがない場合は、tput
元のエスケープコードをエコーできます。
Puttyの場合、次のようになります。
echo -e '\e[?47h'
そして
echo -e '\e[2J\e[?47l'
答え3
パテ端末に貼り付けることに頼るのではなく、2つのシステム間で双方向に作成するmkfifo
必要があります。|pipe
ただし、パテを使用する必要がある場合は、設定でフロー制御をオフにし、ホストstty raw
側でネイティブモードを使用し、パテ設定でネイティブ端末オプションを見つける必要があります。