用cd转到文件的父目录?
我正在写一个.sh为我做一些工作,但我现在正处于我必须cd到文件/path/to/file.end所在的目录的位置。终端不允许
cd /path/to/file.end bash: cd: /path/to/file.end: Not a directory
遗憾的是我没有解决方法,所以如果你能帮忙的话会很好!
键入cd $( dirname /path/to/file.end)
。 这会带你进入/path/to
。
说明:
-
dirname
返回文件的完整路径(没有文件名,你可以用basename
获得) – 即dirname /etc/apt/apt.conf.d/99update-notifier
返回/etc/apt/apt.conf.d
- 表达式
$(anything)
被括号中的命令结果替换。 所以cd $( dirname /etc/apt/apt.conf.d/99update-notifier)
执行为cd /etc/apt/apt.conf.d
另一个(但旧的和沮丧的)相同的符号是
cd `dirname /path/to/file.end`
你不能cd
成文件。 这是一个(命令行) 函数 ,它将自动cd
到给定的完全限定文件路径的路径中:
function fcd () { [ -f "$1" ] && { cd "$(dirname "$1")"; } || { cd "$1"; } ; pwd; }
如果你将“/ ..”附加到文件名,它将带你到正确的目录,例如cd /path/to/file.end/..
无论如何,它适用于Cygwin。