Skip to main content

随时随地通过 ssh 携带您最喜欢的 shell

项目描述

你用别名、工具和颜色填充了命令 shell,但是在使用 ssh 时你会丢失所有这些。xxh 的使命是通过 ssh 将您最喜欢的 shell 带到任何地方,无需 root 访问和系统安装。

如果您喜欢 xxh 的想法,请单击回购和推文上的 ⭐ 。

[xxh 演示]

便携。准备便携式外壳和插件在本地进行,然后 xxh 将结果上传到主机。无需在主机上进行安装或 root 访问。安全和主机环境是主要关注点。 密封的。从远程主机删除~/.xxh目录将使远程环境的功能就像 xxh 从未存在过一样。默认情况下,您的主目录是.xxh目录,您可以选择 xxh 会话的密封级别 小心。无需蒙眼将配置文件从本地复制到远程主机。遵循隐私和可重复性实践的最佳方法是分叉 xxh 插件或 shell 示例并将您的配置打包到其中。
开放并准备好分叉。每个 xxh 存储库都可以被分叉、定制和重用,而无需等待包管理系统、xxh 版本或任何第三方包。目前支持五个 shell,社区可以添加更多。 做更多。xxh 包不仅仅是关于 shell 的。任何类型的工具或代码都可能位于入口点之后。如果要在远程主机上运行browsh,只需将其可移植版本作为入口点放在 xxh-shell 中。 变色龙。切换外壳尽可能简单,您不必被锁定在一个外壳中。根据您要解决的任务选择您当前的 shell:xxh anyhost +s xonsh对于 python 环境,osquery 用于简单查询,fish 用于现代功能或经过时间考验的 zsh 和 bash 用于速度。

安装方法

皮皮 3

pip3 install xxh-xxh

pipx - brew 和 pip 的好替代品,阅读比较

pipx install xxh-xxh

康达锻造 原料

conda config --add channels conda-forge
conda install xxh-xxh

家酿

brew install xxh

麦克波特

sudo port install xxh

Linux 可移植二进制文件

mkdir ~/xxh && cd ~/xxh
wget https://github.com/xxh/xxh/releases/download/0.8.7/xxh-portable-musl-alpine-Linux-x86_64.tar.gz
tar -xzf xxh-portable-musl-alpine-Linux-x86_64.tar.gz
./xxh

Linux AppImage

mkdir ~/xxh && cd ~/xxh
wget -O xxh https://github.com/xxh/xxh/releases/download/0.8.7/xxh-x86_64.AppImage
chmod +x xxh && ./xxh

要在 Alpine Linux 上运行 AppImage,请使用localedef安装 alpine-pkg-glibc

贝壳

当前支持的目标主机操作系统是 x86_64 上的 Linux。

xxh-shell 地位 xxh 插件 无缝的 演示
呸呸呸 稳定的 自动跳转[+] xxh.xsh 演示
zsh 稳定的 ohmyzsh , p10k , [+] xxh.zsh 演示
稳定的 ohmyfish ,费舍尔,用户配置, [+] 去做
重击 稳定的 欧姆巴什, [+] xxh.bash 演示
查询 测试版
鱼应用图像 α
精灵 α

在 GithubBitbucket上搜索 xxh shell或创建您的 shell 入口点以使用另一个便携式 shell。

预运行插件

Prerun 插件允许您在运行 shell 之前将任何可移植工具、点文件或别名带到 xxh 会话。

固定插件:核心(xxh-sudo、xxh-screen、xxh-tmux)、dotfilesdockerpythonxxhvimzoxidestarship。有cookiecutter 模板来创建预运行插件

用法

在不更改 ssh 参数的情况下连接到 Linux 主机时使用xxh而不是:ssh

xxh <host from ~/.ssh/config>
xxh [ssh arguments] [user@]host[:port] [xxh arguments]
xxh local [xxh arguments]

常见示例(用于xxh --help获取有关参数的信息):

xxh anyhost                                       # Connect to the host
xxh -i id_rsa -p 2222 anyhost                     # Using ssh arguments: port and key
xxh anyhost +s zsh +i                             # Set the shell and install it without yes/no question
xxh anyhost +s xonsh +hhh "~"                     # Set /home/user as home directory (read Q&A)
xxh anyhost +s bash +I xxh-plugin-bash-vim        # Preinstall a plugin
xxh anyhost +if +q                                # Force reinstall xxh on the host in quiet mode
xxh anyhost +hh /tmp/xxh +hhr                     # Upload xxh to /tmp/xxh and remove when disconnecting
source xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh  # Connect in seamless mode with ohmyzsh plugin
xxh local +s xonsh                                # Experimental: build xxh environment inplace and without ssh

为了重用参数和简化 xxh 的使用(比如缩短到xxh anyhost),有一个配置文件.

为什么 xxh 参数的加号?xxh 对 xxh 参数使用加号,以保存对原始 ssh 参数使用减号的能力。这允许只需替换命令中的前两个字母ssh即可将其转换为xxh命令。另见讨论

