4

スクリプトのstdinを現在のxtermセッション(つまり/ dev / pts / 0)から、bashを使用して実行中のセッション(つまり/ dev / pts / 1)にリダイレクトするにはどうすればよいでしょうか?3つのxtermウィンドウを開くbashスクリプトがあり、それらのウィンドウの1つだけから入力を取得したいのですが、その方法がわかりません。どんな助けでも大歓迎です!ありがとう。



編集(下から移動-OPはこの説明を回答として提出しました)

やりたいことを明確にすべきだったと思います。スクリプトをptyから開始します。たとえば、/ dev / pts/3としましょう。このスクリプトは、3つのxterminalを開きます。たとえば、/ dev / pts / 0、/ dev / pts / 1、および/ dev / pts/2です。これらの3つの新しいptyは、ユーザーに表示されるものです。スクリプトはユーザーに入力を求めます。ユーザーの入力を/dev/ pty / 1に入力すると、プログラムはそこから情報を取得する必要があります。しかし、私はこれをやろうとしましたが、うまくいきません。これが私のコードの抜粋です。

exec</dev/pts/1

echo
echo "Would you like to search for more info?" 1>/dev/pts/1
read answer

case $answer in
    y) echo "YES" ;;
    n) echo "NO"  ;;
    *) echo "y/n only!";;
esac

最後のcaseステートメントは、入力が実際に機能したかどうかを確認するためのほんの少しのプレースホルダーです。

4

4 に答える 4

8

多分あなたはttyechoあなたのニーズに合わせて微調整することができますか?

# /dev/ttysXXX is the result of the tty command in another Terminal window
sudo ttyecho -n /dev/ttysXXX pwd

また、異なるtty間で通信するために、 (または)または(nmapの一部)ttyechoと組み合わせることができますか?netcatncncat

詳細については、以下を参照してください。

于 2011-08-28T12:04:08.553 に答える
5

これは不可能だと思います。AFAIK、カーネルスペースで何かを変更しないと、現在のttyではないtty(またはpty)から入力を読み取ることは不可能です。ルートでさえそれを行うことはできません。私はこれを調査するのにしばらく時間を費やし、それを行う方法を見つけることができませんでしたが、それが不可能であると主張する多くの情報源を見つけました。これは、ユーザーのセキュリティ/プライバシーを強化するための設計上の決定であるように思われます。

于 2009-03-12T21:16:45.393 に答える
2

それは簡単ですあなたはただ理解する必要があります

ls -ls /dev/pts が表示されます

0 1 2 3 4 複数の

ここで NOT 4 を使用して、 cat < /dev/pts/4 または exec < cat /dev/pts/4 と入力します

4番目に何かを入力すると、何が起こるかがわかります

于 2011-08-26T03:41:43.820 に答える