Vraag Welke nuttige dingen kun je toevoegen aan iemands. Bashrc? [Gesloten]


Is er iets waar je niet zonder kunt en dat mijn leven zoveel gemakkelijker zal maken? Hier zijn enkele die ik gebruik ('diskspace' & 'folders' zijn bijzonder handig).

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"

142


oorsprong


Dit zou community wiki moeten zijn - Toro
Veranderd in community-wiki. Genieten. - Gareth
doorgesluisd naar meer? Ik wed dat je gelukkiger zult zijn met minder of minder -F - derobert
Behalve dat er een "soort" is voordat het meer, omdat sorteren de volledige invoer nodig heeft, des te minder -F je gewoon het sorteren sneller laat zien, en ik wed dat het behoorlijk gauw snel is. - GreenKiwi
Voor het geval dat iemand geïnteresseerd is, is er een service waarmee je kunt bladeren, een lijst kunt opbouwen en je aliassen kunt vinden: alias.sh - Sam152


antwoorden:


Ik heb een klein script dat archieven uittrekt, ik vond het ergens op het net:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

81



Leuk. Nogmaals, er is dat IDE / Vim-argument met betrekking tot de commando's uit het geheugen kennen. Fantastisch stukje script echter. Zeker gaan in de .bashrc Proost! - Gareth
Er is een mooie en eenvoudige linux-opdracht genaamd "unp", de Unpacker die dit en meer doet. - Sander Marechal
De opdracht heeft één ontbrekende functie. Het kan 7z-pakket niet openen op boost.org/doc/libs/1_39_0/more/getting_started/... correct. Weet jij hoe je het probleem kunt oplossen? - Léo Léopold Hertz 준영
Nieuwere versies van tar detecteren automatisch het archieftype, dus kunnen alle ondersteunde formaten extraheren met alleen 'tar xvf'. - Prof. Moriarty
@Sander dtrx is daar ook niet slecht voor. Het zorgt ervoor dat het archief wordt uitgepakt naar zijn eigen subdirectory. - Tobu


Omdat ik zoveel verschillende machines gebruik, mijn .bashrc stelt altijd de opdrachtprompt in om onder meer de naam van de server op te nemen waar ik op dit moment in ingelogd ben. Op deze manier, als ik drie niveaus diep in telnet / ssh ben, typ ik niet het verkeerde in het verkeerde venster. Het is echt rotzooi rm -rf . in het verkeerde venster! (Opmerking: thuis is telnet op alle computers uitgeschakeld. Op het werk is ssh niet altijd ingeschakeld en heb ik geen toegang tot root voor zeer veel machines.)

Ik heb een script ~/bin/setprompt dat wordt uitgevoerd door mijn .bashrc, dat bevat:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

# Throw it all together 
PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "

