Вопросы с тегами [bash]

0

голосов
0

ответ
5

Просмотры

Bash скрипт, чтобы извлечь все конкретные ключевые значения из неструктурированного файла JSON

Я пытался извлечь все значения из определенного ключа в файле ниже JSON. { "Has_additional" ложь "страница": 1, "метка": [{ "Имя": "ххая", "реверсия" ложь "start_ts": ххая "image_id": "хххххй", "LAST_MODIFIED" : "Пт, 12 апреля 2019 23:05:04 -0000", "manifest_digest": "sha256:", "docker_image_id": "хххх", "размер": 647596178}, { "имя": "хххх", " реверсии "ложь "start_ts": хххх "image_id": "хххх", "LAST_MODIFIED": "Вт, 2 апреля 2019 19:27:40 -0000", "manifest_digest": "sha256:", «Docker_image_id»: «ххххй», «размер»: 646028604}]} Я использовал следующий код, чтобы получить image_id ключевых ценностей. эхо new.json | .tags JQ»[] | . [ «Image_id»]»Я получаю ниже сообщение об ошибке. ошибка разбор: Invalid буквального в строке 2, столбец 0 Я думаю, что любой файл в формате JSON не в нужном формате ИЛИ эхо команды для вызова файла Json неправильно. Требуемая мощность: хххххх хххх Я новичок в колотить, любая помощь очень ценится. столбец 0 Я думаю, что любой файл в формате JSON не в нужном формате ИЛИ эхо команды для вызова файла Json неправильно. Требуемая мощность: хххххх хххх Я новичок в колотить, любая помощь очень ценится. столбец 0 Я думаю, что любой файл в формате JSON не в нужном формате ИЛИ эхо команды для вызова файла Json неправильно. Требуемая мощность: хххххх хххх Я новичок в колотить, любая помощь очень ценится.
1

голосов
3

ответ
13k

Просмотры

неожиданные EOF при поиске соответствия `«»при использовании СЭД

Да, этот вопрос задавали много раз, а в ответ он сказал нам \ бежать символ перед одинарной кавычки. В приведенном ниже коде не работает: LIST = "(96634, IV14075295, TR14075685' )" LIST = `Эхо $ LIST | СЕПГ 's /, / AAA / г' `Эхо $ LIST # Вывод: (96634AAAIV14075295AAATR14075685' ) # Теперь я хочу процитировать список список элементов =` Эхо $ LIST | СЕПГ 's /, / \', \ '/ г' `# Давать ошибку # Выход 0 Ошибка: строка 7: неожиданные EOF при поиске соответствия` '' строка 8: ошибка синтаксиса: неожиданный конец файла
Bharat
1

голосов
7

ответ
93

Просмотры

Замена символов в каждой строке на файл в Linux

У меня есть файл с различными словами в каждой строке. Моя цель состоит в том, чтобы заменить первый символ прописной буквы и заменить 3-й символ «#». Например: футбол будет обменен на -> Foo # бал я пытался думать об использовании AWK и sed.It не помог мне, так как (к моему знанию) СЭДУ нужен точный ввод символов и AWK может напечатать нужный символ, но не изменения Это.
Ben Zoker
1

голосов
1

ответ
81

Просмотры

вывода STDOUT получение записывается в пользовательский дескриптор файла

