如何获取其中的目录路径的Bash脚本位于,里面那个脚本?
例如,假设我想使用Bash脚本作为另一个应用程序的启动器.我想将工作目录更改为Bash脚本所在的目录,因此我可以对该目录中的文件进行操作,如下所示:
$ ./application
在Linux上,该readlink实用程序接受一个-f跟随其他链接的选项.这似乎不适用于Mac和可能基于BSD的系统.相当于什么?
这是一些调试信息:
$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
Run Code Online (Sandbox Code Playgroud) 如果我有一个文件路径,如...
/home/smith/Desktop/Test
/home/smith/Desktop/Test/
Run Code Online (Sandbox Code Playgroud)
如何更改字符串以使其成为父目录?
例如
/home/smith/Desktop
/home/smith/Desktop/
Run Code Online (Sandbox Code Playgroud) 我正在运行一个Jenkins集群,在Master和Slave中,它们都作为Docker容器运行.
主机是在MacOS上运行的最新boot2docker VM.
为了让Jenkins能够使用Docker执行部署,我已将docker.sock和docker客户端从主机安装到Jenkins容器,如下所示: -
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $HOST_JENKINS_DATA_DIRECTORY/jenkins_data:/var/jenkins_home -v $HOST_SSH_KEYS_DIRECTORY/.ssh/:/var/jenkins_home/.ssh/ -p 8080:8080 jenkins
Run Code Online (Sandbox Code Playgroud)
将卷安装到在Jenkins容器内运行的Docker容器时,我遇到了问题.例如,如果我需要在Jenkins容器中运行另一个Container,我会执行以下操作: -
sudo docker run -v $JENKINS_CONTAINER/deploy.json:/root/deploy.json $CONTAINER_REPO/$CONTAINER_IMAGE
Run Code Online (Sandbox Code Playgroud)
上面运行容器,但文件"deploy.json"不是作为文件挂载,而是作为"目录"挂载.即使我将目录作为卷安装,我也无法查看生成的容器中的文件.
这是一个问题,因为Docker在Docker案例中由于文件权限?
任何指针都会有用!
谢谢!
正如这个问题所解释的那样,我们可以得到当前工作目录的名称.但是如何获得最后一个目录名?
场景:
# working directory /etc/usr/abc/xyz.txt
printf '%s\n' "${PWD##*/}" #prints abc
#i want to print usr
printf '%s\n' "%{PWD##*/-1}" #prints me whole path
Run Code Online (Sandbox Code Playgroud)
建议我怎么做.
提前致谢.
在某些脚本中,我想使用当前文件夹内的文件夹名称。我想获取文件夹名称,这里只将有问题的部分放在示例中。如果从终端运行此命令,则会得到:
$ for D in */; do echo ${D%%+(/)} ; done
galaxya8
iphone6s
motog6
motog7
$ echo ${0}
/bin/bash
$ bash --version
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其放入文件中并运行该文件,则会得到带有斜杠的名称:
$ echo 'for D in */; do echo ${D%%+(/)} ; done' >> test.sh
$ bash test.sh
galaxya8/
iphone6s/
motog6/
motog7/
Run Code Online (Sandbox Code Playgroud)
我在这里看到了bash的扩展。我想念什么?也许只有交互式shell的一些默认值?
最小,完整且可验证的示例(感谢@ kamil-cuk):
$ D=a/; echo ${D%%+(/)}; bash <<<'D=a/; echo ${D%%+(/)}'
a
a/
Run Code Online (Sandbox Code Playgroud)