In dit script wordt de prompt ingesteld op de hostnaam gevolgd door :) als het laatste commando succesvol was en :( als de laatste opdracht is mislukt.


39



De $? cheque is een vrij goed idee, ik vind het leuk. - derobert
Ik toon ook de status in mijn prompt, maar bewaar de numerieke waarde en kleur deze rood als deze niet nul is, anders groen. - pgs
Interessant.... - imapollo


Kleur voor manpagina's in minder maakt manpagina's een beetje makkelijker te lezen:

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

Gekleurde manpages kunnen ook worden verkregen door de meeste te installeren en deze te gebruiken als MANPAGER env-variabele. Als u deze pager niet alleen voor de mens wilt gebruiken, gebruikt u de variabele PAGER, zoals deze:

export PAGER="/usr/bin/most -s"

25





Niet meer cd ../../../ .. maar hoger dan 4

Gaat veel dirs op als het getal is doorgegeven als argument, als er geen standaard 1 wordt verhoogd (te vinden in een link in een opmerking in stackoverflow.com en een beetje gewijzigd)

up(){
  local d=""
  limit=$1
  for ((i=1 ; i <= limit ; i++))
    do
      d=$d/..
    done
  d=$(echo $d | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd $d
}

24



Deze versie van up () lijkt onnodig complex. Ik gebruik deze versie: up () {cd $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }. U kunt de oproep naar 'pwd' verwijderen als u dat duidelijk wilt. - Matthew G
Ik gebruik zoiets als: # Directory-navigatiealiassen alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


Ik werk met veel verschillende machines, dus een van mijn favorieten is Aliassen voor elke machine die ik regelmatig SSH nodig heb om:

alias claudius="ssh dinomite@claudius"

Het is ook handig om een ​​goed in te stellen .ssh/config en ssh-toetsen om het hoppen tussen machines nog eenvoudiger te maken.

Een andere van mijn favoriete aliassen is het verplaatsen van mappen:

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."

En sommige voor veelgebruikte variaties van ls (en typefouten):

alias ll="ls -l"
alias lo="ls -o"
alias lh="ls -lh"
alias la="ls -la"
alias sl="ls"
alias l="ls"
alias s="ls"

Geschiedenis kan erg nuttig zijn, maar standaard wordt op de meeste distributies je geschiedenis weggeblazen door elke shell die wordt afgesloten, en het houdt niet veel op om mee te beginnen. Ik wil graag 10.000 regels geschiedenis hebben:

export HISTFILESIZE=20000
export HISTSIZE=10000
shopt -s histappend
# Combine multiline commands into one in history
shopt -s cmdhist
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"

Op die manier, als ik weet dat ik iets eerder heb gedaan, maar me de details niet herinner, een vlug idee history | grep foo zal helpen mijn geheugen op gang te brengen.

Ik merkte vaak dat ik doorvoer uitvoerde awk om een ​​bepaalde kolom van de uitvoer te krijgen, zoals in df -h | awk '{print $2}' om de grootte van elk van mijn schijven te vinden. Om dit gemakkelijker te maken, heb ik een functie gemaakt fawk in mijn .bashrc:

function fawk {
    first="awk '{print "
    last="}'"
    cmd="${first}\$${1}${last}"
    eval $cmd
}

Ik kan nu rennen df -h|fawk 2 wat een flink stuk typen scheelt.

Als u een scheidingsteken moet opgeven (bijv., awk -F: voor /etc/passwd), deze functie kan dat natuurlijk niet aan. De enigszins gereviseerde versie in deze kern kan arbitrair omgaan awk argumenten voor het veldnummer (maar nog steeds invoer van stdin vereist).


19



Ik gebruik ook de ssh alias en ssh-toetsen ... het maakt het allemaal zo gemakkelijk - devin
+1 voor de tips voor geschiedeniscontrole. - Rene Saarsoo
je kunt hostnaam-aliassen in .ssh / config met hetzelfde effect plaatsen. Voeg in dit geval een vermelding toe 'Host cloudius' met 'gebruikersnaam dinomite' - Sirex


GPG-gecodeerde bashrc

Ik weet zeker dat we allemaal dingen hebben die we in onze bas-hrc willen plaatsen, die we niet gemakkelijk leesbaar willen maken voor sudoers. Mijn oplossing hiervoor is:

if [ -f ~/.bash_private.gpg ]; then
   eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
fi

Ik heb een GPG-agent die ervoor zorgt dat ik maar om de paar uur het wachtwoord van mijn privésleutel hoef in te voeren. U moet nog steeds enig vertrouwen hebben in de gebruikers van het systeem, omdat uw variabele, functies en aliassen die u definieert uit het RAM kunnen worden gehaald. Ik gebruik dit echter voornamelijk voor mijn laptop. Als het wordt gestolen, wil ik niet dat iemand gemakkelijk dingen ziet zoals:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:secret@server.com/latest; }

15



Versleutel jij ook je geschiedenis in dat geval? Waarom versleutelt u uw $ home niet - Rqomey
@Rqomey, het gaat erom dat ik mijn geschiedenis niet codeer, omdat mijn wachtwoorden niet in mijn .bash_history verschijnen, omdat ze verborgen zijn door aliassen of functies. Daarin zie je dingen als MYsql < garbagecollect.sql in plaats van mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


dit is een geweldige bron voor dit:

toon ons je .bashrc


12





Ik legde deze overal neer, maar realiseerde me toen dat het beter was om me alleen te herinneren hoe ik ze 'handmatig' moest doen omdat het betekende dat ik 1) volledig begreep wat er aan de hand was en 2) toegang tot deze mogelijkheden had, zelfs als mijn aangepaste .bashrc is niet geïnstalleerd.

