如何仅打印我当前所在的当前目录

时间:2018-11-02 00:19:00

标签: bash unix pwd

我正在尝试找到一种方法,以仅正确获取im当前所在的目录的名称。如果im在名为HW04的目录中,并且pwd打印出home/zachary/HW04,我将如何仅打印HW04?还是使用pwd来获得很多名字?任何更简单的方法?

谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用echo $(basename $(pwd))(如果要打印,也可以使用basename $(pwd));参见basename(1)pwd(1)(也许是内置的shell)和command substitutionbash reference manual部分。

您可能会发现bash prompt configuration来设置提示,以告诉您这种情况。

答案 1 :(得分:0)

也可以使用awk

pwd | awk -F'/' '{print $NF}'

这只会给您当前文件夹的名称。

答案 2 :(得分:0)

示例它将为您提供

嘿,尝试使用basename home/zachary/HW04

使用基本名 使用basename命令是提取当前目录的最简单方法:

basename /usr/local/bin

输出将为bin 但是,它在更改目录变量的shell脚本中没有用。您可以将其与反引号内的pwd结合使用,以使其更加动态:

cd / usr / local / binbasename pwd 箱子 在echo中使用参数替换 bash脚本语言充满了许多不错的技巧,包括参数替换,它使您可以操纵或扩展变量。您可以使用带有$ {var ## pattern}语法的参数替换,该语法从$ var中删除与$ var前端匹配的$ Pattern中最长的部分。看一个例子:

cd / var / log / squidecho $ {PWD ## * /} 乌贼 PWD是保存当前路径的环境变量,而##是告诉脚本删除它找到的所有内容的指令,直到* /。换句话说,它将删除所有内容,直到最后一个/为止,仅保留最后一个字符串,这是当前目录squid。您可以在《高级Bash脚本指南》中了解有关参数替换以及其他操作变量的方法的信息。

使用awk和rev 更加精细的解决方案结合使用awk(模式扫描实用程序)和rev(从文件或stdin反转行的实用程序):

cd / usr / share / cups / datapwd |转速| awkââ¬F/'{print $ 1}'|转速 数据 逐步理解这种脚本要容易得多:

pwd / usr / share / cups / data pwd |转速 atad / supc / erahs / rsu / pwd |转速| awkââ¬F/'{print $ 1}' 阿塔德 pwd |转速| awkââ¬F/'{print $ 1}'|转速 数据 -F选项指示您应按字段分隔,其中字段定界符为/,并应打印字段1。

使用sed 最后,您可以使用精心设计的正则表达式在sed流编辑器中解析pwd输出。这种方法可能是有教育意义的,但不实用:

cd / home / smith / musicpwd | sed's,^(。 /)\?([^ /] ),\ 2,' 音乐 为了更好地了解其工作原理,请删除转义字符(),这是特殊字符(例如“(”:

)所必需的

sed的s,^(。 /)?([^ /] ),\ 2,'

pwd。在类似Unix的操作系统和某些其他操作系统中,pw​​d命令(打印工作目录)将当前工作目录的完整路径名写入标准输出。该命令是大多数Unix shell(例如Bourne shell,ash,bash,ksh和zsh)中内置的shell。

pwd显示当前工作目录。示例:/ home / foobar

pwd -P显示当前工作目录的物理路径-不带符号链接名称(如果有)。示例:如果站在目录/ home / symlinked中,即指向/ home / realdir的符号链接,则显示/ home / realdir

pwd -L显示当前工作目录逻辑路径-带有符号链接名称(如果有)。例如:如果站在目录/ home / symlinked中,即指向/ home / realdir的符号链接,则会显示/ home / symlinked

https://en.wikipedia.org/wiki/Pwd