--- title: "Command-Line Shell" date: 2022-04-01 author: "archos" draft: false categories: ['Návody'] tags: ['shell'] series: ['Arch Linux instalace'] --- V dalším díle seriálu [Tondy Fischera](https://github.com/raven2cz) se podíváme na prostředí příkazového řádku. Představíme si postupně 3 nejrozšířenější shelly v GNU/Linux (sh nepočítám). Shells si postupně nakonfigurujeme a přizpůsobíme opět pro nejlepší efektivitu svojí práce. Terminálové aplikace se tak dostanou na zcela jinou úroveň, se kterou se často nemohou měřit ani normální aplikace s tlačítky. Batch processing je nenahraditelnou součástí pokročilého používání počítačů, historie příkazů a fuzzy processing je něco, co se jiným operačním systémům ani nesnilo. Popis shellů je uveden na arch wiki [Command-Line Shell](https://wiki.archlinux.org/title/Command-line_shell). Základní shelly, které si ukážeme: - `Bash` - nejzákladnější shell v GNU/Linux. POSIX complient. Nutný znát v každém případě.[https://www.gnu.org/software/bash/](https://www.gnu.org/software/bash/) - `Zsh` - Interaktivní používání, silný skriptovací jazyk. POSIX complient. [https://www.zsh.org/](https://www.zsh.org/) - `Fish` - Není POSIX, jde vlastní cestou. Inteligentní a uživatelsky přívětivý shell příkazového řádku. Fish provádí plnobarevné zvýraznění syntaxe příkazového řádku, stejně jako zvýraznění a dokončení příkazů a jejich argumentů, existence souboru a historie. Podporuje kompletní, jak píšete pro historii a příkazy. Fish je schopen analyzovat manuálové stránky systému, aby určil platné argumenty pro příkazy, což mu umožňuje zvýraznit a dokončit příkazy. Snadnou revizi posledního příkazu lze provést pomocí `Alt+Up` Pro další info [https://fishshell.com/](https://fishshell.com/) # [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#bash) # Bash Bash byl prezentován po celou dobu instalace a používání až do této nahrávky. Pro bash existuje bezpočet návodů, příkladů, psaní skriptů. Určitě doporučuji českou knihu pro shell [https://www.alza.cz/media/prikazovy-radek-v-linuxu-d2366810.htm](https://www.alza.cz/media/prikazovy-radek-v-linuxu-d2366810.htm) Dokumentace je zde [https://www.gnu.org/software/bash/manual/bash.html](https://www.gnu.org/software/bash/manual/bash.html) # [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#zsh) # Zsh ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#zsh-instalace) ## Zsh Instalace My použijeme jako náš systémový shell ZSH. ``` sudo pacman -S zsh chsh -s /usr/bin/zsh nvim ~/.zshrc ``` Použijeme [Oh My Zsh](https://ohmyz.sh/). Nebo [GitHub OhMyZsh](https://github.com/ohmyzsh/ohmyzsh). ``` sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" ``` ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#zsh-prompt-themes) ## Zsh Prompt Themes ``` # Change theme ZSH_THEME="robbyrussell" ZSH_THEME="agnoster" ZSH_THEME="dst" ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" "dst" ) # Need install p10k! ZSH_THEME="powerlevel10k/powerlevel10k" ``` ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#instalace-zsh-plugins) ## Instalace Zsh plugins ``` plugins=(git zsh-autosuggestions zsh-syntax-highlighting z fzf sudo pass) # Instalace plginu git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting #fzf git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install ``` ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#instalace-colorscriptů) ## Instalace Colorscriptů Colorscripty zkrášlují shell a uvozují danou instanci terminálu. ``` # DT Colorscript git clone https://gitlab.com/dwt1/shell-color-scripts.git makepkg -cf sudo pacman -U *.pkg.tar.zst # pokemon-colorscript paru -S pokemon-colorscripts-git ``` # [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#fish) # Fish Arch wiki [https://wiki.archlinux.org/title/Fish](https://wiki.archlinux.org/title/Fish) ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#fish-instalace) ## Fish Instalace ``` sudo pacman -S fish # plugin manager - nutno spoustet z fish shell curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher fisher list fisher update jorgebucaran/fisher fisher remove jorgebucaran/nvm.fish@2.1.0 fisher list | fisher remove # next useful scripts paru -S lolcat exa fd bat timg p7zip glow ``` ## STARSHIP Cross-Shell Prompt Instalace Hlavní stránka [https://starship.rs/](https://starship.rs/) ``` sh -c "$(curl -fsSL https://starship.rs/install.sh)" # add last line to your config.fish starship init fish | source ``` ### Personal Starship Settings Moje osobní nastavení starship je v dotfiles uloženo v `~/.config/starship.toml` Toto moje nastavení nepoužívá dvě prompt řádky, ale pouze jednu, plus změnu symbolu. Nejprve zkuste defaultní nastavení a teprve potom můžete testovat tyto změny. ``` # Don't print a new line at the start of the prompt add_newline = false # Make prompt a single line instead of two lines [line_break] disabled = true # Replace the "❯" symbol in the prompt with "➜" [character] # The name of the module we are configuring is "character" success_symbol = "[➜](bold green)" # The "success_symbol" is set to "➜" with color "bold green" # Use custom format # format = """ # [┌───────────────────>](bold green) # [│](bold green)$directory$rust$package # [└─>](bold green) """ # Disable the package module, hiding it from the prompt completely [package] disabled = false ``` ## Fish jako uživatelský interaktivní shell Fish budeme používat jako **uživatelský interaktivní shell**, nikoliv jako systémový (pro init si ponecháme POSIX support). Do našeho `.zshrc` vložíme na konec toto ``` # jump from zsh to fish if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" ]] then exec fish fi ``` ## [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#fish-raven2cz-dotfiles) ## Fish Raven2cz Dotfiles Zkopírujte fish adresář do `~/.config/fish` z raven2cz dotfiles. ``` nvim ~/.config/fish/config.fish ``` # [](https://github.com/raven2cz/tux/tree/main/211112-shell-terminal#důležité-odkazy) https://www.youtube.com/watch?v=_K4ESyYuzE0 # Důležité odkazy - [Youtube Channel TUX: Svět Linuxu](https://www.youtube.com/user/tondafischer/featured) - [archlinux.org](https://archlinux.org/) - [wiki.achlinux.org](https://wiki.archlinux.org/) - [fishlive.org/blog](https://fishlive.org/en/blog-tech-art/arch) - [github/raven2cz/tux](https://github.com/raven2cz/tux) - [github/raven2cz/dotfiles](https://github.com/raven2cz/dotfiles) - [Peertube kanál Arch Linux Cz](https://peertube.arch-linux.cz/w/dnyPyhvscq4bBRb6zNSNUk)