Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Lisa F: shelli seadistusfailid bash ja zsh jaoks, mis kuulub osasse Lisad.

Lisa F: shelli seadistusfailid bash ja zsh jaoks

See lisa annab kopeeritavad algusfailid kahe levinud shelli jaoks:

  • bash
  • zsh

Shell on käsutõlk: programm, mis loeb terminali sisestatud käsuridu, otsib vastava käsu üles ja käivitab selle. Kui avad terminaliakna, käivitub tavaliselt sinu vaikimisi shell. Seda saad vaadata käsuga:


echo "$SHELL"

Tüüpiline tulemus on näiteks:


/bin/zsh

või:


/bin/bash

Kuhu need failid käivad

Shelli seadistusfailid on tavaliselt sinu kodukataloogis:

ShellPeamine failKus see asub
zsh.zshrc~/.zshrc
bash Linuxis.bashrc~/.bashrc
bash macOS-is terminali login-shellina.bash_profile ja .bashrc~/.bash_profile, ~/.bashrc

Punktiga algavad failid on peidetud failid. Kodukataloogis näed neid näiteks nii:


ls -la "$HOME"

Enne muutmist tee oma shelli failist varukoopia. zsh puhul:


cp ~/.zshrc ~/.zshrc.backup

bash puhul:


cp ~/.bashrc ~/.bashrc.backup

Kui faili veel ei ole, võib cp anda veateate. See on sel juhul ootuspärane: järelikult ei olnud varasemat seadistusfaili, mida varundada.

Pärast muutmist lae seadistus uuesti sisse:


source ~/.zshrc

või:


source ~/.bashrc

Kui kasutad macOS-is bash-i ja terminal avab login-shelli, pane faili ~/.bash_profile vähemalt see:


# Lae bash'i tavaline interaktiivne seadistus.
if [ -f "$HOME/.bashrc" ]; then
  . "$HOME/.bashrc"
fi

Siis võid põhiseadistuse hoida failis ~/.bashrc.

Kuidas näiteid kasutada

Vali allpool üks tase ja kopeeri vastav plokk oma shelli faili:

  • zsh puhul faili ~/.zshrc
  • bash puhul faili ~/.bashrc

Ära pane kõiki tasemeid korraga samasse faili. Alusta ühest tasemest ja lisa hiljem juurde.

Tase 1: kõige lihtsam

See tase muudab ainult ajaloo, lihtsa prompti ja mõne kõige tavalisema aliase. See sobib esimeseks katseks.

~/.bashrc


# ~/.bashrc
# Tase 1: kõige lihtsam bash'i seadistus.

# Ajalugu.
HISTSIZE=1000
HISTFILESIZE=2000

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Lihtne prompt.
PS1='\u@\h:\w\$ '

~/.zshrc


# ~/.zshrc
# Tase 1: kõige lihtsam zsh seadistus.

# Ajalugu.
HISTFILE="$HOME/.zsh_history"
HISTSIZE=1000
SAVEHIST=2000

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Lihtne prompt.
PROMPT='%n@%m:%~%# '

Tase 2: lühike igapäevane seadistus

See tase lisab mugava PATH-i, ajaloo korduste vähendamise, otsingukäsud ja mõned navigeerimise alias'ed.

~/.bashrc


# ~/.bashrc
# Tase 2: lühike igapäevane bash'i seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
  PATH="$HOME/.local/bin:$PATH"
fi
export PATH

# Ajalugu.
HISTSIZE=5000
HISTFILESIZE=10000
HISTCONTROL=ignoredups:erasedups
shopt -s histappend

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'

# Otsing ja failimaht.
alias h='history | tail -n 20'
alias dus='du -sh * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Prompt: kasutaja, host ja praegune kataloog.
PS1='\u@\h:\w\$ '

~/.zshrc


# ~/.zshrc
# Tase 2: lühike igapäevane zsh seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  path=("$HOME/bin" $path)
fi
if [ -d "$HOME/.local/bin" ]; then
  path=("$HOME/.local/bin" $path)
fi
export PATH

# Ajalugu.
HISTFILE="$HOME/.zsh_history"
HISTSIZE=5000
SAVEHIST=10000
setopt APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_DUPS
setopt HIST_REDUCE_BLANKS

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'

# Otsing ja failimaht.
alias h='history | tail -n 20'
alias dus='du -sh * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Prompt: kasutaja, host ja praegune kataloog.
PROMPT='%n@%m:%~%# '

Tase 3: mugavam prompt ja rohkem alias'eid

See tase lisab värvilise prompti, parema less käitumise, Git-i lühikäsud ja paar väikest abifunktsiooni.

~/.bashrc


# ~/.bashrc
# Tase 3: mugavam bash'i seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
  PATH="$HOME/.local/bin:$PATH"
fi
export PATH

# Ajalugu.
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoreboth:erasedups
shopt -s histappend
shopt -s checkwinsize

