如何在没有终端仿真器的情况下访问bash?


37

说我不小心卸载了每一个终端模拟器我的系统上:xtermuxtermgnome-terminalguake,等有没有一种方法,我可以访问bash没有一个终端仿真器?

我可以想到的一种可能方法是创建并运行Shell脚本,但除此之外,我还可以获得交互式Shell吗?

这纯粹是假设,但感谢您的所有回答!


2
有些程序可以运行外壳程序,并通过(部分地)仿真终端来提供某种程度的交互性,但它们本身并不是人为的仿真器。例如,GVim是一个。
muru

@muru,为什么您还没有发布答案呢?:D
Sergiy Kolodyazhnyy 2015年

@Serg出于与我没有发布您的IDE解决方案或gedit的Python控制台相同的原因-这些默认情况下均未安装(尽管我认为我们可以启用gedit Python控制台而无需安装任何其他功能)。
大师

@muru啊,我明白了。总是不需要任何额外安装的解决方案。当然
谢尔盖Kolodyazhnyy

Answers:


63

是的,按CtrlAltF21。这样就可以访问虚拟控制台TTY2。而且,您可以使用sudo apt-get install terminal-name在那里重新安装任何终端仿真器,gnome-terminal例如terminal-name 。

要返回GUI,请首先键入exit以退出虚拟控制台,然后按CtrlAltF7切换回GUI。(如果您想保持TTY会话打开,请跳过打字 exit部分)

编辑:2015年6月17日

我想过另一种解决方案:如果您有任何C语言IDE,则可以编译以下代码,并且IDE的控制台现在将使您可以访问bash

#include<stdio.h>
#include <unistd.h>

void main()
{
        system("bash");
}

注意: CtrlAltF2不是唯一的选择。您可以使用CtrlAltF1CtrlAltF3CtrlAltF4CtrlAltF5CtrlAltF6也将分别给你的虚拟主机TTY1,tty3上,TTY4,TTY5或TTY6。


1
@ThomasW。我知道,但是在Fedora tty1之类的系统上并不存在,所以我习惯说F2
Sergiy Kolodyazhnyy 2015年

18
@Huey可以在所有系统上访问,且具有故障保护功能,除非您已手动禁用了ttys,并且基本上是默认情况下linux / unix的方式-文本控制台。GUI在* nix系统上确实是可选的
Sergiy Kolodyazhnyy 2015年

8
@Huey虚拟控制台是Linux最初要做的。其他所有功能都是后来添加的功能。而且这只是一个非常有用的功能,因此再次删除它很有意义。
kasperd

10
曾几何时,如果出于某种原因需要运行GUI程序,通常会通过文本控制台登录,然后运行xinitstartx实际上进入X11。:)
蓬松的

1
我已经提出了另一种解决方案。看到我的编辑,伙计们
Sergiy Kolodyazhnyy 2015年

30

如果您正在运行ssh服务器,则可以从另一个系统通过ssh连接。

ssh <your_remote_user_name>@<your_remote_host>

如果安装系统,则首先安装并启动SSH服务器。一种人寿保险。=)


24

Ctrl+ Alt+(F1通过F4至少,也许达F6)上运行虚拟控制台终端接口。一旦出现,要回了GUI,使用Ctrl+ Alt+ F7

如果您执行上述任何操作,则应该能够进入可以登录的终端,然后访问该终端。但是,如果Bash脚本是自动化脚本,则Bash脚本将继续运行,cron并且此类脚本或双击可运行(但不在终端中)。终端仿真器,其“给你”交互的shell,但最终bashzsh等,这些都是实际的炮弹依然存在,则可以通过运行cron,脚本,甚至在键盘上连击以上的虚拟控制台。

但是请注意,如果您的脚本需要交互式界面,则必须使用虚拟控制台,或再次安装模拟器。


2
我计算机上的F1至F6。
Scimonster 2015年

14

如果这是测试中的问题,为完整性起见,我会添加普通的串行tty,在这里您将使用串行电缆连接到计算机。在丢失终端之前,您需要先配置一个盖蒂(或现在称为tty串行侦听器),并且还需要第二台计算机与第一台计算机进行通信,因此,如果发生家庭紧急情况,则不太可能发生。

