Portál AbcLinuxu, 30. dubna 2025 10:20
Na fóru ArchLinuxu se dá najít spousta zajímavých věcí, narazil jsem na thread kde je sepsáno pár fíglů pro nastavení vašeho shellu.
Může se zdát, že jsem objevil Ameriku, ale spíš jsem byl dříve líný něco měnit, však Ubuntu ani Fedora mě k tomu nenutili, vše jsem měl pod nosem, teď zjišťuju kolik srandy mi utíkalo :)
Takže teď můj .bashrc vypadá nějak takhle:
#### #### STIBIho .bashrc #### ### Nastavení export EDITOR=vim # Obarvený výstup grepu alias g="egrep --color=always" alias gi="egrep -i --color=always" # Nastavení promptu bash_prompt() { local NONE="\[\033[0m\]" # regular colors local K="\[\033[0;30m\]" # black local R="\[\033[0;31m\]" # red local G="\[\033[0;32m\]" # green local Y="\[\033[0;33m\]" # yellow local B="\[\033[0;34m\]" # blue local M="\[\033[0;35m\]" # magenta local C="\[\033[0;36m\]" # cyan local W="\[\033[0;37m\]" # white # empahsized (bolded) colors local EMK="\[\033[1;30m\]" # light black local EMR="\[\033[1;31m\]" # light red local EMG="\[\033[1;32m\]" # light green local EMY="\[\033[1;33m\]" # light yellow local EMB="\[\033[1;34m\]" # light blue local EMM="\[\033[1;35m\]" # light magenta local EMC="\[\033[1;36m\]" # light cyan local EMW="\[\033[1;37m\]" # light white # background colors local BGK="\[\033[40m\]" # backgr black local BGR="\[\033[41m\]" # backgr red local BGG="\[\033[42m\]" # backgr green local BGY="\[\033[43m\]" # backgr yellow local BGB="\[\033[44m\]" # backgr blue local BGM="\[\033[45m\]" # backgr magenta local BGC="\[\033[46m\]" # backgr cyan local BGW="\[\033[47m\]" # backgr white local UC=$W # user's color PS1="${EMY}[${EMY}\u${EMR} @ ${EMY}\h ${EMR}\w${EMY}]${EMR}\\$ ${NONE}" } bash_prompt ### Aliasy alias ls='ls -h --color=auto' alias ll='ls -l' alias la='ls -A' alias svim='sudo vim' alias ..='cd ..' alias grep='grep --color=auto' alias dfh='df -h' alias update='sudo pacman -Syu' alias cp="cp -i" alias pacman="sudo pacman" alias lx='ls -lXB' # řazení dle typu alias lk='ls -lSr' # řazení dle velikosti alias lc='ls -lcr' # řazení dle času změny # Bash completion if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi # nastavení historie shopt -s histappend HISTFILESIZE=20000 HISTSIZE=5000 HISTCONTROL=ignoredups HISTFILE="$HOME/.bash_history_$HOSTNAME" export HISTFILESIZE HISTSIZE HISTCONTROL HISTFILE ### Funkce # Udělátko pro rozbalování archivů extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi } # Udělátko pro grepování procesů psgrep() { if [ ! -z $1 ] ; then echo "Grepping for processes matching $1..." ps aux | grep $1 | grep -v grep else echo "!! Need name to grep for" fi }Myslím že je to docela jasné, docela mě potěšila funkce na rozbalování archivů, sice není marné vědět parametry z hlavy, ale kdybych je kdy potřeboval, a neměl po ruce tenhle skript, tak si je při nejhorším vytáhnu z manu.
Tiskni
Sdílej:
psgrep
vyhledává něco jiného, než pgrep
a navíc tím nenajdeš žádný běžící proces grep
xterm
s man
příkaz (příkaz vysomruju pomocí xsel -o
). Ale to se mi vůbec nelíbí cmd
't1' 't2', kde t1 je část původního řádku před kurzorem a t2 zbytek.
Volání pageru apod. dělá určitě bash, s tím souhlasím. Asi jsem to napsal trochu zmateně, chtěl jsem říct jen to, že když umí zavolat pager, šel by zavolat klidně i man, kdyby to readline dovolil.Nechápem. Ten pager je predsa natvrdo v bashi. Readline s tým nemá nič spoločné. Podobne ak by si do bashu dal (buď natvrdo, alebo konfigurovateľne), že určitý druh completion spustí man, tak to pôjde a opäť to nemá nič s readline.
Mě se ipython jako shell celkem líbil, potenciál a elegance skriptů neporovnatelná s bashem, ale pak mi začala chybět třeba completion která doplňuje jména souborů která sedí s programem který chci použít, tedy např. pokud píšu "xine fil<tab>", tak mi doplní rovnou "xine film.avi" a vynechá film.sub, filmy.txt apod. V ipythonu by to určitě šlo, ale pro bash už to je...Dopĺňanie podľa kontextu ja považujem za pozitívum, hoci sú situácie kedy to vadí. Ale tvoj príklad s filmom nechápem. Ty chceš mať možnosť pustiť xine na textový súbor? :-/
Přiznám se, že ze zsh jsem do teď jen zaslechl název, podle toho co jsem si přečetl zní zajímavě, ale pořád je to jen "vylepšený bash", kdybych chtěl přejít na nový shell, tak radši něco moderního ve stylu Monadu (nebo jak se to teď jmenuje), což ipython je. Tím nechci nikoho od zsh nebo čehokoli jiného odrazovat, oproti ipythonu má rozhodně výhody třeba ve vyspělosti, píšu jen můj pohled na věc.To je divný pohľad na vec. Bash je predsa len "vylepšený sh" a sh je dostupný úplne všade (čiže aj tam, kde nie je bash). Ak budeš argumentovať, že bash je ďaleko lepší ako sh, tak ja ti poviem, že rovnako je na tom zsh v bash. Proste povedzme to na rovinu, hlavným faktorom tu je lenivosť a zostávanie pri nástroji, ktorý už poznáš
Standardem jsem myslel pouze to, že v drtivé vetšině distribucí je bash defaultní (Opäť rovnaký argument v prospech sh.) shell a kdekoli nedostanu admin přístup, budu dost pravděpodobně dělat v něm, takže se hodí s ním dobře umět, plus má velký počet hotových rozšíření.
man 5 crontab
. Viac sa o tom pise v helpe :help K
ale spíš jsem byl dříve líný něco měnit, však Ubuntu ani Fedora mě k tomu nenutili
Tak to já bych v čemkoli od Red Hatu byl bez
unalias cp unalias mv unalias rm export PS1='\w# '
naprosto ztracen…
Z bashrc jsem si pujčil obarvený grep, to jsem nevěděl že grep umí :).Můžeš si dokonce i vybrat barvu a pozadí
$ export GREP_COLOR='1;37;41' $ grep test <<< test
alias j=jobs alias l="ls -la" alias back='cd $OLDPWD' alias m=less alias dot='ls .[a-zA-Z0-9]*' pskill() { local pid pid=$(ps aux | grep $1 | grep -v grep | awk '{ print $2 }') echo -n "killing $1 (process $pid)..." kill -9 $pid echo "slaughtered." }To m-ko mam este z dob pageru more a aspon sa nebije s l-kom.
cd -
nepoznáme?
ls -A
nepoznáme? !cd
nechápem. Predsa !cd
≡ cd $PWD
, až na nejaké divné výnimky. A ls -A
malo to byť namiesto dot
, lebo som zle pochopil ten regexp – "." ako ľubovoľný znak.
Ale význam !cd nechápem. Predsa !cd ≡ cd $PWD, až na nejaké divné výnimky.vyznam !cd nechapes, az na detail, ze ho chapes. je tak?
!cd
, pokiaľ správne chápem jeho definíciu.
back
nebude v histórii vystupovať ako cd
. Hamba mi. ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.