2017-09-01 6 views
1

bashでは、echo toast | xclip -sel cは、ターミナルを閉じてもトーストをクリップボードに保存します。なぜこれは他のシェルから永続しないように見えますか?非bashシェルのxclipは耐えられません

python3.5:

import os 
os.system("echo toast | xclip -sel c") 

は仕事をしていませんが、私はCtrlキーCを押すと、クリップボードが空です。簡単ですCtrlではありませんクリップボードをクリア/正常に動作します。

にtclsh:

exec /bin/echo toast | xclip -sel c 

がさえ、オープンなプロセスを維持しますので、私はそれを終了する必要があります。

これはバグですか?これはどのように可能ですか?または私は何を誤解していますか?

編集。これに対する解決策を見つけることができません。 wish(Tcl/Tk)-scriptを作成し、exec /bin/echo toast | xclip -sel c行を含めてウィンドウを閉じました。クリップボードは空のになりました。私は試しましたが、ディスプレイとxauthorityが正しく設定されています。 pythons pyperclipとxeroxで同じ問題が発生していました。

Edit2。問題はhttps://unix.stackexchange.com/questions/316715/xclip-works-differently-in-interactive-and-non-interactive-shellsに減らすことができ、クリップボードを格納するためにxsel -ibを使用する以外の良い方法はないようです。

+0

あなたはこれを知っているかもしれませんが、 '少なくとも(BA'でexec'(| K | C)* sh'は、新しいプロセスを作成'tclsh'は違うかもしれませんが、私はその場合も親データへのアクセスを失うことが予想されます。私は' python'についてはわかりませんが、証拠が同じintrepretationをサポートしているようです/ idea/concept。シェルで 'exec'がどのように動作するかについての直接的な文書は提供できませんが、ちょっと調べてみるとよいかもしれませんが、+ 50Kシェル群集によって訂正/運がいいよ! – shellter

答えて

2

出力をパイプラインまたはリダイレクトしようとします。

exec printf "%s" $var | xclip -selection c | echo 

か::TCLでの私の仕事のために

exec printf "%s" $var | xclip -selection c > /dev/null 
+0

ありがとう、しかし私はこれは何もしないようです。 https://i.imgur.com/Jz8mpA3.png – Blauhirn

+0

tclshとスクリプトでは、Ctrl + Cの代わりに 'exit'コマンドを使います。 https://i.imgur.com/YRtljGu.png – hxss

+0

exitを使用することは、実際にはこれの鍵です。 '|エコー 'または'>/dev/null'を指定すると、 '&'でジョブを制御することもできます。どうもありがとうございました! – Blauhirn

関連する問題