У меня есть функция, которая открывает дескриптор файла для Fd 3, который перенаправляет в файл. Проблема у меня есть, что STDOUT от других функций становится записывается в файл, который FD3 пишет в. Таким образом, код является то, как показано ниже. Я не понимаю, как открытие файла дескриптора 3 в функции start_report позволяет выход из журнала или любой другой функции, которая записывает в STDOUT, чтобы записать в /tmp/testfile.log. Странно то, что не все STDOUT становятся написано, берейся 3, только некоторыми из них. start_report () {Exec 3> /tmp/testfile.log кошка
todd1215
1

голосов
2

ответ
546

Просмотры

Многопоточность пинг внутри BASH скрипта

Я имел взгляд вокруг здесь и там, кажется, только один вопрос, поднятый в отношении к многопоточности пинга внутри среды BASH. Код данных = $ (/ DEV / нуль и эхо $ линия достижима || эхо $ линия вниз сделана Вопрос в том, что он перебирает в IP-адрес диапазон внутри файла и отчетов все IP-адрес, достижимо, когда на самом деле только 3 из / 24 достижимы ... Я пытался замедлить сканирование вниз, добавляя -W 1 к пингу, но это приводит к некачественной производительности и требует использования многопоточности
Danny Watson
0

голосов
2

ответ
15

Просмотры

Без учета регистра поиска между двумя строками в файле

У меня есть файл построен следующим образом: # комментарий с ключевым словом One некоторые код здесь и еще немного кода # еще один комментарий с ключевым словом Два некоторые кода # больше комментариев и ключевых слов Три много кода я пытаюсь извлечь комментарии и соответствующие строки кода учитывая ключевое слово, в регистронезависимом образом. Для примера: $ кошачьей file.txt | find_by_keyword один три # комментария с ключевым словом One некоторого кодом здесь и еще несколько кодом # больше комментариев и ключевыми словами Три лота кода я раньше использовал AWK «/^#.*('$se').*$/,/^$/ », где $ себе регулярное выражение, я построю из предоставленных ключевых слов ((один | два)). Тем не менее, я не мог заставить его быть чувствителен к регистру. Это не кажется хорошей идеей переставлять пользовательский ввод с вариантами случаев ... Любые идеи?
marshmcintire
1

голосов
2

ответ
32

Просмотры

как создать массив с динамическим именем в Баше

Пример Я хочу, чтобы размер каждого расположения. У меня есть многомерное расположение. массив = ( "SRV_1 = (e1 e2 e3 e4)" "SRV_2 = (e1 e2)") для ELT в "$ {массив [@]}"; сделать Eval $ ELT; сделано CANT_SRVS = "$ {# массив [@ ]} для ((= 1; я
Matias Angeluk
1

голосов
1

ответ
63

Просмотры

Почему кавычки в сценарии оболочки ведут себя по-разному от кавычек в командах оболочки?

Я использую WsL (Ubuntu 18.04) на Windows 10 и Баш. У меня есть файл filename.gpg с содержанием: экспорт SOME_ENV_VAR = '123' Теперь я бегу следующие команды: $ $ (GPG -d filename.gpg) $ эхо $ SOME_ENV_VAR '123'
Leo Jiang
1

голосов
1

ответ
41

Просмотры

Как выйти из режима редактирования текстового файла, когда пользователь EXIT записи?

Проблема: Я хочу, чтобы найти правильный путь, чтобы выйти из редактирования текстового файла, когда пользователь запись EXIT в редактировании файла. ! Автор сценария: # / бен / Баш потрогать $ 1 ЛИНИЯ кошка чтения> $ 1, если [[ «$ ЛИНИЯ == "EXIT"]], а затем выйти из фи
Sukhwinder Saini
0

голосов
0

ответ
10

Просмотры

Bash с несколькими командами, белый список несколько встроенных команд

Попытка открыть Баш оболочку с возможностью команды ограничены. Пробовал параметры командной строки, такие как -r ограничения, но не дает желаемого результата. Также пробовали shopt & неустановленные команды. Баш --noprofile --noediting --verbose --version --init-файл test.sh переменная не установлена ​​Ls shopt -u -o История Начало Баш оболочки с только несколько встроенных команд. Например, компакт-диск, LS, кошка только. Использование такой оболочки будет только для чтения целей для каталогов Навигационной Listing & File просмотра цели
Kunal G
1

голосов
1

ответ
44

Просмотры

BASH - Выполнить 6 сценариев, но только 3 совмещены в то время, и если одна законченные затем начать с другим [дубликатом]

Этот вопрос уже есть ответ здесь: Баш скрипт для запуска постоянного количества рабочих мест в фоновом режиме 3 ответов. У меня есть простой Баш скрипт, где я запустить 3 в то же самое время, и когда они сделаны, они начинают со следующим 3, как это: command1 & command2 & command3 & ждать command4 & command5 & command6 и выхода Но как я могу это сделать, так что я всегда запустить 3 из них в то же время и не ждать, пока остальные три? позволяет говорить Command1 и Command2 закончен, но command3 еще бежать, то я хочу command4 и command5, чтобы начать так что всегда есть 3 команды работает. Спасибо
1

голосов
0

ответ
907

Просмотры

Get mandatory arguments for getopts

Я хочу сделать некоторые флаги и соответствующие аргументы в качестве обязательных в getopts. То, как я делаю это, проверяя, если аргумент был принят или не обязательный флаг, например, так (флаг для -i и это аргумент должен быть обязательно): В test.sh: в то время как getopts «я: п: d: г: р: с: л:»неавтоматического; сделать дело $ выбрать в I) thefile = $ OPTARG ;; п) Размер = $ OPTARG ;; г) Dmax = $ OPTARG ;; г) RMSD = $ OPTARG ;; р) штраф = $ OPTARG ;; с) выборки = $ OPTARG ;; л) войти = $ OPTARG ;; з) Printf «Использование:` $ 0` базовое имя опции -i [input_file.txt] \ п \ -i входной файл \ п \ -п размер \ п \ -d расстояние \ п \ -r rflag \ п \ р \ PFLAG п \ -l 0/1 для создания файла журнала (опционально, по умолчанию = 1) \ п \ -h для справки \ п ";; \? ) Эхо "Неизвестный вариант: - $ OPTARG"> & 2; Выход 1 ;; :) Эхо " 2 выхода 1 ц Проблема состоит в том, что можно запустить скрипт как так: ./test.sh -i -n 4 и он все еще работает со значением -i, как «-n». Как я могу сделать это Foolproof, поэтому флаг всегда используется и используется с допустимым строковым аргументом для него? 2 выхода 1 ц Проблема состоит в том, что можно запустить скрипт как так: ./test.sh -i -n 4 и он все еще работает со значением -i, как «-n». Как я могу сделать это Foolproof, поэтому флаг всегда используется и используется с допустимым строковым аргументом для него?
swa_mi
1

голосов
2

ответ
66

Просмотры

AWK команды в файле дает ошибку при выполнении в цикле

file_data.txt 73 | 8 | 42,320000 | 1559260800000 | 1 | 9667 | 0,00 | 42,320000 || 1485613678440 | 153 | 8 | 35,680000 | 1559260800000 | 1 | 10899 | 0,00 | 35,680000 || 1482480306523 | 2503 | 8 | 93,390000 | 1559260800000 | 1 | 6106 | 0,00 | 93,390000 || 1484304241803 | 2672 | 8 | 49,990000 | 1559260800000 | 1 | 7754 | 0,00 | 49,990000 || 1482064270543 | AWK_COMMANDS.txt AWK -F '|' '$ 2 == 3280 {печать}' file_data.txt AWK -F '|' «$ 2 == 3281 {печати}» file_data.txt Я бег ниже в то время как петля во время считывания строки этого сделана $ строки <AWK_COMMANDS.txt Я получаю ниже AWK ошибки: ЦМД. линия: 1: «$ 2 AWK: CMD. линия: 1: ^ недопустимый символ ''»в выражении AWK: CMD. линия: 1: «$ 2 AWK: CMD. линия: 1: ^ недопустимый символ «»»в выражении, когда я выполнить ту же команду в консоли непосредственно работает. Я попытался убежать и двойные кавычки. Это приводит тот же
Ashish
1

голосов
1

ответ
296

Просмотры

Запуск задачи Gradle из Intellij

Я обычно работаю Gradle задачу (xx.sh файлы) в Cygwin и мне интересно, если я могу запустить их из моего IDE, Intellij. Я установил плагин BashSupport, но не имею ни малейшего представления о том, как создать конфигурацию запуска Баша. Своего рода, шаг за шагом инструкции будут оценены, так как я очень новый. Кроме того, кто-то может сказать мне, что это хорошо / плохо о выполнении задач из Intellij, а не от Cygwin?
momo
1

голосов
0

ответ
121

Просмотры

