微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dos2unix 无法处理路径中带有 /cygdrive 的文件

如何解决dos2unix 无法处理路径中带有 /cygdrive 的文件

我最近更换了计算机(Windows 10 → Windows 10)。我正在尝试尽可能像旧计算机一样设置新计算机。

我在具有相同目录设置的两台机器上都使用了 Cygwin。但是,在旧计算机上,我可以执行:

dos2unix /cygdrive/c/path/myfile.PHP

它会工作得很好。在新电脑上,同样的命令给出:

dos2unix: Skipping /cygdrive/c/path/myfile.PHP,not a regular file.

但是,如果我 cd/cygdrive/c/path 并执行 dos2unix myfile.PHP,它会起作用。

还有其他奇怪的地方:如果路径包含 scprsynccygdrive 找不到我的 SSH 密钥文件,但如果我 cd 到目录,他们可以包含密钥文件并使用相对路径。

我的设置有什么问题?

更新:

另外,发生了一件很奇怪的事情:

[my-name:~]$ mkdir /cygdrive/c/dir1

[my-name:~]$ mkdir /cygdrive/c/dir2

[my-name:~]$ touch /cygdrive/c/dir1/file.txt

[my-name:~]$ scp /cygdrive/c/dir1/file.txt /cygdrive/c/dir2/file.txt
The system cannot find the path specified.

更新 2: 在 Cygwin 看来,这是我的 $PATH 中的内容

/usr/local/bin
/usr/bin
/cygdrive/c/Program Files/AdoptOpenJDK/jdk-11.0.10.9-hotspot/bin
/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/cygdrive/c/Windows/system32
/cygdrive/c/Windows
/cygdrive/c/Windows/System32/Wbem
/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0
/cygdrive/c/Windows/System32/OpenSSH
/cygdrive/c/Program Files (x86)/NVIDIA Corporation/physx/Common
/cygdrive/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/cygdrive/c/Program Files/Git/cmd
/cygdrive/c/Users/<me>/AppData/Roaming/nvm
/cygdrive/c/Program Files/nodejs
/cygdrive/c/Program Files/dotnet
/cygdrive/c/WINDOWS/system32
/cygdrive/c/WINDOWS
/cygdrive/c/WINDOWS/System32/Wbem
/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0
/cygdrive/c/WINDOWS/System32/OpenSSH
/cygdrive/c/Users/<me>/AppData/Local/Yarn/config/global/node_modules/.bin
/cygdrive/c/Users/<me>/AppData/Roaming/Composer/vendor/bin
/cygdrive/c/Users/<me>/AppData/Roaming/npm
/usr/bin
/cygdrive/m/laragon/bin
/cygdrive/m/laragon/bin/apache/httpd-2.4.35-win64-VC15/bin
/cygdrive/m/laragon/bin/composer
/cygdrive/m/laragon/bin/git/bin
/cygdrive/m/laragon/bin/git/cmd
/cygdrive/m/laragon/bin/git/mingw64/bin
/cygdrive/m/laragon/bin/git/usr/bin
/cygdrive/m/laragon/bin/laragon/utils
/cygdrive/m/laragon/bin/MysqL/MysqL-5.7.24-winx64/bin
/cygdrive/m/laragon/bin/Nginx/Nginx-1.16.0
/cygdrive/m/laragon/bin/ngrok
/cygdrive/m/laragon/bin/notepad++
/cygdrive/m/laragon/bin/PHP/PHP-7.2.19-Win32-VC15-x64
/cygdrive/m/laragon/bin/putty
/cygdrive/m/laragon/bin/redis/redis-x64-3.2.100
/cygdrive/m/laragon/bin/telnet
/cygdrive/m/laragon/usr/bin
/cygdrive/c/Users/<me>/.windows-build-tools/python27
/cygdrive/c/Users/<me>/AppData/Local/Microsoft/WindowsApps
/cygdrive/c/Users/<me>/AppData/Roaming/nvm
/cygdrive/c/Program Files/nodejs
/cygdrive/c/Users/<me>/AppData/Local/Microsoft/WindowsApps
/cygdrive/c/Program Files/JetBrains/PHPStorm 2021.1/bin

解决方法

问题是我没有通过 Cygwin 专门安装 dos2unixopenssh。不过,我已将它们安装在操作系统的其他位置,因此当我尝试执行 dos2unix 时,它使用的是随 Git Bash 安装的版本,这显然无法理解 /cygdrive .我发现 which dos2unix 等等。scpssh 都是 openssh 的一部分。解决方案是重新安装包含这些包的 Cygwin。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。