linux shell中获取当前目录,在Bash脚本中获取当前目录名称(没有完整path)

不需要basename,特别是不需要运行pwd的子shell(它增加了额外的和昂贵的fork操作 )。 shell可以使用参数扩展在内部执行此操作:

result=${PWD##*/} # to assign to a variable printf '%s\n' "${PWD##*/}" # to print to stdout # ...more robust than echo for unusual names # (consider a directory named -e or -n) printf '%q\n' "${PWD##*/}" # to print to stdout, quoted for use as shell input # ...useful to make hidden characters readable.

使用basename程序。 为你的情况:

% basename "$PWD" bin

$ echo "${PWD##*/}"

您可以使用pwd和basename的组合。 例如

#!/bin/bash CURRENT=`pwd` BASENAME=`basename "$CURRENT"` echo "$BASENAME" exit;

grep怎么样:

pwd | grep -o '[^/]*$'

我喜欢所选的答案(查尔斯·达菲),但要小心,如果你在一个符号链接目录,你想要的目标目录的名称。 不幸的是,我不认为这可以在一个参数扩展expression式中完成,也许我错了。 这应该工作:

target_PWD=$(readlink -f .) echo ${target_PWD##*/}

要看到这个,一个实验:

cd foo ln -s . bar echo ${PWD##*/}

报“吧”

DIRNAME

要显示path的主目录(不会产生/ usr / bin / dirname的fork-exec):

echo ${target_PWD%/*}

这将例如变换foo / bar / baz – > foo / bar

echo "$PWD" | sed 's!.*/!!'

如果您使用的是Bourne shell或者${PWD##*/}不可用。

这个线程太棒了! 这是一个更多的味道:

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

令人惊讶的是,没有人提到这个select只使用内置的bash命令:

i="$IFS";IFS='/';set -f;p=($PWD);set +f;IFS="$i";echo "${p[-1]}"

作为额外的奖励,你可以很容易地获得父目录的名称:

[ "${#p[@]}" -gt 1 ] && echo "${p[-2]}"

这些将在Bash 4.3-alpha或更新版本上工作。

basename $(pwd)

要么

echo "$(basename $(pwd))"

我通常在sh脚本中使用这个

SCRIPTSRC=`readlink -f "$0" || echo "$0"` RUN_PATH=`dirname "${SCRIPTSRC}" || echo .` echo "Running from ${RUN_PATH}" ... cd ${RUN_PATH}/subfolder

你可以使用它来自动化的东西…

下面的grep用正则expression式也在工作,

>pwd | grep -o "\w*-*$"

很简单

pwd | xargs basename

find像我这样的骑师

find $PWD -maxdepth 0 -printf "%f\n"

我非常喜欢使用gbasename ,它是GNU coreutils的一部分。

以下命令将导致在bash脚本中打印当前的工作目录。

pushd . CURRENT_DIR="`cd $1; pwd`" popd echo $CURRENT_DIR

您可以使用basename实用工具从string中删除以/结尾的任何前缀(如果存在于string中),并将结果打印在标准输出中。

$basename

只要使用:

pwd | xargs basename

要么

basename "`pwd`"

我使用这个命令:

dirname "$0"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值