端子入力操作

端子入力操作

実行前に端末入力を操作する方法はありますか?例:

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

個人的に、私はシェルが私の背中でこのようなことをするという考えがあまり好きではありません(特に他の人が少なくとも期待しないこと)。

おすすめ記事