この同じ問題は、 Unix & Linux StackExchange コミュニティに投稿された質問でより適切に定式化されています。
キーを押すと開き、新しいターミナル(gnome-terminal)を開き、scrot(スクリーンショットツール)を実行し、ランダムな名前で写真をディレクトリに保存し、pomf.catにアップロードしてリンクをコピーするスクリプトをプログラミングしていますクリップボード。
これはうまくいきます。私が今やろうとしているのは、アップロードが完了したら、ターミナルを閉じることです。
私のスクリプトは次のように機能します:
ショートカット (PrtScr) -> gnome-terminal -e "python path/to/script.py" -> Scrot を開始 -> ファイルを保存 (ファイルへのパスを記憶) -> bash script2.sh path/to/picture -> アップロードpomf.cat へ -> リンクを取得 -> 「xclip -selection clipboard」でクリップボードに入れる
文字列をクリップボードに入れた後にターミナルを閉じたいので、これを追加しました:
eval $(printf $link | xclip -selection clipboard && sleep 1 && pkill terminal)
これの問題は、クリップボードに何もコピーされず、端末が閉じられることです。
ただし、「&& sleep 1 && pkill terminal」がないと、リンクはコピーされますが、ターミナルは開いたままになります。
前もって感謝します。
//編集
最初のスクリプト (scrot の実行用)
#!/usr/bin/env python
import os
import uuid
import time
def rstring(string_length=10):
random = str(uuid.uuid4())
random = random.upper()
random = random.replace("-","")
return random[0:string_length]
randomString = rstring(16)
os.system("scrot -s -q 100 /home/timon/screenshots/" + randomString + ".jpg")
while True:
processRead = os.popen("ps aux | grep \"scrot -s\" | cat").read()
if "scrot -s" not in processRead:
time.sleep(1)
else:
break
system.sleep(3)
os.system("/home/timon/.screenshot_stuff/./screen.sh /home/timon/screenshots/" + randomString + ".jpg")
2 番目のスクリプト (スクリーンショットのアップロード用)
#!/usr/bin/env bash
dest_url='https://cuntflaps.me/upload.php'
return_url='https://a.cuntflaps.me'
if [[ -n "${1}" ]]; then
file="${1}"
if [ -f "${file}" ]; then
printf "Uploading ${file}..."
my_output=$(curl --silent -sf -F files[]="@${file}" "${dest_url}")
n=0 # Multipe tries
while [[ $n -le 3 ]]; do
printf "try #${n}...\n"
if [[ true ]]; then
return_file=$(echo "$my_output" | grep "url" | sed 's/\,//g' | sed 's/\\//g' | sed 's/\"//g' | sed 's/\url://g' | tr -d ' ')
printf 'done.\n'
break
else
printf 'failed.\n'
((n = n +1))
fi
done
printf "$return_file" | xclip -selection clipboard && pkill terminal
else
printf 'Error! File does not exist!\n'
exit 1
fi
else
printf 'Error! You must supply a filename to upload!\n'
exit 1
fi