貼り付けたシェルコマンドを見えないようにする方法は?

貼り付けたシェルコマンドを見えないようにする方法は?

私はいくつかのシェルコマンドを実行するために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隠し(おそらくブロック)、入力(または出力)を表示せずに実行するコマンドまたはトリックはありますか?パスワードを入力するのと同じです。


上記の事項について判断しないでください。 :-(何かを事前に拒否します。

  1. 私はcsh使用することを選択しません。はい、上位10項目を読みました。

  2. 私はすべて同じネットワーク共有をマウントしない何百ものサーバーを使用しています/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

私はAutoHotKeyに精通していないので、そこで解決策が見つからなかった場合は読んでください。

POSIXの指定readコマンド、を使用して1行の入力を許可し、同時に端末エコー(入力時に表示される内容)を抑制します-s。これはbashにも組み込まれていますが、システムにスタンドアロンとして存在することを確認できます。

そうでなければ、ねえstty、(別のスタンドアロン)cshを使用して同じことを実行できます。

stty -echo # turn echo off
# do your input
stty echo # turn echo back on

おすすめ記事