通过 docker 容器和 tmoe 工具箱定制其他 unix | linux 系统不同用户名主目录 zsh 扩展插件
#docker,#tmoe,#unix,#macos,#zsh,#linux,
先运行 docker 容器
# -e 'TZ=Asia/Shanghai' 好像没生效
docker run --rm \
-e 'DEBIAN_FRONTEND=noninteractive' \
-e 'TZ=Asia/Shanghai' \
--name 'test' \
-it -v './test:/test' \
docker.io/ubuntu:latest \
bash
更新并安装 curl sudo 和 tzdata
apt update
apt -y install curl sudo tzdata
更新时区
ln -fsv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
dpkg-reconfigure --frontend noninteractive tzdata
根据 unix | linux 用户名和主目录,容器内自定义创建对应的用户名、用户主目录和密码
# 假设用户名是 469138946ba5fa
export USERS=469138946ba5fa HOMES=/Users/469138946ba5fa PASSWORDS=123456
mkdir -pv $HOMES
# 赋权
chmod -Rv 775 $HOMES
# 添加自定义用户和目录并绑定
useradd -m -d $HOMES $USERS
# 赋予目录用户权限
chown $USERS:$USERS $HOMES
# 改密码
echo $USERS:$PASSWORDS | chpasswd
echo "sudo免密码的用户是:$USERS"
echo "如需密码密码是:$PASSWORDS"
用户 sudo 免密码
cat << EOF | sudo tee test.sh
sudo touch /etc/sudoers.d/$USERS
sudo chown -Rv $USERS:$USERS /etc/sudoers.d/$USERS
sudo chmod -Rv 0777 /etc/sudoers.d/$USERS
echo "$USERS ALL=(ALL) NOPASSWD:ALL" | sudo tee > /etc/sudoers.d/$USERS
sudo chown -Rv root:root /etc/sudoers.d/$USERS
sudo chown -Rv root:wheel /etc/sudoers.d/$USERS
sudo chmod -Rv 0440 /etc/sudoers.d/$USERS
sudo cat /etc/sudoers.d/$USERS
EOF
sudo bash -c "bash test.sh ; rm -frv test.sh"
进入用户主目录,并用 bash 作为 shell
su - $USERS -s /bin/bash
# 看看主目录是否正确
pwd
安装 tmoe 工具箱
cd $TMPDIR || cd /tmp
curl -LO https://l.tmoe.me/2.awk
awk -f 2.awk
使用工具箱安装 zsh 插件流程
我主题选择的 177 也就是随机,这样,我每次打开终端都会展示不同的主题效果
这个流程要有点想象力
y y y
<Manager> -> 6 🌈 Configure zsh -> 1 🍭 Installation and configuration 安装与配置 -> <round> -> 177
安装完成 zsh 和 zsh 插件之后,修改配置文件参数
可能是脚本配置问题,随机主题环境变量找不到,所以我给补上了
exa 也被 eza 替代了
config_file="$HOME/.zinit/themes/_local/random/random.zsh-theme"
# 使用 sed 在第一行添加内容
sed -i '1i ZSH_CUSTOM=$HOME/.zinit/omz' "$config_file"
# 使用 sed 替换 exa 为 eza
sed -i 's;exa;eza;g' "$HOME/.zshrc"
# 使用 bat 替代 cat 添加 lcat 和 cat 别名
echo "alias lcat=/bin/cat" >> "$HOME/.zshrc"
echo "alias cat='bat -p'" >> "$HOME/.zshrc"
# 输入 zsh 看看效果
zsh
获取当前时区时间
DATES=$(TZ=':Asia/Shanghai' date '+%Y-%m-%d_%H-%M-%S')
echo $DATES
以下两种zsh扩展插件配置备份还原方式二选一或者全都要都行
tar.xz 备份还原
# 选择 tar.xz 备份至$HOME/tmoe-zsh_$DATES.tar.xz
tar -PJpcf - $HOME/.zshrc $HOME/.zinit $HOME/.z $HOME/.zsh_history $HOME/.config/tmoe-zsh/git $HOME/.p10k.zsh $HOME/.local/bin/zshtheme $HOME/.local/bin/zsh-i | (pv -p --timer --rate --bytes > $HOME/tmoe-zsh_$DATES.tar.xz)
# 将备份包从容器中拿出来
sudo cp -fv $HOME/tmoe-zsh_$DATES.tar.xz /test/tmoe-zsh.tar.xz
# 开启新的终端,终止容器
docker stop test
# 到对应 unix | linux 系统目录,安装zsh插件支持 command-not-found fonts-powerline binutils zsh bat eza fzf tar xz-utils pv tree zstd unzip p7zip
# 比如 macos 可以用
brew install binutils zsh bat eza fzf xz pv tree zstd unzip p7zip
# 比如 debian 可以用
sudo apt install command-not-found fonts-powerline binutils zsh bat eza fzf tar xz-utils pv tree zstd unzip p7zip
# 备份 unix | linux 系统 zsh 原始配置文件和历史记录文件
cp -fv $HOME/.zshrc $HOME/.zshrc.bak
cp -fv $HOME/.zsh_history $HOME/.zsh_history.bak
# 选择将 tar.xz 放到目标 unix | linux 系统,然后还原至对应$HOME
# tar -PpJxvf tmoe-zsh.tar.xz
pv tmoe-zsh.tar.xz | tar -PpJx
tar.gz 备份还原
# 选择 tar.gz 备份至$HOME/tmoe-zsh_$DATES.tar.gz
tar -Ppczf - $HOME/.zshrc $HOME/.zinit $HOME/.z $HOME/.zsh_history $HOME/.config/tmoe-zsh/git $HOME/.p10k.zsh $HOME/.local/bin/zshtheme $HOME/.local/bin/zsh-i | (pv -p --timer --rate --bytes > $HOME/tmoe-zsh_$DATES.tar.gz)
# 将备份包从容器中拿出来
sudo cp -fv $HOME/tmoe-zsh_$DATES.tar.gz /test/tmoe-zsh.tar.gz
# 打开新的终端,退出容器
docker stop test
# 到对应 unix | linux 系统目录,安装zsh插件支持 command-not-found fonts-powerline binutils zsh bat eza fzf tar xz-utils pv tree zstd unzip p7zip
# 比如 macos 可以用
brew install binutils zsh bat eza fzf xz pv tree zstd unzip p7zip
# 比如 debian 可以用
sudo apt install command-not-found fonts-powerline binutils zsh bat eza fzf tar xz-utils pv tree zstd unzip p7zip
# 备份 unix | linux 系统 zsh 原始配置文件和历史记录文件
cp -fv $HOME/.zshrc $HOME/.zshrc.bak
cp -fv $HOME/.zsh_history $HOME/.zsh_history.bak
# 选择将 tar.gz 放到目标 unix | linux 系统,然后还原至对应$HOME
# tar -Ppzxvf tmoe-zsh.tar.gz
pv tmoe-zsh.tar.gz | tar -Ppzx
.zinit 目录赋予权限
chmod -Rv 755 $HOME/.zinit
将默认 shell 设置为 zsh 这可能需要输入你的密码
chsh -s $(command -v zsh)
将 $HOME/.zshrc.bak 中你自定义的环境变量追加到 $HOME/.zshrc 中,这样你的二进制文件识别将被保留
将 $HOME/.zsh_history.bak 历史命令记录文件内容追加到 新的 $HOME/.zsh_history 中,这样你的历史命令将保留
cat $HOME/.zsh_history.bak >> $HOME/.zsh_history
重启终端,至此,你应该能看到自己的终端随机主题、支持补全、高亮、lst等功能了吧
关于tmoe zsh安装的插件以及其功能
-----------
应用名称 APP NAME:bat
命令COMMAND:bat
alias lcat=/bin/cat
alias cat='bat -p'
bat是cat的替代品,支持多语言语法高亮。
用法示例:bat -l zsh /etc/os-release
输入bat -L获取支持的语言
lcat命令为原版cat
------------
应用名称 APP NAME:eza
命令COMMAND:eza
alias lls=ls
alias l="eza -lbah"
若您的系统满足依赖条件,则ls将alias为exa.
exa是一款优秀的ls替代品,拥有更好的文件展示体验,输出结果更快,使用rust编写。
Exa is a modern version of ls.
输入l,将显示当前目录的文件列表。
输入lst,将展示类似于tree的树状列表。
输入lls,使用原版ls
------------
插件名称PLUGIN NAME:z
命令COMMAND:z
Description:记录访问目录,输z获取,输$(z 目录名称)快速跳转
若您曾访问过~/sd/Download,则您可以输z Down或z load来快速跳转,访问列表可以输 z获取。
------------
插件名称PLUGIN NAME:colored-man-pages
命令COMMAND:man
Description: man手册彩色输出 This plugin adds colors to man pages..
输入man 软件包或命令名称获取该软件包的文档。
用法示例:man ssh高亮显示ssh-client的文档(用户手册)。
man bash获取bash的用户手册。
------------
插件名称PLUGIN NAME:extract
命令COMMAND:x
例如某文件名为233.tar.xz,则您无需输tar -Jxf 233.tar.xz,只需输x 233.tar.xz。
同理,若另一文件为233.7z,则您只需输入x 233.7z即可解压。
注意:您在解压前必须先安装相关依赖,例如:zip需要unzip,7z需要p7zip,zst需要zstd, 安装方法类似于eatmydata apt install -y zstd
-----------
插件名称PLUGIN NAME:sudo
Description: 按两下ESC键,可以在当前命令前加上sudo前缀.
------------
Other
补全插件:输入已知命令或函数的部分字符后,按下TAB键⇄
用法示例:输入zsht后,按下⇄补全为zshtheme,按下空格,再按下TAB键
------------
插件名称PLUGIN NAME:zsh-autosuggestions
历史记录插件用法:输入曾输过的命令,按方向键上↑或右→进行补全。
------------
Comments
Post a Comment