Beri bash i ebash / Говнокод #3242 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
#!/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. Файл немного урезан от оригинала, т.к. те же действия повторяются для разных файлов.

Запостил: Iliander Iliander, (Updated )

Комментарии (3) RSS

  • А-а-а! Только дженту не трожьте!!!!

    По мне так что параметры скрипта запоминать, что параметры утилит, один хрен. Плюс средства автодополнения...

    Но код да... Хитровыдуманный:)
    Ответить
    • Да дженту хороша же, не спорю. Сам долго её юзал, потом просто надоело, захотелось чего-то нового.

      Параметры скрипта все же несколько проще запоминать, т.к. если сам его пишешь — есть хоть какая-то своя логика. А вообще, он больше писался, чтобы объединить множество инструментов воедино.
      Ответить
      • Параметры запоминаю не сразу, в таком случае делаю текстовый файл:)))) Оттуда как чего надо копипейщу строчку и напильником ее, напильником.
        А потом руки сами уже набивают автоматически. Я в свое время как с VMS-а пришел, тоже зависел от прокладок всяких, хелперов да алиасов, усилием воли отказался — они загоняют в жесткие рамки, если Вы понимаете, о чем я.
        Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8