OfflineIMAP и isync являются оба программами, которые интегрируются хорошо с mutt
и удовлетворит Ваши другие критерии.
OfflineIMAP записан в Python и isync в C; оба очень быстры.
Обе программы хорошо документируются и просты для установки; isync, возможно, немного легче.
Существует одна значительная разница между функциональностью каждого, которого стоит принять во внимание: можно использовать [Поправка: от v6.4.0 OfflineIMAP имеет createfolders опцию создать папки на удаленном репозитории].mbsync
(исполняемый файл isync) для перезаполнения удаленного IMAP maildir1 из локальной копии OfflineIMAP не может сделать этого.
Дуга Wiki имеет страницы на обоих с конфигурациями в качестве примера и случаями 2 использования
Здесь есть мое собственное решение, я изменил немного моего старого учебника на моем сайте, связанных на этой странице:
Этот код попытается скачать мой главный репозиторий на Github
link="https://github.com/nowardev/kde-peace-settings/archive/master.zip" #my own github stuff
a=$(kdialog --progressbar "W-Get will download: Nowardev GitHub Master stuff " 100);sleep 2
qdbus $a showCancelButton true
while read line ;do
read -r p t <<< "$line"
echo $p
echo $t
qdbus $a Set org.kde.kdialog.ProgressDialog value $p
while [[ $(qdbus $a wasCancelled) != "false" ]] ; do
echo "KILLING THE PROCESS AND KDIALOG"
qdbus $a org.kde.kdialog.ProgressDialog.close
exit
done
qdbus $a org.kde.kdialog.ProgressDialog.setLabelText "W-Get will download: Nowardev GitHub Master stuff time left : $t"
done< <(wget "$link" 2>&1 |mawk -W interactive '{ gsub(/\%/," "); print int($7)" "$9 }')
Я пытаюсь адаптировать этот исходный код, этот код работает, мне просто нужно адаптировать те части, которые мне действительно нужны.
#!/bin/bash
kde_download() {
arch=$(uname -m)
case "$arch" in
x86) arch="x86" ;;
i?86) arch="x86" ;;
amd64) arch="amd64" ;;
x86_64) arch="amd64" ;;
* ) echo "Your Arch '$arch' -> Its not supported." ;;
esac
ThisDIR="$PWD"
TempDir="/tmp"
TITLE="Team Speak 3 Linux Client"
TS3DIR="/opt/TeamSpeak3/Client"
version=$(curl -s http://dl.4players.de/ts/releases/ | grep -Po '(?<=href=")[0-9]+(\.[0-9]+){2,3}(?=/")' | sort -Vr | head -1)
URLICON="https://dl.dropboxusercontent.com/u/3164499/Linux/Iconos/TeamSpeak3.png"
TS3FILE="TeamSpeak3-Client-linux_$arch-$version.run"
TS3CURL="http://dl.4players.de/ts/releases/$version"
TS3CF="http://dl.4players.de/ts/releases/$version/TeamSpeak3-Client-linux_$arch-$version.run"
TARGET="/opt/Utilidades/Prueba"
J=0
# download with output to dialog progress bar
KDIALOG="`kdialog --title "$TITLE" --progressbar "Downloading:<br>$TS3FILE<br>into<br>$TARGET"`"
if grep "^org.kde.kdialog" <<< "$KDIALOG" > /dev/null; then
# KDE4 kdialog and dbus control
autoclose="qdbus $KDIALOG org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog autoClose true"
showcancel="qdbus $KDIALOG org.kde.kdialog.ProgressDialog.showCancelButton false"
setprogress="qdbus $KDIALOG org.freedesktop.DBus.Properties.Set org.kde.kdialog.ProgressDialog value"
manualclose="qdbus $KDIALOG org.kde.kdialog.ProgressDialog.close"
wascancelled="qdbus $KDIALOG org.kde.kdialog.ProgressDialog.wasCancelled"
else
# KDE3 kdialog and dcop control
# cut beginning
KDIALOG="${KDIALOG//DCOPRef\(/}"
# cut end
KDIALOG="${KDIALOG//,ProgressDialog\)/}"
autoclose="dcop $KDIALOG ProgressDialog setAutoClose true"
setprogress="dcop $KDIALOG ProgressDialog setProgress"
showcancel="dcop $KDIALOG ProgressDialog showCancelButton false"
manualclose="dcop $KDIALOG ProgressDialog close"
wascancelled="dcop $KDIALOG ProgressDialog wasCancelled"
fi
$autoclose
$showcancel
cd "$TempDir"
( wget "$TS3CF" -o /dev/stdout | while read I ; do
I="${I//*.......... .......... .......... .......... .......... /}"
I="${I%%%*}"
# report changes only
if [ "$I" ] && [ "$J" != "$I" ]; then
$setprogress $I
J="$I"
fi
done ; $manualclose ; cd "$ThisDIR" ) &
pid="$!"
while [ -d "/proc/$pid/" ]; do
if [ "`$wascancelled`" = true ]; then
kill $pid
kill `ps aux | grep "wget $TS3FILE -o /dev/stdout" | grep -v grep | tr -s ' ' ' ' | cut -f2 -d\ `
$manualclose
if [ "$?" != 0 ]; then
echo "Installation interrupted."
exit 255
fi
fi
sleep 1
done
wait
}
kde_download