Co oznacza ta składnia?


Odpowiedzi:


76
$ type echo
echo is a shell builtin

co oznacza, że echopolecenie jest częścią samego bashprogramu (zakładając, że używasz bash)

-n jest opcją, więc zobaczmy, co robi

$ help echo
Write arguments to the standard output
...
-n  do not append a newline

Więc kiedy uruchomimy linię:

zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$ 

Hmm, to nie wygląda zbyt dobrze, ponieważ po wydrukowanym tekście nie ma nowej linii. Wrócimy do tego.

$ type date
date is /bin/date

ah, więc datepolecenie jest osobnym programem. Co to robi?

$ man date
Display the current time in the given FORMAT, or set the system date.

Znaki po datepoleceniu to opcje formatowania (które muszą być poprzedzone +) - określone są różne części daty (na przykład %Apełna nazwa dnia tygodnia - man datepełna lista opcji znajduje się w dalszej części )

$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017

Więc jeśli umieścimy polecenia w skrypcie, a następnie uruchomimy skrypt, otrzymamy

Today's date is: Tuesday, February 7, 2017

Ładny! Jeśli chcesz uzyskać ten sam efekt w terminalu, możesz użyć średnika do oddzielenia dwóch poleceń zamiast nowego wiersza:

$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017

21
To jest zaawansowana odpowiedź RTFM, +1
YSC

1
Powiedziałbym, że brakuje wyjaśnienia na temat znaku plus przed argumentem
Délisson Junio

@ DélissonJunio ​​zredagowano, ale odpowiedź Melebiusa pokazuje to lepiej w bezpośrednim cytacie ze strony podręcznika man
Zanna

@Zanna Nie jestem operatorem, ale to, co przykuło moją uwagę, to fakt, że plus wydaje się dziwny, ponieważ myślę, że bash zinterpretuje wszystko między cytatami jako jeden argument, nie uwzględniając plus. Ale myślę, że to kolejne pytanie
Délisson Junio

2
Możesz również umieścić plus w cudzysłowie. Bash ma dziwny sposób na łączenie cytowanego i sąsiedniego tekstu, np. Cd „$ x” / output lub nawet cd nospace / „with space” / nospace
StarWeaver

10

Powinieneś zacząć od stron podręcznika, polecenia man. Po prostu wpisz, man <command>aby uzyskać informacje o <command>. Nawigacja w mannie jest bardzo intuicyjna, ale istnieje wiele przewodników, na przykład https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages .

Odpowiednie części man echoi man date:

Echo

echo [SHORT-OPTION]... [STRING]...

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

Tak więc drukuje ciąg i po tym nie przechodzi do nowego wiersza (co jest zachowaniem domyślnym), więc wynik następnego polecenia zostanie wydrukowany po prawej stronie powtórzonego ciągu.

data

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

Mam nadzieję, że to jasne. Zapytaj, jeśli nie.


Wielkie dzięki. Mam inne pytanie: Czy jest już wbudowana funkcja wyświetlania daty w terminalu?
Nieznana osoba,

@Zanna To właściwie nie jest nowe pytanie, jest związane z pytaniem, które zadałem.
Nieznana osoba,

1
@Nieznany osobnik, jeśli chcesz, aby data była domyślnie wyświetlana w terminalu, to naprawdę jest zupełnie inne pytanie niż „co robi ten kod”, ponieważ musisz edytować zmienną PS1 (a może to zrobić za pomocą aplikacji terminala ustawienia - o tym jestem nieświadomy), co jest poza zakresem tego postu
Zanna

1
@Unknownperson date ma pokazać datę w terminalu (interfejs linii poleceń). Jeśli chcesz czegoś więcej (jak sugeruje Zanna), zadaj nowe pytanie.
Melebius

4
echo -n "Today's date is: "

Zostanie wydrukowane: dzisiejsza data to:

date +"%A, %B %-d, %Y"

Wydrukuje coś takiego: wtorek, 7 lutego 2017 r

Porada :

  1. użyj manlub --helppolecenie, aby dowiedzieć się więcej o innych poleceniach.
    np .:

    man echo
    echo --help
  2. Wypróbuj te wyzwania wyzwania są naprawdę dobre, aby pomóc Ci nauczyć się robić rzeczy na terminalu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.