Configuración y tuneo de entorno Linux ZSH

Actualizado el 01/07/20204

Voy a pasar a describir cómo configuro mi entorno de debian con la configuracion de zsh, despues de la instalación. Es muy simplona pero me sirve para lo que uso.

En esta configuración voy a usar zsh y las siguientes utilidades:

oh-my-zsh -> para poder personalizar un poco el theme y plugins

lsd -> es un ls pero más bonito que colorea

batcat -> es un cat pero que muestra más cómodos los datos

fd -> un buscador de archivos más eficiente que find

para empezar voy a partir de una distro nueva recién instalada (Debian)

vamos instalar primero el ZHS , SUDO y el resto de aplicaciones dependientes de apt-get

apt-get update && apt-get install zsh sudo git wget unzip feh fonts-hack-ttf byobu jq && apt-get autoclean

y lo siguiente es asignar la zsh al root

chsh root -s /bin/zsh

Ahora vamos a crear el usuario que necesito:

useradd -m -G sudo -s /bin/zsh guiskas

-m crea la carpeta en home

-G sudo añade al usuario como grupo secundario en sudo

-s /bin/zsh le decimos que use en shell de zsh

ahora le ponemos una contraseña

 passwd guiskas

con esto podemos ya arrancar con nuestro nuevo usuario , cerramos el terminal con exit y lo arrancamos con nuestro usuario

Si se da el caso que ya tenemos creado el usuario usamos este comando para cambiar el shell:

chsh -s $(which zsh)

Una vez arrancado nos saldrá el siguiente texto :

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses ---

pulsamos la tecla 0 y salimos al shell si pulsas el CTRL+L limpiamos la ventana .

ahora vamos a instalar el oh-my-zsh y sus plugins

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

veremos que nos sale este texto y lo tendremos listo :

Cloning Oh My Zsh...
remote: Enumerating objects: 1297, done.
remote: Counting objects: 100% (1297/1297), done.
remote: Compressing objects: 100% (1254/1254), done.
remote: Total 1297 (delta 26), reused 1210 (delta 24), pack-reused 0
Receiving objects: 100% (1297/1297), 1.06 MiB | 9.00 MiB/s, done.
Resolving deltas: 100% (26/26), done.
From https://github.com/ohmyzsh/ohmyzsh
 * [new branch]      master     -> origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
Already on 'master'
/home/guiskas

Looking for an existing zsh config...
Found ~/.zshrc. Backing up to /home/guiskas/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to ~/.zshrc.

         __                                     __
  ____  / /_     ____ ___  __  __   ____  _____/ /_
 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / /
\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/
                        /____/                       ....is now installed!


Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.

• Follow us on Twitter: https://twitter.com/ohmyzsh
• Join our Discord community: https://discord.gg/ohmyzsh
• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh

➜  ~
source ~/.zshrc

a partir de aquí hay que instalar una serie de plugins y modificar el archivo de configuración de la zsh

primero vamos a instalar el autosuggestion que nos ayuda con la sintaxis

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

después el plugin de syntax-highlighting. para colorear el textos .

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

Ahora solo queda instalar un par de aplicaciones que me gustan que son: LSD, BatCAT y FD

Sus repositorios son los siguientes :

LSD –> https://github.com/Peltoche/lsd/releases

BatCAT –> https://github.com/sharkdp/bat/releases

FD –> https://github.com/sharkdp/fd

Lo podemos ejecutar directamente (instalara la ultima version):

wget -qO- https://api.github.com/repos/sharkdp/bat/releases/latest | grep "browser_download_url.*bat_.*_amd64.deb" | cut -d '"' -f 4 | wget -qi -
wget -qO- https://api.github.com/repos/lsd-rs/lsd/releases/latest | grep "browser_download_url.*lsd_.*_amd64.deb" | cut -d '"' -f 4 | wget -qi -
wget -qO- https://api.github.com/repos/sharkdp/fd/releases/latest | grep "browser_download_url.*fd_.*_amd64.deb" | cut -d '"' -f 4 | wget -qi -

sudo dpkg -i *.deb

los siguiente que vamos a hacer es instalar una de las tipografias que tenemos en https://www.nerdfonts.com/

La instalación de la tipografía nos interesa sobretodo si configuramos ZSH para ser usado sobre hardware o en máquina virtual. Si estamos usando directamente SSH por que tenemos un vps o similar, esta configuración hay que hacerla en el programa que usemos para entrar (putty, mobaxterm o similar).

en mi caso voy a usar la hack y la instalamos en /usr/local/share/fonts (en mi caso esta ruta no existe)

