Ubuntu 14.04では、zshを使用してSSH経由でPuttyを使用しており、キーボードのキーバインディングを設定しています。私はzshが私のファンクションキーを使用していないようだったので、私はキーの絵が示すものと同じようなことをするようにスクリプトを設定する必要があると思いました。私は電子メールボタンを操作していますが、うまくいきますが、もっと良かったらいいです。これが私が持っているものです~/.zshrc
:
# Ensure we are in emacs mode
bindkey -e
# This requires you to enable the ATOM feed in Gmail. If you don't know what that is then
# go ahead and try this and let it fail. There will then be a message in your inbox you
# can read with instruction on how to enable it. Username below should be replaced with
# your email id (the portion of your email before the @ sign).
_check-gmail() {
echo
curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"
echo
exit
}
zle -N _check-gmail
# F2 - Display Unread Email
bindkey "^[[12~" _check-gmail
上記のように使用すると機能します。 2つの質問があります。
何よりも、パスワードをこのようにスクリプトに残すよりも、私にパスワードを求める方が良いです。:password
コマンドラインからカールコマンドを削除すると簡単に実行できますが、このファイルで使用すると問題が発生します。具体的には、最初のキーストロークは許可されているように見えますが、残りのキーストロークはパスワード入力以外のシェルで終了します。
次に、シェルで初めて実行したときにうまくいきました。その後、プロンプトは正しく返されません。Enter他のメッセージを受信するには、ボタンを押す必要があります。この問題を解決する方法はありますか?
.zshrc
ファイルの完全なキーバインディングセクションを次の場所に配置しました。GitHub。
ベストアンサー1
問題は、curl
一般的な端末設定が必要であり、zle
端末設定を変更したくないことです。したがって、次のように書くことができます。
_check-gmail() {
zle -I
(
s=$(stty -g) # safe zle's terminal setting
stty sane # sane settings for curl
curl -u username --silent "https://mail.google.com/mail/feed/atom" |
tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' |
sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"
stty $s # restore zle's terminal settings
) < /dev/tty
}