Копирование файла сценария с уведомлением о завершении - PullRequest
3 голосов
/ 31 января 2011

Я использую Ubuntu для копирования файлов, содержащихся на более чем ста компакт-дисках, на один жесткий диск.Когда содержимое компакт-диска завершено копирование на жесткий диск, я не получаю никаких признаков того, что это сделано.Я хотел бы создать сценарий оболочки, который выполняет следующие действия:

  1. Запрашивает у меня имя для назначения новой папки
  2. Создание папки на целевом жестком диске
  3. Скопируйте содержимое компакт-диска, находящегося в настоящий момент в дисководе компакт-дисков, в новую папку
  4. Сообщите мне, когда операция копирования будет завершена

Я установил libnotify на свой компьютер, но яЯ открыт для использования других средств уведомления.

Ответы [ 2 ]

3 голосов
/ 31 января 2011
#!/bin/bash
while read -r -p "Enter a folder name: " name
do
    [[ -z $name ]] && break    # quit if user presses enter without input
    mkdir -p "$name"
    cp source "$name"          # use your current copy method

    # Notifications: choose one or all six or add your own
    notify-send "Copy complete" "Folder: $name"
    zenity  --title="Copy complete" --text="Copying to folder $name is complete" --info&
    dialog --title "Copy complete" --msgbox "\nCopying to folder\n$name\nis complete\n" 10 60
    for i in {1..4}
    do
        printf '\a'            # make some noise
        sleep 1
    done
    echo "Copying to folder: $name is complete" | mail -S "Copy completion notification" keyslinger@example.com
    printf 'Copy to folder %s is complete.\n' "$name"
done
1 голос
/ 02 февраля 2011

Спасибо, Деннис, это сработало!Просто для справки, вот что я в итоге использовал:

#!/bin/bash
while read -r -p "Enter a folder name: " name
do
    [[ -z $name ]] && break # quit if user presses enter without input
    cd /media/Iomega_HDD
    mkdir -p "$name"
    cdname=`volname`
    cdname=${cdname%% *}    #trim white space from variable holding cd name
    cdname=${cdname#* }
    cp -r /media/"$cdname"/. "$name"

    # Notifications:
    notify-send "Copy complete" "Folder: $name"
    printf 'Copy to folder %s is complete.\n' "$name"
    eject
done
...