wget -qO- https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest | grep "browser_download_url.*Hack.zip"|  cut -d '"' -f 4 | wget -qi -
unzip Hack.zip
sudo mkdir /usr/local/share/fonts/ 
sudo mv *.ttf /usr/local/share/fonts
fc-cache -f -v

o también podemos usar :

sudo apt-get install fonts-hack-ttf

Instalamos el Fuzzy finder:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install --all
Generate /root/.fzf.bash ... OK
Generate /root/.fzf.zsh ... OK

Update /root/.bashrc:
- [ -f ~/.fzf.bash ] && source ~/.fzf.bash
+ Added

Update /root/.zshrc:
- [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
+ Added

Finished. Restart your shell or reload config file.
source ~/.bashrc # bash
source ~/.zshrc # zsh

Use uninstall script to remove fzf.

For more information, see: https://github.com/junegunn/fzf

Ahora lo ultimo que vamos hacer es instalar la PoerLevel10K que es una aplicación que nos customiza el prompt: https://github.com/romkatv/powerlevel10k (si no queremos usar esta herramienta que nos customiza a nuestro gusto. Podemos usar algunos temas que están ya creados como el jonathan que es el que más me gusta: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes )

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

y lo siguiente que vamos hacer es copiar el siguiente configuración en la ZSHRC

nano ~/.zshrc

"export ZSH='$HOME/.oh-my-zsh'"

#ZSH_THEME="jonathan" 
ZSH_THEME="powerlevel10k/powerlevel10k"


ENABLE_CORRECTION="true"


plugins=(sudo wp-cli git colored-man-pages colorize command-not-found compleat history-substring-search zsh-autosuggestions zsh-syntax-highlighting fzf httpie docker-compose)

source $ZSH/oh-my-zsh.sh

#exports
export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'" 
export FZF_CTRL_T_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || bat --color=always --style=numbers --line-range=:500 {} --theme=Coldark-Dark || tree -C {}) 2> /dev/null | head -200'"


#Alias
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias cat='bat --paging=never --theme=Coldark-Dark'
alias ll='lsd -lh --group-dirs=first'
alias la='lsd -a --group-dirs=first'
alias l='lsd --group-dirs=first'
alias lla='lsd -lha --group-dirs=first'
alias ls='lsd --group-dirs=first'
alias lst='lsd --tree --group-dirs=first'

#utilidades
alias ifoto='feh'
alias lzd='docker run -it --rm --name LazyDock -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker'
alias chafa='docker run -it --rm -v $(pwd):$(pwd) -u $(id -u):$(id -g) -w $(pwd) efrecon/chafa:1.12.4'
alias htop='docker run -it --rm --name htop --pid=host terencewestphal/htop '
alias amfora='docker run -it --rm --name amfora thejf/amfora'
alias gomuks='docker run -it --rm --name gomuks heywoodlh/gomuks'

#hacking
alias http='docker run -it --rm -v ~/.config/netrc:/root/.netrc alpine/httpie'
alias https='docker run -it --rm -v ~/.config/netrc:/root/.netrc --entrypoint=https alpine/httpie'
alias rustscan='docker run -it --rm --name rustscan rustscan/rustscan'
alias whatweb='docker run -it --rm --name whatweb bberastegui/whatweb'
alias subfinder='docker run -it --rm --name subfinder -v ~/.config/subfinder:/root/.config/subfinder projectdiscovery/subfinder -d'
alias deepce='wget -O - https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh'
alias gau='docker run -it --rm --name gau sxcurity/gau:latest'


# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

#Funciones

function taillogs(){
        sudo tail -f $1 | bat --paging=never -l log
}

function  sys-update(){
        sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoclean
}

function pip3-upgrade(){
        pip3 freeze --user | cut -d'=' -f1 | xargs -n1 pip3 install -U --root-user-action=ignore
}

si reiniciamos el terminal nos saldrá con la configuración actual .

Si queremos que el root tenga el mismo aspecto tendremos que repetir los pasos de instalación de oh-my-zsh, instalar las dos librerías , el Powerlevel10K y el archivo ZSHRC.

Solo me queda instalar un gestor de ventanas tipo tmux , en este caso voy a usar byobu que es muy sencillito. y que me permite mantener las tty activas en donde las deje para poder seguir trabajando: https://www.byobu.org/

en este lo activamoscon : ( ya lo dejamos instalado al principio)

byobu-enable

ya solo tenemos reiniciar la terminal y arrancaremos con el byobu .

Nota :

Si queremos controlar el theme del BATCAT podemos usar esto:

bat --list-themes | fzf --preview="bat --theme={} --color=always /etc/passwd"

Deja un comentario