Shell脚本使用ls获取绝对路径

已经完成了ugit.sh程序,利用它可以方便的将仓库建立在U盘上,这也就达成了随身携带U盘仓库而不依赖网络的问题。但是在最初实现时,对Shell的理解不够深入,一些基础的命令没有用好,从而增加了一些循环判断,尽管在使用体验上不会有什么影响,但是仔细测试效率时还是有差别的,同时从维护脚本的角度讲不是足够简洁。本着精益求精的原则,决定进一步精简脚本,实现Shell层次上的效率极大化!在所有的问题中,一步列出所有U盘并且将U盘中的目录都添加绝对路径是一个重要的步骤,本文实现了这个一步操作。代码如下:

列出子目录并添加绝对路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ ls -d /run/media/$USER/*/*
# 运行结果
/run/media/feng/BNU-FZH/article.git
/run/media/feng/BNU-FZH/cexam.git
/run/media/feng/BNU-FZH/config.git
/run/media/feng/BNU-FZH/document.git
/run/media/feng/BNU-FZH/latex.git
/run/media/feng/BNU-FZH/python.git
/run/media/feng/BNU-FZH/script.git
/run/media/feng/BNU-FZH/System Volume Information
/run/media/feng/feng/20230203_094347.jpg
/run/media/feng/feng/2023_07_19 17_25 Office Lens (1).jpg
/run/media/feng/feng/2023_07_19 17_25 Office Lens.jpg
/run/media/feng/feng/截图 2024-06-18 18-03-16.png
/run/media/feng/feng/截图 2024-06-18 18-06-42.png
/run/media/feng/feng/PDF文件
/run/media/feng/feng/System Volume Information

可以看到在路径/run/media/feng/下有两个U盘,分别是BNU-FZHfeng, 这是路径/run/media/$USER/*/*中左起第一个*所代表的,而最后一个*表示列出此目录下的内容。-d选项,则控制ls命令列出路径。一条命令实现了列出所有U盘目录的功能,极大的提高了效率!