我在路径的某个地方安装了 Cygwin。所以我有
>where dir
D:\Users\Dims\Design\Cygwin64\bin\dir.exe
当我DIR
从运行时CMD
,我得到了正常的 Windows DIR
:
>dir /?
Displays a list of files and subdirectories in a directory.
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
...
但是如果我从下运行它FAR
,它会DIR
从 Cygwin 中获取:
>dir /?
/usr/bin/dir: cannot access /?: No such file or directory
那么,FAR
这是否在某种程度上忽略了内置 Windows 命令的优先级。是否可以重新启用它?
答案1
dir
是一个内部命令cmd.exe 的,因此你无法在任何其他 shell 中运行它包括 Windows PowerShell。没有单独的dir.exe
C:\>where dir
INFO: Could not find files for the given pattern(s).
没有这样的事情“Windows 目录”或者“内置 Windows 命令”. 在 PowerShell 中,dir
和ls
是Get-ChildItem
因此您将获得如下输出,而不是 cmd 的dir
命令输出
PS C:\> dir
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 3/28/2017 10:13 AM Program Files
d-r--- 3/28/2017 10:13 AM Program Files (x86)
d-r--- 1/3/2017 3:04 PM User
d----- 4/5/2017 11:14 AM Windows
4/5/2017 2:55 PM 8192 ntuser.dat
-a---- 4/7/2017 9:45 AM 152 useragent.log
最接近的(也是唯一的)方法是自称cmd
cmd /c dir
或者cmd /k dir
如果您想保留 cmd shell。
答案2
在 unix 中,您可以在命令前放置一个空格,以忽略设置的该命令的任何别名。如果 Windows 命令提示符中存在这样的情况,我不知道它是什么。我认为这才是你真正想问的。
我能找到的最接近的修复方法是使用&
命令分隔符。例如,ECHO & DIR
将运行正常DIR
命令,但它会ECHO is ON.
先打印。我想不出任何没有输出的 DOS 命令。
但是如果您遇到了这个问题,您可能test.exe
在 cygwin/msys/git bash bin 目录中有一个命令,它没有输出,因此您可以使用它来解决它test & dir
。
或者,当然,您可以创建一个空的批处理文件,放在分隔符的左侧&
。
编辑:实际上,我只是玩了一下,并且DIR & ;
可以工作,并且不需要任何外部命令。
编辑2:括号中的命令(DIR)
有效。也许这是最短的命令。