Вопросы с меткой [bash-scripting]
Сценарии Bash - это создание сценариев на языке оболочки Bash.
658 вопросов
65
голосов
2ответа
70k показов
Как ввести буквенный символ табуляции в оболочке bash?
Например, я хотел использовать утилиту сортировки с параметром -t, чтобы указать разделители табуляции, но sort -t "\t" не работает
25
голосов
3ответа
16k показов
Как обновить bash на Mac OS X Yosemite
Просто пытаюсь немного изучить скрипты bash. Моя старая версия Bash: Bash version 3.2.53(1)-release... Я обновил мой bash на Mac OS X Yosemite с помощью homebrew: brew update brew install bash Затем ...
23
голоса
8ответов
23k показов
Подавить трассировку выполнения команды echo?
Я запускаю сценарии оболочки от Jenkins, которые запускают сценарии оболочки с параметрами # шебанга !/bin/sh -ex. По словам Баш Шебанга для чайников?, -x , "заставляет оболочку печатать трассировку ...
20
голосов
4ответа
6k показов
Безопасно ли открывать файл, который пишется запущенным скриптом?
Я запускаю сценарий оболочки, который пишет в файл. Этот сценарий может занять много времени, и я хотел бы отслеживать частичный вывод, а не ждать завершения всего сценария. Безопасно ли открывать ...
20
голосов
3ответа
36k показов
Передача двух аргументов в команду с использованием каналов
Обычно нам нужно передать только один аргумент: echo abc | cat echo abc | cat some_file - echo abc | cat - some_file Есть ли способ передать два аргумента? Что-то вроде {echo abc , echo xyz} | cat ...
19
голосов
2ответа
7k показов
Написание сценариев оболочки, которые будут работать в любой оболочке (используя несколько строк shebang?)
Я только начал глубже разбираться в сценариях оболочки, и я всегда просто бросал свой сценарий в файл, отмечал его как chmod +x а затем делал /path/to/script.sh и позволял любому интерпретатору по ...
19
голосов
2ответа
70k показов
Как сравнить переменную с текстовой строкой, а не с целым числом, в операторе if/else?
В процессе написания сценария оболочки я столкнулся с проблемой следующего оператора if/else, который находится где-то посередине сценария: if [ $act -eq "add" ] then read - "add or update: " $comm ...
18
голосов
2ответа
9k показов
ZSH: Сбой команды чтения в bash-функции "read: 1: -p: no coprocess"
Редактировать: Кажется, работает в bash . Похоже, проблема связана с zsh . Если есть лучший сайт для публикации этого вопроса, дайте мне знать. Я пишу простой скрипт, который создает серию каталогов. ...
16
голосов
2ответа
9k показов
Префикс к каждому выводу команды во время выполнения
Я пытаюсь сделать модульный скрипт. У меня есть несколько скриптов / команд, которые вызываются из одного скрипта. Я хочу префикс вывода каждой отдельной команды. нелогич-: Мои файлы: allcommands.sh ...
15
голосов
1ответ
4k показов
Bash: опционально передавая аргументы команде
Я пытаюсь добавить аргументы для вызова команды зависит от другой переменной. Пожалуйста, посмотрите код сценария оболочки: curl \ $([ -z "${title}" ] || echo --data-urlencode title=${title}) \ ...
14
голосов
2ответа
16k показов
Правильно экранирование косой черты в bash-скрипте для использования с sed
Я пытаюсь определить размер файлов, которые будут скопированы при синхронизации двух папок, запустив rsync в сухом режиме, а затем суммируя размеры файлов, перечисленных в выводе rsync. В настоящее ...
13
голосов
5ответов
20k показов
Как обрезать файл по строкам?
У меня есть большое количество файлов, некоторые из которых очень длинные. Я хотел бы обрезать их до определенного размера, если они больше, удалив конец файла. Но я хочу только удалить целые строки. ...
12
голосов
4ответа
19k показов
Как получить и распечатать следующие N строк после попадания?
Я хотел бы выполнить поиск вхождения в текстовом файле, а затем распечатать следующие N строк после каждого найденного вхождения. Есть идеи?
12
голосов
2ответа
1k показов
Разница при использовании обратных кавычек в двойных кавычках и одинарных кавычек в Bash
Почему следующие два исполнения отличаются по выводу? (Мне нужны двойные кавычки для переменных в моей возможной команде) $ sudo su -c "echo `cat /root/root_file`" cat: /root/root_file: Permission ...
12
голосов
2ответа
7k показов
завершение bash для шаблонов имен файлов или каталогов
Я пытаюсь настроить скрипт завершения bash и у меня возникли проблемы. Я хотел бы настроить его так, чтобы перечисленные дополнения были либо файлами, соответствующими определенному расширению, либо ...
11
голосов
2ответа
2k показов
почему bash во время цикла не завершается при отправке по завершенной подкоманде?
Почему команда ниже не выходит? Вместо выхода цикл выполняется бесконечно. В то время как я обнаружил это поведение с помощью более сложной настройки, простейшая форма команды сводится к следующему. ...
10
голосов
1ответ
19k показов
Как переключить / изменить идентификатор пользователя в скрипте bash для выполнения команд в том же скрипте?
Есть ли способ переключить идентификационные данные пользователя в скрипте (выполняемом как root как часть процесса установки), чтобы выполнить некоторые команды без вызова внешнего скрипта, а затем ...
9
голосов
2ответа
12k показов
Как получить полный путь к целевой ссылке
Если у меня есть символическая ссылка /var/opt/foo созданная с помощью ln -fs /path/to/target/dir foo . Как я могу в скрипте, который видит только ссылку get /path/to/target/dir? То, чего я хочу ...
9
голосов
1ответ
8k показов
Автоматизированное взаимодействие с Google Chrome
Ладно, СУ, у меня есть забавный орешек. У меня 8 экранов, установленных в линию, и все они подключены к одному мощному G5 под управлением Snow Leopard (да, 4 видеокарты; шириной около 15 000 ...
8
голосов
5ответов
35k показов
awk / sed для печати только до символа подчеркивания
Как я могу использовать awk или sed для печати строки только до первого символа подчеркивания? До: host100_044 2 host101_045 2 host102_046 2 После: host100 host101 host102
8
голосов
4ответа
2k показов
Как правильно восстановить настройки при запуске скрипта с использованием "исходного кода"?
Я пишу сценарий, который должен быть выполнен с использованием source , потому что его задача заключается в изменении среды. Во время сценария я хочу использовать set -e чтобы любая ошибка остановила ...
8
голосов
1ответ
2k показов
Как заставить sed опускать не совпадающие строки?
В следующем примере sed сопоставляет строки, начинающиеся с a или a c и печатает первый символ этой строки (a или c): $ echo "ag bh ci dj ek fl" | sed 's/\(a\|c\)./\1/' # Matches lines starting with ...
8
голосов
2ответа
10k показов
Как получить список всех дочерних процессов, порожденных скриптом
Контекст: Пользователи предоставляют мне свои собственные скрипты для запуска. Эти сценарии могут быть любого типа, такие как сценарии для запуска нескольких программ с графическим интерфейсом, ...
8
голосов
3ответа
601 показов
Какие команды я бы использовал для последовательного создания двух дочерних процессов?
Я хочу порождать два дочерних процесса, но подождите, пока первый не достигнет определенной точки своего выполнения (которую можно определить, изучив stdout), прежде чем порождать второй. Я не ...
7
голосов
5ответов
5k показов
Удалите все файлы (кроме четырех самых новых) в каталогах, используя скрипт Bash
Я ищу скрипт Bash, который войдет в список каталогов и удалит все, кроме четырех самых последних созданных файлов. Как я могу это сделать?
7
голосов
2ответа
2k показов
Записать n байтов из файла в другой в Bash
Здравствуйте, как я могу записать n байтов из одного файла в новый файл, начиная с позиции k используя Bash? Например, если n = 60, k = 1 и размер файла = 100, тогда: 2-й файл будет состоять из 1-го ...
7
голосов
4ответа
38k показов
Отредактируйте XML-файл, используя скрипт / команду оболочки
Мне нужно сделать это с помощью сценария или команды Unix. Существует файл XML в /home /user /app /xmlfiles, например Я хочу редактировать тип автора в художественной литературе как местный. Мне ...
7
голосов
2ответа
5k показов
как правильно использовать $ 1 в псевдониме с двумя аргументами
Мне нужно сравнить несколько файлов, и я не хочу постоянно менять команду в двух местах. поэтому я хочу создать псевдоним в Bash. alias gd='gvimdiff $1 dir/$1' так что я могу получить gvimdiff ...
6
голосов
2ответа
89 показов
Обрабатывать файлы в папке, которые ранее не обрабатывались
У меня есть ряд файлов в каталоге, которые мне нужно выполнить с помощью сценария. Когда действие выполнено, я хочу сохранить журнал о том, что файл был обработан, чтобы при следующем запуске ...
6
голосов
5ответов
2k показов
Как переместить все родственные папки в одну папку?
Я извиняюсь, что это кажется таким тупым вопросом, но я не могу позволить себе все испортить. У меня есть несколько папок, таких как: / Пользователей / меня / Foo / oops1 / Пользователей / меня / Foo ...
6
голосов
1ответ
2k показов
Получить имя файла без расширения в Bash
У меня есть следующий цикл for для индивидуальной sort всех текстовых файлов внутри папки (т.е. создание отсортированного выходного файла для каждого). for file in *.txt; do printf 'Processing %s\n' ...
6
голосов
3ответа
12k показов
Обрабатывать каждую строку файла в bash
Когда я хочу что-то сделать с каждой строкой в файле, я обычно пишу cat my_file | while read a do gzip "$a" done GZIP это просто пример, это может быть что угодно. Мне интересно, есть ли другой ...
6
голосов
1ответ
921 показов
Переменные Bash с пробелом (каталоги)
Я пытаюсь отобразить все файлы в /foo , сохраняя пробелы в перечисленных каталогах. В настоящее время каталог с именем "bar1 bar2" будет отображаться как /path/to/foo/bar1/ then /bar2 затем file.txt ...
6
голосов
1ответ
15k показов
cp: not stat '/some/path/*': нет такого файла или каталога
Мой код скрипта: var="/some/path" cp "$var*" "/another/path" Тогда это бросает: cp: cannot stat '/some/path/*': No such file or directory Я попробовал это и получил ту же ошибку: cp "${var}*" ...
6
голосов
3ответа
502 показов
Пользовательские манипуляции с пространством строк с помощью sed
Следующая команда: head -n 1 $FILE | tail -n 1 Извлекает текст из первой строки $FILE . Формат каждой строки в $FILE выглядит следующим образом: 1 2 3 4 2 3 3 4 5 4 5 6 7 8 9 Как видите, каждый ...
5
голосов
2ответа
14k показов
Замените обратную косую черту ("\") на прямую косую черту ("/") в переменной в bash
Я хочу заменить обратную косую черту (\) на прямую косую черту (/) в переменной в bash. Я попробовал это так, но это не работает: home_mf = ${home//(\)//(/)} Например, я хотел бы \a\b\c -> /a/b/c
5
голосов
3ответа
6k показов
Как использовать флаг -ne для echo в сценарии оболочки?
Я пытаюсь создать сценарий оболочки, чтобы взять аргумент и использовать его для именования вкладки терминала. Поэтому, если имя скрипта равно tabnm, tabnm "test" должен переименовать текущую вкладку ...
5
голосов
3ответа
3k показов
messaging.sh: строка 29: [: отсутствует `] '
Я не знаю, плохо это или плохо. Мой сценарий все еще работает нормально, но я должен это исправить? #!/bin/sh #This script will send text and maybe images to other computers via ssh and scp. ...
5
голосов
2ответа
492 показов
Манипулирование строкой с датой в соответствии с форматом даты% Y% m% d
Мне нужно создать файлы журналов, которые по сути представляют собой метки даты с префиксом yp_ и суффиксом .log , а также с манипулируемым номером дня: $ touch yp_$(echo "$(date +%Y%m%d)-10" | ...
5
голосов
1ответ
48 показов
как проверить, различаются ли две директории (нет списка файлов)
Я хотел бы получить двоичную информацию независимо от того, различаются два каталога или нет. Я не хочу перечислять разные файлы. Просто бинарный результат, который можно использовать в операторе if. ...
4
голоса
2ответа
10k показов
Как объединить строки из списка в скрипте bash?
В качестве примера: List="A B C D" for I in $List do OUT=$OUT" -$I" done Когда я запускаю это, результат: " -A -B -C -D" но хочу чтобы это было: "-A -B -C -D" Как объединить без пробела? Это кстати ...
4
голоса
2ответа
584 показов
Является ли подоболочка выполняемой со строкой здесь?
Я пытаюсь лучше организовать bash-скрипт как часть переписывания / реорганизации, и мне интересно, что такое "наилучшая практика" в следующей ситуации: ymd=`echo "${NOEXT}" | egrep -o -m 1 ...
4
голоса
3ответа
3k показов
добавление временной метки к результатам tail -f
Мне бы хотелось, чтобы перед каждой строкой, выходящей из «выходного файла tail -f», была напечатана временная метка, чтобы я знал, когда печатается каждая строка. Что-то вроде: [...] ...
4
голоса
1ответ
876 показов
Функция BASH не экранирует управляющие символы
Эй, ребята, у меня есть функция, которую я использую для поиска вещей, но, к сожалению, каждый раз, когда я передаю ей управляющий символ ($intVal или testing : т.д.), Он задыхается. Мне было ...
4
голоса
1ответ
739 показов
Как отфильтровать вывод из команды в OS X
Мне нужно отслеживать записи из неизвестного приложения в известный каталог через creatbyproc.d. Я собираюсь оставить это включенным до 36 часов, что будет невозможно без фильтров без заполнения ...
4
голоса
1ответ
7k показов
Обрабатывать имя файла с пробелами внутри Bash-скрипта
В моем Bash-скрипте я должен обрабатывать имена файлов с пробелами. Вот важные строки в моем скрипте: mp3file="/media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\ Vol.5\ \[MP3PRO\]/01\ -\ Nofx\ -\ Pump\ ...
4
голоса
1ответ
526 показов
Как получить результат автозаполнения bash в виде строки?
То, что я ищу, это не то, как добавить автозаполнение в bash для другой программы, а способ получить результат того, что произошло бы в bash, в строку: autocomplete "/etc/apa" вернется /etc/apache2/ ...
4
голоса
1ответ
79 показов
Файлы с пробелом в имени
У меня есть переменная с именем var, которая хранит список файлов в каталоге. Я перебираю все файлы, и если я нахожу каталог, я выводю "Каталог" на экран. код ниже: var=$(ls dir) for file in $var; do ...
4
голоса
3ответа
123 показов
Почему некоторые команды не принимают перенаправление ввода?
Например, echo: [aesteban@localhost ~]$ cat tmp.txt Angel [aesteban@localhost ~]$ echo < tmp.txt [aesteban@localhost ~]$ Как видите, вывод - просто пустая строка. Согласно моим прочтениям, некоторые ...
4
голоса
1ответ
3k показов
Невозможно изменить размер панели tmux из скрипта bash
Предпосылки и проблемы: Я создал скрипт tmux, чтобы открыть несколько окон. Это прекрасно работает, но затем я хотел разместить вертикально разделенную панель в одном окне и изменить ее размер до 5 ...