Когда я нажимаю обратную косую черту \, мне дают a >
(больше, чем) символ. Что это означает?
Каждый раз, когда Вы используете командную строку, мог бы быть экземпляр, когда необходимо выполнить команду, которая очень длинна. Так, Вы хотите разделить команду на несколько строк для лучшей удобочитаемости и понимания. Но если Вы используете символ новой строки, который вводится , Входят , оболочка будет думать, что это - новая команда. Таким образом, Вы используете \
сопровождаемый символом новой строки.
В основном, команды или сценарии удара "интерпретируются", т.е. выполняются линию за линией. Каждая новая строка означает запуск новой команды. В терминале, когда Вы нажимаете , Входят , Вы заставляете подсказку выполнять новую команду. Так, новой строки нужно "оставить". Ввод \
сопровождаемый Входит позволяет Вам разделять текущую команду на несколько строк, таким образом, оболочка не думает, что это - новая команда, но продолжение предыдущей команды.
>
только подсказка для следующей строки вводимой команды.
, Например:
, Если мы хотим установить несколько пакетов, команда будет похожа
$ sudo apt install [package1] [package2] [package3] ...
, Но иногда, который делает команду нарушенной. Таким образом, мы можем использовать \
сопровождаемый , Входят (символ новой строки)
$ sudo apt install [package1]\
> [package2]\
> [package3]\
> ...
Символ обратной косой черты (\
) используется в качестве символ ESC в оболочке. Если Вы используете его в качестве последнего знака на строке, это выходит из новой строки, таким образом, можно продолжить команду на следующей строке вместо того, чтобы закончить его. Это обозначается эти >
подсказка в Bash.
Пример:
$ echo A\
> B
AB
$
Для помещения литерала \
в команду необходимо выйти из него с помощью другой обратной косой черты:
$ echo \\
\
$
[при добавлении (слишком длинный / комплекс) ответ как другие 2 не упоминает, как"> "появляется... т.е., не упоминайте PS2]
Вы ввели: \Enter: \говорит оболочке, чтобы просто произвести Введение как литеральный символ вместо того, чтобы интерпретировать его, как обычно (Поэтому, оболочка "переходит к следующей строке" вместо того, чтобы завершить текущую командную строку и интерпретировать ее. Если Вы не находитесь в некоторых других конструкциях, таких как heredoc, для цикла, и т.д.).
Ваш терминал поэтому интерпретирует \Enter как: "перейдите к следующей строке" (не начиная интерпретировать команду), и таким образом терминал теперь позволяет Вам ввести 2-ю строку многострочной команды и сделать ее более видимыми дисплеями $PS2
содержание (названный подсказкой PS2) на каждой последующей строке.
Переменная PS2 обычно определяется по умолчанию как: PS2="> "
и Вы можете для exemple редактировать свой ~/.bashrc для переопределения его, поскольку Вы желаете (учет, что он должен, imo, постараться не содержать опасные символы, такой как >
или ;
, и должен помочь Вам, любой ясно видит, что это - мультилиния команды, но отключите, это - многострочное содержание (исключая: PS2="#cont#"
) или позвольте Вам легко скопировать/вставить их с как можно меньшим влиянием на его строки (исключая: PS2=" "
)
Который, между прочим, является imo плохое значение по умолчанию, поскольку он мог очень хорошо привести удалять некоторые важные двоичные команды в некоторых случаях.
Можно переопределить PS2, чтобы быть чем-то еще (мне нравится: PS2 ="", для exemple) так, чтобы многострочные команды могли легко копироваться/вставляться, не боясь следующего:
Для exemple скажем, у Вас есть команда, которая начинает быть довольно долгой (и может свернуться на Вашем экране, если Ваш терминал не достаточно широк):
grep -i "something" /some/file /another/file /3rd/file /etc/someimportantfile
Если команда выглядит слишком длинной (и повторяется), можно хотеть разделить ее визуально на 2 строки путем выбора где (когда) Вы хотите к следующей строке путем вставки: \Enter в соответствующем пятне:
grep -i "something" /some/file /another/file /3rd/file \
> /etc/someimportantfile #warning, "> " was inserted by the shell and this changes everything !
Используя PS2 по умолчанию, оболочка, добавленная"> "прежде"/etc/someimportantfile ".. таким образом, если Вы скопировать/вставить те 2 строки в другом терминале, их действие будет полностью отличаться: вместо того, чтобы держать в 4 файла, grep только входит в первые 3 файла, и вывод grep заменяет содержание 4-го файла (/etc/someimportantfile)!
Избегать этих проблем (и многие другие): Вы могли для exemple определять: PS2=" "
сделать мультилинию управляет инструментом для очистки и легче к скопировать/вставить:
grep -i "something" /some/file /another/file /3rd/file \
/etc/someimportantfile #now only 2 spaces were inserted, without changing the grep's actions!
Отметьте, как на этот раз/bin/somecommand является просто переключателем, 2 пробела направо, и не">" были вставлены, таким образом, Вы можете безопасно скопировать/вставить эта команда с 2 строками.
PS2 также используется в "для" того, "в то время как" и т.д. циклы и определение его как "", мне, лучше в тех также.