порт исключить шаблон из inotifywait в fswatch

Поэтому у меня есть это регулярное выражение исключает шаблон, который отлично работает с inotifywait на Linux:. * \ \ Ш + \ \ ш {6} Теперь я хочу портировать его на fswatch на MacOS и использовать с -e или -eE флага... Что есть я пытался до сих пор без везения: -e ". * \ \ Ш + \ \ ш {6}." -Ее»* \.. [[: Альфа:]] + \ [[:. Альфа:] ] {6} «-e». * \ .. + \ .. {6}»# не точно, но я действительно отчаянным :) Я также попробовал эти модели с различными комбинациями одинарных и двойных кавычек и с -e или -аЯ комбинация.
valignatev
1

голосов
1

ответ
46

Просмотры

Bash: Appending different strings to specific lines in a file

скажем, у меня есть файл, который выглядит следующим образом: The Way Direct 5,0 0,0 3,0 2,0 0,0 0,0 0,0 0,0 1,0 0,0 0,0 2,0 3,0 4,0 6,0 0,000 1,000 2,000 1,0 2,0 3,0 4,0 5,0 6,0 3,0 2,0 0,0 я хотел бы изменить таким образом, чтобы это выглядит следующим образом: Путь прямого 5,0 0,0 3,0 U 2,0 0,0 0,0 U 0,0 0,0 1,0 U 0,0 0,0 2,0 U 3,0 4,0 6,0 U 0.000 1.000 2.000 A 1,0 2,0 3,0 4,0 5,0 6,0 3,0 2,0 0,0 A Таким образом, после того, как линии «Direct »Я„U“добавляется к следующим х строкам, а затем в строке„0.000 1.000 2.000“я добавляю„а“к этой линии, и всем тем после него. Другой способ смотреть на это, я добавить «U» в строках 4-8 и добавить «A» до 9-12. Похоже, AWK может быть лучшим способом сделать это. Я знаю, что если я использую «СЕПГ -e„s / $ / U /“, он будет добавляемых U до конца всех линий ... но есть способ сделать это для конкретных линий, а также добавить «А»? Спасибо! Редактирование: Я также попытался выбирая отдельные строки, используя патч в -n '4, 9p. Тем не менее, я не уверен, как добавить это добавление строк, как: SED -n «4,8p» | СЕПГ -e 's / $ / U /' myfile.txt. Тем не менее, что добавляет U ко всем линиям.
J. P.
1

голосов
0

ответ
188

Просмотры

с помощью команды управления ца в Баше скрипта дает необъяснимые результаты

Я посылаю кадры в пакетах от клиента к серверу на сервере, я хочу, чтобы сформировать свой трафик. Я использую этот скрипт для управления трафиком. Во-первых до 80 кбитов после 10 секунд до 40 кбитов. (Я знаю, что это смехотворно низкой, я обычно использую большие значения) #! / Bin / Баш datenrate = 80 datenrate2 = 40 эхо "настройки DataRate до $ {datenrate}" потрогать started.info SUDO дц Qdisc дель Dev ens3 корень Sudo дц Qdisc добавить Dev ens3 обрабатывать 1: корень HTB по умолчанию 11 Судо класс дц добавить DEV ens3 родителя 1: Classid 1: 1 ставка HTB $ {} datenrate кбит Судо дц класс добавить DEV ens3 родитель 1: 1 ClassID 1:11 ставка HTB $ {datenrate} кбит эхо "работали" MSECONDS = $ (($ (дата +% S% N) / 1000000)) конечный момент время = 0, а: делать конечный момент = $ ((($ (дата +% S% N) / 1000000) - $ MSECONDS )) если [$ 10000 -GE конечного момента] затем SUDO дц Qdisc дель Dev ens3 корневой SUDO TC добавить Dev дисциплиной ens3 ручку 1: корень HTB по умолчанию 11 Судо класс ца добавить DEV ens3 родительских 1: ClassID 1: 1 HTB скорость $ {} datenrate2 кбитом Судо дц класс добавить DEV ens3 родительского 1: 1 ClassID 1:11 HTB скорость $ {} datenrate2 кбита контакта calledthrottle.info перерыва Fi сделан эхом "10 сек в течение - создание DataRate падения до $ {datenrate2} кбит" в то время: Do конечного момент = $ ((($ (дата +% S% N) / 1000000) - $ MSECONDS)), если [$ конечного момента -GE 20000], а затем Sudo дц-дель-DEV дисциплина ens3 корень эхо «установлен нормальный» перерыв фи сделали сенсорный ended.info на моем клиенте сгенерировать лог-файл, который я сюжет с GNUPLOT и я как рассчитать средний uploadspeed на сервере и на клиенте , В этом случае 2740 кбит / с. Могу ли я не использовать инструмент ца правильно? Изображение моих результатов, полученных с GNUPLOT: скорость загрузки дц Qdisc показать Dev ens3 дает мне Qdisc pfifo_fast 0: корень refcnt 2 полосы 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1, который Im не в состоянии удалить с SUDO дц дисциплина дель DEV ens3 корень Был бы вид, если кто-то может мне точку в правильном направлении и может объяснить, почему существует такая высокая скорость загрузки, поэтому есть кадры, поступающие через с гораздо более высокой пропускной способности, то в форме. Спасибо. Дополнение Ok советовали скорость загрузки 80 кбит в дц дает мне около 80 * 8 = 640 килобит / сек. Тем не менее, не объясняет колебания дохода пакета Дополнение Ok советовали скорость загрузки 80 кбит в дц дает мне около 80 * 8 = 640 килобит / сек. Тем не менее, не объясняет колебания дохода пакета Дополнение Ok советовали скорость загрузки 80 кбит в дц дает мне около 80 * 8 = 640 килобит / сек. Тем не менее, не объясняет колебания дохода пакета
Fulion
1

голосов
2

ответ
63

Просмотры

Многопроцессном с общей переменной в Баш

