1

Часто, но не всегда, когда я запускаю Терминал на моем компьютере и использую pipe (|) в команде, pbpaste | wc например, bash дает -bash:  wc: command not found . (Двойной пробел не опечатка).

Через некоторое время я нашел решение: я удалил пробел после канала (pbpaste |wc) и все заработало как обычно. Но когда я запустил канал с пробелом, все заработало, и bash посчитал эту команду совершенно правильной, хотя, когда я ввел ту же самую команду несколько минут назад, она вообще не понравилась.

Вот скриншот этого:

Скриншот

У меня два очень похожих вопроса:

  • Что заставляет bash обрабатывать эти две строки по-разному, даже если они одинаковы? Я понятия не имею, почему это происходит.
  • Как я мог это исправить?

1 ответ1

6

Есть подсказка к проблеме в сообщении об ошибке; есть дополнительное пространство, показывающее:

bash:  wc: … 

Скорее, чем:

bash: wc: …

Я предполагаю, что из вашего вопроса вы используете Mac. Я собираюсь догадаться, что вы используете раскладку клавиатуры, в которой набрав | символ требует использования клавиши Alt/Option . Я думаю, что может случиться так, что вы даете пальцу задержаться на клавише Alt при вводе пробела.

Alt+Space вводит неразрывный пробел, а не обычный символ пробела, который синтаксический анализатор Bash не считает пробелами какого-либо рода и поэтому принимает его как часть имени команды.

Это работает во второй раз, потому что вы печатаете более тщательно!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .