在 Windows 上的 Ubuntu bash 上“找不到引用控制台的文件描述符”
Posted
技术标签:
【中文标题】在 Windows 上的 Ubuntu bash 上“找不到引用控制台的文件描述符”【英文标题】:"Couldn't find a file descriptor referring to the console" on Ubuntu bash on Windows 【发布时间】:2017-07-16 18:40:46 【问题描述】:我是新来的,这是我的第一篇文章。
我在 Windows 上的 Ubuntu 上遇到 Bash 问题。如果我在 Mac 终端上键入“open (filename)”,它会使用正确的程序打开文件,但如果我尝试在 Windows bash 上使用它,它会显示:“找不到引用控制台的文件描述符”。
我也尝试过 xdg-open 和 gnome-open 但它们都不起作用。有人能解释一下如何解决这个问题以及 open 命令是如何工作的吗? 提前致谢!
【问题讨论】:
您可以尝试使用批处理文件命令start
。但是,这是对cmd
的内部命令。所以你需要把它包装成cmd /c start "" "filename"
对我不起作用:/
您看到上面提到的命令有什么错误?顺便说一句,您可能需要将路径从 Windows 转换为 Linux,反之亦然。
open(1)
在 Linux 上是 openvt(1)
的已弃用别名。
【参考方案1】:
在 Linux 上,open
命令是openvt
的别名,它在新的虚拟终端中运行命令。虚拟终端由控制台打开。控制台只喜欢响应真实终端(不是模拟终端),所以控制台没有给模拟终端它的控制FD。尝试直接在终端中运行 jpg、pdf、... 查看器的命令。 (在真正的 Linux CtrlAlt3+ 终端中尝试sudo openvt -f -s -c 7 -- echo hi
。
正如其他人所指出的,在 Mac 上,open 确实可以按照您的假设进行操作。我不是 Mac 用户,所以我不能扩展这一段。
不过,Windows 有它自己的这些命令版本:start example.txt
打开记事本,start example.docx
运行 Word,你懂的。 但是,Windows 就是 Windows ,所以start
可以和update writers 一样聪明:start "my file.txt"
打开一个标题为my file.txt
的命令提示符窗口。
【讨论】:
也许 Windows 应该弄清楚如何不惹恼用户。【参考方案2】:要在 Windows bash 上打开要在 Ubuntu 中写入的文件,您可以键入 -:
纳米文件名.txt
上面的命令将允许你在文件中写入/编辑,之后你可以使用ctrl+x然后按'y'保存。使用 -:
检查/查看文件内容cat 文件名.txt
【讨论】:
【参考方案3】:你可以使用 xdg-open
而不是打开,它做同样的事情,独立于应用程序,即 pdf、图像等。它将打开一个新的虚拟终端(我在 Linux 上尝试过)
例子:
xdg-open ~/Pictures/Wallpapers/myPic.jpg
xdg-open ~/Docs/holidays.pdf
【讨论】:
【参考方案4】:那是因为open
是 Mac 专用命令,在 Linux (ubuntu) 下不可用,Mac open
可以执行文件(如果该文件是可执行的),或者在文本编辑器中打开文件(如果它是一个文档或文本文件)或打开一个目录。
【讨论】:
有道理。但是在 Linux 和 Ubuntu 上有一个类似的命令,称为“xdg-open”,所以我认为也有一种方法可以在 Windows bash 上实现它@hcheung。我刚刚安装了 xdg-utils 包,但它会在 bash 中打开文件和文件夹。有没有办法通过windows程序打开文件? 我无窗10多年了!希望有人可以提供帮助。 我的 Linux 操作系统上有一个/bin/open
应用程序。 Linux 确实有一个open
cmd。【参考方案5】:
对于 linux,使用 xdg-open。 open 适用于 Mac OS。 open 在 linux 中是 openvt(打开虚拟终端)的别名。
为了简化它,您可以将以下行附加到 ~/.bashrc 或 ~/.zshrc,具体取决于您使用的 shell。
alias o="xdg-open" # o stands for open
那么下次你可以像下面这样输入来减少一些键盘敲击。
o file_name.pdf
【讨论】:
题外话:我也这样定义我的远程命令!s
显示正在运行的作业 p
打印最近的输出 o
显示文件
或者,将open
定义为别名或函数,以使您的所有普通脚本在 OS X 和 Linux 上都能正常工作。 github.com/fatso83/dotfiles/commit/…以上是关于在 Windows 上的 Ubuntu bash 上“找不到引用控制台的文件描述符”的主要内容,如果未能解决你的问题,请参考以下文章
Windows 10 上的 Bash 和 Ubuntu 终端有啥区别
在Windows上的Ubuntu上用Bash更新Python库
在 Windows 上的 Ubuntu bash 上“找不到引用控制台的文件描述符”
在 Windows 上运行 ubuntu 上的 bash 运行 npm 命令给出错误“/usr/bin/env: node: No such file or directory”
Json String Parsing 在从 MSDOS 运行时有效,但在 Windows 上的 Ubuntu 上的 Bash 中无效 [重复]