Классный трюк со сценариями bash с массивами
Если вы много пишете bash-скрипты, то знаете, что есть несколько довольно изящных трюков, с которыми вы можете справиться. Bash — очень гибкий инструмент. Большинство пользователей Linux не осознают, насколько он мощный, и редко используют его. Но когда вам это нужно, оно всегда под рукой. Я много играю с bash и использую его для разных целей. Командная строка, безусловно, мой друг. С помощью команды вы делаете что угодно, но иногда самая простая вещь, например подсчет файлов в каталоге, может ускользнуть от вас. Для этого в качестве команды вы должны ввести что-то вроде ls -1 ~ / | wc -l. Не всегда легко запомнить. Но предположим, что вы можете создать простой сценарий bash, который будет подсчитывать количество файлов в каталоге, а также перечислять эти файлы. Вот это было бы круто … и применимо.
В этой статье я собираюсь познакомить вас с простым сценарием bash, который сделает именно это: подсчитывает и перечисляет количество файлов в каталоге. Сценарий bash довольно прост и использует массивы.
Что такое массив?
Если вы не знаете, что такое массив, не бойтесь. Массив — это просто систематическое расположение объектов. Обычно это расположение строк и столбцов. Конечно, есть гораздо более сложные определения массивов … особенно применительно к прикладному программированию. Но ради этого сценария bash можно безопасно остановиться на этом определении.
Сценарий
фигура 1
Скрипт для массива довольно прост. На рисунке 1 показано, как будет выглядеть сценарий, когда вы его редактируете в своем любимом редакторе. И для вашего удовольствия от копирования / вставки я даю вам сам код:
массив = (`ls`)
wd = `pwd`len = $ {# массив [*]}notify-send «У вас есть объекты $ len в $ wd.»я = 0в то время как [$ i -lt $ len]; делатьecho «$ i: $ {массив [$ i]}»пусть я ++сделанныйОбратите внимание, что в приведенном выше сценарии используются отличные уведомить-отправить команду Я недавно познакомил вас с. Этот сценарий использует массив для подсчета, перечисления и нумерации файлов в каталоге. Теперь, если вы посмотрите на код, вы увидите, что он также перечисляет файлы (и пронумеровывает каждый из них). Это непрактично с уведомить-отправить , поэтому вместо этого мы используем систему уведомлений только для информирования пользователя о количестве файлов в каталоге. Это нормально, потому что полный вывод будет в командной строке.Что вам нужно сделать, так это скопировать этот код в файл, сохранить файл (назовем его массив), а затем предоставьте этому файлу разрешения для исполняемого файла с помощью команды chmod ugo + x массив. Я даю ему права пользователя / группы / другого исполняемого файла на случай, если вы скопируете этот файл в / usr / bin .Естественно, этот сценарий немного ошибочен. Например, если вы скопируете этот скрипт в / usr / bin каталог, вы можете запустить его из любого каталога, и он даст вам весь необходимый результат. Однако, если вы попытаетесь запустить эту команду из диалогового окна запуска (нажмите F2), вы не получите никакого вывода. Таким образом, этот сценарий, как есть, ограничен командной строкой.фигура 2Когда вы запускаете сценарий из командной строки, результаты будут выглядеть так, как показано на рисунке 2. Здесь вы можете увидеть как уведомить-отправить результаты, а также распечатанные результаты в терминале. Довольно изящный трюк.Очевидно, этот сценарий немного ограничен, не так ли? Настоящая цель этого упражнения состояла в том, чтобы показать вам немного более продвинутый сценарий оболочки, а также то, как сценарий может взаимодействовать с уведомить-отправить команда.Вывод Создание сценариев оболочки — удивительно гибкий и полезный инструмент. Все те пользователи Linux, которые избегают командной строки, понятия не имеют, какой мощности им не хватает. С помощью этого простого скрипта вы можете изменить его или использовать для любого количества возможностей. Мы вернемся к массивам в сценариях оболочки и многому другому.