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

时间:2018-04-13 09:12:59

标签: linux bash shell docker

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

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

  

hostmachine $> docker exec -it testContainer bash

     

testContainer @ testContainer:〜$ ls -l <​​/ p>

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

我的问题是:

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

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

&#34; 当前 - &gt; /home/testContainer/herp-4.2.2-SNAPSHOT&#34;

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

HERP-4.2.2-SNAPSHOT

基本上它可能就像:

  

hostmachine $&GT; ./getSnapshotName.sh

     

HERP-4.2.2-SNAPSHOT

1 个答案:

答案 0 :(得分: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

接下来,使用readlink来帮助您解析ls输出:

$ docker exec testContainer readlink current
/home/testContainer/herp-4.2.2-SNAPSHOT

最后,通过basename运行它以删除目录部分:

$ basename $(docker exec testContainer readlink current)
herp-4.2.2-SNAPSHOT