众所周知,Bash/终端中的cd /将您带到根目录,而不管您以前在哪里:
brian@brian-linux:~/redis-3.0.3$ cd /
brian@brian-linux:/$ pwd
/
brian@brian-linux:/$ ls
bin dev initrd.img.old libx32 opt sbin usr
boot etc lib lost+found proc srv var
cdrom home lib32 media root sys vmlinuz
data initrd.img lib64 mnt run tmp vmlinuz.old
brian@brian-linux:/$ 今天我偶然发现了一个有趣的发现:
在Bash中,cd //带您到目录//,它与根目录相同,但仍然被描述为//。
brian@brian-linux:~/redis-3.0.3$ cd //
brian@brian-linux://$ ls
bin dev initrd.img.old libx32 opt sbin usr
boot etc lib lost+found proc srv var
cdrom home lib32 media root sys vmlinuz
data initrd.img lib64 mnt run tmp vmlinuz.old
brian@brian-linux://$ pwd
//这是怎么回事,为什么会这样?
还值得注意的是,cd ///或任何数量大于2的/将带您到根目录/。然而,从根目录,cd //带您到//
brian@brian-linux:/$ cd ///
brian@brian-linux:/$ cd //
brian@brian-linux://$ 发布于 2015-07-28 15:04:23
文件路径中可以有任意数量的/。/this/file/path完全等同于/this//file/////path。
我不确定这是否是原因,但这意味着在自动生成路径时,您不太可能得到错误。例如:
get_project_root() {
echo "/the/project/root/"
}
get_project_data_subdirectory() {
echo "data"
}如果我想将这些函数用于cd到项目的data目录,我可以这样做:
project_root=$(get_project_root)
data_directory=$(get_project_data_directory)
cd "${project_root}/${data_directory}"现在,cd命令实际运行:
cd /the/project/root//data因为我在两个变量之间添加了一个/。我这么做是因为我可能不知道这个函数是否会返回一个尾随的/,它不需要返回,有些函数可能没有。事实上,您可以有任意数量的斜杠,这意味着您可以将它们添加到安全的位置,而不必担心会破坏命令。
https://stackoverflow.com/questions/31680127
复制相似问题