Я пытаюсь добиться динамического прогресс бар в Баш скрипт, вид мы видим при установке новых пакетов. Для того, чтобы сделать этого, randomtask бы вызвать Progressbar сценарий как фоновая задача и кормить его с некоторыми целыми значениями. Первый сценарий использует трубу для подачи второй. #! / Bin / Баш # randomtask pbar_x = 0 # процент прогресса pbar_xmax = 100 в то время как [[$ pbar_x = $ pbar_xmax]]; делать эхо «$ pbar_x» сон 1 сделано | ./progressbar & # сделать что-то ((pbar_x ++)) #, когда задача выполнена ((pbar_x = pbar_xmax)) Таким образом, второй сценарий должен постоянно получать целое число, и распечатать его. #! / Bin / Баш # прогрессбар в то время [1]; читаем й эхо «прогресс: $ х%» сделана Но вот, второй сценарий не получает значения, как они обновляются. Что я сделал не так ?
Gabriel Forien
1

голосов
1

ответ
50

Просмотры

Bash скрипт неудачи, но часть работает

Может кто-нибудь видит ничего плохого в следующем? Я смотрел снова и снова и не могу видеть проблему, но его неспособность создать SQL дамп и никаких смол не создаются. Переменные будут иметь свои данные, очевидно. Я проверил это все правильно. #! / Bin / Баш SITE = "" PATH = "" SERVER = "" DBUSER = "" DB = "" DBPW = "" ДАТА = `дата«+% d-% m-% y-% H-% M «` деготь -czf ~ / резервного копирования / $ {DATE} - $ {SITE} .tar.gz \ / вар / сайты / $ {PATH} / public_html туздЫшпр -f \ -u $ {DBUSER} $ {DB} \ - р $ {DBPW} \ -h $ {SERVER}> ~ / резервного копирования / $ {DATE} -db - $ {SITE} .sql найти ~ / резервный -mtime +3 -exec гт -f {} \; Целью кода является создание резервной копии моих файлов сервера и базы данных. Скрипт работает через CRON.
ccdavies
1

голосов
0

ответ
222

Просмотры

Почему = 0 код возврата и не стандартный вывод для моего subprocess.run?

