У меня может быть оболочка, игнорируют командную строку иногда, но не всегда?

1 отличается, чем 2 и 3. 2 и 3 идентичны.

В версии 1, C\nB\nA\n отправляется в sort. sortFD 2 отображается от его исходного места назначения (STDERR) к STDOUT и затем FD 1, который перешел бы в STDOUT так или иначе, отправляется в... sort STDOUT снова (скорее бессмысленно).

В версиях 2 и 3, echoFD 2 отображается от его исходного места назначения (STDERR) к STDOUT и затем FD 1, который перешел бы в STDOUT так или иначе, отправляется в echo STDOUT.

Функционально эти команды только произведут другой вывод, если одна из команд отправит что-то в STDERR.

В версии 1, если echo производит что-то к FD 2, он перейдет в STDERR, но в 2 и 3, это перейдет в STDOUT (и таким образом также быть переданным по каналу к sort). Кроме того, в версии 1, если sort отправляет что-то в FD 2, он перейдет в STDOUT, тогда как в версиях 2 и 3, которые производят, перейдет в STDERR.

С точки зрения "предпочтительного варианта", необходимо действительно использовать что-то больше как это (предположение, что Вы хотите echo STDERR перейти в sort):

echo -en "C\nB\nA\n" 2>&1 | sort

Это работает, потому что FD 1 уже переходит в STDOUT по умолчанию просто имейте копию FD 2 описание файла к его дескриптору.

0
16.01.2014, 13:24
4 ответа

Закончите строку путем нажатия Ctrl+C. Это будет похоже

[user@box ~]$ Are you there?^C

ETA: Ctrl+C отправляет сигналу SIGINT, который в этом контексте в основном означает "остановку, что я делаю и даю мне назад подсказку". Это все равно как тогда, когда Вы запускаете программу от своей подсказки и нажатие Ctrl+C - это закроет под управлением программу и даст Вам Вашу подсказку назад. Кроме этого случая Вы на самом деле не запустили программу.

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

6
28.01.2020, 02:13
  • 1
    Это действительно решает, но можно объяснить в ответе, почему это работает? –  Geek 16.01.2014, 15:16
  • 2
    я добавил объяснение. –  Jenny D 16.01.2014, 15:33

Просто прокомментируйте свое сообщение путем предварительного ожидания a # к нему. Таким образом, ничто из того, что Вы пишете, не будет обработано, ни расширено оболочкой.

[xxx@slc04lyo abc]$ # Hello, this is dog. I will use the box for some time

Примечание: Если Вы забываете писать # во-первых, можно поразить Высокий звук + #, чтобы прокомментировать текущую строку и возвратиться к подсказке в единственном перемещении. Это работает с использованием подсказок GNU Readline, такой как удар, ksh, mysql, Python, zsh и многие другие.

Вот краткое изложение сочетаний клавиш readline's GNU.

7
28.01.2020, 02:13

Существует a : команда, которая ничего не делает и игнорирует ее аргументы (путь назад, когда, это использовалось для меток маркировок для использования goto команда.)

$ : Hi this is X. I will use the box for some time
$

[Редактирование: Как @llua указывает, оболочка все еще проанализирует командную строку, таким образом, любые несбалансированные фигурные скобки, кавычки, одинарные левые кавычки, и т.д. приведут к подсказке продолжения, и точка с запятой, канал, и т.д. завершит команду.]

Если Вы хотите иметь двухсторонний чат с другим пользователем, ввести cat >/dev/null и затем введите все, что Вы хотите; не будет никакого вывода кроме того, что Вы вводите. Введите Ctrl-C для завершения cat.

$ cat >/dev/null
Are you there?
yes I am.
^C
5
28.01.2020, 02:13
  • 1
    : или # в моем случае я использовал бы двоеточие в качестве тире, нуждаются во мне для ввода заглавных букв +, двоеточие –  Kiwy 16.01.2014, 13:29
  • 2
    нормальный парсинг все еще происходит, таким образом, : Mark's answer заставит оболочку ожидать окончания '. –  llua 16.01.2014, 14:34

Можно просто ввести echo Hi this is X. I will use the box for some time нет?

Если Вы хотите избежать какого-либо выходного сигнала, можно также рассмотреть:
echo Hi this is X. I will use the box for some time &> /dev/null это перенаправит ошибку и вывод этой команды в null. ==> никакой вывод вообще.

Можно также использовать комментарий как это:
# Hi this is X. I will use the box for some time
если Ваше использование оболочки, которая не использует # как метка комментария просто используют ту, к которой Вы привыкли.

1
28.01.2020, 02:13
  • 1
    echo все еще имеет вывод. Я не должен видеть вывод. Другой пользователь уже находится в VNC, и видьте то, что я ввел. таким образом, вывод является лишним. –  Geek 16.01.2014, 13:23
  • 2
    @Geek # не работает? –  Kiwy 16.01.2014, 14:17

Теги

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