実行前に端末入力を操作する方法はありますか?例:
apt-get update
端末に入力してください。今sudo apt-get update
実行前に変更したいと思います。
私が試したこと:
操作された入力を使用して入力されたコマンドを実行するスクリプトを実行する可能性を検討しましたが、他のプログラムの実行中にスクリプトを実行する方法を見つけることができませんでした。
すべての回答に感謝します。私はLinux Mint Serenaを使用しています。
言う:
コマンドが呼び出されるたびにバックグラウンドで実行され、パターンと一致することを確認するスクリプトなどが必要です。それ以外の場合は入力を実行し、そうであればコマンドを操作して実行します。 ->これが私の例でtoapt-get update
を使う理由ですsudo apt-get update
。私が理解できる唯一のことは、スクリプトが実行される前にコマンドを取得する方法です。
考えられる目的:
特定のファイル/ディレクトリにアクセスしようとしたときにパスワードプロンプトを入力してください
ショートカットの作成(
cd _1
に変更cd ~/Desktop
)
ベストアンサー1
では、zsh
いくつかのテスターを追加して次のことができます。
validate_apt-get_update() {
local match MATCH MBEGIN MEND mbegin mend
if [[ $BUFFER =~ '^(\s*)(apt-get\s+update.*)' ]]; then
LBUFFER="$match[1]sudo " RBUFFER=$match[2]
zle -M 'WARNING: sudo has been added before apt-get update'
return 1
fi
}
accept-line() {
validate_apt-get_update && zle .accept-line
}
zle -N accept-line
を挿入し、sudo
その後にカーソルを置き、警告メッセージを表示し、apt-get
入力した最初の2つの単語があり、更新された場合は行を受け入れず、実際に望むものであることを確認する機会を提供します。
ここでは、シェルコマンドラインの簡単な解析を行っています。次のように入力すると機能しません。
'apt-get' update
"$(echo apt-get)" update
something else; apt-get update...
次のことができるので良いかもしれません。
\apt-get update
エイリアスをバイパスしたい場合と同様に、そのチェックをバイパスしたい場合。
あなたcd _1
の場合は、cd ~/Desktop
次のことができます。
set -o cdable_vars
_1=~/Desktop
個人的に、私はシェルが私の背中でこのようなことをするという考えがあまり好きではありません(特に他の人が少なくとも期待しないこと)。