Het enige dat ik tegenwoordig aliassen gebruik, is het verminderen van het repetitief typen van echt lange regels (bijv. alias myhost='ssh -T user@my.remote.host screen -dAr' )


12



Overeengekomen wat betreft het onthouden van lange nuttige commando's. Ik merk echter dat ik vrij vaak 'diskspace' gebruik op runaway-servers (d.w.z. PHP wordt overal gecastered). - Gareth
ja, ik heb eigenlijk iets soortgelijks (du / home / * --max-depth 1 | sort -n> /home/.sizes) wordt 's nachts uitgevoerd, zodat ik het ruimtegebruik van mijn gebruikers op de grote website goed in de gaten kan houden gedeelde machine. - pjz
Het is eenvoudig genoeg om uw aangepaste configuratie te implementeren op systemen die u regelmatig gebruikt. - Tobu
Net als een vervolg op je ssh alias, dit is iets wat ik altijd doe. Ik doe dit altijd met IP hoewel in het geval van DNS stroomonderbreking. - jwbensley


De one-liners en kleine scripts die er zijn, kunnen eeuwig doorgaan. Ik raad man bash aan en dingen zelf te schrijven. Een paar goede korte bash-dingen op http://www.commandlinefu.com. Hier zijn een paar dingen.

#use extra globing features. See man bash, search extglob.
shopt -s extglob
#include .files when globbing.
shopt -s dotglob
#When a glob expands to nothing, make it an empty string instead of the literal characters.
shopt -s nullglob
# fix spelling errors for cd, only in interactive shell
shopt -s cdspell
# vi mode
set -o vi

s() { # do sudo, or sudo the last command if no argument given
    if [[ $# == 0 ]]; then
        sudo $(history -p '!!')
    else
        sudo "$@"
    fi
}

prompt_command() {
    p=$PWD  # p is much easier to type in interactive shells
    # a special IFS should be limited to 1 liners or inside scripts.
    # Otherwise it only causes mistakes.
    unset IFS
}
PROMPT_COMMAND=prompt_command


# smart advanced completion, download from
# http://bash-completion.alioth.debian.org/
if [[ -f $HOME/local/bin/bash_completion ]]; then
    . $HOME/local/bin/bash_completion
fi


extract () { # extract files. Ignore files with improper extensions.
    local x
    ee() { # echo and execute
        echo "$@"
        $1 "$2"
    }
    for x in "$@"; do
        [[ -f $x ]] || continue
        case "$x" in
            *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
            *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
            *.bz2 )             ee "bunzip2" "$x"   ;;
            *.rar )             ee "unrar x" "$x"   ;;
            *.gz )              ee "gunzip" "$x"    ;;
            *.tar )             ee "tar xvf" "$x"   ;;
            *.zip )             ee "unzip" "$x"     ;;
            *.Z )               ee "uncompress" "$x" ;;
            *.7z )              ee "7z x" "$x"      ;;
        esac
    done
}

9



Ik vind je leuk history -p truc. - Tobu


Een kleine tip voor Bash als je een systeembeheerder bent en veel met rootprivileges werkt:

shopt -o noclobber

Hiermee voorkomt u dat u per ongeluk de inhoud van een bestaand bestand vernietigt als u de uitvoer omleidt (> bestandsnaam). U kunt het overschrijven altijd forceren met> | bestandsnaam.


9