Запитання з тегом «shell-script»

Запитання щодо скриптів оболонки, виконуваних файлів, які інтерпретуються оболонкою (bash, zsh тощо).

1
Як викреслити кольорові коди з stdout, а також у файл та stdout
У мене є програма, яка використовує printfдеякі tputзмішані в ній, і я хотів би передати висновок в stdout, а також файл. Я вважаю за краще використовувати, sedоскільки не хочу зайвих залежностей від мого сценарію. Ось що у мене поки що. printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | …

2
POSIX сумісний спосіб роботи зі списком імен файлів, можливо, з пробілом
Я бачив сценарії Bash сценаріїв, які пропонують використовувати масив для роботи з іменами файлів, що містять пробіли. Однак DashAsBinSh пропонує, що масиви не є портативними, тому я шукаю POSIX-сумісний спосіб роботи зі списками імен файлів, які можуть містити пробіли. Я хочу змінити нижченаведений приклад сценарію, щоб це було echo foo/target/a.jar …

4
Яка різниця між Ctrl-Z і kill -STOP?
Коли я запускаю команду ( makeна великому проекті) з оболонки, я можу набрати Ctrl-Z, щоб зупинити процес і повернутися до оболонки. Згодом я можу побігти fgпродовжувати процес. Я намагаюся написати скрипт оболонки, щоб автоматизувати це (зокрема, перевіряти температуру ЦП кожні кілька секунд і зупиняти процес, якщо він стає занадто гарячим, …

2
Коли використовувати крапку з двокрапкою між змінними середовища та командою
Чи може хто-небудь пояснити, чому напівкрапка потрібна для того, LANGщоб бачити, як оновлений баш? Не працює: > LANG=Ja_JP bash -c "echo $LANG" en_US Працює: > LANG=Ja_JP ; bash -c "echo $LANG" Ja_JP Я працюю з bash 4.1.10 на Linux і тією ж версією під cygwin

4
find -exec у скрипті bash зі змінним розширенням
Я намагаюся запустити команду, подібну до наведеної нижче, в скрипті bash. Він повинен шукати всі підпапки $sourcedirта копіювати всі файли певного типу на кореневий рівень $targetdir. #!/bin/bash # These are set as arguments to the script, not hard-coded sourcedir="/path/to/sourcedir" targetdir="/path/to/targetdir" find "$sourcedir" -type f -name "*.type" -exec sh -c 'cp …


2
Як використовувати Bash для sh в Ubuntu
Я встановлюю величезну програму, яка має свої ресурси як rpmфайл. Він застряг на лінії #!/bin/sh SCITEGICPERLBIN=`dirname $0` SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN` if [ $SCITEGICPERLHOME == "." ] Мабуть, shпрацюйте bashв Red Hat Linux з цим синтаксисом, але це дає помилку unexpected operatorв Ubuntu. Я не можу змінити сценарій, bashоскільки сценарій походить із …

3
хвіст -f, вставити перерву рядка після простою журналу протягом 3 секунд?
Як робити tail -f error.log, як програматично вставити розрив рядка після того, як у файл протягом 3 секунд нічого не було додано? (очевидно, щойно додано один розрив рядка, жоден інший розрив рядка не слід додавати, поки інші файли тексту не будуть додані до файлу журналу) Наприклад, ці рядки додаються до …


5
Деякі випадки, коли кількість пробілів має значення в сценаріях bash (або інших оболонках)
Мені сказали, що пробіли важливі в bashінших сценаріях оболонок, і я не повинен змінювати існування пробілів, якщо я не знаю, що я роблю. Під «зміною існування» я маю в виду або вставити пробіл між двома символів без пробілів або видалення пробілу між двома символів без пробілів, наприклад , зміна var="$val"в …

3
Сценарій Bash з `set -e` не зупиняється на команді`… && ... `
Я використовую set -eдля зупинки bash script при першій помилці . Все працює добре, якщо я не використовую команду з &&: $ cat script set -e cd not_existing_dir && echo 123 echo "I'm running! =P" $ $ ./script ./script: line 2: cd: not_existing_dir: No such file or directory I'm running! …

8
Як перевірити наявність будь-якої IP-адреси у файлі за допомогою сценарію оболонки?
У мене є сценарій, який генерує деякий вихід. Я хочу перевірити цей вихід на наявність будь-якої IP-адреси 159.143.23.12 134.12.178.131 124.143.12.132 if (IPs are found in <file>) then // bunch of actions // else // bunch of actions // Це fgrepгарна ідея? У мене є доступний баш.
14 shell-script  grep  ip 


2
Видаліть файли, старіші за певний файл
Мені потрібно видалити з папки всі файли, старші за певний файл. Запуск bash на CentOS 7. У мене є рішення для цього, але я думаю, що повинен бути більш елегантний спосіб зробити це: reference_file=/my/reference/file get_modify_time() { stat $1 | grep -Po "Modify: \K[0-9- :]*" } pit=$(get_modify_time $reference_file) for f in …

4
Як явно викликати вбудовану оболонку?
Я хочу налаштувати функціональність cdкоманди відповідно до моїх потреб. Я визначив наступну функцію - function cd () { cd "$@" && pushd "$@"; } Метою цієї функції є автоматичне натискання каталогу на стек, щоб це заощаджувало мені зусилля pushd .щоразу вводити вручну . Однак наведена вище функція є нескінченно рекурсивною …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.