Есть & и; унарные или бинарные операторы?

Это, вероятно, находится в вашем аккаунте пользователя .bashrc , например, после выполнения таких инструкций, как Использование R на узле ]. RPM редко устанавливается с использованием LD_LIBRARY_PATH , поэтому лучше всего искать в пользовательских настройках.

Если вы не видите его в .bashrc , затем

cd /etc
grep -l -r /opt/openmpi/lib .

будет следующим местом для поиска, показывая вам имена файлов, в которых могла быть сделана настройка, например, /etc/profile.d / *

2
22.03.2016, 22:42
3 ответа
  1. Я бы обычно не считал их "операторами". Я имею в виду, что обычно операторы возвращают значения. & и ; не возвращают. Вместо этого они завершают операторы. Но если рассматривать их как операторы, то они работают над одним высказыванием - так что это постфиксные унарные операторы, я полагаю.

  2. Они начинаются слева направо. Обратите внимание, что в случае & он выполняется в фоновом режиме асинхронно: echo 1 & echo 2 & echo 3 может вывести 1, 2 и 3 в любом порядке (потому что даже если они были запущены по порядку, ядро может не запланировать их так, чтобы они выводились по порядку). Но echo 1; echo 2; echo 3 всегда будет печатать их в числовом порядке. echo 1; echo 2 & echo 3 всегда будет печатать сначала 1, но 2 и 3 могут быть в любом порядке.

4
27.01.2020, 21:54

Чтобы добавить к ответу Дероберта и проанализировать команду, которую вы включили в свой вопрос:

echo 1 ; echo 2 & echo 3; echo 4 & echo 5 ; echo 6 &

Это означает в псевдокоде:

print 1 (and complete this step before continuing)

start a process in the background that will eventually print 2,
  and keep going as soon as the process has been *started*

print 3 (and complete this before continuing)

start a background process that will eventually print 4,
  and keep going as soon as it has started

print 5 (complete this before continuing)

start a background process that will print 6.

Также обратите внимание, что любая команда оболочки должна быть завершена (будь то & или ; или новая строка или конец файла или что-то еще, о чем я сейчас не думаю), иначе оболочка не будет знать, когда прекратить считывание дополнительных символов как часть этой команды и фактически выполнить команду.

2
27.01.2020, 21:54

Обратите внимание, что в bash есть встроенные команды, которые очень похожи на общий случай командной строки. Я пропущу этот аспект.

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

Команда - это имя исполняемого файла (wh ich можно искать через переменную среды PATH.) Это программа, которая будет выполняться для выполнения команды.

После команды идут строки, разделенные пробелами, которые передаются команде в виде строк.Но есть специальные символы пунктуации, которые необходимо экранировать (используя \ 'или используя кавычки), если вы хотите, чтобы они были частью аргумента.

Знаки пунктуации имеют эффекты.

Специальные знаки препинания, такие как '<', '>' и его аналог, определяют стандартный ввод и вывод ошибки для команды

'|' для завершения одной команды и перенаправления ее стандартного вывода на стандартный ввод следующих команд

';' выполнить предыдущую команду и дождаться ее завершения. т.е. работать на переднем плане.

'&', чтобы выполнить предыдущую команду, но продолжить процесс командной строки, не дожидаясь завершения. т.е. работать в фоновом режиме.

Так что имейте в виду, что эти синтаксические знаки предназначены для того, чтобы вы могли собрать все вместе и сделать что-то вроде

echo perl myperlprogram.pl \

Это создает строку, использующую echo , которая является другой командой оболочки, для выполнения программы perl, и отправляет эту строку команде at , чтобы запустить ее как пакетное задание позже. Но обратите внимание, что < экранируется, поэтому он передается в качестве аргумента в echo (который отправит его на по адресу в качестве входных данных) вместо установки стандарта ввод сразу. Когда пакетная система и выполняет командную строку THEN, она устанавливает стандартный ввод программы perl.

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

0
27.01.2020, 21:54

Теги

Похожие вопросы