Bu sözdizimi ne anlama geliyor?


16

Terminalde yeniyim ve nasıl kullanılacağını öğrenmeye çalışıyorum.

Bu çizgiler ne işe yarıyor? Ve nasıl çalışırlar?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"

7
$ man date && man echokabuk.
code_dredd

Yanıtlar:


76
$ type echo
echo is a shell builtin

yani, echokomut bashprogramın kendisinin bir parçasıdır (bash kullandığınızı varsayarsak)

-n bir seçenek, o yüzden ne yaptığını görelim

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

Yani çizgiyi çalıştırdığımızda:

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

Hmm çok iyi görünmüyor, çünkü yazdırılan metinden sonra yeni satır yok. Buna geri döneceğiz.

$ type date
date is /bin/date

ah bu yüzden datekomut ayrı bir programdır. Bu ne işe yarıyor?

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

Komuttan sonraki karakterler dateformat seçenekleridir (öncesinde gelmesi gerekir +) - tarihin farklı bölümleri belirtilir (örneğin %Ahaftanın günün tam adı - man dateseçeneklerin tam listesi için geri kalanına bakın )

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

Bu yüzden komutları bir komut dosyasında bir araya getirir ve sonra komut dosyasını çalıştırırsak

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

Güzel! Bir terminalde aynı efekti istiyorsanız, yeni satırı yerine iki komutu ayırmak için noktalı virgül kullanabilirsiniz:

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

21
Bu gelişmiş bir RTFM cevabıdır, +1
YSC

1
Tartışmadan önce artı işaretinin ne olduğuna dair bir açıklama eksik olduğunu söyleyebilirim
Délisson Junio

@ DélissonJunio ​​düzenledi, ancak Melebius'un cevabı doğrudan adam sayfa teklifi ile daha iyi gösteriyor
Zanna

@Zanna Ben OP değilim, ama gözümü yakalayan şey, bashın tırnaklar arasındaki her şeyi artı dahil değil, tek bir argüman olarak yorumlayacağını düşündüğüm için artı tuhaf görünüyordu. Ama sanırım bu başka bir soru
Délisson Junio

2
Artıyı tırnak içine de koyabilirsiniz. Bash, alıntılanmış ve bitişik metni bir arada çalıştırmanın tuhaf bir yoluna sahiptir, örneğin cd "$ x" / output veya hatta cd nospace / "boşluklu" / nospace
StarWeaver

10

Manuel sayfalarla başlamalısınız, komut man. Sadece yazın man <command>bir hakkında bilgi almak için <command>. Gezinmek mançok sezgisel değil, ancak birçok kılavuz var, örneğin https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages .

İlgililer parçaları man echove man date:

Eko

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

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

Böylece dizeyi yazdırır ve bundan sonra yeni satıra gitmez (varsayılan davranış budur), böylece bir sonraki komutun çıktısı yankı dizesinin sağ tarafına yazdırılır.

tarih

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

Umarım açıktır. Değilse sormaktan çekinmeyin.


Çok teşekkürler. Başka bir sorum var: Terminalde tarihi göstermek için zaten yerleşik bir işlev var mı?
Bilinmeyen kişi

@Zanna Aslında yeni bir soru değil, sorduğum bir soru ile ilgili.
Bilinmeyen kişi

1
@Bilinmeyen kişi varsayılan olarak terminalde görüntülenmesini istiyorsanız, bu PS1 değişkenini düzenlemeniz gerekeceğinden (veya belki de terminal uygulamasıyla yapılabilir) "bu kodun ne yaptığı" için tamamen farklı bir sorudur. ayarları - bu konuda bilgisizim), bu
yazının

1
@Unknownperson date yapar terminali (komut satırı arabirimi) içerisinde göstermek tarih. Daha fazla bir şey istiyorsanız (Zanna'nın önerdiği gibi), lütfen yeni bir soru sorun.
Melebius

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

Yazdırılacak: Bugünün tarihi:

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

Bunun gibi bir şey yazdıracak: 7 Şubat 2017 Salı

Tavsiye :

  1. diğer komutlar hakkında daha fazla bilgi edinmek için manveya --helpkomutunu kullanın.
    Örneğin :

    man echo
    echo --help
  2. Bu zorlukları deneyin zorluklar terminalde bir şeyler yapmayı öğrenmenize yardımcı olmak için gerçekten iyidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.