Lệnh nào trong shell sh Linux / UNIX trả về thư mục hiện tại của tôi?


37

Sử dụng shshell (không bash), lệnh nào trong Linux / UNIX in ra thư mục hiện tại của tôi?

$ *showmewhereiam*
/sys/kernel/debug
$

4
Một tìm kiếm google đơn giản sẽ đưa ra câu trả lời, phải không?
khoa học điên

9
@ Mad-nhà khoa học Trong khi điều này có thể đúng, nó đánh bại mục đích của một trang web câu hỏi / câu trả lời để nói với mọi người để đi đến Google. 90% lưu lượng truy cập của chúng tôi là từ các tìm kiếm trên web .
slhck


2
Không có gì là quá đơn giản cho SEO!
Kenzo

Thật thú vị, câu hỏi này là câu trả lời cho tìm kiếm đơn giản trên google chounix whereami
Jay Killeen

Câu trả lời:


60

Hãy thử pwd.

$ pwd
/home/<username>

6
Khi tôi lần đầu chạm vào linux, tôi nghĩ đó là một lệnh về mật khẩu/devlà thứ gì đó về sự phát triển (mã nguồn hoặc một cái gì đó tương tự)
LiuYan 刘

2
Oh, dev có nghĩa là thiết bị?! Luôn luôn nghĩ cho đến bây giờ nó chỉ có nghĩa là dev ... Tôi nghĩ dev / null là nơi các nhà phát triển linux đặt đối tượng null đặc biệt. Cảm ơn @LiuYan 刘
1owk3y

@LiuYan - Tôi hoàn toàn đồng ý rằng thật khó hiểu nếu bạn không biết. Tôi đã tìm ra nó. Nó là viết tắt của "In thư mục làm việc" cho bất kỳ ai khác gặp khó khăn tại sao họ chọn lệnh đó cho chức năng đó.
squarecandy

1
@squarecandy, Đó là lý do tại sao tôi sẽ tránh sử dụng các từ viết tắt càng nhiều càng tốt khi tôi già đi và thậm chí từ viết tắt không có ý nghĩa mơ hồ vào lúc này - Bạn không bao giờ biết ý nghĩa của nó trong tương lai. Có một câu nói đùa của búp bê Walter Dunham 's Walter: Chuyện gì xảy ra ở DC vẫn ở trên YouTube! , trong đó DC có nghĩa là D igital C amera nhưng cũng có nghĩa là Washington, D istrict của C olumbia trong trò đùa.
LiuYan 刘

11

Trong khi câu trả lời chung là pwd, lưu ý rằng điều này có thể cho các kết quả khác nhau tùy thuộc vào cách bạn đạt đến một thư mục nhất định và liệu tuyến đường có bao gồm các liên kết tượng trưng hay không.

Ví dụ, nếu bạn có một thư mục được gọi realvà một liên kết tượng trưng đến thư mục đó được gọi virtualvà bạn cdđến virtualthư mục đó, thì nó pwdsẽ hiển thị virtualtên thư mục đó, mặc dù thư mục thực tế bạn đang ở real.

Để hiển thị thư mục cơ bản thực sự, sử dụng pwd -Phoặc readlink -f(cho một đường dẫn tùy ý):

$ mkdir thật
$ ln -s ảo thật
$ cd ảo
$ pwd
/ nhà / tên người dùng / tmp / ảo
$ pwd -P
/ nhà / tên người dùng / tmp / thực
$ readlink -f.
/ nhà / tên người dùng / tmp / thực

Lưu ý rằng shell thường thay thế pwdlệnh bằng phiên bản nội bộ của riêng chúng, vì vậy trên hệ thống của tôi (RHEL6), mặc dù pwd(1)trang hướng dẫn cho thấy rằng nó --physicalsẽ hoạt động tốt -P, vì tôi đang chạy bash, nhưng nó không:

