从带空格的路径中获取文件夹的名称
Get the name of the folder from a path with whitespace
我是 bash 的新手,我想知道如何打印路径中的最后一个文件夹名称。
mypath="/Users/ckull/Desktop/Winchester stuff/a b c/some other folder/"
dir="$(basename $mypath)"
echo "looking in $dir"
其中 dir 是路径中的最后一个目录。它应该打印为
some other folder
相反,我得到:
Winchester
stuff
a
b
c
some
other
folder
我知道空格会导致问题 ;) 我是否需要将结果通过管道传输到字符串然后替换换行符?或者更好的方法...
处理空格时,所有变量在作为命令行参数传递时都应双引号,因此bash 知道将它们视为单个参数:
mypath="/Users/ckull/Desktop/Winchester stuff/a b c/some other folder/"
dir="$(basename "$mypath")" # quote also around $mypath!
echo "lookig in $dir"
# examples
ls "$dir" # quote only around $dir!
cp "$dir/a.txt" "$dir/b.txt"
这是bash中变量扩展的方式:
var="aaa bbb"
# args: 0 1 2 3
foo $var ccc # ==> "foo" "aaa" "bbb" "ccc"
foo "$var" ccc # ==> "foo" "aaa bbb" "ccc"
foo "$var ccc" # ==> "foo" "aaa bbb ccc"
我是 bash 的新手,我想知道如何打印路径中的最后一个文件夹名称。
mypath="/Users/ckull/Desktop/Winchester stuff/a b c/some other folder/"
dir="$(basename $mypath)"
echo "looking in $dir"
其中 dir 是路径中的最后一个目录。它应该打印为
some other folder
相反,我得到:
Winchester
stuff
a
b
c
some
other
folder
我知道空格会导致问题 ;) 我是否需要将结果通过管道传输到字符串然后替换换行符?或者更好的方法...
处理空格时,所有变量在作为命令行参数传递时都应双引号,因此bash 知道将它们视为单个参数:
mypath="/Users/ckull/Desktop/Winchester stuff/a b c/some other folder/"
dir="$(basename "$mypath")" # quote also around $mypath!
echo "lookig in $dir"
# examples
ls "$dir" # quote only around $dir!
cp "$dir/a.txt" "$dir/b.txt"
这是bash中变量扩展的方式:
var="aaa bbb"
# args: 0 1 2 3
foo $var ccc # ==> "foo" "aaa" "bbb" "ccc"
foo "$var" ccc # ==> "foo" "aaa bbb" "ccc"
foo "$var ccc" # ==> "foo" "aaa bbb ccc"