Tóm tắt hoạt động (TL; DR)
- Sử dụng
pwd
để biết bạn đang ở đâu (hoặc nhìn giữa :
và $
trong dấu nhắc của bạn).
- Sử dụng
cd
để thay đổi thư mục ở nơi khác. Không giống như trong Windows, cd
phải luôn được theo sau bởi khoảng trắng; các lệnh như cd/
và cd..
sẽ không hoạt động, nhưng cd /
và cd ..
sẽ.
Biết bạn đang ở đâu
Cách 1: Chạy pwd
.
Thư mục nào bạn hiện đang sử dụng là dành riêng cho shell (và nói chung hơn là dành riêng cho ứng dụng). Bạn có thể đang chạy một shell nơi bạn đang ở trong một thư mục và một shell khác nơi bạn đang ở trong một thư mục khác.
Để biết thư mục nào bạn đang ở, hãy chạy:
pwd
Ví dụ: (từ trình bao tôi tình cờ mở bây giờ, trên máy của tôi):
ek@Kip:~$ pwd
/home/ek
Điều này cho tôi biết rằng tôi đang ở trong thư mục /home/ek
. /home
là (hơi khó hiểu) thư mục chứa thư mục nhà của người dùng (bản thân nó không phải là thư mục chính của người dùng). Người dùng username
có thư mục nhà ./home/username
Người root
dùng không có một thư mục nhà /home
. Thay vào đó, root
thư mục nhà là /root
. Điều này không được nhầm lẫn với thư mục gốc , đó là /
.
Cách 2: Kiểm tra lời nhắc của bạn.
Cấu hình mặc định cho lời nhắc của bạn là nó cho bạn biết thư mục nào bạn hiện đang ở. Lời nhắc của bạn là văn bản xuất hiện để thông báo cho bạn rằng trình bao sẵn sàng chấp nhận lệnh.
Trong ví dụ bạn chỉ cho chúng tôi trong câu hỏi của bạn, lời nhắc của bạn là:
christy@ubuntu:~$
christy
là tên người dùng của bạn. Ký @
tự tách nó khỏi ubuntu
, tên máy chủ của máy tính của bạn. (Nếu bạn đang chạy CD trực tiếp, tên máy chủ của nó sẽ là ubuntu
và một số người chọn đó là tên máy tính của họ trong quá trình cài đặt.)
Ký :
tự tách nó khỏi tên của thư mục bạn hiện đang ở. Trong trường hợp này, nó được đại diện bởi ~
. ~
là tốc ký cho thư mục nhà của bạn. Khi bạn không ở trong thư mục chính của mình, bạn sẽ thấy một tên thư mục đầy đủ. Ví dụ:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Để hoàn thành ý nghĩa của từng phần của dấu nhắc: Đối với các lời nhắc tuân theo quy ước này, một $
hoặc một #
ký tự xuất hiện. $
Như trong trường hợp này, có nghĩa đó là vỏ người dùng bình thường. Một #
ký tự có nghĩa là root
vỏ.)
Thay đổi bạn đang ở đâu
Tại sao lệnh "cd" của bạn không hoạt động.
Để thay đổi thư mục, sử dụng cd
lệnh.
Bạn đã chạy cd/
. Điều này không hoạt động vì bạn không thực sự chạy cd
lệnh. Trong Ubuntu và các hệ điều hành giống Unix khác (thực ra, trong các shell kiểu Unix như bash
, shell bạn đang sử dụng), tên của lệnh được coi là chỉ kết thúc ở một khoảng trắng hoặc cuối dòng.
Vì vậy, không giống như trong Dấu nhắc lệnh trong Windows (nơi cd\
được hiểu giống như cd \
và cd..
được hiểu là giống như cd ..
), trong bash
(shell bạn đang sử dụng trong Ubuntu), cd/
không phải là một lệnh hợp lệ. Bạn phải sử dụng cd /
.
cd/
có nghĩa là "mục trong thư mục hiện tại có tên cd
và cũng là một thư mục." Có hay không một thư mục con như vậy tồn tại, nó không thể chạy như một lệnh, vì vậy một trong hai cách bạn sẽ nhận được một lỗi (mặc dù những gì lỗi bạn nhận được sẽ khác nhau):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Di chuyển đến thư mục nhà của bạn
Để đi đến thư mục chính của bạn, hãy tự chạy cd
mà không có bất kỳ đối số nào:
cd
Một số người thích đặt tên rõ ràng thư mục nhà của họ. Bạn có thể sử dụng tên đầy đủ của nó, hoặc
cd ~
Nhưng cd
tự nó là đủ.
Di chuyển lên một thư mục
Để thay đổi thư mục thành thư mục mẹ của thư mục hiện tại (nghĩa là thư mục chứa nó), hãy sử dụng:
cd ..
..
đại diện cho thư mục mẹ của thư mục hiện tại. Nếu bạn đang ở trong thư mục gốc ( /
), có một ngoại lệ: ..
chỉ đại diện /
. Vì vậy, chạy cd ..
di chuyển lên một thư mục khi chạy bất cứ nơi nào nhưng /
; Khi chạy vào /
, bạn ở lại /
.
Mỗi thư mục chứa một ..
mục. Tất cả chúng đều chứa một .
mục trong đó đề cập đến chính thư mục hiện tại. Nó không phải là rất để chạy cd .
mặc dù. Bạn luôn ở nơi bạn đang ở.
Con đường tuyệt đối và tương đối
Nếu bạn cd
đến một cái gì đó không bắt đầu bằng a /
, thì nó sẽ cố gắng đi đến thư mục đó trong thư mục hiện tại .
Ví dụ: nếu bạn chạy
cd var/log
Sau đó, nó sẽ cố gắng đi vào var
thư mục con của nơi bạn hiện đang ở, và vào log
thư mục con của điều đó. Trừ khi cả hai tồn tại, và ở những nơi đó, cd
lệnh đó sẽ thất bại (và bạn sẽ vẫn ở nơi bạn ban đầu).
Nếu bạn muốn đi đến log
thư mục con của var
thư mục con của thư mục gốc , hãy chạy cái này thay thế:
cd /var/log
Chỉ khi bạn đang trong /
là cd var/log
tương đương với cd /var/log
.
Một con đường bắt đầu bằng /
là tuyệt đối. Cách giải quyết không phụ thuộc vào nơi bạn hiện đang ở.
Đường dẫn ~
là tuyệt đối quá, bởi vì nó (về cơ bản) là tốc ký $HOME
. HOME
là một biến môi trường và biểu thức $HOME
mở rộng đến đường dẫn đầy đủ, tuyệt đối của thư mục chính của người dùng hiện tại.
~
ký hiệu cũng có thể được sử dụng để thể hiện thư mục nhà của người dùng khác . Nếu bạn viết , nó đại diện cho thư mục nhà của.~username
username
Quay trở lại nơi bạn đã từng
Thư mục bạn hiện đang được lưu trữ trong PWD
biến môi trường. Thư mục cuối cùng bạn đang ở được lưu trữ trong OLDPWD
biến môi trường. Bạn có thể xem OLDPWD
giống như cách bạn xem bất kỳ biến môi trường nào:
echo $OLDPWD
Bởi vì thông tin này được lưu trữ, cd
có thể có một cách đặc biệt, nhanh chóng và dễ dàng để quay lại nơi bạn đã ở trước đó. Như pst007x nói , để đi đến thư mục cuối cùng bạn đã vào, hãy chạy:
cd -
Nếu không bao giờ có bất kỳ thư mục nào trước đó bạn nằm trong shell đó, thì OLDPWD
biến môi trường sẽ không được đặt và cố gắng chạy cd -
sẽ dẫn đến lỗi (và bạn sẽ giữ nguyên vị trí của mình):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Thay đổi nơi bạn giống như một ông chủ
pushd
và popd
: Thư mục ngăn xếp
Hãy tưởng tượng một chồng tên thư mục. Theo một ngăn xếp , tôi có nghĩa là một cái gì đó khi bạn thêm một cái gì đó lên trên cùng và bạn chỉ có thể loại bỏ một thứ tại một thời điểm và thứ bạn loại bỏ luôn là những gì hiện đang ở trên cùng.
Bạn có thể đẩy bất kỳ thư mục nào dir
lên ngăn xếp bằng cách chạy:
pushd dir
Nếu bạn muốn đẩy thư mục hiện tại lên đầu ngăn xếp, bạn có thể sử dụng .
(như đã giải thích ở trên, luôn đại diện cho thư mục hiện tại):
pushd .
Sau đó, bạn có thể đi về doanh nghiệp của bạn, thay đổi thư mục nhiều như bạn muốn. Khi bạn muốn quay lại thư mục cuối cùng bạn đã đẩy lên ngăn xếp với pushd
, hãy chạy:
popd
Điều này đi đến thư mục đó, và cũng bật nó ra khỏi ngăn xếp. Bây giờ ngăn xếp là một thư mục ngắn hơn. Nếu đó là thư mục duy nhất trên ngăn xếp, thì ngăn xếp đó bây giờ trống rỗng.
Bạn có thể có một ngăn xếp có kích thước lớn hơn 1. Nghĩa là, bạn có thể sử dụng pushd
các lệnh riêng biệt để đẩy nhiều thư mục lên ngăn xếp. Mỗi popd
lệnh tiếp theo sẽ đi đến (và bật ra, tức là xóa khỏi ngăn xếp ) thư mục được đẩy gần đây nhất chưa được bật.
Đây là một ví dụ:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushd
và popd
được sử dụng ít thường xuyên hơn nhiều cd
. Họ cũng có những ứng dụng khác, thậm chí cao cấp hơn. Chạy help pushd
và help popd
để biết chi tiết.
Tìm hiểu thêm và truy cập tài liệu
cd
và pwd
có sử dụng cao cấp hơn quá. Để tìm hiểu về họ, chạy help cd
và man pwd
.
help
là dành cho vỏ dựng . man
dành cho các lệnh độc lập - các lệnh chạy dưới dạng các tiến trình riêng biệt và tồn tại dưới dạng các tệp thực thi riêng biệt. Các type
lệnh cho thấy nếu một lệnh là một BUILTIN vỏ hay không, và nếu không, nơi mà các chương trình nó chạy tọa lạc. Ví dụ, bạn có thể chạy type help
, type type
hoặc type man
.