это означает, что echoкоманда является частью самой bashпрограммы (если вы используете bash)
-n это вариант, так что давайте посмотрим, что он делает
$ help echo
Write arguments to the standard output
...
-n do not append a newline
Итак, когда мы запускаем линию:
zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$
Хм, это выглядит не очень хорошо, потому что после напечатанного текста нет новой строки. Мы вернемся к этому.
$ type date
date is /bin/date
ну так dateкоманда это отдельная программа. Что оно делает?
$ man date
Display the current time in the given FORMAT, or set the system date.
Символы после dateкоманды представляют собой параметры формата (перед которыми должны стоять символы +) - указываются разные части даты (например, %Aполное имя дня недели - man dateполный список параметров см. В остальной части )
$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017
Так что, если мы соберем команды в сценарии и затем запустим сценарий, мы получим
Today's date is: Tuesday, February 7, 2017
Ницца! Если вам нужен тот же эффект в терминале, вы можете использовать точку с запятой для разделения двух команд вместо новой строки:
$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017
Я бы сказал, что здесь отсутствует объяснение того, что означает знак плюс перед аргументом
Делиссон Хунио
@ DélissonJunio отредактировал, но ответ Мелебиуса показывает это лучше с прямой цитатой man-страницы
Zanna
@Zanna Я не OP, но то, что привлекло мое внимание, было то, что плюс кажется странным, поскольку я думаю, что bash будет интерпретировать все между кавычками как один аргумент, не включая плюс. Но я думаю, это другой вопрос
Делиссон Хунио,
2
Вы также можете поместить плюс в кавычки. Bash имеет странный способ работы вместе заключенного в кавычки и смежного текста, например cd "$ x" / output или даже cd nospace / "with space" / nospace
echo [SHORT-OPTION]...[STRING]...Echo the STRING(s) to standard output.-n do not output the trailing newline
Таким образом, он печатает строку и не переходит на новую строку после этого (что является поведением по умолчанию), поэтому выходные данные следующей команды будут напечатаны справа от отображаемой строки.
Дата
date [OPTION]...[+FORMAT]
FORMAT controls the output.Interpreted sequences are:%A locale's full weekday name (e.g., Sunday)
%B locale's full month name (e.g.,January)%d day of month (e.g.,01)%Y year
By default, date pads numeric fields with zeroes.The following optional flags may follow '%':-(hyphen)do not pad the field
Надеюсь, это понятно. Не стесняйтесь спрашивать, если нет.
Большое спасибо. У меня другой вопрос: есть ли встроенная функция для отображения даты в терминале?
Неизвестный человек
@Zanna Это на самом деле не новый вопрос, это связано с вопросом, который я задал.
Неизвестный
1
@ Неизвестный, если вы хотите, чтобы дата отображалась в терминале по умолчанию, это действительно совершенно другой вопрос, чем «что делает этот код», потому что вам нужно будет отредактировать переменную PS1 (или, возможно, это можно сделать с помощью приложения терминала). настройки - о том, что я в неведении), что выходит за рамки этого поста
Zanna
1
@Unknownperson dateделает дату шоу в терминале (интерфейс командной строки). Если вы хотите что-то еще (например, то, что предлагает Занна), пожалуйста, задайте новый вопрос.
Мелебиус
4
echo -n "Today's date is: "
Он напечатает: Сегодняшняя дата:
date +"%A, %B %-d, %Y"
Будет напечатано что-то вроде этого: вторник, 7 февраля 2017 г.
Совет :
используйте manили --helpкоманду, чтобы узнать больше о любых других командах.
например:
man echo
echo --help
Попробуйте эти задачи, задачи действительно полезны, чтобы помочь вам научиться делать что-то на терминале.
$ man date && man echo
на оболочке.Ответы:
это означает, что
echo
команда является частью самойbash
программы (если вы используете bash)-n
это вариант, так что давайте посмотрим, что он делаетИтак, когда мы запускаем линию:
Хм, это выглядит не очень хорошо, потому что после напечатанного текста нет новой строки. Мы вернемся к этому.
ну так
date
команда это отдельная программа. Что оно делает?Символы после
date
команды представляют собой параметры формата (перед которыми должны стоять символы+
) - указываются разные части даты (например,%A
полное имя дня недели -man date
полный список параметров см. В остальной части )Так что, если мы соберем команды в сценарии и затем запустим сценарий, мы получим
Ницца! Если вам нужен тот же эффект в терминале, вы можете использовать точку с запятой для разделения двух команд вместо новой строки:
источник
Вы должны начать с справочных страниц, команда
man
. Просто введите,man <command>
чтобы получить информацию о<command>
. Навигацияman
не очень интуитивно понятна, но есть много руководств, например, https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages .Соответствующие части
man echo
иman date
:эхо
Таким образом, он печатает строку и не переходит на новую строку после этого (что является поведением по умолчанию), поэтому выходные данные следующей команды будут напечатаны справа от отображаемой строки.
Дата
Надеюсь, это понятно. Не стесняйтесь спрашивать, если нет.
источник
date
делает дату шоу в терминале (интерфейс командной строки). Если вы хотите что-то еще (например, то, что предлагает Занна), пожалуйста, задайте новый вопрос.Он напечатает: Сегодняшняя дата:
Будет напечатано что-то вроде этого: вторник, 7 февраля 2017 г.
Совет :
используйте
man
или--help
команду, чтобы узнать больше о любых других командах.например:
Попробуйте эти задачи, задачи действительно полезны, чтобы помочь вам научиться делать что-то на терминале.
источник