随时随地通过 ssh 携带您最喜欢的 shell
项目描述
你用别名、工具和颜色填充了命令 shell,但是在使用 ssh 时你会丢失所有这些。xxh 的使命是通过 ssh 将您最喜欢的 shell 带到任何地方,无需 root 访问和系统安装。
如果您喜欢 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 |
演示 |
查询 | 测试版 | |||
鱼应用图像 | α | |||
精灵 | α |
在 Github或Bitbucket上搜索 xxh shell或创建您的 shell 入口点以使用另一个便携式 shell。
预运行插件
Prerun 插件允许您在运行 shell 之前将任何可移植工具、点文件或别名带到 xxh 会话。
固定插件:核心(xxh-sudo、xxh-screen、xxh-tmux)、dotfiles、docker、python、xxh、vim、zoxide、starship。有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 包构建脚本可能需要的可移植构建工具,例如git
、wget
、和其他。运行时,预计这些工具存在于主机上。curl
tar
xxh 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 +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进化的关键。问加入。
谢谢
- 伟大的python- appimage
- probonopd和TheAssassin为辛勤工作的AppImage
- Anthony Scopatz、Gil Forsyth、Jamie Bliss、David Strobach、Morten Enemark Lund和@xore 制作了令人惊叹的xonsh shell
- Roman Perepelitsa实现了令人难以置信的静态链接、密封、可重定位 Zsh
- Johannes Altmanninger和Fabian Homborg用于广泛且便携的鱼壳