Простая программа python3 имени print-pid.py работает: кошка print-pid.py импорт ОС из печати импорта сна времени ( «моего ПИД-», os.getpid ()) сон (1000) Выход для Python3 печати-PID .py это: мой ПИД- 5421 Для того, чтобы получить идентификатор процесса с командой Баш. пс Окс | Grep «Python3 print-pid.py» | Grep Grep -v | AWK «{печать $ 2}» 5421 Я Вань, чтобы получить идентификатор процесса в программе Python3 print-pid.py, когда он работает с модулем sbuprocess питона. Это моя попытка здесь: импорт подпроцесс CMD = "пс Окс | Grep 'Python3 print-pid.py' | Grep Grep -v | AWK '{печать $ 2}'" результат = subprocess.run (CMD, стандартный вывод = subprocess.PIPE , оболочки = True) печать (результат) результат confued меня. CompletedProcess (арг = "пс Окс | Grep 'Python3 print-pid.py' | Grep Grep -v | AWK '{печать $ 2}'", = 0 код возврата, стандартный вывод = Ь ' Eturncode = 0 означает, что моя команда Баша выполнить успешно, почему стандартный вывод = Ъ «» вместо стандартного вывода = b'5421' ? Спасибо за Allan Заменит и тест предложение в комментарии. Для команды Баш пс Окс | Grep 'python3': импорт подпроцесс CMD = "пс Окс | Grep 'python3'" результат = subprocess.run (CMD, STDOUT = subprocess.PIPE, оболочки = True) печати (результат) выход : CompletedProcess (арг = "пс Окс | Grep 'python3'", код возврата = 0, STDOUT = b'debian9 6569 0,0 0,2 31916 9376 очки / 0 S + 11:04 0:00 python3 печати р \ ndebian9 6844 0,0 0,2 39860 11440 PTS / 2 S + 11:13 0:00 python3 \ ndebian9 6929 0,0 0,0 16980 948 очки / 2 S + 11:17 0:00 Grep python3 \ N ') Однако для команды Баш пс Окс | Grep' python3 print-pid.py ': импорт подпроцесс CMD = «пс Окс | Grep'
scrapy
1

голосов
1

ответ
59

Просмотры

После симлинки с находкой, чтобы вернуть файл символическая указывает на, а не самого линке

Я использую обычно использует tmutil для управления Timemachine вместо графического интерфейса пользователя, который имеет некоторые недостатки, чтобы сделать его обжалованием в массы. Я, как правило, имеет много дисков, прикрепленные к моему компьютеру, на данный момент у меня есть 11 с двадцатью всего смонтировали разделы, но диски и paritions изменить, как я работаю на / с ними. Иногда многие в то время. Я написал одну гильзу с целью сообщить о статусе исключения всех дисков в / Volumes / директории и псевдонимами к нему для простого повторного использования. псевдоним tmutilvol = "найти / Volumes / -maxdepth 1 -exec tmutil isexcluded {} \;" Он работает, а в основном. Типичный вывод выглядит это, [Включено] / Volumes [Исключенный] / Volumes / резервное копирование Lion [Исключенный] / Volumes / Резервные копии [Исключенный] / Volumes / Chris [Исключенный] / Volumes / Эль Capitan Temp холдинг [Исключенный] / Volumes / Font [Исключенный] / Volumes / Аид [Исключенный] / Volumes / ИМАК Bad [Исключенный] / Volumes / ИМАК Clone [Исключенный] / Volumes / ИМАК Clone Нового [Исключенный] / Volumes / ИМАК ELCAP [Исключенный] / Volumes / ИМАК HD [Исключенный] / Volumes / IMAC HD New [Исключенные] / Volumes / ИМАК HS Clone [Исключен] / Volumes / Macintosh HD Clone 1 [Исключен] / Volumes / maclaptop [Исключен] / Volumes / Старый Laptop [Исключен] / Volumes / Old-Timemachine-Гранат [Исключен] / Volumes / Old-Timemachine-Lion [Исключен] / Volumes / ВРЕМЕННОЙ [Исключено] / Volumes / Time Machine Mirror проблема заключается в / Volumes / ИМАК HD. Это не реальный диск, это символическая ссылка на него. 26 ИМАК Clone drwxr-хт-х 6 Крис персонал 272 17 января 16:05 ИМАК Clone Нового drwxr-хт-х 30 сотрудники Криса 1088 16 января 17:31 ИМАК ELCAP lrwxr-хт-х 1 корень колеса 1 16 января 20:34 ИМАК HD -> / drwxr-хт-х 6 сотрудников Крисом 272 17 января 16:05 ИМАК HD Новый drwxrwxr-х 26 корень колеса 952 13 ноября 16:26 ИМАК HS Clone drwxrwxrwx 40 сотрудников Крисом 1428 Jan 19 15:40 maclaptop результат из tmutil isexcluded на самом деле для линка, а не «/» Kaze: ~ $ Крис tmutil isexcluded / [Включено] / Я хочу знать, если есть способ, чтобы найти следовать и передать в пункте назначения в линке. Я прочитал страницу человека найти и о опции -L и думал, что будет делать это, и это не делает. Некоторые рытье на stackexchange https://unix.stackexchange.com/questions/31114/find-usage-with-l объяснил, почему он не работает. То, что я не смог найти какую-либо ключ к пониманию того, как я мог бы сделать то, что хочет и держать простой Однострочник или если я буду иметь, чтобы написать функцию для этого и иметь дело с симлинками в некоторых запутанных путях. Я надеюсь, что кто-то с гораздо большим знанием CLI и Баш, чем я мог бы знать, как сделать то, что я хочу просто.
C Knight
1

голосов
2

ответ
59

Просмотры

Переменный выход в Баш для цикла из двух Grep

Я пытаюсь искать через файлы и извлекать два кусков соответствующей информации каждый раз, когда они появляются в файле. Код, который я в настоящее время: #! / Bin / Баш эхо "Использовано считывает с выхода ustacks"> reads.txt str1 = "используемый гласит:" str2 = "Разбор" для файла в / главная / desaixmg / novogene / стеки / Sample01 / conda_ustacks.o *; делать читает = $ (Grep $ str1 $ файл | вырезать -d ':' -f 3 образцов = $ (Grep $ str2 $ файл | вырезанные -d '/' -f 8 эхо $ выборок $ >> читает reads.txt сделано Это делает каждую строку файла (файлы имеют разное число экземпляров этих фраз) и дает мне выход для каждой строки для каждого файла: PopA_15.fq 1081264 PopA_16.fq PopA_17.fq 1008416 554791 PopA_18.fq PopA_20.fq PopA_21 .fq 604610 531227 595129 ... Я хочу, чтобы соответствовать каждому экземпляру (т.е. Первый экземпляр обоих отбирает рядом друг с другом двух): PopA_15.fq 1081264 PopA_16.fq 1008416 PopA_17.fq 554791 PopA_18.fq 604610 PopA_20.fq 531227 PopA_21.fq 595129 ... Как мне это сделать? Спасибо
Mgdesaix
1

голосов
0

ответ
945

Просмотры

Как запустить несколько команд пряжи с Баш скрипт?

У меня есть четыре отдельных операций РЕПО, которые необходимо выполнить в следующем порядке: Они все в том же каталоге. Однако то, что я в настоящее время будет работать только первый, потому что, как только нить запустить DEV происходит, компакт-диск - ничего не делать. CD "бэкенд" && нить запустить DEV CD - CD "коммерсант" && нить запустить DEV CD - CD "оболочка" && нить запустить DEV CD - CD "frontend2" && нить запустить DEV CD -
user9273498
1

голосов
0

ответ
999

Просмотры

Amazon Web Services: -bash: активирующие: Нет такого файла или каталога

Я пытаюсь использовать Deep Learning AMI (Ubuntu) на Amazon Web Services (AWS). При входе, вы получите сообщение следующим образом (я показываю его часть здесь): Пожалуйста, используйте одну из следующих команд, чтобы запустить необходимую среду с рамками вашего выбора: для MXNet (+ Keras1) с Python3 (CUDA 9) _____________________ источник активации mxnet_p36 для MXNet (+ Keras1) с python2 (CUDA 9) _____________________ источник активации mxnet_p27 для TensorFlow (+ Keras2) с Python3 (CUDA 8) ________________ источника активации tensorflow_p36 Итак, что я понял, если я хотел бы запустить последняя среда показано выше, например, чтобы выполнить следующую команду: источник активации tensorflow_p36 Когда я запускаю команду, однако, я получаю следующее: -bash: активировать: нет такого файла или каталога Это также происходит в другой среде. Это почему? Что я должен сделать, чтобы решить эту проблему? Благодарю.
Simplicity
1

голосов
0

ответ
444

Просмотры

Азбука Морзе программирование убунту оболочки

Я хочу сделать Морзе конвертер, который преобразует букву из текстового файла в коде Морзе код Морзе из текстового файла с буквами путем исполнения является ./morse.sh -e text.txt (для кодирования) и ./morse .sh -d Morse_text.txt (для декодирования). Моя единственная проблема в том, что выход не отображается на экране, по некоторым причинам. Вот code.If я сделал ошибку, дайте мне знать. #! / Bin / Баш эхо «Привет, добро пожаловать в азбуке Морзе конвертер !!» кодирование () {объявить -A азбуки Морзе [А] = ".-"; Морзе [В] = "-..."; Морзе [С] = "-.-."; Морзе [D] = "- .."; Морзе [Е] = ""; Морзе [F] = "..-."; Морзе [G] = "-."; Морзе [Н] = "...."; Морзе [I] = ".."; Морзе [Дж] = ".---"; Морзе [K] = "-.-"; Морзе [L] = ".- .."; Морзе [М] = "-"; Морзе [N] = "-."; Морзе [O] = "---"; Морзе [Р] = ".--."; Морзе [Q] = "--.-"; Морзе [R] = ".-."; Морзе [S] = "..."; Морзе [Т] = "-"; Морзе [U] = "..-"; Морзе [В] = "...-"; Морзе [Вт] = ".--"; Морзе [X] = "-..-"; Морзе [Y] = "-.--"; Морзе [Z] = "- .."; Морзе [1] = ".----"; Морзе [2] = "..---"; Морзе [3] = "...--"; Морзе [4] = "....-"; Морзе [5] = "....."; Морзе [6] = "-...."; Морзе [7] = "--..."; Морзе [8] = "--- .."; Морзе [9] = "----."; Морзе [0] = "-----"; для ((к = 0; к <$ {# Морзе}; к = к + 1)); делать эхо "$ {Морзе}" сделано} декодировать () {объявить -A письмо письмо [.-] = "A"; буква [-...] = "В"; буква [-.-.] = "C"; буква [- ..] = "D"; буква = "E" [.]; письмо[..-. ] = "F"; буква [-.] = "G"; письмо [....] = "H"; письмо [..] = "Я"; буква [.---] = "J"; буква [-.-] = "K"; буква [.- ..] = "L"; буква [-] = "М"; буква [-.] = "Н"; буква [---] = "О"; буква [.--.] = "Р"; буква [--.-] = "Q"; буква [.-.] = "R"; письмо [...] = "S"; буква [-] = "Т"; буква [..-] = "U"; буква [...-] = "В"; буква [.--] = "Ш"; буква [-..-] = "X"; буква [-.--] = "Y"; буква [- ..] = "Z"; буква [-----] = "0"; буква [.----] = "1"; буква [..---] = "2"; буква [...--] = "3"; буква [....-] = "4"; письмо [.....] = "5"; буква [-....] = "6"; буква [--...] = "7"; письмо [--- ..] = "8"; буква [----.] = "9"; для ((я = 0; г <$ {# Морзе}; I = I + 1)); делать эхо "$ {письмо: я}"}, если сделать [[$ 1 = "-e"]]; то при КСФ = чтение -r линии || [[-N "$ строка"]]; делать эхо "Текст: $ строка" эхо "Морзе код:" сделано < "$ 2" закодировать "$ @" Элиф [[$ 1 = "-d"]]; то при КСФ = чтение -r line1 || [[-N "$ line1"]]; делать эхо «код Морзе: $ line1» эхо «Перевод:» сделано < «$ 2» расшифровывает «$ @» еще эхо «Пожалуйста, попробуйте еще раз, используя -e или -d» фи
Zach DS UniPi
1

голосов
0

ответ
303

Просмотры

-bash: ребенок setpgid (236 до 235): Операция не допускается (на WSL OpenSUSE)

На WSL (OpenSUSE Leap 42,3), я обнаружил ошибку, как это: $ эхо "$ *" | СЕПГ «s $ HOME ~ г» -bash: ребенок setpgid (236 до 235): Операция не допускается Это не так по умолчанию Leap 42,3, я подозреваю, что это ошибка в WSL (OpenSUSE Leap 42,3). Я использую Windows 10 Pro 64bit.
HEMMI
1

голосов
1

ответ
343

Просмотры

скрипт для запуска нового окна в tmux как другой пользователь

! У меня есть следующий в моем new.sh файл Баша - # / bin / Баш Судо -u tmux -2 Бобби нового сеанс -A -s главного Судо -u бобби tmux нового окно `кд / дом / new_dir /; узел n1.js` Судо -u бобби tmux новое окно-`Кд / дома / new_dir /; узел n2.js` Судо -u бобби tmux отрывать Я бегу new.sh суперпользователя, но я встречаю много проблем: 1. tmux открывает для корневого пользователя, и не отрывается автоматически, даже если у меня есть tmux разделиться. 2. Почему tmux открыть для корневого пользователя, когда он создается для пользователя бобби (это проверяется командой tmux Ls. Это говорит пустой сервер для корневого пользователя, и показывает сеанс для пользователя бобби) 3. Команда после tmux новый- окно CD дома / new_dir /; узел n1.js и CD дома / new_dir /; узел n2.js полностью игнорируется!
vjjj
1

голосов
1

ответ
227

Просмотры

Разработка и поддержка завершения оболочки для Баша и Zsh

Я написал Баш-завершение для утилиты командной строки. Мне нужно поддерживать ЗШ. Что такое лучший / стандартный способ поддерживать завершение для Баша и Zsh? Я мог бы написать отдельный ЗШ-завершение, но я не хочу, чтобы поддерживать отдельное завершение для каждой оболочки. Я мог бы использовать Баш-завершение в Zsh (как это), но я не хочу, чтобы заставить свои пользователь вручную настроить инструмент или изменить их ~ / .zshrc во время установки. Другие люди будут установить эту утилиту с помощью Homebrew / Linuxbrew. Я могу изменить формулу установки.
curusarn
1

голосов
0

ответ
21

Просмотры

Будет ли "function_not_found_handle () загружаемый Баш встроенному возможно?

Я написал функцию для обработки неизвестных команд в Баше через command_not_found_handle (). Мое намерение состоит в том, чтобы исходные скрипты по требованию и доступа к его функциям внутри обработчика. Но, к сожалению, получены функции выполняются в субоболочке поэтому переменные теряются после возвращения / выхода. В конце концов я сделал это с некоторым / ловушками / механизм ФИФО сигнала к command_not_found_handle родительской оболочки для достижения своей цели, но его все, но элегантно. Теперь мне интересно, если function_not_found_handle загружаемые встроенные может быть реализовано. Встроенный должен быть вызван, если command_not_found_handle () терпит неудачу. В настоящее время я нашел большую статью Эда Шефера по этой теме, но, как представляется, точка входа. Кто-нибудь опыт работы с динамически загружаемыми встроенными командами Баша? Кто может указывать мне полезную информацию? Я надеюсь, что придумать с некоторыми результатами скоро конкретизации мой вопрос. Спасибо!
Dominik Kummer
1

голосов
1

ответ
1.2k

Просмотры

Git Bash версия не работает с терминала в VS кодекса

У меня есть новая установка Windows 10 - 64-разрядная MinGW - Чтобы установить GCC Git 2.15.1.4 (64 бит) VSCode 1,20 (64 бит) Команда, я использую это: г ++ --version Он не работает с помощью терминала внутри VSCode. Однако работает окно Баш вне VSCode, он отлично работает. Кто-нибудь знает какие-либо предложения о том, как это исправить? GitBash Терминал GitBash В VSCode Спасибо, Кьяране
user1840643
1

голосов
1

ответ
33

Просмотры

чтения UserInput с фиксированными первыми символами?

это мой первый пост в этой платформе. Ive нашел так много полезных советов. Я хочу поблагодарить всех, кто использует эту платформу активным. Мой вопрос: Как я могу использовать вход для чтения в Баше с фиксированными первыми символами? Например читать -p «Введите имя пользователя:» бб-d-USERNAME так бб-d- уже дано. Пользователь должен ввести только имя пользователя, а переменная должны поймать всю бб-D-USERNAME я надеюсь, что его четко сформулировать. С наилучшими пожеланиями, Goeks
Goeks
1

голосов
3

ответ
67

Просмотры

печать вывод командной истории 1 из сценария оболочки

Вот моя проблема, из консоли, если я печатаю ниже, вар = `1` история эхо $ вар я получаю желаемый результат. Но когда я делаю то же самое внутри скрипта, он не показывает никаких выходных данных. Кроме того, для других команд, таких как PWD, LS и т.д., сценарий показывает желаемый результат без каких-либо проблем.
vjoseph1
1

голосов
2

ответ
49

Просмотры

как отфильтровать / игнорировать определенные строки при сравнении текстовых файлов с дифф

Для дальнейшего уточнения, что я пытаюсь сделать, я написал сценарий ниже. Я пытаюсь проверять некоторые файлы между моей QA и PRD средой и хотел бы, чтобы конечный результат Diff, чтобы игнорировать жестко закодированные значения, такие как SQL соединение. У меня есть около 6 различных значений Filer. Я попробовал несколько способов до сих пор я не могу получить любой из них, чтобы работать по мере необходимости. Я открыт для делать это по-другому, если у кого есть какие-либо идеи. Я довольно новый для разработки сценариев, так Im открыт для любых идей или информации. Спасибо :) #! / Bin / Баш # **************************************** ***************************** # # Название: compareMD5.sh # Дата: 02/12/2018 # Script Адрес: # Автор : Мэгги о # # Описание: Этот скрипт будет тянуть абсолютные пути из текстового файла # и сравнить файлы через SSH между QA & ПДР на md5sum # выходной матч или нет матча # Затем файл, не входящих в соответствующие файлы будут импортированы в каталог # TMP с помощью УПП # Файлы будут сравниваться на местном уровне и исключить пробелы, # пробелы, комментарии, и жестко закодированные значения # Примечание: Сценарий может занять несколько минут, чтобы запустить # # Использование: Аудиторская QA для PRD Pass 3 # поЬир ./compareMD52.sh> /output/compareMD52.out 2> /error/compareMD52.err # проверка пробег пс -ef | Grep compareMD52 * # ********************************************** ************************ гт /output/no_matchMD5.txt гт /output/filesDiffer.txt эхо "Имя файла | Путь"> / выход / matchingMD5. TXT #remove все ниже директории TMP recursivly, как он был создан предыдущим сценарий выполнение погонного -rf / TMP / * для я в $ (САТ / входа / comp_list.
Maggie
1

