だから最近DebianからFedoraに切り替えましたが、基本的なFedora BASHシェルで奇妙なことがわかりました。
コマンドを実行してautoexpect
記録すると、次の種類の出力が生成されます。
# demo of the recording
autoexpect
env > foo
Ctrl-D
# the script expect statement recording
# notice that expect recorded output prior to sending the command!
set timeout -1
spawn $env(SHELL)
match_max 100000
expect -exact "^[\]777;notify;Command completed;env > foo^[\\^[\]777;precmd^[\\^[\]0;chris@localhost:~^[\\^[\]7;file://localhost.localdomain/home/chris^[\\\[chris@localhost ~\]\$ "
send -- "env > foo\r"
expect -exact "env > foo\r
^[\]777;preexec^[\\^[\]777;notify;Command completed;env > foo^[\\^[\]777;precmd^[\\^[\]0;chris@localhost:~^[\\^[\]7;file://localhost.localdomain/home/chris^[\\\[chris@localhost ~\]\$ "
Debian の同様のレコードには、複数の処理ごみのようには見えません。
説得力のあるものとして、これはautoexpect
明らかなシェル抽象化層のために単純なマクロを記録した後に完全に実行されない一流のLinuxディストリビューションです。
これは、私がFedoraシェルでやっていることがシェル内のシェルにあり、expect
自動生成されたフラグ応答が実際に書き込まれるためです。今後 send -- "env > foo\r"
記録されます。
また、リモートコンピュータをハックしましたが、fedora
これは起こりませんでした。
ここで何が起こっているのでしょうか?
ベストアンサー1
Fedora bash プロンプトは Debian bash プロンプトとは異なります。
期待から次のことができます。
set prompt "$ "
spawn bash
send "unset PROMPT_COMMAND; PS1='$prompt'\r"
expect $prompt
send "env > foo\r"
expect $prompt
send "\x04" ;# Ctrl-D
expect eof