Заметки в консоли: различия между версиями
Материал из Linux Wiki
				
				
				Перейти к навигацииПерейти к поиску
				
				Rain (обсуждение | вклад)  | 
				Rain (обсуждение | вклад)   | 
				||
| Строка 17: | Строка 17: | ||
fi  | fi  | ||
notename="${  | notename="$(shift ; echo "${@}")"  | ||
getname() {  | getname() {  | ||
| Строка 23: | Строка 23: | ||
		echo -e "\e[36mВведите имя заметки:\e[0m"  | 		echo -e "\e[36mВведите имя заметки:\e[0m"  | ||
		read notename  | 		read notename  | ||
done  | done  | ||
notename="$(echo "${notename}" | tr ' ' '_')"  | |||
}  | }  | ||
| Строка 54: | Строка 54: | ||
;;  | ;;  | ||
	-l|--list)  | 	-l|--list)  | ||
	echo -e "$(  | 	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)  | 	--all)  | ||
Версия от 10:18, 14 ноября 2008
Небольшой скрипт для создания, просмотра и удаления текстовых заметок в консоли. Руководство по использованию выводится по ключу -h.
#!/bin/bash
# By Rain ;)
#
# Дата создания: 2008-11-13
# Последнее изменение: 2008-11-14
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}"
;;
	-h|--help|*)
	echo -e "
Использование: ${0} Параметр
\e[36m-a | --add\t\t\t\e[32mДобавить заметку
\e[36m-l | --list\t\t\t\e[32mСписок заметок
\e[36m--all\t\t\t\t\e[32mПоказать все заметки
\e[36m-s | --show\t\t\t\e[32mПоказать заметку
\e[36m-d | --drop | --delete\t\t\e[32mУдалить заметку
\e[36m--drop-all\t\t\t\e[32mОчистить записную книжку
\e[36m-h | --help\t\t\t\e[32mСправка
\e[0m"
;;
esac