Komutta $ () nedir?


18

$()Linux Kabuk Komutları'nda neler var ?

Örneğin:

chmod 777 $(pwd)

1
Line shell komutu diye bir şey olmadığını unutmayın . Linux için çok sayıda kabuk uygulaması vardır.
Stéphane Chazelas

Yanıtlar:


21

Backtick'lere çok benziyor ''.

Buna komut değiştirme ( posix belirtimi ) denir ve bir alt kabuk çağırır. $()Ters çentiklerin (``) parantezindeki veya ``) parantezindeki komut bir alt kabukta yürütülür ve daha sonra çıkış orijinal komutuna yerleştirilir.

İğnelerin tersine, $(...)form yuvalanabilir. Böylece, komut değiştirme işlemini başka bir değiştirme içinde kullanabilirsiniz.

İkame içinde kaçan karakterlerde aso farklılıklar vardır. $(...)Formu tercih ederim .


4
ters çentikler de yuvalanabilir. Sondaki satırsonu karakterlerinin komutun çıktısından kaldırıldığını unutmayın.
Stéphane Chazelas

2
@ StéphaneChazelas backticks nasıl yuvalanabilir? Eksiz kaçmak mı demek istiyorsun?
chaos

3
Evet: likeecho `echo \`echo foo\`` bar
Stéphane Chazelas

1
Geri tepmelerin kullanımdan kaldırıldığını söyleyen resmi bir referans var mı?
vinc17

1
Bu yanıtı bulundu: unix.stackexchange.com/questions/126927/… kullanımdan kaldırılmadı gibi görünüyor. Cevabımı değiştirdim, teşekkürler
kaos

5

POSIX veya In POSIX'e benzeri kabuklar ( ksh, bash, ash, zsh, yashgibi ...), öyle ``komut içi: $()yürütülür ve standart çıkışa ile değiştirilir. $()Çift tırnak içine alınmadıkça , kelime ayırma ve dosya adı oluşturma işlemleri yapılır . Böylece

chmod 777 $(pwd)

aşağıdakilerle değiştirilmelidir:

chmod 777 "$(pwd)"

geçerli çalışma dizini yolunda sözcük bölme ve dosya adı oluşturulmasını önlemek için.

Ya da daha iyisi (dizinin yeniden adlandırılması durumunda zsh gibi bazı kabuklar hariç):

chmod 777 "$PWD"

Çünkü $PWDPOSIX kabuklarında geçerli çalışma dizininin yolunu tutan özel bir değişkendir.

Ya da daha iyisi:

chmod 777 .

Yana .geçerli dizinde girişi bu dizine kendisi için zor bir bağlantıdır.


2

Bu $(), çoğunlukla diğer bazı komutların içindeki bir komutu yürütmek için kullanılır.

chmod 777 $(pwd)

pwdkomutu geçerli çalışma dizinini verir. Yani, her şey yürütüldüğünde pwd çıkışı yerini değiştirecek ve argüman olarak hizmet edecek chmodve sonuç şu anki tüm çalışma dizininizin 777üretim ortamında asla kullanılmaması gerektiğini düşündüğüm izni almasıdır;).

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.