Вопросы с тегом «bash»

Вопросы, специфичные для GNU Bourne Again SHell, в отличие от других оболочек Bourne / POSIX. Для вопросов о оболочках Unix в целом используйте вместо этого тег / shell.

922
Как правильно добавить путь к PATH?

Мне интересно, где новый путь должен быть добавлен к PATHпеременной среды. Я знаю, что это может быть достигнуто путем редактирования .bashrc(например), но не ясно, как это сделать. Сюда: export PATH=~/opt/bin:$PATH или это? export...

525
Сохранить историю Bash в нескольких окнах терминала

У меня постоянно открыто более одного терминала. В любом месте от двух до десяти, делая различные биты и качки. Теперь допустим, я перезагружаюсь и открываю другой набор терминалов. Некоторые помнят определенные вещи, некоторые забывают. Я хочу историю, которая: Помнит все с каждого терминала...

445
Как перебрать реверсивный поиск в BASH?

В терминале я могу набрать CTRL-Rдля поиска подходящей команды, ранее набранной в BASH. Например, если я набираю, CTRL-Rто grepперечисляет мою последнюю grepкоманду, и я могу нажать Enter, чтобы использовать ее. Это только дает одно предложение, хотя. Есть ли способ циклически проходить через...

427
Использование «$ {a: -b}» для назначения переменных в скриптах

Я смотрел на несколько сценариев, написанных другими людьми (в частности, на Red Hat), и многие их переменные присваиваются с использованием следующих обозначений VARIABLE1="${VARIABLE1:-some_val}" или некоторых других переменных. VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" Какой смысл использовать...

360
В Bash, когда для псевдонима, когда для сценария, и когда написать функцию?

У меня ушло почти 10 лет использования Linux, чтобы задать этот вопрос. Все это было методом проб и ошибок и случайным ночным интернет-серфингом. Но людям не нужно 10 лет для этого. Если бы я только начинал с Linux, я бы хотел знать: когда использовать псевдоним, когда писать сценарий и когда...

342
Как эффективно определить время выполнения скрипта?

Я хотел бы отобразить время завершения сценария. То, что я сейчас делаю, - #!/bin/bash date ## echo the date at start # the script contents date ## echo the date at end Это просто показывает время начала и конца сценария. Можно ли отобразить мелкозернистый вывод, например время процессора /...

285
Почему мой сценарий оболочки заглушает пробелы или другие специальные символы?

Или вводное руководство по надежной обработке имени файла и другой передаче строк в сценариях оболочки. Я написал сценарий оболочки, который работает хорошо большую часть времени. Но он душит некоторые входные данные (например, некоторые имена файлов). Я столкнулся с такой проблемой, как: У меня...

262
Окраска вашего терминала и оболочки?

Я провожу большую часть своего времени, работая в среде Unix и используя эмуляторы терминала. Я пытаюсь использовать цвет в командной строке, потому что цвет делает вывод более полезным и интуитивно понятным. Какие варианты существуют, чтобы добавить цвет в мою терминальную среду? Какие трюки вы...

257
Как очистить кэш путей Bash к исполняемым файлам?

Когда я выполняю программу без указания полного пути к исполняемому файлу, и Bash должен искать в каталогах, $PATHчтобы найти двоичный файл, кажется, что Bash запоминает путь в каком-то кеше. Например, я установил сборку Subversion из исходного кода в /usr/local, а затем набрал svnsync helpв...

256
Как раскрасить вывод git?

Есть ли способ вывода цвета для мерзавца (или любой команды)? Рассмотреть возможность: baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout --...

254
Как получить pid последней выполненной команды в скрипте оболочки?

Я хочу, чтобы скрипт оболочки был таким: my-app & echo $my-app-pid Но я не знаю, как получить pid только что выполненной команды. Я знаю, что могу просто использовать jobs -p my-appкоманду для grep pid. Но если я хочу выполнить оболочку несколько раз, этот метод не будет работать. Потому что...

251
Как мне перебрать только каталоги в bash?

У меня есть папка с некоторыми каталогами и некоторыми файлами (некоторые скрыты, начиная с точки). for d in *; do echo $d done будет перебирать все файлы, но я хочу зацикливать только через каталоги. Как мне это...

248
В чем разница между операторами Bash [[vs [vs (vs ((?)

Я немного запутался в том, что эти операторы делают по-разному при использовании в bash (скобки, двойные скобки, круглые скобки и двойные скобки). [[ , [ , ( , (( Я видел, как люди используют их, если такие заявления: if [[condition]] if [condition] if ((condition)) if (condition)...

240
Как я могу проверить, является ли переменная пустой или содержит только пробелы?

Следующий синтаксис bash проверяет, paramне является ли он пустым: [[ ! -z $param ]] Например: param="" [[ ! -z $param ]] && echo "I am not zero" Нет выхода и его хорошо. Но когда paramпусто, за исключением одного (или более) пробела, тогда дело обстоит иначе: param=" " # one space [[ ! -z...

237
Что делает env x = '() {:;}; команда 'bash do и почему она небезопасна?

Похоже, в bash существует уязвимость (CVE-2014-6271): атака с помощью внедрения кода специально созданных переменных среды Bash Я пытаюсь понять, что происходит, но я не совсем уверен, что понимаю это. Как echoвыполнить в одинарных кавычках? $ env x='() { :;}; echo vulnerable' bash -c "echo this is...

216
Почему мой скрипт Bash не распознает псевдонимы?

В моем ~/.bashrcфайле находятся два определения: commandA, который является псевдонимом для более длинного пути commandB, который является псевдонимом Bash-скрипта Я хочу обработать один и тот же файл этими двумя командами, поэтому я написал следующий скрипт Bash: #!/bin/bash for file in "$@" do...