您可能还具有一些webmin控制台,可以(实际上)为您提供shell访问权限,尽管不是技术上交互式的shell。那时,您最好执行简单的命令,例如apt-get some-terminal-emulator。

如果您打开了浏览器窗口,则理论上可以搜索Java终端仿真器,但我的猜测是您必须提前安装,而只有浏览器窗口无法让您访问底层的pty,但我没有时间测试任何一种方法。

因此,上述问题是“所有可能的方式”问题,尽管大多数服务器机房可能具有串行访问权限,但在家庭现实生活中不一定有用。

嗯,许多其他工具(emacs,vim等)允许进行一定程度的脱壳。希望您打开Xemacs


您可以使用Mx shell为emacs中的+1记录; 在gvim中有ESC :shell; 而geany在消息窗格的选项卡中提供了一个“虚拟终端仿真器小部件(VTE)” libvte.so(可用)
steeldriver,2015年

6

尽管以上所有答案都是完美的,并且由于您使用的是Linux,所以您还有许多其他可能的解决方案:

  • @serg答案中描述的虚拟ttys是完美的解决方案
  • @AB解决方案中描述的SSH很不错,但是您必须考虑使openssh服务器运行。
  • 另一个可能的解决方案(不是完美的,只是为了展示其他可能性):LiveCD恢复模式

3
矫kill过正的解决方案。
托马斯·沃德

@ThomasW。为什么!?这只是另一个选择?为什么您认为这是过分解决方案?
Maythux 2015年

2
@Maythux虽然在技术上是正确的,但是当我们已经有可用的TTY和ssh时,的确有点过大。当您安装了coreutils(是的,我之前是无意中做到了)或确实搞砸了,LiveCD解决方案更适用。
Sergiy Kolodyazhnyy 2015年

1
@Serg,但这仍然是一个案例,再加上这只是另一个解决方案,我说过除了使用tty以外,他还提供了liveCd选项,还提供了恢复模式选项。同样的问题。我认为推荐liveCd没问题!
Maythux 2015年

1
@Maythux如果他们已经能够登录并在TTY上安装了“虚拟控制台”,那么直接启动到LiveUSB / LiveCD中就可以了,这是多余的工作和额外的工作。特别是因为这不是“我什么也无法访问”的情况,所以不需要大手笔(正如塞格在评论中提到的那样)
托马斯·沃德

2

所以我要在这里做书呆子:

没有终端模拟器,有没有办法可以访问bash?

确保任何以开头的脚本#!/bin/bash都可以做到。

有没有没有终端仿真器的bash提示的方法?

继续我的学步主题,让我们在其他一些答案中找出一些漏洞。

假设我不小心卸载了系统上的每个终端模拟器:

实际上这很难实现,因为

通过按 CtrlAltF2

您将切换到另一个运行着Linux内核虚拟终端仿真器的虚拟控制台,这很难删除,并且需要使用非标准选项重新编译内核。因此,让ssh / telnet / serial-port选项产生漏洞,这些需要远程终端仿真器。至于webmin,它也有一个终端模拟器(只是一个糟糕的模拟器)。

在没有终端仿真器的情况下,只有一种使用终端功能的方法:使用真实终端。我曾经有一个Televideo和一个电传打字机(不是TeleType,这是一个敲门砖),我能够同时编辑文件(在Televideo上是vi,在电传打字机上是ed(后面很痛苦))在电视中使用minicom和seyon在当地使用bbs。您知道我唯一想念的是吹牛的权利,但是我为工业打印机选择了几个配置终端,该终端具有两行20列显示屏,一个键盘和一个rs232接口,一旦我确定了这些接口,便可以进行紧急配置修复出我的ed手册所在的位置。


0

@AB的答案类似,如果您正在运行Web服务器(我相信stanard Ubuntu随附apache),则可以在自己的浏览器中运行诸如phpshell之类的shell

就个人而言,我只是启动emacs和M-x shell RETURN


标准Ubuntu不附带Web服务器。
大师

2
@muru它在存储库中带有Web服务器。只需打开终端并输入sudo apt-get install apache。等一下。
李斯特先生,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.