Почему я иногда неоднократно становлюсь предложенным с> “” в терминале?

Я мог отобразить это, не важно, чтобы файл был структурирован в столбцах, так как Вы записали, что раздражаетесь длинными URL. По крайней мере, в случае парсинга файла вместо того, чтобы просмотреть его.

В этом случае мое решение

perl -pe 's%(http://\S+)%substr($1, 0, 15)%ge' <file_with_long_urls> | column -t

Это удаляет все символы URL позади пятнадцатого символа после a http://.

Если столбцы не разграничены пробелами, но с символом & (который обозначает произвольный разделитель), мое решение похоже

perl -pe 's%(http://\S+?)(?=&|$)%substr($1, 0, 15)%ge' <file_with_long_urls> | column -s '&' -t

Возможно, можно работать с этим!?

19
05.10.2014, 14:41
5 ответов

> - это приглашение продолжения по умолчанию. Это то, что вы увидите, если то, что вы ввели ранее, имели несбалансированные метки цитаты.

В качестве примера введите одну цитату в командной строке, за которым следует несколько , введите клавиши :

$ '
> 
> 
> 

Приглашения продолжения будут происходить до тех пор, пока вы также

  • (A) завершают команду с помощью команды Закрывающая цитата Марка

    или

  • (B) Тип Ctrl + D Для завершения ввода, в какой точке оболочка ответит сообщение об ошибке о несбалансированных цитатах

    ИЛИ

  • (C) Тип Ctrl + C , который прерывает команду, которую вы ввели.

Как это полезно

когда-нибудь, вы можете войти в строку, которая содержит встроенные новые строки. Вы можете сделать это следующим образом:

$ paragraph='first line
> second line
> third line
> end'

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

$ echo "$paragraph"
first line
second line
third line
end
43
27.01.2020, 19:44

В дополнение к другим ответам вы также получаете приглашение продолжения, когда набираете \ в качестве последнего символа в строке.

7
27.01.2020, 19:44

Попробуйте использовать эхо вместо кат .

# echo 'enter-uefi-fw' > /sys/firmware/efi/vars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var
-121--46150-

Отказоустойчивым для создания сценария конфигурации является autoreconf -i , который не только сам вызывает autoconf , но и множество других необходимых инструментов.

-121--19507-

Это произойдет, если в команде есть незамкнутая цитата. Это что-то вроде:

$ echo "test here
>
>
...

Вы можете выйти из этого режима, закрыв кавычку (напишите " или ', или что бы ни было в вашей открытой кавычке). Это также может быть блок с разделителями, частично полный для или для или некоторые другие конструкции. Можно также нажать Ctrl-C для отмены этой команды (затем нажать Up для ее изменения).

Иногда это может произойти без очевидной пропущенной цитаты, когда параметр или история расширения происходят там, где их не ожидали.


> - это ваше значение PS2 («вторичная подсказка»). Вы можете изменить это на что-то другое, чтобы напомнить вам, что произошло:

PS2="Unclosed >"

в вашем .bashrc заставит его напечатать Unclosed > в начале каждой строки.

16
27.01.2020, 19:44

Оболочка ожидает Вы, чтобы завершить команду. Может быть, есть неразъемная цитата где-то, или она думает, что вы начинаете «для» петли и ждет, чтобы пользователь закончил набрать ввод

6
27.01.2020, 19:44

Ответ заключается в этом загадочном упоминании в Справочное руководство Bash :

5.1 Переменные оболочки Bourne

[...]

  • PS1 : основная строка приглашения. Значение по умолчанию - « \ s- \ v \ $ ». См. Печать приглашения для получения полного списка управляющих последовательностей, которые раскрываются перед отображением PS1 .
  • PS2 : дополнительная строка приглашения. Значение по умолчанию - «> ».

, за которым следует :

6.3.3 Поведение интерактивной оболочки

  1. Bash раскрывает и отображает PS1 перед чтением первой строки команды, а затем раскрывает и отображает PS2 перед чтением второй и последующих строк многострочной команды.

Итак, приглашение > появляется, если вы нажимаете Enter и Bash определяет, что команда не завершена. Это могло быть потому, что:

  • Символ перед новой строкой - это \ , который рассматривается как продолжение строки .
  • У вас есть неполная строка (несовпадающие кавычки или незавершенный документ here-doc) или некоторые другие несовпадающие разделители, например $ () , () , `` .
  • Вы запустили определение функции, цикл for , цикл while или случай .

Если вы видите вторичное приглашение из-за непреднамеренной ошибки ввода, нажмите Control C , чтобы вернуться к основному приглашению.

7
27.01.2020, 19:44

Теги

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