bash ×67
Создан 03.01.2025
40
голоса
5
ответов
27
просмотров
Как узнать, существует ли файл в Bash?

У меня есть следующий скрипт на Bash, который проверяет, существует ли файл:

#!/bin/bash

FILE=$1     
if [ -f $FILE ]; then
   echo "Файл $FILE существует."
else
   echo "Файл $FILE не существует."
fi

Вопрос: как мне изменить этот код, чтобы проверять только то, что файл не...

36
голоса
5
ответов
284
просмотров
Echo новой строки в Bash выводит литерал \n

Как мне вывести новую строку? В результате выполнения следующей команды просто выводится \n:
echo -e "Hello,\nWorld!"

Вывод:
Hello,\nWorld!

36
голоса
5
ответов
24
просмотров
Как проверить, содержит ли строка подстроку в Bash

У меня есть строка в Bash:

string="My string"

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

Я пробовал написать так:

if [ $string ?? 'foo' ]; then
  echo "It's there!"
fi

Где ?? — это мой неизвестный оператор. Использовать ли мне echo и grep?

if...
35
голоса
4
ответов
47
просмотров
Как объединить строковые переменные в Bash

На PHP строки объединяются следующим образом:

$foo = "Hello";
$foo .= " World";

В результате переменная $foo становится равной "Hello World".

Как можно достичь такого же результата в Bash?

32
голоса
5
ответов
22
просмотров
Что означает "2>&1"?

Я пытаюсь объединить потоки stderr и stdout в один поток stdout и применяю для этого следующий синтаксис к команде: 2>&1

Например, следующая команда позволяет мне увидеть несколько первых ошибок при компиляции файла main.cpp: g++ main.cpp 2>&1 | head

Но что именно означает...

31
голоса
5
ответов
10
просмотров
Как проверить, существует ли программа из Bash-скрипта?

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

Это, казалось бы, должно быть просто, но у меня возникли сложности.

28
голоса
5
ответов
27
просмотров
Извлечение имени файла и расширения в Bash

Я хочу получить имя файла (без расширения) и расширение отдельно.

Лучшее решение, которое я нашел до сих пор, это:

NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`

Но это неверно, так как не работает, если имя файла содержит несколько символов .....

28
голоса
5
ответов
25
просмотров
Как изменить цвет вывода echo в Linux

Я пытаюсь вывести текст в терминале с помощью команды echo.

Я хочу, чтобы текст был напечатан красным цветом. Как мне это сделать?

26
голоса
5
ответов
27
просмотров
Как разобрать аргументы командной строки в Bash?

У меня есть скрипт, который вызывается следующими командами:

./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile

или вот так:

./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile 

Как правильно разобрать входные параметры, чтобы в обоих случаях (или в любом их...

24
голоса
4
ответов
16
просмотров
Как установить переменную на вывод команды в Bash?

У меня есть довольно простой скрипт, который выглядит примерно так:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF

Когда я запускаю этот скрипт из командной строки и передаю ему аргументы, я не получаю никакого вывода. Однако, когда я...

24
голоса
4
ответов
19
просмотров
Как проверить, установленна ли переменная в Bash

Заголовок: Как узнать, установлена ли переменная в Bash?

Описание проблемы:

Мне нужно проверить, установлен ли параметр в функции Bash. Например, как можно проверить, передан ли первый параметр в функцию? Вот мой код:

function a {
    # как проверить, установлен ли $1?
}

Как мне...

23
голоса
5
ответов
26
просмотров
Как пройтись по массиву строк в Bash?

Я хочу написать скрипт, который будет проходить по 15 строкам (возможно, это массив?). Это возможно?

Что-то вроде этого:

for databaseName in listOfNames
then
  # Сделать что-то
end

Как это реализовать?

22
голоса
5
ответов
28
просмотров
Как перезагрузить настройки .bashrc без выхода и повторного входа в систему?

Я внес изменения в файл .bashrc, но не знаю, как применить их, не выходя из системы и не заходя обратно. Как можно перезагрузить .bashrc?

20
голоса
5
ответов
7
просмотров
Проверка существования входного аргумента в Bash-скрипте

Я пытаюсь проверить наличие входного аргумента в моем скрипте. У меня есть следующий код:

if [ "$1" -gt "-1" ]
then echo hi
fi

Однако я получаю следующую ошибку:

[: : integer expression expected

Как правильно проверить, существует ли входной аргумент перед его использованием?

20
голоса
5
ответов
10
просмотров
Как рекурсивно посчитать все строки кода в директории?

У нас есть приложение на PHP, и нам нужно посчитать все строки кода в определенном каталоге и его подкаталогах.

Мы не хотим игнорировать комментарии, так как нам просто нужно получить общее представление о количестве строк.

Команда wc -l *.php отлично работает для заданного каталога, но она...

19
голоса
5
ответов
10
просмотров
Как запросить ввод Yes/No/Cancel в скрипте оболочки Linux?

Я хочу приостановить ввод в скрипте оболочки и запросить у пользователя выбор. Мне нужно задать стандартный вопрос с вариантами «Да», «Нет» или «Отмена». Как мне это сделать в типичном bash-скрипте?

18
голоса
5
ответов
14
просмотров
Создание алиаса Bash с параметром?

Я раньше использовал CShell (csh), который позволяет создавать псевдонимы с параметрами. Нотация выглядела примерно так:

alias junk="mv \\!* ~/.Trash"

В Bash, похоже, это не работает. Учитывая, что Bash предлагает множество полезных функций, я предполагал, что эта возможность уже...

18
голоса
2
ответов
8
просмотров
Разница между sh и Bash

Разница между Bash и sh При написании скриптов для оболочки мы часто используем /bin/sh и /bin/bash. Обычно я предпочитаю bash, но не совсем понимаю, в чем между ними разница. Какова основная разница между Bash и sh? На что нам следует обратить внимание при программировании на Bash и sh?

18
голоса
5
ответов
18
просмотров
Как указать приватный SSH-ключ для выполнения команды shell в Git?

У меня возникла несколько необычная ситуация: я хочу указать приватный SSH-ключ, который будет использоваться при выполнении команды в оболочке (git) на локальном компьютере.

Скорее всего, это должно выглядеть так:

git clone [email protected]:TheUser/TheProject.git -key...
16
голоса
5
ответов
16
просмотров
echo, который выводит в stderr

Существует ли стандартная команда Bash, которая ведет себя как echo, но выводит информацию в поток ошибок (stderr) вместо стандартного вывода (stdout)? Я знаю, что можно использовать echo foo 1>&2, но это выглядит не очень красиво и, по моему мнению, может привести к ошибкам (например,...