# Less ja värvid.
export LESS='-R'
export CLICOLOR=1

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'
alias ltr='ls -ltr | tail'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'
alias home='cd "$HOME"'

# Failid ja kettaruum.
alias dus='du -sh * 2>/dev/null | sort -h'
alias dush='du -sh .[!.]* * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'

# Ajalugu ja käsu leidmine.
alias h='history | tail -n 30'
alias path='printf "%s\n" ${PATH//:/ }'
alias whichall='type -a'

# Git.
alias gs='git status --short'
alias gd='git diff'
alias gdc='git diff --cached'
alias gl='git log --oneline --decorate -10'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Abifunktsioon: tee kataloog ja mine sinna sisse.
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# Värviline prompt: kasutaja@host:kataloog.
PS1='\[\033[32m\]\u@\h\[\033[0m\]:\[\033[34m\]\w\[\033[0m\]\$ '

~/.zshrc


# ~/.zshrc
# Tase 3: mugavam zsh seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  path=("$HOME/bin" $path)
fi
if [ -d "$HOME/.local/bin" ]; then
  path=("$HOME/.local/bin" $path)
fi
export PATH

# Ajalugu.
HISTFILE="$HOME/.zsh_history"
HISTSIZE=10000
SAVEHIST=20000
setopt APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_DUPS
setopt HIST_REDUCE_BLANKS

# Less ja värvid.
export LESS='-R'
export CLICOLOR=1
autoload -Uz colors && colors

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'
alias ltr='ls -ltr | tail'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'
alias home='cd "$HOME"'

# Failid ja kettaruum.
alias dus='du -sh * 2>/dev/null | sort -h'
alias dush='du -sh .[!.]* * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'

# Ajalugu ja käsu leidmine.
alias h='history | tail -n 30'
alias path='printf "%s\n" ${(ps.:.)PATH}'
alias whichall='type -a'

# Git.
alias gs='git status --short'
alias gd='git diff'
alias gdc='git diff --cached'
alias gl='git log --oneline --decorate -10'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Abifunktsioon: tee kataloog ja mine sinna sisse.
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# Värviline prompt: kasutaja@host:kataloog.
PROMPT='%F{green}%n@%m%f:%F{blue}%~%f%# '

Tase 4: arendajale

See tase lisab projektitöö, Git-i, Pythoni, Dockeri ja tekstivormingute abikäsud. Kopeeri see alles siis, kui eelnevad tasemed tunduvad arusaadavad.

~/.bashrc


# ~/.bashrc
# Tase 4: arendajale suunatud bash'i seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
  PATH="$HOME/.local/bin:$PATH"
fi
export PATH

# Ajalugu.
HISTSIZE=20000
HISTFILESIZE=50000
HISTCONTROL=ignoreboth:erasedups
shopt -s histappend
shopt -s checkwinsize

# Less, editor ja värvid.
export LESS='-R'
export EDITOR="${EDITOR:-nano}"
export CLICOLOR=1

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'
alias ltr='ls -ltr | tail'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'
alias home='cd "$HOME"'
alias proj='cd "$HOME/projects"'

# Failid, otsing ja kettaruum.
alias dus='du -sh * 2>/dev/null | sort -h'
alias dush='du -sh .[!.]* * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'
alias ff='find . -type f -name'
alias serve='python3 -m http.server 8000'

# Ajalugu ja PATH.
alias h='history | tail -n 40'
alias path='printf "%s\n" ${PATH//:/ }'
alias whichall='type -a'

# Git.
alias gs='git status --short'
alias gd='git diff'
alias gdc='git diff --cached'
alias ga='git add'
alias gc='git commit'
alias gl='git log --oneline --decorate -15'
alias gb='git branch'
alias gco='git checkout'
alias gsw='git switch'

# Python.
alias py='python3'
alias venv='python3 -m venv .venv'
alias va='source .venv/bin/activate'
alias pipup='python3 -m pip install --upgrade pip'

# Docker.
alias dps='docker ps'
alias di='docker images'
alias dc='docker compose'
alias dcu='docker compose up --build'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'

# Tekstivormingud.
alias json='python3 -m json.tool'
alias csvlook='column -s, -t'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Abifunktsioon: tee kataloog ja mine sinna sisse.
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# Abifunktsioon: loo Python venv, kui seda veel ei ole.
venvup() {
  if [ ! -d .venv ]; then
    python3 -m venv .venv
  fi
  . .venv/bin/activate
}

# Git haru prompti jaoks.
git_branch() {
  git branch --show-current 2>/dev/null
}

# Prompt: kasutaja@host:kataloog (git-haru).
PS1='\[\033[32m\]\u@\h\[\033[0m\]:\[\033[34m\]\w\[\033[0m\] \[\033[33m\]$(git_branch)\[\033[0m\]\$ '

~/.zshrc


