Küçük dalgalı Linux'ta ne yapar?


25

Kullanılmakta olan iki örneği var ve her birinin ne yaptığını merak ediyorum:

  1. service=~

  2. mv ~/Desktop/Service$version.tgz $service

Küçük dalgalı ne yapar ~?

Sonra ondan sonra ne yapardı cd $service?


3
bu yüzden [
squiggly

3
Tilde, kabuğa özgüdür ve linux'a özgü değildir.
David Allan Finch

@Cawas: Ask ve sen alacaksın.
Dave Sherohman

@Dave teşekkürler! Ama Chris ondan nefret ediyormuş gibi görünüyor. Oh, hayat devam ediyor ...
cregox

Bu gerçekten ilk defa mı soruluyor? Bunun bir kopya olarak kapatılmasını bekliyordum.
Erik B,

Yanıtlar:


45

Dalgalı şey bir "tilde" denir.

Ana dizininize genişler.

Deneyin

echo ~
echo $HOME

Her iki ifade de ev dizininizi bir satıra yerleştirir.

Detaylar için bash Tilde Expansion'a bakınız.


8
Yukarıdaki karşılaştırma, geçerli olsa da, belki de yanıltıcıdır: tilde yalnızca komut dosyalarında ve komut satırında kabuk yorumlama sırasında çalışır. $ HOME, çevre değişkeni, bir ortam değişkeninin çalıştığı her yerde çalışır - bu da çok daha fazla yerdir.
Mei,

36

"Dalgalı" bir tilde denir. Linux'taki normalde ev dizinine atıfta bulunmak için kullanılır /home/username. Ayrıca $HOMEortam değişkeninde saklanır . Giriş ~dizininin konumunu genişletmek, kabuğun (zsh veya bash gibi) veya dosya yöneticisinin (Nautilus gibi) işi olup dosya sistemi veya işletim sisteminin kendisi değildir.

Bunu başka bir kullanıcının ana dizinine başvurmak için de kullanabilirsiniz. Örneğin, diğer kullanıcının kullanıcı adı ise bob, ~bobgenişletilecek olan kendi dizinine bakabilirsiniz /home/bob/.

Eğer setleri değişken verdiğim ilk örnek serviceiçin ~, yani ana dizine karşılık gelir. Bu eşittir service=/home/usernameveya service=$HOME.

İkinci örnek dosyayı ~/Desktop/Service$version.tgz(veya /home/username/Desktop/Service$version.tgz) kopyalar /home/username. Bu komut şuna eşittir:

mv ~/Desktop/Service$version.tgz ~

veya

mv ~/Desktop/Service$version.tgz $HOME

veya

mv ~/Desktop/Service$version.tgz /home/username/

Üçüncüsü geçerli çalışma dizinini ( $PWD) olarak değiştirir /home/username/. Bu eşdeğerdir:

cd /home/username/

veya

cd $HOME

3
Akılda tutulması gereken bir başka şey: Tilde genişleme kabuğun veya filemanager'ın işidir, Linux dosya sisteminin kendisinin bir işlevi değildir. Bu nedenle çoğu zaman yapılandırma dosyalarında çalışmaz ve "~" etrafında tırnak işaretleri ekleyerek kabuktaki genişlemesini durduracaktır.
Grumbel

3
Ayrıca, ev dizinlerinin mutlaka / home içerisine
girmediklerine

Öneri @Grumbel için teşekkürler. @ Darkliquid'in önerisini eklediğiniz için teşekkürler @PriceChild!
Wuffers

10

Her iki # 1 & # 2: ~ de ana dizininizdir, bu nedenle eğer qwerty iseniz, muhtemelen / home / qwerty dizini olacaktır. Öyleyse ls ~bunu görmeye çalış .

# 1 için: değişken servisi ana dizininiz olarak tanımlanıyor gibi görünüyor.

Bunun anlamı # 2, tgz dosyasını Desktop alt dizininden ana dizininize getirdikten sonra, # 3 sonra ana dizine geçer.


5

Komutlar aşağıdakileri yapıyor gibi görünüyor.

  1. Ana klasör konumunuza servis adı verilen bir değişken atayın, örneğin:

    /home/user
    
  2. Dosyayı masaüstünüzden ana dizininizin en üstüne taşır, örneğin:

    /home/user/Desktop/Service$version.tgz $service
    
  3. Komut dizini daha sonra dizini ana dizinin en üst seviyesine değiştirir.

Yani, betiğin yaptığı tek şey dosyayı masaüstüne taşıyarak masaüstünüzü temizlemektir /home/user.


1

Buraya şunu ekleyeceğim: ~ user [user] dizinine de genişler, bu yüzden kendi ev dizininiz için sadece bir kısayol değildir .

Örneğin:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
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.