Таинственный вывод для <cmd>, за которым следует \ или ` - PullRequest
0 голосов
/ 18 сентября 2010

Иногда, когда я набираю команду в bash, я ошибочно набираю символ \ в конце, так как он близок к клавише Enter.Всякий раз, когда я делаю это, я получаю приглашение на следующей строке, например:

>_

Тот же вывод выводится, когда используется символ `.

Что именно делает это \ doв команду?

Есть ли другие символы (кроме \ и `), которые выдают похожий результат?

Ответы [ 3 ]

4 голосов
/ 18 сентября 2010

символ \ позволяет разбить вашу команду на несколько строк:

$ grep "hello" /tmp/file

эквивалентно:

$ grep "hello" \
> /tmp/file

символы ' и " позволяют определять многострочные строки, а ` - это способ использовать вывод команды в качестве аргумента для другой. $(command) делает то же самое.

всякий раз, когда вы видите

>

это означает, что синтаксис команды не завершен. Некоторые конструкции оболочки также должны быть завершены, например, while, for, если ...

Отображаемый > можно настроить с помощью переменной среды PS2.

в соответствии с запросом, вот пример использования `: Предположим, у меня есть список файлов в filelist.txt:

$ cat filelist.txt
a.c
a.h
Makefile
test.cfg
[...]

Я хочу знать количество строк в каждом из этих файлов. команда будет wc -l a.c a.h Makefile [...]. чтобы использовать вывод cat filelist.txt в качестве аргументов для wc -l, я могу использовать:

$ wc -l `
> cat filelist.txt
> `
1 голос
/ 18 сентября 2010

\ - символ продолжения строки.Когда в конце строки следующая строка считается продолжением текущей строки.

` - обратный удар.Обратные пометки идут парами, а bash позволяет содержать новые строки практически в любых кавычках / скобках.Вы увидите похожее поведение (продолжение строки) с " и ', а также с () и {}.

1 голос
/ 18 сентября 2010

Возможно, вы забыли закрыть ` или ' или " .

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