Заметки в консоли: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Небольшой скрипт для создания, просмотра и удаления текстовых заметок в консоли. Руководство по использованию выводится по ключу '''-h'''. | Небольшой скрипт для создания, просмотра и удаления текстовых заметок в консоли. Руководство по использованию выводится по ключу '''-h'''. По завершению набора заметки нажмите '''Ctrl+d'''. | ||
---- | ---- | ||
Строка 9: | Строка 9: | ||
# Последнее изменение: 2008-11-14 | # Последнее изменение: 2008-11-14 | ||
unset newnotename | |||
notesfile="$HOME/.notesfile" | notesfile="$HOME/.notesfile" | ||
time="$(date +'%Y:%m:%d %H:%M:%S')" | time="$(date +'%Y:%m:%d %H:%M:%S')" | ||
Строка 72: | Строка 73: | ||
--drop-all) | --drop-all) | ||
getsure && > "${notesfile}" | getsure && > "${notesfile}" | ||
;; | |||
-r|--rename) | |||
getname | |||
while [ -z "${newnotename}" ]; do | |||
echo -e "\n\e[36mВведите новое имя заметки:\e[0m" | |||
read newnotename | |||
done | |||
newnotename="$(echo "${newnotename}" | tr ' ' '_')" | |||
sed -i -e "/^#x#x#x#x#x#x#x#x#x#x /s/ ${notename} #x#x#x#x#x#x#x#x#x#x $/ ${newnotename} #x#x#x#x#x#x#x#x#x#x $/g" "${notesfile}" | |||
echo -e "\e[32mЗаметка переименована\e[0m" | |||
;; | ;; | ||
-h|--help|*) | -h|--help|*) | ||
echo -e " | echo -e " | ||
Использование: ${0} Параметр | Использование: ${0} Параметр | ||
" | |||
\e[36m-a | --add\ | printf "\e[36m%-25s \e[32m%s\e[0m\n" \ | ||
'-a | --add' 'Добавить заметку' \ | |||
'-l | --list' 'Список заметок' \ | |||
'--all' 'Показать все заметки' \ | |||
'-s | --show' 'Показать заметку' \ | |||
'-r | --rename' 'Переименовать заметку' \ | |||
'-d | --drop | --delete' 'Удалить заметку' \ | |||
'--drop-all' 'Очистить записную книжку' \ | |||
'-h | --help' 'Справка' | |||
;; | ;; | ||
esac | esac |
Текущая версия на 20:01, 17 ноября 2008
Небольшой скрипт для создания, просмотра и удаления текстовых заметок в консоли. Руководство по использованию выводится по ключу -h. По завершению набора заметки нажмите Ctrl+d.
#!/bin/bash
# By Rain ;)
#
# Дата создания: 2008-11-13
# Последнее изменение: 2008-11-14
unset newnotename
notesfile="$HOME/.notesfile"
time="$(date +'%Y:%m:%d %H:%M:%S')"
if [ ! -e "${notesfile}" ]; then
echo -e "\e[31mФайл заметок не найден, создаю новый...\e[0m"
touch "${notesfile}"
fi
notename="$(shift ; echo "${@}")"
getname() {
while [ -z "${notename}" ]; do
echo -e "\e[36mВведите имя заметки:\e[0m"
read notename
done
notename="$(echo "${notename}" | tr ' ' '_')"
}
getsure() {
echo -e "\e[5;31mВы уверены? y/n\e[0;0m"
read sure
if [ "${sure}" == 'y' ]; then
true
echo -e "\n\e[32mВыполнено\e[0m"
else
echo -e "\n\e[31mОтменено\e[0m"
exit 1
fi
}
clrhead() {
sed -r -e "s-[0-9]{4}(:[0-9]{1,2}){2} [0-9]{1,2}(:[0-9]{1,2}){1,2}-`echo -e "\e[32mВремя сохранения: \e[36m"`&`echo -e "\e[32m\tИмя заметки:\e[36m"`-" |
sed -r -e "s-#x#x#x#x#x#x#x#x#x#x-`echo -e "\e[0m"`&-g"
}
case "${1}" in
-a|--add)
getname
echo "#x#x#x#x#x#x#x#x#x#x ${time} ${notename} #x#x#x#x#x#x#x#x#x#x " >> "${notesfile}"
echo -e "Введите текст заметки:\n"
cat >> "${notesfile}"
echo "#x#x#x#x#x#x#x#x EON #x#x#x#x#x#x#x#x" >> "${notesfile}"
echo -e "\nЗаметка сохранена"
;;
-l|--list)
echo -e "$(awk 'BEGIN {print "\\e[36mВремя сохранения\tНазвание\\e[0m"} /^#x#x#x#x#x#x#x#x#x#x /{print "\\e[33m"$2, $3"\t\\e[32m"$4"\\e[0m"}' "${notesfile}")"
;;
--all)
cat "${notesfile}" | clrhead |
sed -e 's/#x#x#x#x#x#x#x#x#x#x /\n/g' -e 's/#x#x#x#x#x#x#x#x EON #x#x#x#x#x#x#x#x/----------/g'
;;
-s|--show)
getname
sed -n -r -e "/#x#x#x#x#x#x#x#x#x#x [0-9]{4}(:[0-9]{1,2}){2} [0-9]{1,2}(:[0-9]{1,2}){1,2} ${notename} #x#x#x#x#x#x#x#x#x#x/,/#x#x#x#x#x#x#x#x EON #x#x#x#x#x#x#x#x/p" "${notesfile}" |
clrhead |
sed -e 's/#x#x#x#x#x#x#x#x#x#x /\n/g' -e 's/#x#x#x#x#x#x#x#x EON #x#x#x#x#x#x#x#x/----------/g'
;;
-d|--drop|--delete)
getname
getsure && sed -i -n -r -e "/#x#x#x#x#x#x#x#x#x#x [0-9]{4}(:[0-9]{1,2}){2} [0-9]{1,2}(:[0-9]{1,2}){1,2} ${notename} #x#x#x#x#x#x#x#x#x#x/,/#x#x#x#x#x#x#x#x EON #x#x#x#x#x#x#x#x/!p" ${notesfile}
;;
--drop-all)
getsure && > "${notesfile}"
;;
-r|--rename)
getname
while [ -z "${newnotename}" ]; do
echo -e "\n\e[36mВведите новое имя заметки:\e[0m"
read newnotename
done
newnotename="$(echo "${newnotename}" | tr ' ' '_')"
sed -i -e "/^#x#x#x#x#x#x#x#x#x#x /s/ ${notename} #x#x#x#x#x#x#x#x#x#x $/ ${newnotename} #x#x#x#x#x#x#x#x#x#x $/g" "${notesfile}"
echo -e "\e[32mЗаметка переименована\e[0m"
;;
-h|--help|*)
echo -e "
Использование: ${0} Параметр
"
printf "\e[36m%-25s \e[32m%s\e[0m\n" \
'-a | --add' 'Добавить заметку' \
'-l | --list' 'Список заметок' \
'--all' 'Показать все заметки' \
'-s | --show' 'Показать заметку' \
'-r | --rename' 'Переименовать заметку' \
'-d | --drop | --delete' 'Удалить заметку' \
'--drop-all' 'Очистить записную книжку' \
'-h | --help' 'Справка'
;;
esac