# ~/.zshrc
# Tase 4: arendajale suunatud zsh seadistus.

# PATH: kasutaja enda käsud.
if [ -d "$HOME/bin" ]; then
  path=("$HOME/bin" $path)
fi
if [ -d "$HOME/.local/bin" ]; then
  path=("$HOME/.local/bin" $path)
fi
export PATH

# Ajalugu.
HISTFILE="$HOME/.zsh_history"
HISTSIZE=20000
SAVEHIST=50000
setopt APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_DUPS
setopt HIST_REDUCE_BLANKS

# Less, editor ja värvid.
export LESS='-R'
export EDITOR="${EDITOR:-nano}"
export CLICOLOR=1
autoload -Uz colors && colors

# Elementaarsed käsud.
alias ll='ls -lh'
alias la='ls -la'
alias l='ls -CF'
alias lt='ls -lt | head'
alias ltr='ls -ltr | tail'

# Navigeerimine.
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'
alias home='cd "$HOME"'
alias proj='cd "$HOME/projects"'

# Failid, otsing ja kettaruum.
alias dus='du -sh * 2>/dev/null | sort -h'
alias dush='du -sh .[!.]* * 2>/dev/null | sort -h'
alias biggest='du -a . 2>/dev/null | sort -nr | head'
alias ff='find . -type f -name'
alias serve='python3 -m http.server 8000'

# Ajalugu ja PATH.
alias h='history | tail -n 40'
alias path='printf "%s\n" ${(ps.:.)PATH}'
alias whichall='type -a'

# Git.
alias gs='git status --short'
alias gd='git diff'
alias gdc='git diff --cached'
alias ga='git add'
alias gc='git commit'
alias gl='git log --oneline --decorate -15'
alias gb='git branch'
alias gco='git checkout'
alias gsw='git switch'

# Python.
alias py='python3'
alias venv='python3 -m venv .venv'
alias va='source .venv/bin/activate'
alias pipup='python3 -m pip install --upgrade pip'

# Docker.
alias dps='docker ps'
alias di='docker images'
alias dc='docker compose'
alias dcu='docker compose up --build'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'

# Tekstivormingud.
alias json='python3 -m json.tool'
alias csvlook='column -s, -t'

# Ohutumad vaikekujud.
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# Abifunktsioon: tee kataloog ja mine sinna sisse.
mkcd() {
  mkdir -p "$1" && cd "$1"
}

# Abifunktsioon: loo Python venv, kui seda veel ei ole.
venvup() {
  if [ ! -d .venv ]; then
    python3 -m venv .venv
  fi
  . .venv/bin/activate
}

# Git haru prompti jaoks.
setopt PROMPT_SUBST
git_branch() {
  git branch --show-current 2>/dev/null
}

# Prompt: kasutaja@host:kataloog (git-haru).
PROMPT='%F{green}%n@%m%f:%F{blue}%~%f %F{yellow}$(git_branch)%f%# '

Kuidas viga tagasi võtta

Kui pärast seadistusfaili muutmist terminal käitub valesti, ava uus terminal või käivita shell ilma seadistusfailita:


bash --noprofile --norc

zsh puhul saad ajutiselt käivitada:


zsh -f

Seejärel taasta varukoopia:


cp ~/.zshrc.backup ~/.zshrc
cp ~/.bashrc.backup ~/.bashrc

Kui varukoopiat ei olnud, ava fail redaktoris ja kommenteeri viimati lisatud read välja:


nano ~/.zshrc
nano ~/.bashrc

Kommentaar algab märgiga #. Shell ignoreerib sellist rida.

Minitest

  1. Vaata käsuga echo "$SHELL", kas kasutad praegu bash-i või zsh-i.
  2. Tee oma seadistusfailist varukoopia.
  3. Lisa kõige lihtsam tase ja lae fail source käsuga uuesti sisse.
  4. Proovi käske ll, la ja h.
  5. Selgita oma sõnadega, miks ei tasu korraga kopeerida mitut taset samasse faili.

Peatüki täisspikker

Referents

Eesmärk

See lisa annab kopeeritavad algusfailid kahe levinud shelli jaoks:

Põhikujud

  • echo "$SHELL"prindi tekst
  • ls -la "$HOME"pikk + peidetud
  • cp ~/.zshrc ~/.zshrc.backupkopeeri
  • cp ~/.bashrc ~/.bashrc.backupkopeeri
  • alias ll='ls -lh'lühinimi
  • alias la='ls -la'lühinimi
  • mvliiguta/nimeta
  • rmkustuta

Olulisemad lipud, märgid ja kiirnupud

  • ;järjest
  • |toru edasi
  • 2>vead faili
  • -hlühike abi
  • &&ainult õnnestumisel
Eelmine peatükkLisa E: usaldusväärsed viited ja lisalugemineJärgmine peatükkSee on praegu viimane peatükk selles reas.