Bashrc: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
 
Rad 1: Rad 1:
# .bashrc i MediaWiki-format
= .bashrc: En omfattande guide =


== Introduktion ==
== Introduktion ==
<syntaxhighlight lang="bash">
<nowiki>
.bashrc</syntaxhighlight> är en konfigurationsfil för GNU Bash, vilket är standardkommandotolken för de flesta Linux-distributioner. Den körs när en användare öppnar ett nytt bash-skal som inte är en inloggningsskal. Filen kan användas för att anpassa användarens miljö, definiera alias, funktioner, miljövariabler och andra inställningar.
`.bashrc`-filen är en kritisk komponent i användarens Bash-miljö. Den här filen körs varje gång en ny Bash-skal sesion öppnas, vilket gör den idealisk för att anpassa användarens arbetsmiljö genom att sätta alias, miljövariabler, funktioner och andra inställningar. Den här artikeln kommer att utforska de olika aspekterna av `.bashrc`-filen och ge många exempel på hur man kan använda den.
</nowiki>


== Grundläggande Struktur ==
== Grundläggande Struktur ==
 
<pre>
En typisk <syntaxhighlight lang="bash">.bashrc</syntaxhighlight>-fil har följande grundläggande struktur:
 
<syntaxhighlight lang="bash">
# .bashrc
# .bashrc


# Source global definitions
# Källa globala definierade bashrc-filer
if [ -f /etc/bashrc ]; then
if [ -f /etc/bashrc ]; then
     . /etc/bashrc
     . /etc/bashrc
fi
fi


# User specific aliases and functions
# Ställ in användarspecifika miljövariabler
</syntaxhighlight>
 
=== Exempel 1: Alias ===
 
Alias är ett sätt att skapa kortkommandon för långa kommandon. Här är några vanliga alias som kan inkluderas i <syntaxhighlight lang="bash">.bashrc</syntaxhighlight>:
 
<syntaxhighlight lang="bash">
# Färgkodad listning
alias ls='ls --color=auto'
 
# Säker borttagning
alias rm='rm -i'
 
# Kortare kommandon
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
</syntaxhighlight>
 
=== Exempel 2: Miljövariabler ===
 
Miljövariabler används för att lagra värden som används av program och skal. Här är några vanliga miljövariabler som kan ställas in i <syntaxhighlight lang="bash">.bashrc</syntaxhighlight>:
 
<syntaxhighlight lang="bash">
# Ställ in sökvägen
export PATH=$PATH:$HOME/bin
export PATH=$PATH:$HOME/bin


# Ställ in editor
# Alias
export EDITOR=nano
alias ll='ls -la'
 
alias ..='cd ..'
# Färgsättning av prompten
export PS1='\[\e[1;32m\]\u@\h \w$\[\e[0m\] '
</syntaxhighlight>
 
=== Exempel 3: Funktioner ===


Funktioner i bash kan användas för att definiera återanvändbara kodblock. Här är några exempel:
# Funktioner
 
function extract {
<syntaxhighlight lang="bash">
    if [ -f $1 ]; then
# Diskanvändning
        case $1 in
function dusage {
            *.tar.bz2)  tar xjf $1  ;;
    df -h | grep -E '^/dev/root'
            *.tar.gz)    tar xzf $1  ;;
            *.bz2)      bunzip2 $1  ;;
            *.rar)      unrar x $1  ;;
            *.gz)        gunzip $1    ;;
            *.tar)      tar xf $1    ;;
            *.tbz2)      tar xjf $1  ;;
            *.tgz)      tar xzf $1  ;;
            *.zip)      unzip $1    ;;
            *.Z)        uncompress $1;;
            *.7z)        7z x $1      ;;
            *)          echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file!"
    fi
}
}


# Skapa en ny katalog och gå till den
# Anpassa prompten
function mkcd {
PS1='[\u@\h \W]\$ '
    mkdir -p "$1" && cd "$1"
}
</syntaxhighlight>


=== Exempel 4: Kommandokomplettering ===
# Läsa in ytterligare skript
 
if [ -f ~/.bash_aliases ]; then
Kommandokomplettering kan göra det lättare att arbeta i terminalen genom att ge förslag när du trycker på Tab-tangenten.
     . ~/.bash_aliases
 
<syntaxhighlight lang="bash">
# Aktivera bash completion om tillgängligt
if [ -f /etc/bash_completion ]; then
     . /etc/bash_completion
