Deq*_*ing 0 bash shell command-line
我正在考虑为cygwin编写一个脚本,将cd插入从Windows资源管理器复制的Windows目录中。
例如
cdw D:\working\test
Run Code Online (Sandbox Code Playgroud)
等于
cd /cygdrive/d/working/test
Run Code Online (Sandbox Code Playgroud)
但是对于shell脚本来说,除非使用单引号'D:\working\test'或双反斜杠,否则参数中的所有反斜杠都将被忽略D:\\working\\test。
但是对于我来说,这将带来很大的不便,因为我不能简单地在命令行中粘贴目录名称来执行脚本。
有什么办法可以cdw D:\working\test工作吗?
好吧,你可以做到,但是你想要一些奇怪的东西:)
cdw()
{
set $(history | tail -1 )
shift 2
path="$*"
cd $(cygpath "$path")
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
$ cdw D:\working\test
$ pwd
/cygdrive/d/working/test
Run Code Online (Sandbox Code Playgroud)
这里的重点是的用法history。您不直接使用参数,而是以键入的形式从历史记录中获取参数。
$ rawarg() { set $(history | tail -1 ); shift 2; echo "$@"; }
$ rawarg C:\a\b\c\d
C:\a\b\c\d
Run Code Online (Sandbox Code Playgroud)
当然,您只能在交互式外壳程序中使用此技巧(出于明显的原因)。
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |