Apa yang sedikit berlekuk di Linux?

25

Saya memiliki dua contoh penggunaannya dan saya bertanya-tanya apa yang dilakukan masing-masing:

  1. service=~

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

Apa yang dilakukan si kecil berlekuk ~?

Lalu, setelah itu, apa yang akan cd $servicedilakukan?

O_O
sumber
3
ini sangat pantas diberi tag [berlekuk]
cregox
3
Tilde, spesifik untuk shell dan tidak spesifik untuk linux.
David Allan Finch
@ Cawas: Tanyakan, dan kamu akan menerima.
Dave Sherohman
@ Terima kasih! Tapi sepertinya Chris membencinya. Oh well, hidup terus berjalan ...
cregox
Apakah ini benar-benar pertama kali ditanyakan? Saya berharap ini akan ditutup sebagai duplikat.
Erik B

Jawaban:

45

Yang berlekuk disebut "tilde".

Itu diperluas ke direktori home Anda.

Mencoba

echo ~
echo $HOME

Kedua pernyataan menempatkan direktori home Anda sendiri pada satu baris ..

Lihat bash Tilde Expansion untuk detailnya.

Mikel
sumber
8
Perbandingan di atas, meskipun valid, mungkin menyesatkan: tilde hanya berfungsi selama interpretasi shell dalam skrip dan di baris perintah. Variabel lingkungan, $ HOME, bekerja di mana pun variabel lingkungan berfungsi - yang merupakan lebih banyak tempat.
Mei
36

"Berlekuk" disebut tilde. Ini digunakan untuk merujuk ke direktori home Anda yang pada Linux, biasanya /home/username . Itu juga disimpan dalam $HOMEvariabel lingkungan. Memperluas ~ke lokasi direktori home adalah tugas shell (seperti zsh atau bash) atau file manager (seperti Nautilus) dan bukan sistem file atau OS itu sendiri.

Anda juga dapat menggunakan ini untuk merujuk ke direktori home pengguna lain. Misalnya, jika nama pengguna pengguna lain adalah bob, Anda dapat merujuk ke direktori home mereka ~bob, yang akan diperluas ke /home/bob/.

Contoh pertama yang Anda berikan set variabel serviceuntuk ~, sehingga sesuai dengan direktori home Anda. Ini sama dengan service=/home/usernameatau service=$HOME.

Contoh kedua menyalin file ~/Desktop/Service$version.tgz(atau /home/username/Desktop/Service$version.tgz) ke /home/username. Perintah ini setara dengan:

mv ~/Desktop/Service$version.tgz ~

atau

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

atau

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

Yang ketiga akan mengubah direktori kerja saat ini ( $PWD) menjadi /home/username/. Ini setara dengan:

cd /home/username/

atau

cd $HOME
Wuffers
sumber
3
Satu hal tambahan yang perlu diingat: Perluasan Tilde adalah pekerjaan shell atau filemanager, itu bukan fungsi dari sistem file Linux itu sendiri. Dengan demikian sering tidak akan berfungsi di file konfigurasi dan menambahkan tanda kutip di sekitar "~" itu akan menghentikan ekspansi di shell.
Grumbel
3
Juga harus dicatat bahwa direktori home tidak selalu terletak di / home sehingga tidak boleh diasumsikan bahwa ~ ekspansi ke / home / [nama pengguna saya] atau yang ~ bob ekspansi ke / home / bob
darkliquid
Terima kasih atas sarannya @Grumbel. Dan terima kasih @PriceChild untuk menambahkan saran @ darkliquid!
Wuffers
10

Di kedua # 1 & # 2: ~ adalah direktori home Anda, jadi jika Anda qwerty, itu kemungkinan adalah direktori / home / qwerty. Jadi cobalah ls ~untuk melihatnya.

Untuk # 1: menurut saya layanan variabel sedang didefinisikan sebagai direktori home Anda.

Itu berarti setelah # 2 memindahkan file tgz dari subdirektori Desktop ke direktori home Anda, # 3 kemudian berubah ke direktori home.

nomader apa
sumber
5

Sepertinya perintah melakukan hal berikut.

  1. Tetapkan layanan yang disebut variabel ke lokasi folder rumah Anda, misalnya:

    /home/user
    
  2. Ini memindahkan file dari desktop Anda ke tingkat atas direktori home Anda, misalnya:

    /home/user/Desktop/Service$version.tgz $service
    
  3. Script kemudian mengubah direktori ke tingkat atas direktori home.

Jadi, semua skrip lakukan hanya membersihkan desktop Anda dengan memindahkan file ke /home/userfolder Anda saja.

James
sumber
1

Saya akan menambahkan di sini bahwa ~ pengguna juga memperluas ke direktori home [pengguna], jadi itu bukan hanya jalan pintas untuk direktori home Anda sendiri .

Misalnya:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
Rooke
sumber