在 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-openopen 适用于 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 中无效 [重复]

无法连接到 Ubuntu Windows 上 bash 上的 Docker 守护程序