fi
fi
</syntaxhighlight>
=== Exempel 5: Anpassad prompt ===
En anpassad prompt kan göra det enklare att navigera i terminalen och ge viktig information direkt i prompten.
<syntaxhighlight lang="bash">
# Visa git branch i prompten
parse_git_branch() {
    git branch 2> /dev/null | grep '^*' | colrm 1 2
}
export PS1="\u@\h \[\033[33m\]\$(parse_git_branch)\[\033[00m\] \w$ "
</syntaxhighlight>


== Avancerade Användningar ==
Utöver grundläggande användningar kan <syntaxhighlight lang="bash">.bashrc</syntaxhighlight> också innehålla mer avancerade skript och konfigurationer.
=== Exempel 6: Laddning av andra skript ===
Du kan inkludera andra skript i din <syntaxhighlight lang="bash">.bashrc</syntaxhighlight> för att hålla den organiserad.
<syntaxhighlight lang="bash">
# Ladda anpassade funktioner
if [ -f ~/.bash_functions ]; then
if [ -f ~/.bash_functions ]; then
     . ~/.bash_functions
     . ~/.bash_functions
fi
fi
</pre>


# Ladda miljöinställningar
== Miljövariabler ==
if [ -f ~/.bash_env ]; then
<pre>
    . ~/.bash_env
export PATH=$PATH:/usr/local/bin
fi
export EDITOR=nano
</syntaxhighlight>
export LANG=en_US.UTF-8
 
export LC_ALL=en_US.UTF-8
=== Exempel 7: Villkorlig logik ===
</pre>
 
Du kan använda villkorlig logik för att anpassa beteendet beroende på olika faktorer, som vilken dator du använder eller vilken tid på dagen det är.
 
<syntaxhighlight lang="bash">
# Olika färger beroende på användare
if [ "$(id -u)" -eq 0 ]; then
    export PS1='\[\e[1;31m\]\u@\h \w$\[\e[0m\] '
else
    export PS1='\[\e[1;32m\]\u@\h \w$\[\e[0m\] '
fi
 
# Hälsa användaren baserat på tid på dagen
hour=$(date +"%H")
if [ $hour -lt 12 ]; then
    echo "God morgon, $USER!"
elif [ $hour -lt 18 ]; then
    echo "God eftermiddag, $USER!"
else
    echo "God kväll, $USER!"
fi
</syntaxhighlight>
 
=== Exempel 8: Alias för Git ===
 
Om du använder Git ofta kan alias göra dina arbetsflöden mycket snabbare.
 
<syntaxhighlight lang="bash">
# Git alias
alias gst='git status'
alias gco='git checkout'
alias gcm='git commit'
alias gp='git pull'
alias gpu='git push'
alias gl='git log --oneline --graph --decorate --all'
</syntaxhighlight>
 
=== Exempel 9: SSH konfigurationer ===
 
För att förenkla anslutningar till fjärrservrar kan du skapa alias för SSH-kommandon.
 
<syntaxhighlight lang="bash">
# SSH alias
alias sshhome='ssh user@home.example.com'
alias sshwork='ssh user@work.example.com'
</syntaxhighlight>
 
=== Exempel 10: Anpassade kommandon för specifika projekt ===
 
Om du arbetar med specifika projekt kan du skapa alias och funktioner som hjälper dig att snabbt utföra vanliga uppgifter.
 
<syntaxhighlight lang="bash">
# Byggprojekt
alias buildproj='cd ~/projects/myproject && make'
 
# Starta utvecklingsserver
alias startdev='cd ~/projects/myproject && ./start-dev.sh'
</syntaxhighlight>
 
== Fullständig Exempel ==
 
Nedan är en mer omfattande <syntaxhighlight lang="bash">.bashrc</syntaxhighlight> som kombinerar flera av ovanstående exempel:
 
<syntaxhighlight lang="bash">
# .bashrc
 
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi


# User specific aliases and functions
== Alias ==
 
<pre>
# Aliases
alias ll='ls -la'
alias ls='ls --color=auto'
alias rm='rm -i'
alias ll='ls -l'
alias la='ls -A'
alias la='ls -A'
alias l='ls -CF'
alias l='ls -CF'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias gs='git status'
alias gp='git pull'
alias gc='git commit -m'
</pre>


# Environment variables
== Funktioner ==
export PATH=$PATH:$HOME/bin
<pre>
export EDITOR=nano
function extract {
export PS1='\[\e[1;32m\]\u@\h \w$\[\e[0m\] '
    if [ -f $1 ]; then
 
        case $1 in
# Custom functions
            *.tar.bz2)  tar xjf $1  ;;
