cron делает это для вас уже. В вашей записи crontab говорится:
00 01 * * * sh /backup/script.sh
В назначенное время cron выполнит указанную вами команду и отправит вам по электронной почте свой вывод.
Вывод sh /does/not/exist: . Таким образом, cron отправит вам электронное сообщение, если файл не существует.
Возможно, вам нужно будет убедиться, что ваша система настроена правильно для электронной почты, так что cron сможет успешно отправить вам электронное письмо. Вы упомянули sendmail; если sendmail настроен правильно, а по электронной почте работает ваш пользователь, то cron тоже будет работать.
Переменная MAILTO также может помочь, если вам нужно отправить по электронной почте другой адрес или если по электронной почте ваш пользователь не работа, но отправка по электронной почте определенного интернет-адреса электронной почты. Просто добавьте строку MAILTO=foo@example.com над существующей строкой.
Любой объект в (большинстве) файловых систем в Linux имеет уникальный идентификатор, называемый inode. Обратите внимание, что файл может иметь более одного имени (hardlink), но каталоги имеют только одну ссылку во всех файловых системах, о которых я знаю. Обратите внимание, что концепция inode является локальной файловой системой, поэтому в двух разных устройствах (раздел или что-то еще) уникальность не гарантируется.
Вы можете увидеть индекс вашего каталога с помощью ls -ldi:
[:~] % ls -ldi tmp/uffa
20873234 drwxrwxr-x 2 romano romano 4096 Jun 26 2014 tmp/uffa
Итак, вы знаете, что ваш каталог имеет inode 20873234. Теперь вы можете переключиться на него с помощью команды:
[:~] % cd "$(find ~ -inum 20873234 2> /dev/null)"
[:~/tmp/uffa] %
(Обратите внимание, что 2> /dev/null состоит в том, чтобы отключать сообщения об ошибках об нечитаемых каталогах по пути.)
Эта команда будет сканировать всю вашу домашнюю директорию, поэтому быть терпеливым.1
Но как насчет использования cd и завершения TAB вашей оболочки?
1 Это должна быть самой неэффективной вещью, которую я когда-либо публиковал ... одой для энтропии. Причина в том, что «первичный ключ», под которым оптимизируется доступ к файлу или каталогу, быстрый и прямой - угадайте, что? - путь: /dir/dir/file_or_dir. Более того, чтобы предоставить вам доступ к определенному каталогу, системе необходимо проверить все разрешения в пути ... так что снова обращение через inode означает рекурсивное сканирование файловой системы.
2 Ну, вы можете сделать что-то хуже, сканируя с / .3
3 Но тогда он выиграл ' t, потому что inodes уникальны только для каждой файловой системы (для каждого монтирования).
Вы можете сделать Tab поворотными папками вместо их перечисления. Отредактируйте файл ~/.inputrc и добавьте
"\C-i": menu-complete
"\e[Z": "\e-1\C-i"
. Если вы хотите его для всех пользователей, отредактируйте /etc/inputrc.
Нажмите Tab + x и Ctrl + r, чтобы сделать его эффективным.
Теперь используйте cd x для перехода к вашей папке без записи ее имени. cd Shift + Ctrl будет вращаться в другом направлении.
Стоит помнить, что cd - перенесет вас в последнюю посещенную папку.
Вы можете использовать подстановочные файлы оболочки.
Например, я могу выполнить
cd a?b?c?d
или
cd a\*b\*c\*d
И он расширит подстановочные знаки до фактическое имя и изменение в этом каталоге. Предположим, что это единственный каталог, который соответствует.
Если у вас есть a b c d и a1b2c3d, тогда cd a?b?c?d будет расширяться до cd a1b2c3d a b c d или cd a b c d a1b2c3d (фактический порядок будет зависеть от ядро, файловая система ...), и bash бесшумно переместит вас к первому пути.
С другой стороны, у вас часто нет одинаково названных папок, поэтому чего-то вроде a*d достаточно для расширения что без ввода всех промежуточных символов. Это особенно полезно, когда вы на самом деле не можете ввести его (например, имена находятся в другом скрипте или даже в другой кодировке), и вам в противном случае понадобилось бы восьмеричное кодирование имени файла.
Вы можете найти этот каталог в файловом менеджере, например. nautilus и просто перетащите его на терминал.
Если вы ранее набрали cd в терминале, вы получите команду.
Не уверен, что это именно то, о чем вы просите, но zsh имеет некоторые опрятные трюки для доступа к каталогу другими способами, кроме ввода строгого имени каталога; для одного, вы можете ввести часть имени, и он будет расширяться до полного имени каталога, что позволяет использовать очень полезные вещи, например:
Удар TAB ...
Я использую эту процедуру все время, и она не ограничивается только именами каталогов. Он может использоваться для любых команд с использованием командной строки.
Удачи.
Если это всего лишь один или несколько каталогов, почему бы не использовать псевдонимы в вашем bashrc или каких-либо init-файлах? Например:
alias abc='cd /tmp/"a b c"'
Тогда, когда вы хотите туда попасть, просто введите abc