Jam*_* Ko 18 unix linux bash shell sh
在Bash中检查两条路径是否相等的最佳方法是什么?例如,给定目录结构
~/
Desktop/
Downloads/ (symlink to ~/Downloads)
Downloads/
photo.png
Run Code Online (Sandbox Code Playgroud)
并假设当前目录是主目录,以下所有内容都是等效的:
./ and ~
~/Desktop and /home/you/Desktop
./Downloads and ~/Desktop/Downloads
./Downloads/photo.png and ~/Downloads/photo.png
Run Code Online (Sandbox Code Playgroud)
有没有本地Bash方式来做到这一点?
gei*_*rha 27
Bash的测试命令有一个-ef操作符用于此目的
if [[ ./ -ef ~ ]]; then ...
if [[ ~/Desktop -ef /home/you/Desktop ]]; then ...
Run Code Online (Sandbox Code Playgroud)
等等...
$ help test | grep -e -ef
FILE1 -ef FILE2 True if file1 is a hard link to file2.
Run Code Online (Sandbox Code Playgroud)
你可以用realpath.例如:
realpath ~/file.txt
Result: /home/testing/file.txt
realpath ./file.txt
Result: /home/testing/file.txt
Run Code Online (Sandbox Code Playgroud)
另外在这里看一下类似的答案:bash/fish命令打印文件的绝对路径