Почему $ является символом по умолчанию для пользовательской оболочки и # символом по умолчанию для корневой оболочки?

Из man curl:

   -w, --write-out <format>
          Defines what to display on stdout after a completed and
          successful operation.

          <...>

          redirect_url   When an HTTP request was made without -L to
                         follow redirects, this variable will show the 
                         actual URL a redirect would take you to.
                         (Added in 7.18.2)

Так что, вероятно, curl -w "%{redirect_url}" link1 даст вам первый url перенаправления.

Возможно, вам подойдет что-то вроде этого:

URL="http://google.com"
while [ -n "${URL}" ]
do
    echo $URL
    URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done
8
24.06.2016, 01:58
2 ответа

Исторически исходный / bin / sh Bourne shell будет использовать $ в качестве обычного приглашения и # для приглашения пользователя root (а csh будет использовать % ). Это упростило задачу скажите, работаете вы как суперпользователь или нет.

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

Более современные оболочки (например, ksh, bash) продолжите это различие $ и # , хотя это менее важно, когда вы можете установить более сложные значения, такие как имя пользователя, имя хоста, каталог: -)

20
27.01.2020, 20:08

Традиция.

Стандарт POSIX гласит (выделено мной):

PS1

Эта переменная используется для интерактивных подсказок. Исторически сложилось так, что " суперпользователь "получил приглашение" # ". Поскольку привилегии не требуются {{1 }} чтобы быть монолитным, трудно определить, какие привилегии должны вызывать альтернативное приглашение. Однако достаточно влиятельному пользователю следует напомнить об этой возможности с помощью альтернативной подсказки.

См. Также этот ответ практически на тот же вопрос на форуме SuperUser.

12
27.01.2020, 20:08

Теги

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