С тегом «bash»
Роясь на просторах винта нашёл один старый скриптик. писался он во времена, когда я не признавал ничего кроме fluxbox и консоли. Основное назначение - запись дисков из консоли. Но это не важно.
Вспомнился мне этот скрипт, когда его у себя нашёл потому, что из-за способа обработки парметров, принимаемых скриптом(т.е. -h - помощь, -d - директория и т.д.) пришлось как-то поковырять документацию. В принципе, ничего сложного и всё максимально упрощено, но может кому и пригодится подход.
В самом скрипе используется два подхода - приём команды и приём опций. Ну и плюс для совсем уж новичков - работа с функциями.
Бывает, приходится открывать окно терминала и набивать строки на клавиатуре. Например, пытаешься решить проблему, народ на форуме помогает, - какие строчки нужно добавить в такие-то файлы. Что-то удается скопировать и вставить, иное нужно набрать самостоятельно.
В файле
in содержатся строки вида %имя% %фамилия% %бал1% %бал2% %бал3% %бал4%, пример:
1
2
3
|
Вася Пупкин 4 3 2 1
Линус Торвальдс 1 2 3 4
Ричард Столлман 2 3 2 1 |
Нужно отсортировать по убыванию по сумме баллов и вывести %имя% %фамилия% %сумма баллов%
Всё нужно сделать 1 строкой
Решение
от aonick и
от xcr
Оригинальное условие:
На городской олимпиаде по информатике участникам было предложено выполнить 4 задания, каждое из которых оценивалось по 100 бальной системе. Известно что общее количество участников не превосходит 250 человек. Входной файл имеет вид:
<Фамилия> <Имя> <Баллы>
Пример файла:
Петрова Ольга 25 78 26 94
Калиниченко Иван 14 49 15 0
Напишите программу, которая выведет участников с суммой их баллов в порядке убывания
Концовку немного урезал =) Так же есть вариации:
- ...фамилию и имя участника, набравшего максимальное число баллов...
- ...трёх лучших участников...
- ..не набравших нужное количество баллов...
И в таком духе, в решении приведены ~50 строчники на турбо паскале
Задача уровня С4 на егэ по информатике =)
Думаю проверяющие не поймут решения на bash, а жаль
Иногда бывает, что система сильно загружена (компилируется что-то большое, переделывается видео с жесткими параметрами, слишком много табов открыто в firefox и т.д.), но хочется поиграть или посмотреть фильм в HD. При этом фильм или игрушка заметно тормозят. Что делать? Все очень просто - нас спасет renice :)
06.05.09 16:00
Суть функции заключается в убийстве процесса по части имени, в отличие от killall, что лично для меня намного удобнее.
Что бы стало яснее, привожу пример использования
nymin@home:~$ killall icewe
icewe: не завершён ни один процесс
nymin@home:~$ killps icewe
Послать сигнал -TERM процессу 2858 </usr/lib/iceweasel/firefox-bin>? [y/n]
В Debian и Ubuntu bash пропатчен специальным патчем, который добавляет функцию, обрабатывающую ввод несуществующей команды.
Просмотреть смонтированные разделы, а так же на сколько они используются можно с помощью команды df -Th
23.04.09 22:45
Многие (знакомые со старой проблемой с UDF) думают, что под Линуксом на UDF нельзя писать файлы размером более 4ГБ или даже 1ГБ. Во времена HD-рипов это не очень-то и приятно... Но на самом деле, это давно уже не так ;) Нам нужны: пакет udftools и загруженые модули udf и loop. Я написал скриптик, который автоматически создает и маунтит образ UDF нужного размера (DVD+9 и DVD-9, как и DVD+5 и DVD-5 на самом деле слегка различаются в размере!), остается только записать на него нужные файлы и прожечь сам образ.
Навеяно постом о
Быстром способе удалять из консоли несколько директорий за 1 раз..
Имхо, то что там описано (а именно разворачивание {foo,bar}) должен знать каждый кто хочет использовать консоль более эффективно.
А теперь ближе к делу.
У меня в
zshrc есть строка вызывающая dialog для выбора удаляемых каталогов и файлов в текущей директории. Так же сие дело повешено на хоткей в стиле емакс (^X^O)
1
2
3
4
|
function dialogrun; { rm -rf $(dialog --separate-output --checklist file 100 100 100 \
$(for l in $(ls -A); do echo "$l" "$(test -d $l && echo "dir" || echo "file")" 0; done) --stdout); clear }
zle -N dialogrun
bindkey -M emacs "^X^O" dialogrun |
Может кому и пригодится. Так же можно изменить функцию dialogrun не только для удаления, а для передачи имен файлов в другое место (тут уже от фантазии и потребностей зависит).
PS. Только будьте пожалуйста осторожны изменяя строку используя rm -rf, ибо штука опасная, смените лучше на ls от греха подальше
Уверен, что многие из нас собирают разную информацию и раскладывают по директориям (музыка, книжки, фотки).
Если у вас есть каталог, содержащий десять подкаталогов, и вы хотите удалить 4 из них, самый медленный способ -это вводить каждый раз команду.
rm -rf /home/ololo/lolo
rm -rf /home/ololo/boro
rm -rf /home/ololo/goro
rm -rf /home/ololo/yaolen
....
Согласитесь, нудно и долго.
Есть другой способ - использовать скобки.
rm -rf /home/ololo/{lolo,boro,goro,yaolen}
Быстрее?