Linux shell中如何获取当前目录

Linux shell中获取当前目录

当前目录

每当你在终端进行操作时,你都会有一个当前工作目录。

使用pwd来判定当前目录在文件系统内的确切位置。

[root@localhost ~]# pwd
/root

在shell中也可以使用pwd来获取当前目录,并赋值给变量。
test.sh

#!/bin/bash
CRTDIR=$(pwd)
echo $CRTDIR

在这里插入图片描述

添加执行权限
chmod +x test.sh

运行test.sh
在这里插入图片描述

工作目录

获取当前执行的脚本文件的父目录。

#!/bin/bash
workdir=$(cd $(dirname $0); pwd)
echo $workdir

在这里插入图片描述

复杂点的工作目录获取

#!/bin/bash
PRG="$0"
while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
PRGDIR=$(cd $(dirname $PRG); pwd)
echo $PRGDIR

在这里插入图片描述

shell脚本常用语法——获得当前目录

1.获取shell脚本所在的绝对路径

CURRENT_DIR=$(cd $(dirname $0); pwd)

或者

CURRENT_DIR=$(cd `dirname $0`; pwd)

执行步骤解析:

  • dirname $0: 取得当前执行的脚本文件所在的目录;
  • cd: 进入当前工作目录;
  • pwd: 显示当前工作目录;

将当前工作目录输出给变量CURRENT_DIR。

2.获取shell脚本所在目录的父级目录的绝对路径

由于能1 获得shell脚本所在的绝对路径,那么同理,就可以获得脚本所在目录的父级目录的绝对路径。

PARENT_DIR=$(cd $(dirname $0);cd ..; pwd)

只是在pwd命令之前添加了cd ..到父级目录。

注意:

  • $() 与 `` 作用一样,用于shell命令的执行。
  • dirname: 显示最后一个结点前的路径;相对的,basename: 显示最后一个结点的名称。
  • $0: 脚本的路径名称,包含脚本本身的名称。
posted @ 2024-03-01 12:38  zhubayi  阅读(293)  评论(0)    收藏  举报  来源