我们经常在虚拟机平台下的linux shell内执行命令如编译或运行某些程序时出错,这时想把错误的代码或运行情况复制到windows平台下粘贴到网上论坛内求助。但直接在虚拟机下复制shell内的字符,在windows环境下是粘贴不了的,如何使在windows环境下能够复制粘贴虚拟机内linux shell中的字符呢,我们可以通过三种办法解决这个问题。
一:通过ssh
这种方法需要虚拟机内的Linux安装ssh服务,默认是安装的。为确保sshd服务是开启的,redhat平台可通过shell下执行命令:redhat-config-services,在弹出的服务配置窗口中查看sshd服务是否已开启,若没有开启,勾上sshd选项,重起运行。若linux没有安装ssh服务,下载ssh包重新安装一下。
ssh服务运行后,在windows平台下下载ssh客户端程序安装,运行ssh客户端,点击quick connect,输入虚拟机linux的IP地址、用户名,端口默认22,提示输入密码后,即可登入linux ssh服务端。登入后可以在ssh客户端的shell环境下执行linux命令,就如同在linux本地执行一样,非常方便。ssh的shell环境下是可以复制当前shell内的字符的,并且可以在windows内粘贴。这样就可以将执行命令后的一些错误信息粘贴保存到文本文件或粘贴到论坛上求助。还有一点需注意的是,虚拟机下的linux和本地windows的ip地址应在同一网段,否则ssh客户端程序是连接不上linux的ssh服务端的。linux下设置网卡IP的命令是ifconfig,如:ifconfig eth0 192.168.0.2 ,eth0为虚拟机默认网卡名。
二:通过VMware Tools
虚拟机安装过VMware Tools后,如果正在运行 VMware Tools,你可以在虚拟机和主机的应用程序之间或者在两台虚拟机之间复制和粘贴文本。
要进行复制和粘贴:
1. 确保在你的虚拟机中已经安装并且启动 VMware Tools。
2. 使用来源窗口中的操作系统支持的方式在来源窗口中选择要复制的项目。
3. 更改光标和键盘控制到目标窗口,然后使用目标窗口中的操作系统支持的方式粘贴项目。
你只能复制和粘贴文本,而不是图片或者其他项目。
(如何使用VMware Tools可参考相关资料)
三:通过linux的命令重定向
将执行linux命令返回的信息重定向到一个文本文件,比如./gdbserver 192.168.0.1:1234hello>&info.txt ,"&"指输出所有信息。然后通过某种方式将包含输出信息的文本文件info.txt拷回到windows下就可以查看了。拷贝的方式很多,ssd、ftp、虚拟机自带的共享文件功能等等。这里举一个简单的例子,ssh本身就自带了一个文件传输功能,windows下ssh客户端连接上虚拟机服务端后,点击工具栏上的new file transfer window ,即可打开一个类似cuteftp的文件传输界面,在这里可以进行简单的文件上传和下载,比较方便。
这里提出了三种解决办法。若你经常使用ssh的话,无疑第一种办法是最简单方便的,而且ssh本身功能十分强大,同时提供了shell终端、文件传输等功能,操作比较方便,而且安全性高。若你不会使用ssh,第二种办法也较为方便,只是要注意每次在主机和虚拟机之间相互复制文本前都必须先运行vmware-toolbox ,方法是虚拟机安装vmware tools后直接在shell内执行:vmware-toolbox命令。第三种办法较适合于处理大量数据。如要进行复制和粘贴的文本较多时可以使用文件来传输。
注意:采用第二种方法时需要在终端输入vmware-toolbox.命令,如果出现Gtk-WARNING **: Failed to load module "libgnomebreakpad.so": libgnomebreakpad.so: cannot open shared object file: No such file or directory错误,则是库文件的注册出了问题,请参考下一篇文章迷失的 "libgnomebreakpad.so" ==Failed to load module "libgnomebreakpad.so"