function dusage {
            *.tar.gz)    tar xzf $1  ;;
     df -h | grep -E '^/dev/root'
            *.bz2)      bunzip2 $1  ;;
            *.rar)      unrar x $1  ;;
            *.gz)        gunzip $1    ;;
            *.tar)      tar xf $1    ;;
            *.tbz2)      tar xjf $1  ;;
            *.tgz)      tar xzf $1  ;;
            *.zip)      unzip $1     ;;
            *.Z)        uncompress $1;;
            *.7z)        7z x $1      ;;
            *)          echo "'$1' cannot be extracted via extract()" ;;
        esac
     else
        echo "'$1' is not a valid file!"
    fi
}
}


function mkcd {
function mkcd {
     mkdir -p "$1" && cd "$1"
     mkdir -p "$1"
    cd "$1"
}
}


# Bash completion
function fgrep {
if [ -f /etc/bash_completion ]; then
    find . -name "$2" | xargs grep "$1"
    . /etc/bash_completion
}
fi
</pre>


# Git branch in prompt
== Anpassa Prompten ==
<pre>
PS1='[\u@\h \W]\$ '
PS1='\[\e[0;32m\]\u@\h \[\e[0;34m\]\w \$\[\e[m\] '
parse_git_branch() {
parse_git_branch() {
     git branch 2> /dev/null | grep '^*' | colrm 1 2
     git branch 2> /dev/null | grep '*' | sed 's/* //'
}
}
export PS1="\u@\h \[\033[33m\]\$(parse_git_branch)\[\033[00m\] \w$ "
PS1='[\u@\h \W$(parse_git_branch)]\$ '
</pre>
 
== Inkludera Ytterligare Skript ==
<pre>
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi


# Load custom scripts
if [ -f ~/.bash_functions ]; then
if [ -f ~/.bash_functions ]; then
     . ~/.bash_functions
     . ~/.bash_functions
fi
fi
</pre>


if [ -f ~/.bash_env ]; then
== Avancerade Exempel ==
    . ~/.bash_env
<pre>
fi
function cdd() {
    case $1 in
        docs) cd ~/Documents ;;
        dls) cd ~/Downloads ;;
        desk) cd ~/Desktop ;;
        *) cd "$1" ;;
    esac
}


# Conditional logic
function workon() {
if [ "$(id -u)" -eq 0 ]; then
     source ~/.virtualenvs/$1/bin/activate
     export PS1='\[\e[1;31m\]\u@\h \w$\[\e[0m\] '
}
else
    export PS1='\[\e[1;32m\]\u@\h \w$\[\e[0m\] '
fi


hour=$(date +"%H")
function vfind() {
if [ $hour -lt 12 ]; then
    find . -name "$1" -exec vim {} \;
    echo "God morgon, $USER!"
}
elif [ $hour -lt 18 ]; then
</pre>
    echo "God eftermiddag, $USER!"
else
    echo "God kväll, $USER!"
fi
 
# Git aliases
alias gst='git status'
alias gco='git checkout'
alias gcm='git commit'
alias gp='git pull'
alias gpu='git push'
alias gl='git log --oneline --graph --decorate --all'
 
# SSH aliases
alias sshhome='ssh user@home.example.com'
alias sshwork='ssh user@work.example.com'
 
# Project specific commands
alias buildproj='cd ~/projects/myproject && make'
alias startdev='cd ~/projects/myproject && ./start-dev.sh'
</syntaxhighlight>


== Sammanfattning ==
== Felsökning ==
<pre>
bash -n ~/.bashrc
source ~/.bashrc
</pre>


<syntaxhighlight lang="bash">.bashrc</syntaxhighlight> är ett kraftfullt verktyg för att anpassa din bash-miljö och effektivisera ditt arbetsflöde. Genom att använda alias, miljövariabler, funktioner och andra konfigurationer kan du göra ditt arbete i terminalen snabbare och mer bekvä
== Slutsats ==
<nowiki>
Den här artikeln har gett en omfattande översikt över `.bashrc`-filen och hur den kan användas för att anpassa din Bash-miljö. Genom att använda exempel och förklaringar har vi täckt allt från grundläggande alias och miljövariabler till avancerade funktioner och felsökningstekniker. Med denna kunskap kan du effektivt anpassa och optimera din terminalupplevelse.
</nowiki>