голосов
0

ответ
81

Просмотры

Echo overrides the beginning of a line [duplicate]

This question already has an answer here: Variables overwriting text problem with “echo” in Bash 2 answers Why would a correct shell script give a wrapped/truncated/corrupted error message? [duplicate] 1 answer Printing output from grep in bash script yields broken string 1 answer I would like to write simple script which will check URLs declared in array and display the result in the format below: http://google.de : 301 Moved Permanently (http://www.google.de/) http://google.fr : 301 Moved Permanently (http://www.google.fr/) https://stackoverflow.com : 200 OK Here is my script: #!/usr/bin/env bash sites=( http://google.de http://google.fr https://stackoverflow.com ) for site in ${sites[*]}; do headers=$(curl -Is ${site}) status=$(echo "$headers" | head -n 1 | cut -c10-) location=$(echo "$headers" | grep 'Location' | cut -c10-) echo -n "$site : " echo -n "$status" if [[ ! -z "$location" ]]; then echo -n " ($location)" fi echo -e "\n" done; Anyway it returns the output: )( http://www.google.de/Moved Permanently )( http://www.google.fr/oved Permanently https://stackoverflow.com : 200 OK I do not understand why those strings are overwritten in such weird way. EDIT: I have uploaded the result of bash -x myfile – https://pastebin.com/guMJC24h
Michał Szczech
1

