Linux / UNIX sh shell中的哪个命令返回我的当前目录?


37

使用sh外壳程序(不是bash),Linux / UNIX中的哪个命令可以打印出当前目录?

$ *showmewhereiam*
/sys/kernel/debug
$

4
一个简单的谷歌搜索会给出答案,对吗?
疯狂科学家,

9
@ Mad-scientist虽然这可能是正确的,但却违反了问题/答案网站告诉人们去Google的目的。我们90%的流量来自网络搜索
slhck 2011年


2
对于SEO而言,没有什么太简单了!
Kenzo

有趣的是,这个问题是简单的Google搜索的答案unix whereami
Jay Killeen

Answers:


60

尝试pwd

$ pwd
/home/<username>

6
当我第一次接触linux时,我以为这是关于密码的命令,/dev是关于开发的(源代码或类似的东西)
LiuYan刘研

2
哦,开发人员意味着设备?!一直想到现在才意味着dev ...我以为dev / null是Linux 开发人员放置特殊null对象的地方。感谢@LiuYan刘研
1owk3y

@LiuYan刘研-如果您不知道,我完全会感到困惑。我必须查一下。对于任何为自己为什么选择该功能的命令感到困惑的人,它代表“打印工作目录”。
squarecandy

1
@squarecandy,这就是为什么我会尽可能避免使用首字母缩略词的原因,即使首字母缩略词在这个时候也没有歧义-您永远都不知道将来会有什么意思。杰夫·邓纳姆Jeff Dunham)的娃娃沃尔特(Walter)说了一个笑话:DC中发生的一切留在YouTube上!,其中DC手段ð igital Ç相机,但也意味着华盛顿,d的istrict Ç olumbia在笑话。
刘岩刘研

11

尽管一般答案是pwd,请注意,这可能会产生不同的结果,具体取决于您如何到达给定目录以及路由是否包含符号链接。

例如,如果您有一个名为的目录,real并且有一个指向该目录的符号链接virtual,并且您cd指向该virtual目录,那么即使您所在的实际目录为,pwd也会显示该virtual目录名称real

要显示真实的基础目录,请使用pwd -Preadlink -f(对于任意路径):

$ mkdir实
$ ln -s实际虚拟
$ cd虚拟
$ pwd
/ home / 用户名 / tmp / virtual
$ pwd -P
/ home / 用户名 / tmp / real
$ readlink -f。
/ home / 用户名 / tmp / real

请注意,shell通常会pwd用其自己的内部版本替换命令,因此在我的系统(RHEL6)上,即使pwd(1)手册页建议该命令--physical也可以和一样工作-P,因为我正在运行bash,但不会:

$ pwd-物理
bash:pwd:-:无效选项
pwd:用法:pwd [-LP]
$ / bin / pwd-物理
/ home / 用户名 / tmp / real
$ / usr / bin / env pwd-物理
/ home / 用户名 / tmp / real

1

正如其他人所说,pwd通常做得很好。但是,我想添加一个对我有所帮助的想法。

在当今所有常用的外壳程序上,您都可以自定义命令提示符的外观。我想自定义我的我的名字,以便它同时显示我所在计算机的名称和工作目录。这样,我总是知道我在哪里。(计算机名称部分可帮助我了解所使用的终端窗口是否已用于SSH进入远程服务器。)例如,当我在笔记本电脑上打开一个新的终端窗口(称为Plastico)时,会看到以下信息:

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

您会看到它将我的主目录缩写为~。我发现在终端提示中这样做非常方便-我一眼就能知道确切的位置,甚至比通过Finder窗口查看时更清楚。

在tcsh上,我将其添加set prompt = 'Plastico %~%# ' 到主目录中的.tcshrc文件中。我也通过添加export PS1="Plastico $PWD $ "到.profile文件在ksh上完成了此操作。但是,作为Linux用户,您可能会使用Bash,我对此没有太多经验(我是这样的怪人)。但看起来我可以通过将其添加PS1="Plastico \w $ "到.bashrc文件中来做到这一点。

编辑:刚注意到OP状态您对sh感兴趣,而不是bash。那好吧; 希望人们无论如何都觉得有用。


那是个好主意。对于一个简单的桌面用例,它可能会很好地工作。如果仅您的提示Plastico /var/www/vhosts/myveryexcellentwebsite.com/public_html/wp-content/themes/myveryexcellenttheme/js/vendor/excellentjs/ >或类似的提示,对于超深目录来说,它似乎就变得很笨拙。
squarecandy

1
$ pwd
/your/current/directory
$

pwd来自打印工作目录

从Linux手册页:

名称

pwd-当前/工作目录的打印名称

概要

pwd [选项] ...

描述

打印当前工作目录的完整文件名。

-L--logical

从环境使用PWD,即使它包含符号链接

-P-物理

避免所有符号链接

- 救命

显示此帮助并退出

- 版

输出版本信息并退出

注意:您的Shell可能有其自己的pwd版本,通常会取代此处描述的版本。请参阅您的Shell文档以获取有关其支持的选项的详细信息。

(...)


这复制了五年多以前接受的答案信息。您还能添加其他内容吗?
bertieb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.