mt. Exempel i denna artikel visar hur du kan börja bygga din egen <syntaxhighlight lang="bash">.bashrc</syntaxhighlight> för att passa dina specifika behov.
== Referenser ==
<pre>
* [GNU Bash manual](https://www.gnu.org/software/bash/manual/bash.html)
* [Bash Guide for Beginners](http://tldp.org/LDP/Bash-Beginners-Guide/html/)
* [Advanced Bash-Scripting Guide](http://tldp.org/LDP/abs/html/)
</pre>

Nuvarande version från 27 maj 2024 kl. 05.59

.bashrc: En omfattande guide

Introduktion

`.bashrc`-filen är en kritisk komponent i användarens Bash-miljö. Den här filen körs varje gång en ny Bash-skal sesion öppnas, vilket gör den idealisk för att anpassa användarens arbetsmiljö genom att sätta alias, miljövariabler, funktioner och andra inställningar. Den här artikeln kommer att utforska de olika aspekterna av `.bashrc`-filen och ge många exempel på hur man kan använda den.

Grundläggande Struktur

# .bashrc

# Källa globala definierade bashrc-filer
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# Ställ in användarspecifika miljövariabler
export PATH=$PATH:$HOME/bin

# Alias
alias ll='ls -la'
alias ..='cd ..'

# Funktioner
function extract {
    if [ -f $1 ]; then
        case $1 in
            *.tar.bz2)   tar xjf $1   ;;
            *.tar.gz)    tar xzf $1   ;;
            *.bz2)       bunzip2 $1   ;;
            *.rar)       unrar x $1   ;;
            *.gz)        gunzip $1    ;;
            *.tar)       tar xf $1    ;;
            *.tbz2)      tar xjf $1   ;;
            *.tgz)       tar xzf $1   ;;
            *.zip)       unzip $1     ;;
            *.Z)         uncompress $1;;
            *.7z)        7z x $1      ;;
            *)           echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file!"
    fi
}

# Anpassa prompten
PS1='[\u@\h \W]\$ '

# Läsa in ytterligare skript
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

if [ -f ~/.bash_functions ]; then
    . ~/.bash_functions
fi

Miljövariabler

export PATH=$PATH:/usr/local/bin
export EDITOR=nano
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Alias

alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias gs='git status'
alias gp='git pull'
alias gc='git commit -m'

Funktioner

function extract {
    if [ -f $1 ]; then
        case $1 in
            *.tar.bz2)   tar xjf $1   ;;
            *.tar.gz)    tar xzf $1   ;;
            *.bz2)       bunzip2 $1   ;;
            *.rar)       unrar x $1   ;;
            *.gz)        gunzip $1    ;;
            *.tar)       tar xf $1    ;;
            *.tbz2)      tar xjf $1   ;;
            *.tgz)       tar xzf $1   ;;
            *.zip)       unzip $1     ;;
            *.Z)         uncompress $1;;
            *.7z)        7z x $1      ;;
            *)           echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file!"
    fi
}

function mkcd {
    mkdir -p "$1"
    cd "$1"
}

function fgrep {
    find . -name "$2" | xargs grep "$1"
}

Anpassa Prompten

PS1='[\u@\h \W]\$ '
PS1='\[\e[0;32m\]\u@\h \[\e[0;34m\]\w \$\[\e[m\] '
parse_git_branch() {
    git branch 2> /dev/null | grep '*' | sed 's/* //'
}
PS1='[\u@\h \W$(parse_git_branch)]\$ '

Inkludera Ytterligare Skript

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

if [ -f ~/.bash_functions ]; then
    . ~/.bash_functions
fi

Avancerade Exempel

function cdd() {
    case $1 in
        docs) cd ~/Documents ;;
        dls) cd ~/Downloads ;;
        desk) cd ~/Desktop ;;
        *) cd "$1" ;;
    esac
}

function workon() {
    source ~/.virtualenvs/$1/bin/activate
}

function vfind() {
    find . -name "$1" -exec vim {} \;
}

Felsökning

bash -n ~/.bashrc
source ~/.bashrc

Slutsats

Den här artikeln har gett en omfattande översikt över `.bashrc`-filen och hur den kan användas för att anpassa din Bash-miljö. Genom att använda exempel och förklaringar har vi täckt allt från grundläggande alias och miljövariabler till avancerade funktioner och felsökningstekniker. Med denna kunskap kan du effektivt anpassa och optimera din terminalupplevelse.

Referenser

* [GNU Bash manual](https://www.gnu.org/software/bash/manual/bash.html)
* [Bash Guide for Beginners](http://tldp.org/LDP/Bash-Beginners-Guide/html/)
* [Advanced Bash-Scripting Guide](http://tldp.org/LDP/abs/html/)