$ pwd - vật lý
bash: pwd: -: tùy chọn không hợp lệ
pwd: cách sử dụng: pwd [-LP]
$ / bin / pwd - vật lý
/ nhà / tên người dùng / tmp / thực
$ / usr / bin / env pwd - vật lý
/ nhà / tên người dùng / tmp / thực

1

Như những người khác nói, pwdthường làm công việc đủ tốt. Tuy nhiên, tôi muốn thêm một ý tưởng đã giúp tôi.

Trên tất cả các shell được sử dụng phổ biến hiện nay, bạn có thể tùy chỉnh sự xuất hiện của dấu nhắc lệnh. Tôi thích tùy chỉnh của tôi để nó hiển thị cho tôi cả tên của máy tính tôi đang sử dụng và thư mục làm việc của tôi. Bằng cách đó, tôi luôn biết mình đang ở đâu. (Phần tên máy tính giúp tôi nhận ra nếu cửa sổ đầu cuối mà tôi đang sử dụng đã được sử dụng để SSH vào máy chủ từ xa.) Ví dụ: khi tôi mở một cửa sổ đầu cuối mới trên máy tính xách tay của mình, tôi gọi là Plastico, tôi thấy điều này:

Plastico ~> cd Desktop/
Plastico ~/Desktop> cd ~/Sites/raygunrobot.com
Plastico ~/Sites/raygunrobot.com> cd /usr
Plastico /usr> 

Bạn có thể thấy rằng nó viết tắt thư mục nhà của tôi là ~. Tôi thấy làm điều này cho lời nhắc thiết bị đầu cuối của mình là vô cùng tiện dụng - tôi luôn biết trong nháy mắt chính xác mình đang ở đâu, thậm chí còn hơn cả khi tôi nhìn vào cửa sổ Finder.

Trên tcsh, tôi làm điều này bằng cách thêm set prompt = 'Plastico %~%# ' vào tệp .tcshrc trong thư mục chính của tôi. Tôi cũng đã thực hiện nó trên ksh bằng cách thêm export PS1="Plastico $PWD $ "vào tệp .profile của mình. Nhưng là một người dùng Linux, có lẽ bạn sử dụng Bash, điều mà tôi không có nhiều kinh nghiệm (tôi là một người kỳ quặc như thế). Nhưng có vẻ như tôi có thể làm điều đó bằng cách thêm PS1="Plastico \w $ "vào tệp .bashrc của mình.

Chỉnh sửa: Chỉ cần lưu ý các trạng thái OP bạn quan tâm đến sh, không phải bash. Ồ tốt; hy vọng mọi người tìm thấy điều này hữu ích bất kể.


Đó là một ý tưởng tuyệt vời. Có thể làm việc tốt cho một trường hợp sử dụng máy tính để bàn đơn giản. Có vẻ như nó có thể trở nên khó sử dụng cho các thư mục siêu sâu nếu dấu nhắc của bạn là Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >hoặc một cái gì đó tương tự.
squarecandy

1
$ pwd
/your/current/directory
$

pwdđến từ thư mục làm việc in .

Từ trang người đàn ông Linux:

Tên

pwd - tên in của thư mục hiện tại / làm việc

Tóm tắc

pwd [TÙY CHỌN] ...

Sự miêu tả

In tên tệp đầy đủ của thư mục làm việc hiện tại.

-L , -

sử dụng PWD từ môi trường, ngay cả khi nó chứa symlink

-P , vật lý

tránh tất cả các liên kết tượng trưng

--Cứu giúp

hiển thị trợ giúp này và thoát

--phiên bản

thông tin phiên bản đầu ra và thoát

LƯU Ý: shell của bạn có thể có phiên bản pwd riêng, thường thay thế phiên bản được mô tả ở đây. Vui lòng tham khảo tài liệu của shell của bạn để biết chi tiết về các tùy chọn mà nó hỗ trợ.

(...)


Điều này trùng lặp thông tin trong câu trả lời được chấp nhận từ hơn năm năm trước . Bạn có thể thêm bất cứ điều gì khác?
bertieb
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.