安装 xxh 包

xxh [+I xxh-package +I ...] [+L] [+RI xxh-package +RI ...] [+R xxh-package +R ...]

设置 xxh 包源的不同方法:

xxh +I xxh-shell-example                                         # install from https://github.com/xxh
xxh +I https://github.com/xxh/xxh-shell-example                  # short url for github only, for other sources use examples below or add support
xxh +I https://github.com/xxh/xxh-shell-example/tree/mybranch    # short url for github only, for other sources use examples below or add support
xxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example                 # long url for any git repo
xxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example/tree/mybranch   # github only branch support
xxh +I xxh-shell-example+git+git@github.com:githubuser/xxh-shell-example.git          # install from private repository using ssh
xxh +I xxh-shell-example+path+/home/user/my-xxh-dev/xxh-shell-example                 # install from local path

在没有 ssh 连接的情况下就地使用 xxh

这是实验魔法。请把下面的文字读两遍。

如果您在主机上具有 shell 访问权限,或者您在 docker 容器中并且您无法通过 ssh 访问它,那么您可以下载并就地构建封闭的 xxh 环境。该xxh local命令的工作方式与默认情况下完全一样xxh remote_host,并在其中创建一个密封环境。~/.xxh

目前,我们没有一些 xxh 包构建脚本可能需要的可移植构建工具,例如gitwget、和其他。运行时,预计这些工具存在于主机上。curltarxxh local

要在 Linux x86_64 上就地运行 xxh,只需复制并粘贴以下 bash 命令:

XH=~/.xxh \
 && XD=https://github.com/xxh/xxh-portable/raw/master/result/xxh-portable-musl-alpine-Linux-x86_64.tar.gz \
 && mkdir -p $XH && cd $XH \
 && ( [[ -x $(command -v curl) ]] && curl -L $XD || wget -O- $XD ) | tar zxf - xxh \
 && echo 'Usage: ./xxh local [+s xonsh/zsh/fish/osquery/bash]'

下次您在主机上运行时~/.xxh/xxh local,您将进入您的 xxh 环境。

用例示例

到处都有 pip 的 Python 无需安装

方式1.使用xonsh

xxh anyhost +s xonsh

anyhost> python --version
Python 3.8.2

您将在主机上获得带有便携式 python 和 pip 的 python 驱动的xonsh shell,而无需在主机上安装任何系统。您可以手动安装 PyPi 包,也可以使用xxh-plugin-prerun-dotfiles自动携带它们。也不要忘记像zoxide这样的 xxh 插件。

方式 2. 在任何 xxh shell 上使用可移植 python

xxh +RI xxh-plugin-prerun-python
xxh anyhost +s zsh

anyhost> python --version
Python 3.8.2
anyhost> pip install pandas

使用xxh-plugin-prerun-python你会得到一个可移植的 Python AppImage,它可以在没有 python 和任何 xxh shell 的主机上使用。

在没有 root 访问权限的主机上使用 docker

试试xxh-plugin-prerun-docker

xxh +RI xxh-plugin-prerun-docker
xxh anyhost +if

anyhost> xxh-docker-run
anyhost> docker ps                                                                                                                                                                                                                            
CONTAINER ID        IMAGE               COMMAND
anyhost> docker run --rm hello-world | grep Hello
Hello from Docker!
anyhost> xxh-docker-stop

将点文件带入 xxh 会话

当您使用 xxh 访问主机时,有xxh-plugin-prerun-dotfiles插件会创建配置文件。您可以分叉它并永远创建您的舒适设置。

无缝 Oh My Zsh(演示

source xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh +if +q 

此命令将您当前的 Oh My Zsh 会话主题带到 xxh 会话。如果您需要更复杂的设置,只需分叉xxh-plugin-zsh-ohmyzsh并破解它。

使用osquery将主机读取为表

$ xxh anyhost +s osquery
osquery> SELECT * FROM users WHERE username='news';
+-----+-----+----------+-------------+-----------------+-------------------+
| uid | gid | username | description | directory       | shell             |
+-----+-----+----------+-------------+-----------------+-------------------+
| 9   | 9   | news     | news        | /var/spool/news | /usr/sbin/nologin |
+-----+-----+----------+-------------+-----------------+-------------------+

多合一便携式家庭

xxh 非常敏捷。您可以创建自己的xxh-shell(外壳部分意味着它有一个入口点),它可以拥有任何可以帮助您在主机上的便携式工具。Bash xxh-shell 是这些可以分叉和填充的平台之一。

问题和解答

发展

xxh 开发环境中,有完整的dockerized环境用于开发、测试和贡献。测试和开发的过程是由xde工具编排的,并且尽可能简单。

我们有团队。如果你在一个团队中,这并不意味着你有义务做某事。团队的主要目标是创建一群充满激情的人,他们可以帮助或支持解决复杂的问题。有些人可能是一个shell的专家,另一个shell的新手,互助是xxh进化的关键。问加入。

谢谢

项目详情