我不确定是否已经提出或回答了这个问题。如果有,我道歉。我不太确定要查找什么,但是我正在编写一个bash脚本来从用户那里获取路径,我的脚本使用绝对路径和相对路径。但我想知道是否有办法将速记符号解释为这些路径。例如〜/ for home或。用于当前或../用于目录。我在解决这个问题时遇到了一些麻烦。这是我当前的bash脚本供参考。
#!/bin/bash
echo "What is the path you'd like me to search?"
read PASSED
while [ ! -d $PASSED ]; do
echo "$PASSED is not a valid directory"
echo "Please provide a valid Path"
read PASSED
done
ls -l $PASSED | awk -v user=`whoami` '{ if($3 == user){print $0}}'
答案 0 :(得分:1)
.
和..
不是快捷方式,它们是每个目录中存在的实际目录名称。你不需要做任何事情来支持这一点。
~
是您可以模仿的bash语法。
在最简单的情况下,只需检查前导~
并替换:
# Read some path
printf 'Enter a path: '
IFS='' read -r mypath
# If the path starts with ~, replace it with $HOME
[[ $mypath = '~'* ]] && mypath="$HOME${mypath#'~'}"
# Show what we got
echo "The path is $mypath, aka $(realpath "$mypath")"
请注意,这不支持其他各种~
语法,例如~username
或~+