Как новичок в написании сценариев на Bash, я искал именно это и, основываясь на принятом выше ответе, написал следующий сценарий Nautilus, который назвал " Search Text в Справочнике ... ". Поскольку время от времени это будет полезно для меня, я подумал, что это может быть полезно и для других.
#!/bin/bash
# Nautilus Script to search text in selected folder
# Determine the path
if [ -e -n $1 ]; then
obj="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
else
base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
obj="$base/${1##*/}"
fi
# Determine the type and go
if [ -f "$obj" ]; then
/usr/bin/canberra-gtk-play --id="dialog-error" &
zenity --error --title="Search Directory" --text "Sorry, selected item is not a folder."
elif [ -d "$obj" ]; then
cd "$obj"
# Get text to search
SearchText=$(zenity --entry --title="Search Directory" --text="For Text:" --width=250)
if [ -z "$SearchText" ]; then
notify-send "Search Directory" "Nothing entered; exiting..." -i gtk-dialog-info -t 500 -u normal &
exit
else
if [ -f "/tmp/Search-Directory-Results.txt" ]; then
rm "/tmp/Search-Directory-Results.txt"
fi
grep_menu()
{
im="zenity --list --radiolist --title=\"Search Directory\" --text=\"Please select one of the search options below:\""
im=$im" --column=\"☉\" --column \"Option\" --column \"Description\" "
im=$im"TRUE \"case-sensitive\" \"Match only: Text\" "
im=$im"FALSE \"case-insensitive\" \"Match: TEXT, text, Text...\" "
}
grep_option()
{
choice=`echo $im | sh -`
if echo $choice | grep -iE "case-sensitive|case-insensitive" > /dev/null
then
if echo $choice | grep "case-sensitive" > /dev/null
then
grep -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
fi
if echo $choice | grep "case-insensitive" > /dev/null
then
grep -i -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
fi
fi
}
grep_menu
grep_option
fi
zenity --class=LIST --text-info \
--editable \
--title="Search Directory" \
--filename="/tmp/Search-Directory-Results.txt"
fi
exit 0
Несмотря на то, что тема резервного копирования/управления версиями файлов конфигурации может показаться простой на первый взгляд, это одна из самых актуальных тем администрирования системы/инфраструктуры.
Независимо от дистрибутива, для автоматического резервного копирования /etc в качестве простого решения можно установить etckeeper.
По умолчанию он фиксирует /etc в репозитории/системе управления версиями, установленной в той же системе.
Коммиты/резервные копии по умолчанию создаются ежедневно и/или каждый раз при обновлении пакетов.
Пакет etckeeper присутствует практически во всех дистрибутивах Linux.
см.: https://help.ubuntu.com/lts/serverguide/etckeeper.html
или https://wiki.archlinux.org/index.php/Etckeeper
Можно утверждать, что установка этого пакета является хорошим стандартом в отрасли.
Если у вас не установлен etckeeper и вам нужен определенный etc-файл, есть несколько способов; вы можете скопировать его из похожей системы вашей, вы можете попросить своего менеджера пакетов загрузить установочный файл или загрузить его вручную, и извлечь оттуда файл etc; один из самых простых способов — использовать mc (midnight Commander) для перемещения внутри пакетов, как если бы они были каталогами.
Вы также можете использовать репозитории дистрибутива для получения пакетов, в случае debian это http://packages.debian.org
В конце концов, если etc/configurations искажены до неузнаваемости, у вас всегда есть возможность чтобы переустановить конкретный пакет. переместите файлы etc в имя/каталог резервной копии и, например, в Debian:
apt-get install --reinstall package_name
Вы также можете настроить и установить исходные репозитории для вашего конкретного дистрибутива/версии, установить исходный пакет и получить оттуда файлы etc.
https://wiki.debian.org/apt-src (снова пример Debian)
В некоторых пакетах у вас также могут быть образцы файлов конфигурации в /usr/share/doc/package_name , который может быть пригодным или не пригодным для использования.
В крайнем случае, вы также можете найти файлы etc в репозиториях/адресах github, если соответствующие проекты с открытым исходным кодом, просто имейте в виду, что часто дистрибутивы меняют настройки по умолчанию и все вокруг.
Очевидно, что ни один из этих вариантов не освобождает вас от необходимости наличия надежной политики резервного копирования и извлечения из нее потерянных файлов /etc.
Времена также движутся быстро, и, если следовать философии devops, вы также можете полностью отказаться от определенных систем и повторно развернуть их в случае повреждения некоторых файлов; вы также можете использовать CI и повторно развернуть файлы, например, из jenkins.
Если ваш дистрибутив имеет живой ISO, или вы не возражаете против виртуальной установки на виртуальную машину (VirtualBox, VMWare и т. д.) ), тогда вы могли бы увидеть его файлы по умолчанию, не копаясь в файлах пакета вручную.
И установка/переустановка/перенастройка любых пакетов в виртуальной машине не изменит ваши «настоящие» системные файлы.