Cách Sử Dụng Từ “PWD”
Trong bài viết này, chúng ta sẽ khám phá từ “PWD” – một từ viết tắt thường được sử dụng trong hệ thống Linux và macOS, nghĩa là “Print Working Directory” (in thư mục làm việc hiện tại). Bài viết cung cấp 20 ví dụ sử dụng trong ngữ cảnh Linux/macOS, cùng hướng dẫn chi tiết về ý nghĩa, cách dùng, và các lưu ý quan trọng.
Phần 1: Hướng dẫn sử dụng “PWD” và các lưu ý
1. Ý nghĩa cơ bản của “PWD”
“PWD” là viết tắt của “Print Working Directory”.
- Lệnh PWD: In đường dẫn tuyệt đối của thư mục làm việc hiện tại trên terminal.
Ví dụ: Khi bạn gõ “PWD” vào terminal, nó sẽ hiển thị đường dẫn đầy đủ của thư mục bạn đang làm việc.
2. Cách sử dụng “PWD”
a. Sử dụng lệnh PWD trên terminal
- Gõ “PWD” và nhấn Enter
Lệnh này sẽ in ra đường dẫn tuyệt đối của thư mục hiện tại.
Ví dụ: Sau khi gõ “PWD” và nhấn Enter, terminal có thể hiển thị “/home/user/documents”.
b. Sử dụng PWD trong shell script
- Gán kết quả của PWD cho một biến
Điều này cho phép bạn sử dụng đường dẫn thư mục hiện tại trong script.
Ví dụ:current_dir=$(PWD)
sau đó bạn có thể sử dụng biến$current_dir
.
c. Kết hợp PWD với các lệnh khác
- Sử dụng PWD để tạo đường dẫn đầy đủ
Bạn có thể kết hợp PWD với các lệnh nhưcd
(change directory) hoặcls
(list files).
Ví dụ:ls $(PWD)
sẽ liệt kê các file trong thư mục hiện tại.
d. Biến thể và cách dùng trong câu lệnh
Dạng | Lệnh | Ý nghĩa / Cách dùng | Ví dụ |
---|---|---|---|
Lệnh | PWD | In thư mục làm việc hiện tại | Gõ “PWD” trên terminal. (Gõ “PWD” trên terminal.) |
Biến | $PWD | Biến môi trường chứa đường dẫn thư mục hiện tại | echo $PWD (Hiển thị đường dẫn thư mục hiện tại.) |
3. Một số cụm từ thông dụng với “PWD” (trong ngữ cảnh script)
- PWD=$(dirname “$0”): Lấy đường dẫn thư mục chứa script đang chạy.
Ví dụ: Thường dùng để tham chiếu đến các file cấu hình hoặc resource trong cùng thư mục với script. - cd $(PWD): Chuyển đến thư mục hiện tại (ít dùng, nhưng đôi khi hữu ích trong script phức tạp).
4. Lưu ý khi sử dụng “PWD”
a. Ngữ cảnh phù hợp
- Terminal: Để biết bạn đang ở thư mục nào.
- Script: Để tự động hóa các tác vụ liên quan đến đường dẫn thư mục.
b. Phân biệt với các lệnh liên quan
- “PWD” vs “echo $PWD”:
– “PWD”: Thực thi lệnh và in kết quả trực tiếp.
– “echo $PWD”: In giá trị của biến môi trường PWD (thường giống kết quả của PWD). - “PWD” vs “cd”:
– “PWD”: Hiển thị đường dẫn hiện tại.
– “cd”: Thay đổi đường dẫn hiện tại.
c. Biến môi trường PWD
- Biến môi trường
$PWD
thường chứa giá trị giống như lệnhPWD
, nhưng đôi khi có thể không đồng bộ nếu bạn vừa thay đổi thư mục bằng lệnhcd
.
5. Những lỗi cần tránh
- Sử dụng PWD mà không hiểu rõ mục đích:
– Sai: *Chạy PWD mà không biết đường dẫn sẽ được dùng để làm gì.*
– Đúng: Sử dụng PWD để lưu đường dẫn vào biến và dùng nó để tạo đường dẫn đến file. - Nhầm lẫn giữa PWD và cd:
– Sai: *Muốn chuyển thư mục nhưng lại gõ PWD.*
– Đúng: Gõ cd /path/to/directory để chuyển thư mục.
6. Mẹo để ghi nhớ và sử dụng hiệu quả
- Liên kết: PWD = Print Working Directory = In thư mục làm việc hiện tại.
- Thực hành: Chạy PWD sau mỗi lệnh cd để làm quen.
- Sử dụng trong script: Tạo các script đơn giản sử dụng PWD để tự động hóa các tác vụ.
Phần 2: Ví dụ sử dụng “PWD”
Ví dụ minh họa
- Gõ
PWD
trên terminal để xem thư mục hiện tại. (Gõ `PWD` trên terminal để xem thư mục hiện tại.) echo $PWD
để hiển thị giá trị của biến môi trường PWD. (echo $PWD
để hiển thị giá trị của biến môi trường PWD.)current_dir=$(PWD)
gán đường dẫn hiện tại cho biếncurrent_dir
. (current_dir=$(PWD)
gán đường dẫn hiện tại cho biếncurrent_dir
.)ls $(PWD)
liệt kê các file trong thư mục hiện tại. (ls $(PWD)
liệt kê các file trong thư mục hiện tại.)cd $(PWD)/subdir
chuyển đến thư mục con “subdir” của thư mục hiện tại. (cd $(PWD)/subdir
chuyển đến thư mục con “subdir” của thư mục hiện tại.)- Sử dụng
PWD
trong một script để xác định vị trí của file cấu hình. (Sử dụngPWD
trong một script để xác định vị trí của file cấu hình.) find . -type f -print0 | while IFS= read -r -d $'' file; do echo "$(PWD)/$file"; done
in ra đường dẫn đầy đủ của tất cả các file trong thư mục hiện tại và thư mục con. (find . -type f -print0 | while IFS= read -r -d $'' file; do echo "$(PWD)/$file"; done
in ra đường dẫn đầy đủ của tất cả các file trong thư mục hiện tại và thư mục con.)- Trong một script,
cd /tmp; touch $(PWD)/tempfile.txt
tạo một file tạm trong thư mục /tmp và lưu đường dẫn của nó vào thư mục hiện tại (PWD). (Trong một script,cd /tmp; touch $(PWD)/tempfile.txt
tạo một file tạm trong thư mục /tmp và lưu đường dẫn của nó vào thư mục hiện tại (PWD).) - Kiểm tra xem thư mục hiện tại có tồn tại không bằng cách dùng
if [ -d "$(PWD)" ]; then echo "Thư mục tồn tại"; fi
. (Kiểm tra xem thư mục hiện tại có tồn tại không bằng cách dùngif [ -d "$(PWD)" ]; then echo "Thư mục tồn tại"; fi
.) - Sử dụng
PWD
để tạo backup của thư mục hiện tại:tar -czvf backup.tar.gz $(PWD)
. (Sử dụngPWD
để tạo backup của thư mục hiện tại:tar -czvf backup.tar.gz $(PWD)
.) - Trong một crontab, sử dụng
PWD
để đảm bảo script chạy đúng thư mục:0 0 * * * cd $(PWD) && ./myscript.sh
. (Trong một crontab, sử dụngPWD
để đảm bảo script chạy đúng thư mục:0 0 * * * cd $(PWD) && ./myscript.sh
.) - Để xem thư mục gốc của người dùng hiện tại, bạn có thể kết hợp với lệnh `echo ~`, so sánh với `PWD` để xem có đang ở thư mục gốc không. (Để xem thư mục gốc của người dùng hiện tại, bạn có thể kết hợp với lệnh `echo ~`, so sánh với `PWD` để xem có đang ở thư mục gốc không.)
- Kết hợp `PWD` với `mkdir` để tạo thư mục con trong thư mục hiện tại: `mkdir $(PWD)/new_folder`. (Kết hợp `PWD` với `mkdir` để tạo thư mục con trong thư mục hiện tại: `mkdir $(PWD)/new_folder`.)
- Sử dụng trong Dockerfile để thiết lập thư mục làm việc: `WORKDIR $(PWD)`. (Sử dụng trong Dockerfile để thiết lập thư mục làm việc: `WORKDIR $(PWD)`.)
- `rsync -avz $(PWD)/ source@destination:/path/` đồng bộ thư mục hiện tại lên server từ xa. (`rsync -avz $(PWD)/ source@destination:/path/` đồng bộ thư mục hiện tại lên server từ xa.)
- Trong một pipeline CI/CD, sử dụng `PWD` để xác định thư mục build. (Trong một pipeline CI/CD, sử dụng `PWD` để xác định thư mục build.)
- Sử dụng `stat -c %n $(PWD)` để in ra tên của thư mục hiện tại. (Sử dụng `stat -c %n $(PWD)` để in ra tên của thư mục hiện tại.)
- Tạo một symbolic link tới một file sử dụng `PWD`: `ln -s $(PWD)/file.txt /tmp/link.txt`. (Tạo một symbolic link tới một file sử dụng `PWD`: `ln -s $(PWD)/file.txt /tmp/link.txt`.)
- Để tìm kiếm các file có tên “example.txt” trong thư mục hiện tại và các thư mục con, sử dụng: `find $(PWD) -name “example.txt”`. (Để tìm kiếm các file có tên “example.txt” trong thư mục hiện tại và các thư mục con, sử dụng: `find $(PWD) -name “example.txt”`.)
- So sánh `PWD` với đường dẫn mong muốn bằng câu lệnh `if [ “$(PWD)” == “/home/user/project” ]; then echo “Đang ở đúng thư mục”; fi`. (So sánh `PWD` với đường dẫn mong muốn bằng câu lệnh `if [ “$(PWD)” == “/home/user/project” ]; then echo “Đang ở đúng thư mục”; fi`.)