Articles of оболочки

Существуют ли соглашения об именах для переменных в сценариях оболочки?

Большинство языков имеют соглашения об именах для переменных, наиболее распространенный стиль, который я вижу в сценариях оболочки, – MY_VARIABLE=foo . Является ли это конвенцией или это только для глобальных переменных? Что относительно переменных, локальных для скрипта?

Является ли тест или [или [более переносимым как между оболочками bash, так и между другими оболочками?

Я вижу, что могу сделать $ [ -w /home/durrantm ] && echo "writable" writable или $ test -w /home/durrantm && echo "writable" writable или $ [[ -w /home/durrantm ]] && echo "writable" writable Мне нравится использовать третий синтаксис. Являются ли они эквивалентными во всех отношениях и для всех отрицательных и краевых случаев? Существуют ли различия […]

Как работает четкая команда?

Недавно я пытался узнать больше о том, как работает оболочка, и смотрел, как работает clear команда. Исполняемый файл находится в /usr/bin/clear и, кажется, распечатывает пустую пустую строку (равную высоте терминала) и помещает курсор в верхнюю левую часть терминала. Выходной сигнал команды всегда одинаков, независимо от размера терминала: $ clear | hexdump -C 00000000 1b 5b […]

Захват расширения в имени файла

Как получить расширение файла из bash? Вот что я пробовал: filename=`basename $filepath` fileext=${filename##*.} Делая это, я могу получить расширение bz2 из пути /dir/subdir/file.bz2 , но у меня есть проблема с path /dir/subdir/file-1.0.tar.bz2 . Я бы предпочел решение, используя только bash без внешних программ, если это возможно. Чтобы сделать мой вопрос ясным, я создавал скрипт bash […]

Как вырезать (выбрать) поле из подсчета строки строки с конца?

Я знаю, как выбрать поле из строки с помощью команды cut. Например, учитывая следующие данные: a,b,c,d,e f,g,h,i,j k,l,m,n,o Эта команда: cut -d, -f2 # returns the second field of the input line Возвращает: b g l Мой вопрос: как я могу выбрать второй счетчик полей с конца? В предыдущем примере результатом будет: d i n

Являются ли два файла жестко привязанными?

Как определить, связаны ли два файла из командной строки? например, что-то связывает это: $ ls fileA fileB fileC $ is-hardlinked fileA fileB yes $ is-hardlinked fileA fileC no

Есть что-то вроде «split ()» JavaScript в оболочке?

Очень просто использовать split() в JavaScript для разбиения строки на массив. Что относительно сценария оболочки? Скажем, я хочу сделать это: $ script.sh var1_var2_var3 Когда пользователь дает такую ​​строку var1_var2_var3 , внутри скрипта он преобразует строку в массив, такой как array=( var1 var2 var3 ) for name in ${array[@]}; do # some code done