返回docker容器中的ls -l输出

Saf*_*fik 0 linux bash shell docker

所以我有一个运行的docker容器,里面有几个文件夹/文件.

当我进入容器时,我可以看到它们是:

hostmachine $> docker exec -it testContainer bash

testContainer @ testContainer:〜$ ls -l

total 40200
-rw-r--r-- 1 root root     41156267 Apr 11 20:10 herp-4.2.2-SNAPSHOT-ap3.tar.gz
drwxr-xr-x 2 root root     4096 Apr 11 20:10 var
drwxr-xr-x 5 root root     4096 Apr 11 20:10 herp-4.2.2-SNAPSHOT
lrwxrwxrwx 1 root root     39 Apr 11 20:10 current -> /home/testContainer/herp-4.2.2-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

我的问题是:

什么脚本,如何在我的hostmachine上使用它:

1)从容器回送(返回)以下信息:

" current - > /home/testContainer/herp-4.2.2-SNAPSHOT "

2)然后再进一步,回顾最后一点:

HERP-4.2.2-SNAPSHOT

所以基本上它可能是这样的:

hostmachine $> ./getSnapshotName.sh

HERP-4.2.2-SNAPSHOT

Tho*_*mas 5

只需逐步建立起来.首先,不需要使用-itbash运行交互式shell,只需直接运行命令:

$ docker exec testContainer ls -l current
lrwxrwxrwx 1 root root     39 Apr 11 20:10 current -> /home/testContainer/herp-4.2.2-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

接下来,用于readlink保存您解析ls输出:

$ docker exec testContainer readlink current
/home/testContainer/herp-4.2.2-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

最后,运行它basename来删除目录部分:

$ basename $(docker exec testContainer readlink current)
herp-4.2.2-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)