Những gì nhỏ bé nguệch ngoạc ~ làm gì trong Linux?


25

Tôi có hai phiên bản của nó đang được sử dụng và tôi tự hỏi mỗi cái làm gì:

  1. service=~

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

Những gì nhỏ bé nguệch ngoạc ~làm gì?

Sau đó, sau đó, sẽ cd $servicelàm gì?


3
điều này rất xứng đáng với một thẻ [nguệch ngoạc]
cregox

3
Tilde, là shell cụ thể và không cụ thể cho linux.
David Allan Finch

@Cawas: Hỏi và các bạn sẽ nhận được.
Dave Sherohman

@Cảm ơn! Nhưng có vẻ như Chris ghét nó. Ôi, cuộc sống vẫn tiếp diễn ...
cregox

Đây thực sự là lần đầu tiên điều này được hỏi? Tôi dự kiến ​​điều này sẽ được đóng lại như một bản sao.
Erik B

Câu trả lời:


45

Điều nguệch ngoạc được gọi là "dấu ngã".

Nó mở rộng đến thư mục nhà của bạn.

Thử

echo ~
echo $HOME

Cả hai câu lệnh đều tự đặt thư mục nhà của bạn trên một dòng ..

Xem bash Tilde Expansion để biết chi tiết.


8
Sự so sánh ở trên, trong khi hợp lệ, có lẽ là sai lệch: dấu ngã chỉ hoạt động trong quá trình giải thích shell trong các tập lệnh và tại dòng lệnh. Biến môi trường, $ HOME, tuy nhiên, hoạt động ở bất cứ nơi nào một biến môi trường hoạt động - đó là nhiều nơi hơn.
Mei

36

"Squiggly" được gọi là dấu ngã. Nó được sử dụng để chỉ thư mục chính của bạn trên Linux, thông thường /home/username . Nó cũng được lưu trữ trong $HOMEbiến môi trường. Mở rộng ~vị trí của thư mục chính là công việc của trình bao (như zsh hoặc bash) hoặc trình quản lý tệp (như Nautilus) chứ không phải hệ thống tệp hoặc hệ điều hành của chính nó.

Bạn cũng có thể sử dụng điều này để tham khảo thư mục nhà của người dùng khác. Ví dụ: nếu tên người dùng của người dùng khác là bob, bạn có thể tham khảo thư mục chính của họ ~bob, sẽ được mở rộng thành /home/bob/.

Ví dụ đầu tiên bạn đã đưa ra bộ biến serviceđến ~, vì vậy nó tương ứng với thư mục chính của bạn. Điều này tương đương với service=/home/usernamehoặc service=$HOME.

Ví dụ thứ hai sao chép tệp ~/Desktop/Service$version.tgz(hoặc /home/username/Desktop/Service$version.tgz) sang /home/username. Lệnh này tương đương với:

mv ~/Desktop/Service$version.tgz ~

hoặc là

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

hoặc là

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

Thứ ba sẽ thay đổi thư mục làm việc hiện tại ( $PWD) thành /home/username/. Điều này tương đương với:

cd /home/username/

hoặc là

cd $HOME

3
Một điều nữa cần ghi nhớ: Mở rộng Tilde là công việc của trình bao hoặc trình quản lý tệp, nó không phải là một chức năng của chính hệ thống tệp Linux. Do đó, nó thường không hoạt động trong các tệp cấu hình và thêm dấu ngoặc kép quanh "~", nó sẽ dừng việc mở rộng của nó trong trình bao.
Grumbel

3
Cũng cần lưu ý rằng các thư mục nhà không nhất thiết phải nằm trong / nhà vì vậy không nên giả sử rằng ~ mở rộng thành / home / [tên người dùng của tôi] hoặc ~ bob mở rộng thành / home / bob
darkl Liquid

Cảm ơn lời đề nghị @Grumbel. Và cảm ơn @priceChild đã thêm vào đề xuất của @ darkl Liquid!
Wuffers

10

Trong cả # 1 & # 2: ~ là thư mục chính của bạn, vì vậy nếu bạn là qwerty, nó có thể sẽ là thư mục / home / qwerty. Vì vậy, hãy thử ls ~để thấy rằng.

Đối với # 1: đối với tôi có vẻ như dịch vụ biến đang được xác định là thư mục chính của bạn.

Điều đó có nghĩa là sau khi # 2 đã chuyển tệp tgz từ thư mục con Desktop sang thư mục chính của bạn, # 3 sau đó thay đổi sang thư mục chính.


5

Có vẻ như các lệnh đang làm như sau.

  1. Chỉ định một biến được gọi là dịch vụ cho vị trí thư mục nhà của bạn, ví dụ:

    /home/user
    
  2. Nó di chuyển tệp từ máy tính để bàn của bạn lên cấp cao nhất của thư mục chính của bạn, ví dụ:

    /home/user/Desktop/Service$version.tgz $service
    
  3. Tập lệnh sau đó thay đổi thư mục lên cấp cao nhất của thư mục chính.

Vì vậy, tất cả các tập lệnh đang làm chỉ là làm sạch máy tính để bàn của bạn bằng cách di chuyển tệp vào /home/userthư mục của bạn thay vào đó.


1

Tôi sẽ thêm vào đây rằng ~ người dùng cũng mở rộng sang thư mục chính của [người dùng], vì vậy đây không chỉ là lối tắt cho thư mục chính của bạn .

Ví dụ:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.