#3 密码导出插件
Password Exporter
然后地址栏访问about:preferences#security,「Import/Export Passwords」按钮进行密码导入导出。
#2 JSON格式化插件
JSONView https://addons.mozilla.org/en-US/firefox/addon/jsonview/?src=search
#1 如何在TextArea中输入TAB
Tabinta 该插件允许你在textarea中输入TAB。[……]
「Mozilla Firefox」- 常用插件汇总
「Firefox」- 在地址栏中,显示二维码
问题描述
在以前某些版本的 Firefox 中,地址栏会显示当前地址的二维码,再后便消失(可能功能被取消)。
现在(02/10/2021),我们需要在地址栏中显示二维码,以方便我们手机扫码来浏览页面。
该笔记将记录:在 Mozilla Firefox 中,如何在地址栏中显示二维码。
解决方案
安装 QR code tab URL – Get this Extension for 🦊 Firefox (en-US) 扩展。
在扩展安装之后,无需重启浏览器,在进行 Tab 切换后,地址栏将显示二维码图标。
参考文献
Url to QrCode – Get this Extension for 🦊 Firefox (en-US) QR Codes wont show. | Firefox Support Forum | Mozilla Support QR code tab URL – Get this Extension for 🦊 Firefox (en-US)[……]
「Mozilla Firefox」- 处理 CPU 占用极高(禁用 GIF 图片、禁止视频自动播放)
问题描述
在打开某些网页之后,电脑的 CPU 使用率会非常高。经过查找,在页面中的 GIF 动画导致的 CPU 使用率升高,甚至可以达到 100% 使用率。并且,在网页中,启动播放的视频,也会导致极高的 CPU 占用。
该笔记将记录:在 Firefox 中,如何禁止 GIF 图片,以及如何禁止视频播放,以缓解 CPU 占用极高的问题。
问题原因
我们看了几篇文章对这个问题的讨论,但是大家都没有解决(包括在 Google Chrome 中也有这个问题)。
因此,我们希望禁用在页面中的 GIF 动画(要么隐藏、要么不播放)。
解决方法
禁止 GIF 播放
在旧版 Mozilla Firefox 浏览器中,设置 about:config => image.animation => none 属性,表示只播放一次,设置为 none 表示不播放。
在 Mozilla Firefox 80.0.1 (64-bit) for Ubuntu 中,设置 about:config => image.animation_mode => none 参数,然后强制刷新页面即可。
禁止视频播放
视频默认是自动播放的,可以在设置中进行禁止自动播放:Preferences / Privacy & Security / Permissions / Autoplay / Block Audio and Video
参考文献
How to Stop Animated GIFs From Playing in Your Web Browser Allow or block media autoplay in Firefox | Firefox Help[……]
「Linux」- 安装 Opera 浏览器
使用安装包直接安装
# 10/22/2020 安装过程如下: 1)官网下载 deb 安装包:https://www.opera.com/download 2)在 Debian 中,执行 dpkg -i opera-xxxx.deb 命令进行安装。
使用包管理器安装
cat > /etc/apt/sources.list.d/opera.list <<EOF
## Add this line for Opera browser
## use “stable” instead of distribution name
deb http://deb.opera.com/opera-stable/ stable non-free
EOF
aptitude update
wget -O – https://deb.opera.com/archive.key | apt-key add –
aptitude update ## re-update (to acknowledge the key)
aptitude install opera-stable ## then install
参考文献
Opera Web Browser | Faster, Safer, Smarter | Opera Opera – Debian Wiki[……]
「SeaMonkey」
SeaMonkey,目前(07/09/2015)我们正在使用的浏览器。我们喜欢风格比较老派的东西。
# 07/09/2015 目前,我们正在使用的 SeaMonkey 版本是基于 Firefox/52.0 构建的。
安装应用
Download Page: http://www.seamonkey-project.org/releases/ 1)(32位) https://download.mozilla.org/?product=seamonkey-2.46&os=linux&lang=en-US 2)(64位) https://archive.mozilla.org/pub/seamonkey/releases/2.46/contrib/seamonkey-2.46.en-US.linux-x86_64.tar.bz2
Build Instructions: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Simple_SeaMonkey_build
编译 2.4.0 版本
整理自:http://www.linuxfromscratch.org/blfs/view/stable/xsoft/seamonkey.html
源码包及依赖
https://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.40/source/seamonkey-2.40.source.tar.xz
必须依赖:alsa-lib-1.1.2, GTK+-2.24.30, UnZip-6.0, yasm-1.3.0, and Zip-3.0 推荐依赖:ICU-57.1, libevent-2.0.22, libvpx-1.6.0, NSPR-4.12, NSS-3.26 可选依赖: SQLite-3.14.1:如果没有安装,会使用源码报内置的SQLite;
python2 和 openssl:如果系统是自己编译的,确保是先安装的 openssl,然后安装了python2。不然会报 “ImportError: cannot import name HTTPSHandler”错误; 如果不确定可以检查 /usr/lib/python2.7/lib-dynload/_ssl.so(或 /usr/lib/python2.7/lib-dynload/_ssl.xxxxxxxx.so) 文件是否存在; 如果不存在,就要重新安装 python2(确保在安装openssl之后);
cURL-7.50.1, dbus-glib-0.106,[……]
「Linux」- 文件管理器
Nautilus File Manager for GNOME
Nautilus File Manager
PCManFM, PCMan File Manager
PCMan File Manager – Wikipedia
ranger, a console file manager with VI key bindings.
https://ranger.github.io/%20
WinSCP for SFTP
WinSCP: https://winscp.net/eng/index.php
Filezilla for FTP/SFTP
FileZilla – The free FTP solution[……]
「Filezilla」- 开源免费的 FTP/SFTP 客户端
问题描述
在日常文件传输过程中,虽然经常需要使用 FTP 客户端(虽几近废弃): 1)Filezilla 是免费的图形化界面,在日常工作中,我们使用较多; 2)ftp(1) 是命令行工具,多半用于特殊场景(比如命令行操作等等);
该笔记将记录:在 Linux 中,我们使用过的 Filezila 客户端,以及常见问题解决方案。
解决方案
Filezilla,在 GNU/Linux下的 FTP 解决方案,同时提供 FTP Client 和 FTP Server(另外的软件包)。
安装:通过仓库
apt-get install filezilla
安装:通过二进制
我们能够直接下载官方已经编译的二进制包:Download FileZilla Client for Linux (64bit x86)
安装:通过源码编译(过时)
第一步、源码下载:访问Filezilla仓库
# 检出当前版本:
svn co https://svn.filezilla-project.org/svn/FileZilla3/trunk filezilla
# 检出指定版本,例如检出 3.0.8-rc1 版本:
svn co https://svn.filezilla-project.org/svn/FileZilla3/tags/3.0.8-rc1 filezilla-3.0.8-rc1
第二步、进行编译:先阅读 INSTALL 文件。
# 0x00,依赖:
libfilezilla,https://lib.filezilla-project.org/index.php
wxWidgets
GnuTLS
libidn (under Unix-like systems)
gettext (Compiletime only)
libdbus (under Unix-like systems)
# 0x01,如果从SVN仓库检出,还需要以下依赖:
Perl
Libtool
autoconf
automake
# 0x02,上述依赖安装完成时,执行:
autoreconf -i
# 0x03,编译、安装:
./configure
make && make install
# 0x04,运行
filezilla
安装的二进制文件
fzputtygen、fzsftp、filezilla
常见问题
中文文件名显示乱码
https://zhidao.baidu.com/question/535316734.html
问题描述:最开始我们我以为FTP Server(vsftpd)出了问题,但是我在火狐浏览器中访问:ftp:[……]
「Nautilus」- 文件管理器,Linux
常用操作
复制当前地址:CTRL + L / CTRL + C How can I copy the current path from Nautilus? – Ask Ubuntu
常见问题处理
[WIP] 无法查看共享列表,必须输入共享名
How to share files between a Linux and Windows computer
问题描述:Nautilus 无法查看共享目录列表,必须指定共享名才能够访问目录。[……]
「PCManFM」- Linux ,轻量级文件管理器
问题描述
在日常工作中,我们同时使用 Windows 与 Linux 操作系统的笔记本:Windows 主要负责办公通讯,完成必须使用 Windows 操作系统才能完成的任务;Linux 主要负责完成工作任务,作为编程环境、操作环境。在 Linux 中,我们使用 GNOME 桌面,但是 GNOME 自带的 Nautilus 文件管理器比较“大”,我们希望使用轻量级的文件管理器。
后来,在使用 LXDE 的过程中,我们发现其默认的 PCManFM 文件管理器,正是我们需要的。PCManFM 文件管理器响应速度快,界面“简洁”(经典,与 Windows 类似),具有与 GNOME Nautilus 相同功能(几乎)。现在(03/18/2021),PCManFM 是我们工作环境的重要部分,也承担显示桌面图标的任务(因为现在的 GNOME 桌面已经取消桌面图标功能,但是我们又需要该功能)。
该笔记将记录:在 Linux 中,如何使用 PCManFM 文件管理器,以及常见问题处理。
解决方案
安装及运行
apt-get install -y pcmanfm
pcmanfm # 运行
访问远程文件系统
完整 GVfs 支持,无缝访问远程文件系统。在安装 GVfs 相关后端程序后,能够处理 sftp://,webdav://,smb://,…等协议。所以,使用的 URL 格式与 GVfs 中的 URL 格式相同。关于 GVfs 内容,参考 GVfs 文档。
访问 Windows 共享(Samba/SMB):
smb://workgroup;username@netbiosname/service
# workgroup:域;
# username:用户名;
# netbiosname:主机的 NetBIOS Name 或者 IP 地址;
# service:共享名;
smb://workgroup;@10.10.29.131/Softwares
# PCManFM 会提示输入用户名和密码;
运行桌面
# 03/18/2020 现在的 GNOME 桌面已经取消桌面图标功能,但是我们又需要该功能。我们通过 PCManFM 来显示桌面图标:
pcmanfm –desktop
参考文献
PCManFM – LXDE.org PCMan File Manager – Wikipedia[……]
「Linux」- 远程桌面管理,终端管理
问题描述
图形化(GUI)自有其优点,命令行(CLI)也有其优点。图形化,优点在于对用户友好、直观、操作简单等等;命令行,优点在于批处理、功能丰富、灵活组合等等。
该部分笔记将记录:在 Linux 中,我们使用过终端管理软件(比如 Remmina、SecureCRT 等等),以及他们在某些方面的配置方法。
远程桌面管理
Remmina – Remote access screen and file sharing to your desktop
Remote desktop client with RDP, SSH, SPICE, and VNC protocol support.
运行平台:Linux
mRemoteNG – Multi-Remote Next Generation
mRemoteNG – Multi-Remote Next Generation
运行平台:Windows 测试版本:1.76
已知问题: 1)界面无法直接设置 SSH 密钥,需要内嵌的 PuTTY 进行设置: —- Opening SSH to AWS-hosted Linux servers via mRemoteNG
SecureCRT – The rock-solid Telnet and SSH client
SecureCRT – The rock-solid Telnet and SSH client
运行平台:Linux Windows macOS 测试版本:8.3.3
已知问题: 1)在 SecureCRT 9.0 中,才加入 RDP 支持,以远程 Windows 主机: —- SecureCRT 9.0 and SecureFX 9.0 from VanDyke Software Adds Built-in Support for RDP and Platform Support for Ubuntu 20.04
MobaXterm (Home Edition)
MobaXterm Xserver with SSH, telnet, RDP, VNC and X11
运行平台:Linux Windows macOS
特性特征: Full X server and SSH support Remote desktop (RDP, VNC, Xdmcp) Remote terminal (SSH, telnet, rlogin, Mosh) X11-Forwarding Automatic SFTP browser Master password protection Plugins support Portable and inst[……]
「Remmina」- 远程桌面客户端(SSH、SFTP、VNC、Windows Remote Desktop、…)
问题描述
Remmina,用于 LINUX/UNIX 的功能丰富的远程桌面应用程序。其用 GTK+ 编写,旨在帮助那些需要使用(管理)大量远程计算机的人;
支持多种远程网络协议,目前(03/04/2019)支持 RDP,VNC,SPICE,NX,XDMCP,SSH,EXEC 协议;
该笔记将记录:在 Linux 中,安装及使用 Remmina 的方法,以及常见问题的处理方法;
安装方法
通过仓库安装
# Kali GNU/Linux Rolling
# 安装 Remmina 所有相关的插件及软件
apt-get install $(apt-cache search rem | grep ‘^remmina’ | awk ‘{printf “%s “, $1}’)
# 只安装 Remmina
apt-get install -y remmina
软件截图
创建连接
图像化界面操作,使用比较简单,这里不再叙述细节,仅记录某些特殊操作(特殊场景);
telnet
Telnet support (#115) · Issues · Remmina / Remmina · GitLab linux – Automating telnet session using bash scripts – Stack Overflow
Terminal Emulator:选择用于运行命令的终端,比如 stterm(Suckless Simple Terminal)、XTerm 等等;
Command to be executed:需要执行的命令
注意,这里并不能记住帐号密码。如果需要使用自动输入帐号密码,需要配合 expect 程序来解决;
常见问题汇总
Cannot create an item in a locked collection
Not working on linux #47 ArchWiki/GNOME/Keyring
问题描述: 在 Remmina 中,无法保存密码。从命令行中启动后,终端输出:
Message: 13:42:00.075: Remote error from secret service: org.freedesktop.Secret.E
rror.IsLocked: Cannot create an item in a locked collection
问题原因: 经过 Google 查找,说法是 keyring 被锁 ,导致密码无法写入。因此解锁就好;
解决方法: 我们用的是「gnome-keyring」服务,所以 GUI 可以使用「Seahorse」解锁。[……]
「MobaXterm」- 远程桌面客户端(SSH、SFTP、VNC、Windows Remote Desktop、…)
下载地址
MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 – Download[……]
「Linux」- 远程控制 Windows 主机(常见 RDP 客户端)
问题描述
使用 Windows 主机远程连接 Windows 主机时,可以使用「远程桌面软件」,而 Windows 系统自带的远程桌面软件;
但是,如果我们要在 Linux 中远程 Windows 主机时,要怎么办呢?
该笔记将记录:在 Linux 中,远程控制 Windows 主机的方法,以及相关问题的解决办法;
解决方案
在 Windows 中,其远程桌面服务使用 RDP(Remote Desktop Protocol)协议,我们只需要找到实现 RDP 协议的客户端软件
常见的软件有 rdesktop、tsclient、KRDC 等等。下面会简单介绍几款在 Linux 下远程访问 Windows 主机的客户端软件;
Remmina(我们正在使用)
它是图形化程序。它支持 RDP 协议,可以在非 Windows 系统中远程连接 Windows 主机;
除此之外,还可以安装各种插件来支持 VNC\SSH\NX 等协议;
rdesktop
它是命令行程序,没有图形化界面,只能从命令行中指定参数;
访问 rdesktop 主页
tsclient
CoRD
Vinagre
Apps/Vinagre – GNOME Wiki!
在 GNOME 中,Remote Desktop Viewer,是默认的远程桌面软件。
# 08/02/2022 目前,Vinagre 3.22.0-7,不支持共享剪贴板。 Bug #1312141 “vinagre : cannot copy/paste to/from clipboard whil…” : Bugs : vinagre package : Ubuntu
参考文献
Wikipedia/Remote Desktop Protocol Remote Desktop Connection to Windows from Linux using RDP clients[……]
「Huaiwei VRP」- VPN Client,SecoClient
HUAWEI SecoClient 客户端 管理员指南 https://support.huawei.com/enterprise/zh/doc/EDOC1000141430/2a4b5860
在 macOS 下,安装 SecoClient 客户端
https://support.huawei.com/enterprise/zh/doc/EDOC1000141430/d385803f
安装前须知
SecoClient只支持64位MAC操作系统。
SecoClient 7.0.2及以前版本支持的MAC操作系统版本包括: OS X 10.7.x OS X 10.8.x OS X 10.9.x OS X 10.10.x OS X 10.11.x OS X 10.12.x OS X 10.13.x OS X 10.14.x
SecoClient 7.0.3及以后版本支持的MAC操作系统版本包括: OS X 10.12.x OS X 10.13.x OS X 10.14.x OS X 10.15.x
SecoClient对MAC操作系统的内存、硬盘、CPU等软硬件资源没有特殊要求。[……]
「SecureCRT」- 常用配置
问题描述
该笔记将记录:在 SecrueCRT 中,常用的设置,及某些设置的配置方法。
终端颜色
在Linux中,返回的颜色值是深蓝色,在黑色背景色下非常的不清晰。
在连接上右键,然后,Properties – Terminal – Appearance – ANSI Color – Bold colors,修改里面的蓝色,改为其他颜色。这是会话级别的设置,只作用于当前会话(不时此时的连接),重新连接之后生效。
可以进行全局设置,所有的连接都会生效,Options – Global Options… – Terminal – Appearance – ANSI Color,更根据需要修改相应的颜色即可。
修改主题
这里的“主题”指的是终端的颜色方案(Options – Global Options – Terminal – Appearance – Advanced – Color schemes)。
这里介绍会话级的设置,Properties – Terminal – Emulation,但是,要将 ANSI Color 选项去掉。
关闭声音
How to disable error beep/bell/sound in SecureCRT
Edit Default Settings… ⇒ Terminal ⇒ Auto bell,取消勾选
解决中文乱码
SecureCRT中文乱码解决方法
Version 8.3.3 (x64 build 1646)
1)Options ⇒ Global Options… ⇒ General ⇒ Default Session ⇒ Edit default settings 2)Edit Default Settings… ⇒ Terminal ⇒ Appearance ⇒ Character encoding ⇒ UTF-8[……]
「Linux」- 安装向日葵远程控制(Ubuntu、Debian、CentOS)
问题描述
在 Debian 10 中,我们尝试安装 SunloginClient-10.1.1.38139_amd64.deb 应用,但是安装失败(原因是 libwebkitgtk-3.0-0 无法满足)。
想要安装 SunloginClient-10.1.1.38139_amd64.deb 需要 Ubuntu 18.04(或者 Deepin、CentOS 系统)
该笔记将记录:在 Debian 10 中,通过 Ubuntu 18.04 Docker Image 来运行 Sunlogin(向日葵)软件。以后,我们将补充其他发行版的安装方法。
补充说明
# 01/15/2021 我们尝试在 Debian 10 中直接安装 SunloginClient-10.1.1.38139_amd64.deb 包,但是安装失败,并破坏系统的依赖关系。因此,我们只能通过 Docker 创建 Ubuntu 18.04 容器(libwebkitgtk-3.0-0 属于 Ubuntu Bionic 因此使用 Ubuntu 18.04 镜像),来运行向日葵客户端。
# 01/26/2021 我们发现,在控制台中(登录官方站点,进入控制台)可以直接发起设备的远程控制,无需专门安装客户端(可能客户端体验更好)。
# 01/27/2021 我们又想到了其他几个方案:修改 deb 安装包;或者在虚拟机中运行,然后通过 SSH -X 转发到宿主机运行;
# 03/22/2021 今天我们在 Ubuntu 20.04 LTS 中安装该应用,虽然出现 sunloginclient: no process found 提示(看起来像错误),但是整体还是能够正常运行的。
解决方案
Sunloginclient 11.0.0.36662 on Ubuntu 20.04
# 第一步、访问官网下载 deb 安装包
# https://down.oray.com/sunlogin/linux/sunloginclient-11.0.0.36662-amd64.deb
# 第二步、安装 Sunloginclient 应用
dpkg -i sunloginclient-11.0.0.36662-amd64.deb
# 第三步、启动 Sunloginclient 应用
/usr/local/sunlogin/bin/sunloginclient
方案一、通过 Docker 运行(存在问题)
实验步骤(TL;DR)
下面是我们实验过程中的步骤记录:
# 第一步、启动 Ubuntu 18.04 镜像,需要内置 systemd 服务的镜像(因为 SunloginClient 需要,否则安装失败)
doc[……]
「Linux」- 安装 TeamViewer 应用
TeamViewer 15.15.5 on Ubuntu 20.04 LTS
# 第一步、访问官网下载 deb 安装包
# https://dl.teamviewer.cn/download/linux/version_15x/teamviewer_15.15.5_amd64.deb
# 第二步、安装 TeamViewer 应用
dpkg -i teamviewer_15.15.5_amd64.deb
# 第三步、安装依赖
apt-get -f install
# 第四步、启动 TeamViewer 应用
teamviewer[……]
「Linux」- VNC Viewer
下载安装
https://www.realvnc.com/en/connect/download/viewer/linux/
Protocol error: invalid message type 42
SOLVED – VMs using FreeNAS 11 GUI – error connecting via VNC at linux setup | TrueNAS Community
解决方案:Properties / General / Picture Quality: High[……]
「Windows」- CMD, PowerShell, Terminal
修改 Windows Terminal 配置
默认 cmd.exe 终端
Is there a way to change the default shell in Windows Terminal? – Super User
在设置中,将提示编辑 .json 配置文件,修改配置文件的 defaultProfile 字段为 “{0caa0dad-35be-5f56-a8ff-afceeeaa6101}” 参数(这是 profiles[].guid 的值,正是 cmd 配置)。最后,重启 Windows Terminal 程序。
恢复默认配置
Enhance your Console Experience with Windows Terminal
我们启用最大化焦点,导致无法显示设置。我们不知道其他设置方法,只能通过重置配置。
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json C:\Users\Administrator\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
命令行启动程序(cmd)
How to Run an EXE File From Command Prompt: 10 Steps
start “C:\Program Files (x86)\Foxit Software\Foxit Reader” FoxitReader.exe
命令自动补全
Windows Terminal/Powershell Intellisense – Stack Overflow
PowerShell
Install-Module -Name PSReadLine -RequiredVersion 2.1.0[……]
「XTerm」- Terminal Emulator for X
XTerm,用于 X 的终端模拟器。
它提供DEC VT102/VT220和从VT320/VT420/VT520(VTxxx)等更高级别的终端选择的功能。它还为不能直接使用窗口系统的程序提供Tektronix 4014的仿真。如果底层操作系统支持终端调整大小功能(例如,来自4.3BSD的系统中的SIGWINCH信号),每当调整大小时,xterm将使用该设施来通知在窗口中运行的程序。
VTxxx和Tektronix 4014终端每个都有自己的窗口,以便可以在一个中编辑文本,同时在另一个中的查看图形。为了保持正确的宽高比(高/宽),Tektronix图形将被限制为最大框,具有适合窗口的4014宽高比。该框位于窗口的左上角区域。
虽然可以同时显示这两个窗口,但其中的一个被认为是用于接收键盘输入和终端输出的“活动”窗口。这是包含文本光标的窗口。可以通过转义序列、VTxxx窗口中的VT选项菜单、4014窗口中的Tek选项菜单来选择活动窗口。
安装命令
从发行版的源中安装
# Ubuntu 16.04 LTS
apt-get install xterm
从源码中编译安装
参考BLFS/xterm-325:http://www.linuxfromscratch.org/blfs/view/7.10/x/xterm.html
安装的可执行程序文件
koi8rxterm 一个包装的脚本,使用KOI8-R语言环境来设置xterm。 resize 打印一个设置TERM和TERMCAP环境变量来指示xterm窗口的当前大小的shell命令。 uxterm 一个包装脚本,用于修改当前的语言环境为UTF-8,并使用正确的设置来启动xterm。 xterm 用于X Window System的终端模拟器。
XTerm设置
XTerm的默认配置文件的位置为/etc/X11/app-defaults 用户配置的XTerm信息需要写入$HOME/.Xresources中,当修改了.Xresources之后,运行xrdb .Xresources使配置生效。
快捷键绑定
XTerm中定义了一系列的用于操作终端的”Action”。比如:copy-selection(), hard-reset(), scroll-back()等。这些Action可以结合translations映射到鼠标和键盘。比如:可以映射Ctrl + M和Ctrl + R用于最大化/还原窗口: XTerm.vt100.translations: #override \n\ Ctrl <Key>M: maximize() \n\ Ctrl <Key>R: restore()
#override表示覆[……]
「tmux」- terminal multiplexer
tmux,终端复用器,能够在单个终端里与多个 SHELL 进行交互;
tmux 是什么
tmux 可以让你在一个屏幕里操作多个终端(至少不用 ALT+TAB 来频繁的切换窗口)。也可以断开 tmux 与当前屏幕的绑定,断开之后依旧可以恢复连接状态(恢复到之前的状态);
当 tmux 启动时,会创建一个 session,该 session 连接了一个 window。屏幕底部的“绿行”是状态栏,显示了当前的 session 的信息,并可以用于输入交互命令;
session 是由 tmux 管理的伪终端集合。每个 session 可以连接多个 window。一个 window 占据了整个屏幕,并可以被分为多个 pane,每个 pane 都是一个独立的伪终端(man 4 pty);
任意数量的 tmux 实例可以连接到同一个 session 上,并且任意数量的 window 可能存在于同一个 session 中。如果结束了所有的 session,tmux 就退出了;
在 tmux 中,的 session 已经持久化了,如果意外断开了与服务器的连接(比如 ssh 超时)或者故意断开连接(使用‘C-b d’人为断开),可以使用tmux attach命令恢复之前的连接;
在 tmux 中,每个 client 在屏幕上显示一个 session,多个 session 由 tmux server 管理。tmux server 与 tmux client 进程分离,通过/tmp 下的 socket 进行通信;
tmux 涉及的术语有:session、windows、pane;
配置文件
~/.tmux.conf 默认的 tmux 配置文件
/etc/tmux.conf 系统范围(全局)的配置文件
tmux 启动时会执行$HOME/.profile 文件;
命令行语法
tmux [-2CluvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]
相关的程序、插件、配置
https://github.com/search?q=tmux&type=Repositories&ref=simplesearch
参考文献
Homepage:https://github.com/tmux/tmux/wiki Manual:http://man.openbsd.org/OpenBSD-current/man1/tmux.1 https://leanpub.com/the-tao-of-tmux/read Wikipedia / tmux[……]
「tmux」- 安装(CentOS,Ubuntu,编译)
on CentOS
Installing · tmux/tmux Wiki
适用于 CentOS 7.4,CentOS 6.5 (Final)
该方法用于安装较新的 tmux 版本:
set -e
# 第一步、安装 End Point 仓库:
cd /tmp
yum install -y wget && wget https://packages.endpoint.com/endpoint-rpmsign-7.pub
rpm –import endpoint-rpmsign-7.pub
rpm -qi gpg-pubkey-703df089 | gpg –with-fingerprint
wget https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
yum localinstall -y endpoint-repo-1.7-1.x86_64.rpm
yum clean all
yum makecache
# 第二步、安装 Tmux 工具:
# yum install -y tmux
yum install –nogpgcheck -y tmux # 如果密钥签名到期
或者使用 galaxy4.net 仓库,对于 CentOS 7.x 系统:
yum install http://galaxy4.net/repo/galaxy4-release-7-current.noarch.rpm
yum install tmux
on Debian
apt-get install tmux
on macOS
# brew install tmux
源码编译安装(Linux)
第一步、安装依赖
#!/bin/sh
###############################################
# CentOS release 6.9 (Final)
###############################################
# 安装libevent
yum install libevent2-devel.x86_64
# 安装ncurses
yum install ncurses-devel.x86_64
第二步、源码下载
https://github.com/tmux/tmux/releases/download/2.4/tmux-2.4.tar.gz Github:http://github.com/tmux
第三步、构建与安装
详[……]
「TMUX」- 命令行选项
tmux命令支持的选项如下:
-2 强制tmux假设终端支持256色。
-C 在控制模式中启动(见面CONTROL MODE小节)。使用两次该选项(-CC)来禁用echo。
-c shell-command 使用默认的shell执行shell-command。如果有必要,将启动tmux server检索default-shell选项。当tmux用作login shell时,此选项与sh(1)兼容。
-f file 指定配置文件。默认先加载/etx/tmux.conf,然后尝试加载~/.tmux.conf。 配置文件是一系列的tmux命令集合,在tmux server启动时按序执行。source-file命令可以用于稍后加载文件。 tmux会在第一个创建的session中显示错误信息,然后继续处理配置文件中剩余的命令。
-L socket-name tmux在TMUX_TMPDIR环境变量所指定的文件夹中创建socket文件,如果未指定则使用/tmp文件夹,而socket文件使用默认的命名。 该选项允许指定一个不同的socket文件名,允许多个独立的tmux运行。不同于-S选项,无需指定路径(会在同一个目录下创建socket文件)。
如果socket文件被删除,会发送SIGUSR1信号给tmux server来重新创建socket文件(注意:如果没有了父级目录则会失败)。
-l 作为login shell运行。当使用tmux作为login shell时,此标志当前没有任何效果,并且与其他shell兼容
-S socket-path 指定server socket文件的存储路径。如果使用了-S选项,不再使用默认的socket文件夹,并且任何-L标志都会被忽略。
-u tmux通过检查LC_ALL、LC_CTYPE、LANG环境变量,来猜测终端是否可能支持UTF-8。 但这并不总是正确的,所以-u标志显式告诉tmux支持UTF-8。 注意:tmux自身是支持utf-8;该选项是用于控制tmux是否向它运行的终端中发送UTF-8字符,如果终端不支持,UTF-8字符会被替换为’_‘。
-v 请求详细日志记录。可以使用多次来增加日志的详细度。日志会保存到当前目录下的tmux-client-PID.log和tmux-server-PID.log文件中(PID是server和client的PID)。
-V 打印版本信息。
command [flags] 指定用于控制tmux的命令(见以下小节)。如果没有指定命令,则执行new-session命令。[……]
「tmux」- 常用设置及快捷键
配置文件
~/.tmux.conf:默认的tmux配置文件。 /etc/tmux.conf:系统级的配置文件。
Restore tmux session after reboot
https://superuser.com/questions/440015/restore-tmux-session-after-reboot
强制断开其他用户
How do I disconnect all other users in tmux?
Ctrl + B -> Shift + D Ctrl + B -> : -> detach
调整 Pane 顺序
keyboard shortcuts – How does one swap two panes in Tmux? – Super User
向左移动:Ctrl + B => { 向右移动:Ctrl + B => }
注意事项,这里的“向左”、“向右”是指数字上的移动,而不是在界面中 Pane 位置的上线左右。[……]
「tmux」- Control Mode
tmux提供了一种称为控制模式的文本界面,允许应用程序使用简单的纯文本协议与tmux进行通信。
在控制模式下,client在stdin上发送tmux命令或命令序列。每个命令将在stdout上产生一个输出块。一个输出块由%begin为开始,后跟输出内容(可能为空),以%end或%error为结束。 %begin和对应的%end或%error后有两个参数:整数时间(从epoch的秒数)和命令数。例如:
%begin 1363006971 2
0: ksh* (1 panes) [80×24] [layout b25f,80×24,0,0,2] @2 (active)
%end 1363006971 2
在控制模式下,tmux输出通知。输出块内绝不会发生通知。
预定义了一下几种通知
%exit [reason] tmux客户端立即退出,因为它没有附加到任何session或发生了错误。reason(如果存在)描述了客户端退出的原因。
%layout-change window-id window-layout window-visible-layout window-flags ID为window-id的window布局发生了变化。新布局是window-layout。window的可见布局是window-visible-layout,window标志是window-flags。
%output pane-id value window的一个pane输出。将不可打印的字符和反斜杠转义为八进制。
%session-changed session-id name client现在附加到ID为session-id的会话中,该session的名为name。
%session-renamed name 当前session被重命名为name。
%sessions-changed 当前session被创建或者销毁。
%unlinked-window-add window-id ID为window-id的window已创建,但未链接到当前session。
%window-add window-id ID为window-id的window链接到当前session。
%window-close window-id ID为window-id的window关闭。
%window-renamed window-id name ID为window-id的window被重命名为name。[……]
「tmux」- 快捷键绑定
可以通过使用前缀键组合其他键来控制tmux,默认的前缀键为‘C-b’(Ctrl-b)。使用时先按下前缀键,然后再按下其他键。
默认快捷键列表
键
含义
C-b
发送前缀KEY。
C-z
暂停当前的tmux client。
”
将当前的pane分割为上下两部分。
#
列出所有的粘贴缓冲。
$
重命名当前的session。
%
左右分割当前pane。
‘
弹出window的索引,用于切换window。
(
将client绑定到前一个session。
)
将client绑定到下一个session。
–
删除最近复制的文本缓冲。
.
显示索引,用于移动window。
:
进入交互模式,向tmux发送命令。
;
移动到前一个活跃的pane。
=
进入交互模式,从列表中选择要按贴的缓冲。
D
选择一个client,脱离。
L
选择一个绑定的client返回上一个session。
[
进入复制模式或者历史查看模式。
]
粘贴最近复制的文本缓冲。
d
断开当前的client。
f
打开一个提示,用于在当前的window中搜索文本。
i
显示当前window的一些信息。
l
移动到上一个选择的window。
n
换到下一个window。
o
选择当前window中的下一个pane。
p
换到上一个window。
q
简要显示pane的索引。
r
强制重新绘制Client。
m
标记当前的pane。(查看selec[……]
「tmux」- 插件及自定义配置(TPM)
问题描述
如果某个应用不允许其他人开发插件,那么这个应用多半是个轻巧的小工具。如果允许其他人开发插件,那多半会发展成高级工具。tmux 想成高级工具以支持更多场景,因此它支持插件,这也是工具开发者在决定是否要允许他人开发插件的重要原因。
我们需要安装某些 tmux 插件,比如 Tmux Resurrect 用于保存 tmux 状态并恢复,还需要安装其他插件。
该笔记将记录:在 tmux 中,安装插件的方法,以及相关问题的处理。关于解决具体问题的插件,我们将记录在子章节。
解决方案
TPM – Tmux Plugin Manager
安装插件的方法有很多,插件的文档也会注明安装方法。我们这里将介绍使用 Tmux Plugin Manager 安装插件的方法,更多内容,参考 tmux-plugins/tpm: Tmux Plugin Manager 页面。。
第一步、安装 Tmux Plugin Manager 插件,并配置:
mkdir -pv ~/.config/tmux/
# Clone TPM:
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
# Put this at the bottom of ~/.tmux.conf ($XDG_CONFIG_HOME/tmux/tmux.conf works too)
cat >> ~/.config/tmux/tmux.conf <<EOF
# List of plugins
set -g @plugin ‘tmux-plugins/tpm’
set -g @plugin ‘tmux-plugins/tmux-sensible’
# Other examples:
# set -g @plugin ‘github_username/plugin_name’
# set -g @plugin ‘git@github.com:user/plugin’
# set -g @plugin ‘git@bitbucket.com:user/plugin’
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run ‘~/.config/tmux/plugins/tpm/tpm’
EOF
# type this in terminal if tmux is already running
tmux source ~/.config/tmux/tmux.conf
第二步、通过 TPM 安装插件(以 Tmux Res[……]
「tmux」- 持久化窗口布局(在启动时,根据配置自动加载窗口布局)
问题描述
在 tmux 中,当每次启动时,我们都需要执行很多快捷键,以初始化界面布局。这种事情通常发生在系统重启之后,我们需要启动新的 tmux 进程,并加载相关配置,然后输入快捷键完成窗口布局。那么有没有什么方法能够在 tmux 启动时,自动创建 Session Window Pane,并按照我们希望的样子呢?
好在有 Tmux Resurrect 插件,它能够持久化 tmux 当前状态,让我们在系统重启之后依旧能够恢复到之前的窗口布局。当安装该插件后,仅需在 tmux 中使用快捷键保存状态,然后下次启动后再使用快捷键恢复状态。
该笔记将记录:在 tmux 中,如何使用 Tmux Resurrect 插件来持久化窗口布局,以及相关问题处理。
解决方案
安装插件(Tmux Resurrect)
1)我们使用 TPM 来安装 Tmux Resurrect 插件,参考 TPM 笔记; 2)更多操作,参考 tmux-resurrect/README.md at master 页面;
插件使用
1)<prefix>, Ctrl+s:当保存成功之后,底部的状态行会提示 Tmux environment saved! 消息。 2)然后,退出 tmux 进程(采用任何方式,正常退出或 KILL -KILL 皆可) 3)最后,重新运行 tmux 命令,通过 <prefix>, Ctrl+r 按键恢复即可;
注意事项
1)该插件默认仅保存窗口布局,如果希望保存环境变量、命令执行历史、恢复运行的程序等等,需要进一步修改 Tmux Resurrect 设置;
场景:实现自动保存
基于 Tmux Resurrect 插件,再通过 tmux-plugins/tmux-continuum 插件将自动保存窗口布局,并且还能实现在启动 tmux 时,自动恢复之前的窗口布局。
1)需要安装 TPM 插件(因为我们使用 TPM 来进行插件管理,所以需要使用该插件)
2)然后,添加如下配置:
set -g @plugin ‘tmux-plugins/tmux-resurrect’
set -g @plugin ‘tmux-plugins/tmux-continuum’
# 每分钟保存一次(这获取比较频繁)
set -g @continuum-save-interval ‘1’
# 当启动 tmux 进程时,自动恢复之前的布局
set -g @continuum-restore ‘on’
3)<prefix>, Ctrl+I 来完成插件安装
我们的某个初始化脚本
我们需要根据目录结构来创建相应的窗口布局,因此使用脚本的方式来实现。[……]
「tmux」- 常见错误整理
can’t create socket: No such file or directory
解决tmux启动「can’t create socket」的有关问题
执行 strace -e trace=file tmux 来查看错误原因。
no current target
How to get tmux to start with a couple of split windows
由于配置文件的解析是在会话创建之前,所以某些命令是无法执行的。比如new-window命令。
在启动启动时,如果希望tmux通过执行某些内置的指令,形成已经配置完成的窗口,这只能通过脚本去实现。[……]