Introduce a self-contained repo with an interactive install.sh that provisions zsh, oh-my-zsh, aliases, bat/yazi configs, docker shortcuts, and git-delta pager setup. Configs are adapted from dotfiles for SSH-only servers — no desktop or neovim dependencies. Installer supports --all, --update (git pull + re-run), and --uninstall with backup restore. Core packages include vim (default editor), yazi via apt, and idempotent apt installs with warnings for eza and git-delta when repos lack them.
79 lines
3.0 KiB
Markdown
79 lines
3.0 KiB
Markdown
# Server CLI Tools
|
|
|
|
Interactive installer for setting up a consistent shell environment on Ubuntu/Debian servers. Clone to any server, run the installer, pick what you need.
|
|
|
|
## Quick start
|
|
|
|
```sh
|
|
git clone <repo-url> ~/server_cli_tools
|
|
cd ~/server_cli_tools
|
|
./install.sh # interactive menu
|
|
./install.sh --all # install everything
|
|
./install.sh --update # pull latest + re-run menu
|
|
./install.sh --uninstall # remove installed configs
|
|
```
|
|
|
|
## What's included
|
|
|
|
| # | Component | What it does |
|
|
|---|-----------|-------------|
|
|
| 1 | **Core packages** | `vim`, `bat`, `eza`, `fzf`, `htop`, `tmux`, `zsh`, `ripgrep`, `fd-find`, `zoxide`, `yazi`, `git-delta` |
|
|
| 2 | **Zsh + Oh-My-Zsh** | Shell, plugins (`zsh-autosuggestions`, `zsh-syntax-highlighting`, `z`), custom prompt theme |
|
|
| 3 | **Aliases + tools** | General, git, and docker aliases with a self-documenting help system (`h`) |
|
|
| 4 | **Terminal configs** | `bat` theme (base16), `yazi` file manager config |
|
|
| 5 | **Docker aliases** | Start/stop toggle, bulk stop/remove, image management |
|
|
| 6 | **Git config** | `git-delta` as pager with side-by-side diffs |
|
|
|
|
## Alias highlights
|
|
|
|
Type `h` after installation to see all aliases with descriptions. Some highlights:
|
|
|
|
```
|
|
ll — eza with icons, groups, timestamps
|
|
pf — fzf + bat file preview
|
|
cdf — fuzzy cd into any subdirectory
|
|
mkcd — mkdir + cd in one command
|
|
twd — tar current directory
|
|
gdn — numbered git diff (then gdn 3 to diff file #3)
|
|
gcpm — git add -u + commit + push in one command
|
|
gstm — git stash with mandatory message
|
|
ds — toggle docker container start/stop
|
|
da — docker ps -a
|
|
```
|
|
|
|
## How it works
|
|
|
|
- **Idempotent** — safe to run multiple times; skips already-installed packages
|
|
- **Non-destructive** — existing configs are backed up to `~/.server_cli_tools_bkp/<timestamp>/`
|
|
- **Selective** — interactive menu lets you toggle individual components
|
|
- **Ubuntu/Debian** — uses `apt`; warns on other distros (configs still work)
|
|
|
|
## Repo structure
|
|
|
|
```
|
|
server_cli_tools/
|
|
install.sh # main installer
|
|
configs/
|
|
aliases/
|
|
.aliases # general aliases (server-adapted)
|
|
.functions.sh # helper functions + alias help system
|
|
.git_aliases # git shortcuts + stash management
|
|
.docker_aliases # docker management aliases
|
|
.git_bash_autocomplete # bash git completion
|
|
custom_tools/
|
|
backup_dotfiles.sh # backup conflicting dotfiles
|
|
bat/config # bat theme
|
|
yazi/yazi.toml # yazi file manager config
|
|
zsh/zhann-elvis.zsh-theme # custom zsh prompt (git-aware)
|
|
zshrc # .zshrc with oh-my-zsh + plugins
|
|
```
|
|
|
|
## Customization
|
|
|
|
After installation, create local overrides that won't be tracked:
|
|
|
|
- `~/.config/aliases/.local_aliases` — machine-specific aliases
|
|
- `~/.config/aliases/.custom_aliases` — temporary/personal aliases
|
|
|
|
Use `ea l` to edit local aliases, `ea c` for custom, `sa` to re-source.
|