Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
#!/bin/bash
case $1 in
u|use)
case $2 in
e) $EDITOR /etc/portage/package.use
;;
s) grep -n --color "$3" /etc/portage/package.use
;;
d)
if echo "$3" | grep -q -e "[1-9]"
then
DELVAR="`echo $3 $4 $5 $6 $7 $8 $9 | sed 's/ /\n/g'`"
echo "Do you want delete next line(s):
`echo "$DELVAR" | sed 's/$/!d/g' | xargs -n 1 | while read line ; do
sed "$line" /etc/portage/package.use -i
done`
Yes/No?"
read "answer"
case "$answer" in
y|yes) echo "$DELVAR" | sed 's/$/d/g' | xargs -n 1 | while read yesno ; do
sed "$yesno" /etc/portage/package.use -i
done
;;
esac
else
DELVAR="`grep -n --color "$3" /etc/portage/package.use | cut -d":" -f1`"
echo "Do you want delete next line(s):
`grep -n --color "$3" /etc/portage/package.use`
Yes/No?"
read "answer"
case "$answer" in
y|yes) echo "$DELVAR" | sed 's/$/d/g' | xargs -n 1 | while read yesno ; do
sed "$yesno" /etc/portage/package.use -i
done
;;
esac
fi
;;
*) echo "$2 $3 $4 $5 $6 $7 $8 $9" >> /etc/portage/package.use
;;
esac
;;
i) euses $3
;;
s) eix "$3"
;;
sync) sudo layman --sync-all ; emerge --sync ; eix-update
;;
U) exec emerge -vauND world
;;
i) exec emerge -va "$2 $3 $4 $5 $6 $7 $8 $9"
;;
mkconf) sudoedit /etc/make.conf
;;
*|-h|--help) echo "Использование: pkg [ключ] [параметры ключа]
u [USE] - операции с USE-флагами в файле /etc/portage/package.use
e - открыть файл в редакторе из '\$EDITOR' ("$EDITOR")
s - поиск в файле grep'ом
d - удаление строк из файла (в качестве параметра принимаются как номера строк, так и название пакета/флага)
i - просмотр информации о флагах (с помощью euses)
* - все иные значения будут записаны в файл
k [KEYWORDS] - операции с keywords-масками в файле /etc/portage/package.keywords
e - открыть файл в редакторе из '\$EDITOR' ("$EDITOR")
s - поиск в файле grep'ом
d - удаление строк из файла (в качестве параметра принимаются как номера строк, так и название пакета/флага)
* - все иные значения будут записаны в файл
i - установка пакета (emerge -av)
s - поиск по базе пакетов (с помощью eix)
sync - синхронизация баз layman, emerge и запуск eix-update
U - обновление системы (emerge -vauND world)
mkconf - открыть для редактирования файл /etc/make.conf (используя sudoedit)"
;;
esac
Нашел свой старый код.. Когда-то от нечего делать пытался написать некую обёртку ко всяким джентовским утилитам. До конца так и не дописал, были некоторые проблемы с кодом, которые мне решать было лень. Но сейчас залез в тот код и ужаснулся..
P.S. Файл немного урезан от оригинала, т.к. те же действия повторяются для разных файлов.
Да дженту хороша же, не спорю. Сам долго её юзал, потом просто надоело, захотелось чего-то нового.
Параметры скрипта все же несколько проще запоминать, т.к. если сам его пишешь — есть хоть какая-то своя логика. А вообще, он больше писался, чтобы объединить множество инструментов воедино.
Параметры запоминаю не сразу, в таком случае делаю текстовый файл:)))) Оттуда как чего надо копипейщу строчку и напильником ее, напильником.
А потом руки сами уже набивают автоматически. Я в свое время как с VMS-а пришел, тоже зависел от прокладок всяких, хелперов да алиасов, усилием воли отказался — они загоняют в жесткие рамки, если Вы понимаете, о чем я.
По мне так что параметры скрипта запоминать, что параметры утилит, один хрен. Плюс средства автодополнения...
Но код да... Хитровыдуманный:)
Параметры скрипта все же несколько проще запоминать, т.к. если сам его пишешь — есть хоть какая-то своя логика. А вообще, он больше писался, чтобы объединить множество инструментов воедино.
А потом руки сами уже набивают автоматически. Я в свое время как с VMS-а пришел, тоже зависел от прокладок всяких, хелперов да алиасов, усилием воли отказался — они загоняют в жесткие рамки, если Вы понимаете, о чем я.