голосов
0

ответ
124

Просмотры

убить процесс, если он находится в режиме ожидания в течение 30 минут

Я пытаюсь поставить скрипт, который будет работать в заднем месте, чтобы проверить процесс, и если он находится в режиме ожидания в течение 30 мин, затем убить Grep я хочу использовать это «/ USR / BIN / питон ./utt.py --type = эмитент --datafile =»до сих пор я поставил код, как показано ниже, IAM застрял в конце концов, как сравнивать время и убить. я был в состоянии получить время обработки и системное время .how для сравнения и убить, если процесс находится в режиме ожидания в течение 30 минут. пс -auxw | Grep "/ USR / бен / питон ./utt.py --type = эмитент --datafile =" | AWK «{Время = STRFTIME ( "% H:% M", SysTime ()); печать $ 2, $ 9, время, если ($ 9
Abrar Ahamed
1

голосов
1

ответ
442

Просмотры

Makefile passing variables to bash script

Я хотел бы передать разделенные пробела строки цитируемых подстрок к цели макияжа (на самом деле, несколько различных мишеней замыкающих) из Makefile. Мишень просто выполняет Баш скрипт, который будет проходить каждую цитируемую подстроку в качестве позиционного аргумента другого сценария. Тест Makefile: FOO = "Foo бар" FOO + = "бар Баз" FOO + = "Баз QUX" FOO + = "QUX" экспорт FOO т: ./script.sh Вот script.sh: #! / Бен / Баш набор -ex ./thing.sh «$ Foo» Это не работает; выход (обратите внимание на окружающие одиночные кавычки) является: 👌 ~ / с / лом (я) сделать т ./script.sh + ./thing.sh «Foo бар" „бар Баз“ „Баз QUX“ „QUX“» чтобы было ясно, что я хотел бы, чтобы передать много аргументов в thing.sh вместо одного аргумента, и мне нужно процитировать каждый аргумент, так как она может содержать пробелы или специальные символы. 👌 ~ / с / лом (я) сделать т ./script.sh + ./thing.sh «Foo бар» «бар Баз» «Баз QUX» «QUX» Что лучший способ для достижения этой цели? В идеале мы бы решить эту проблему в Makefile, чтобы избежать дублирования решения в каждой цели, потребляющей FOO.
yangmillstheory
1

голосов
1

ответ
21

Просмотры

Fetch MySQL данные в Баш, функция чтения считывает каждое предложение в качестве переменной

Я пытаюсь получить переменные из моей БД, я один значение в дБ у меня есть 2 слова, но команда ниже рассматривать его как 2-х переменных. Есть ли какие-либо изменения, чтобы принести его в моем пути? MySQL -uroot -proot --database = Symfony -se «SELECT cameras.source, cameras.name, investments.name, users.username ИЗ камер РЕГИСТРИРУЙТЕСЬ инвестиций на investments.id = cameras.investment_id РЕГИСТРИРУЙТЕСЬ пользователей ПО users.id = инвестиции. Идентификатор пользователя;" | в то время как источник чтения камеры инвестиции имя пользователя; сделать MySQL результат: | источник | имя | имя | имя пользователя | + ------------------------------------------------- ----------------------- + -------------- + ----------- - + ---------- + | RTSP: // VLC: VLC @ тест / кулачок / realmonitor канал = 1 & подтип = 0 | Камера 1 | инвестиции | пользователь | + ------------------------------------------------- ----------------------- + -------------- + ----------- - + ---------- + баш: эхо "источник:" $ источника эхо "камеры:": $ камера эхо "инвестиций:" $ инвестиции эхо "Имя пользователя:" $ результат имя пользователя: источник: RTSP: // VLC: VLC @ тест / кулачок / realmonitor канал = 1 & подтип = 0channel = 1 & подтип = 0 камера: инвестиционные вложения: 1 Имя пользователя: инвестиции имя пользователя
nbox
1

голосов
1

ответ
363

Просмотры

if folders exist - by using wildcard [duplicate]

This question already has an answer here: Test whether a glob has any matches in bash 18 answers or "How to handle prefixed folder names?" Inside a folder I have two (or more) foo_* folders foo_0 foo_1 What I'm trying to achieve is to perform an action if there's 1 or more foo_* folders Use a wildcard * Currently I'm doing it this way (going directly to check if directory foo_0 exists): prefix=foo_ if [ -d "./${prefix}0/" ]; then printf "foo_0 folder found!" # delete all foo_* folders fi Having directories 0-to-N so the above works, but i'm not sure I'll always have a foo_0 folder... I'd like to do use a wildcard: prefix=foo_ if [ -d "./${prefix}*/" ]; then # By using wildcard... printf "One or more foo_* folders found!" # this never prints # delete all foo_* folders fi I've read that a wildcard * inside quotes loses its powers, but placing it outside quotes throws : if [ -d "./${prefix}"* ]
Roko C. Buljan
1

голосов
1

ответ
26

Просмотры

Выполнение команды Баша в середине Curl команды

Я пытаюсь запустить завиток команду, которая ставит значение даты из моей Баш оболочки в строке, но она не работает: завиток -X POST --header «Content-Type: приложения / JSON» --header " Accept: приложения / JSON»-d "{\" \ "версия: дата +% s}" "https://api.example.com/" Что я делаю неправильно?
Robbie Mills
1

голосов
1

ответ
106

Просмотры

cd into folders breaks/hangs zsh for minutes using Windows cmd, Powershell, Hyper, and Bash (Ubuntu)

Для того, чтобы выяснить, какой я пробовал: Ubuntu Баш Hyper Powershell Git Баш CMD Я установил Ubuntu Баш на моем Windows 10 ПК. Когда я открываю ubuntu.exe и я типа ЗШ после начала оболочки, моя ЗШ оболочка запускается вместо этого, как и ожидалось. Это прекрасно, и это делает именно то, что я хочу. Проблема: Когда я делаю следующие последовательности: CD [TAB] [клавиши со стрелками] (выберите пункт) ENTER Он должен перейдите в эту папку. И он делает это, но он буквально занимает около минуты, чтобы сделать это. CTRL + C, чтобы отменить не работает. Теперь, когда я нахожусь в этой папке, я могу очистить консоль, набрав ясно, так это то, что я делаю: пользователь @ пользователь-компьютер> / мнт / с / папка / otherfolder> GIT-репо> ясно, когда я печатаю ясно и нажмите введите, это займет, вероятно, 30+ секунд, прежде чем он очищает окно. Я перепробовал кучу тем и куча терминалов / командной строкой, но ни один из них не работает, даже не один по умолчанию. Я установил ЗШ и о-мой-ЗШ, выполнив следующие команды внутри Баш оболочки Ubuntu: Sudo APT-получить установку ЗШ локон -L https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/ инструменты / install.sh | Баш Любая идея, почему это происходит странное поведение? Похоже, что это ЗШ, потому что я могу легко кд в другие папки, используя все вышеперечисленные терминалы. Проблема также происходит, если я просто кд / мнт / с / папки / otherfolder / с и без слэша. потому что я могу легко кд в другие папки, используя все вышеперечисленные терминалы. Проблема также происходит, если я просто кд / мнт / с / папки / otherfolder / с и без слэша. потому что я могу легко кд в другие папки, используя все вышеперечисленные терминалы. Проблема также происходит, если я просто кд / мнт / с / папки / otherfolder / с и без слэша.
MortenMoulder

Просмотр дополнительных вопросов