सवाल किसी के लिए क्या उपयोगी चीजें किसी को जोड़ सकती हैं। Bashrc? [बन्द है]


क्या ऐसी कोई चीज है जिसके बिना आप नहीं रह सकते हैं और अपना जीवन इतना आसान बना देंगे? यहां कुछ ऐसे हैं जो मैं उपयोग करता हूं ('डिस्कस्पेस' और 'फ़ोल्डर्स' विशेष रूप से आसान होते हैं)।

# 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


मूल


यह समुदाय विकी होना चाहिए - Toro
समुदाय विकी में बदल गया। का आनंद लें। - Gareth
अधिक पाइप किया? मुझे यकीन है कि आप कम या कम-एफ के साथ खुश रहेंगे - derobert
सिवाय इसके कि उस से पहले "सॉर्ट" है, क्योंकि सॉर्ट को पूर्ण इनपुट की आवश्यकता है, कम-एफ आपको केवल सॉर्टिंग को तेज़ी से देखने देगा, और मुझे लगता है कि यह बहुत तेज़ है। - GreenKiwi
बस अगर कोई दिलचस्पी लेता है, तो ऐसी सेवा होती है जो आपको ब्राउज़ करने, सूची बनाने और आपके उपनामों को स्रोत करने की अनुमति देती है: alias.sh - Sam152


जवाब:


मेरे पास एक छोटी सी लिपि है जो अभिलेखागार निकालती है, मैंने इसे कहीं नेट पर पाया:

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



अच्छा लगा। फिर भी, स्मृति से कमांड जानने के बारे में आईडीई / विम तर्क है। हालांकि स्क्रिप्ट का शानदार बिट। निश्चित रूप से .bashrc चीयर्स में जा रहा है! - Gareth
"Unp" नामक एक अच्छा और सरल लिनक्स कमांड है, अनपैकर जो यह और अधिक करता है। - Sander Marechal
कमांड में एक गायब सुविधा है। यह 7z पैकेज नहीं खोल सकता है boost.org/doc/libs/1_39_0/more/getting_started/... सही ढंग से। क्या आप जानते हैं कि समस्या को कैसे हल किया जाए? - Léo Léopold Hertz 준영
टैर के नए संस्करण स्वचालित रूप से संग्रह प्रकार का पता लगाते हैं, इसलिए सभी समर्थित प्रारूपों को केवल 'tar xvf' द्वारा निकाला जा सकता है। - Prof. Moriarty
@Sander dtrx उस पर भी बुरा नहीं है। यह सुनिश्चित करता है कि संग्रह अपनी उपनिर्देशिका के लिए निष्कर्ष निकालता है। - Tobu


चूंकि मैं कई अलग-अलग मशीनों का उपयोग करता हूं, मेरा .bashrc हमेशा कमांड प्रॉम्प्ट को अन्य चीजों के साथ, उस सर्वर का नाम शामिल करता है जिसे मैं वर्तमान में लॉग इन करता हूं। इस तरह, जब मैं टेलनेट / एसएसएच में तीन स्तर गहरा हूं, तो मैं गलत विंडो में गलत चीज़ टाइप नहीं करता हूं। यह वास्तव में बेकार है rm -rf . गलत खिड़की में! (नोट: घर पर, सभी मशीनों पर टेलनेट अक्षम है। काम पर, एसएसएच हमेशा सक्षम नहीं होता है और मेरे पास बहुत सारी मशीनों तक रूट पहुंच नहीं है।)

मेरे पास एक स्क्रिप्ट है ~/bin/setprompt यह मेरे द्वारा निष्पादित किया जाता है .bashrc, जिसमें है:

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} "

यह स्क्रिप्ट मेजबान नाम के बाद संकेत देता है :) अगर अंतिम आदेश सफल था और :( अगर अंतिम आदेश विफल हुआ।


39



$? चेक एक सुंदर साफ विचार है, मुझे यह पसंद है। - derobert
मैं अपने प्रॉम्प्ट में स्थिति भी दिखाता हूं, लेकिन संख्यात्मक मान रखता हूं और गैर-शून्य, अन्यथा हरा होने पर इसे लाल रंग देता हूं। - pgs
दिलचस्प .... - imapollo


कम से कम मैनपेज के लिए रंग मैनपेज को पढ़ने के लिए थोड़ा आसान बनाता है:

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'

अधिकतर इंस्टॉल करके और इसे मैनपैगर एनवी वैरिएबल के रूप में उपयोग करके रंगीन मैनपेज भी प्राप्त किए जा सकते हैं। यदि आप न केवल आदमी के लिए इस पेजर का उपयोग करना चाहते हैं, तो इस तरह के पेजर वैरिएबल का उपयोग करें:

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

25





कोई और सीडी ../../../ .. लेकिन ऊपर 4

तर्क के रूप में पारित संख्या के रूप में कई डीआईआर चला जाता है, यदि कोई डिफ़ॉल्ट रूप से 1 तक नहीं जाता है (stackoverflow.com में एक टिप्पणी में एक लिंक में पाया गया है और थोड़ा संशोधित है)

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



अप () का यह संस्करण अनावश्यक रूप से जटिल लगता है। मैं इस संस्करण का उपयोग करता हूं: ऊपर () {सीडी $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }। यदि आप स्पष्ट रूप से चाहते हैं तो आप 'pwd' पर कॉल को हटा सकते हैं। - Matthew G
मैं इस तरह कुछ उपयोग करता हूं: # निर्देशिका नेविगेशन उपनाम alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


मैं कई अलग-अलग मशीनों से निपटता हूं, इसलिए मेरे पसंदीदा में से प्रत्येक एक मशीन के लिए उपनाम है जिसे मुझे अक्सर एसएसएच की आवश्यकता होती है:

alias claudius="ssh dinomite@claudius"

यह एक अच्छा सेटअप करने के लिए भी उपयोगी है .ssh/config तथा एसएसएच कुंजी मशीनों के बीच hopping बनाने के लिए भी आसान है।

मेरे पसंदीदा उपनामों में से एक अन्य निर्देशिकाओं को स्थानांतरित करने के लिए है:

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

और कुछ सामान्य रूप से इस्तेमाल विविधता के लिए ls (और टाइपो):

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"

इतिहास बहुत उपयोगी हो सकता है, लेकिन अधिकांश वितरणों पर डिफ़ॉल्ट रूप से आपका इतिहास प्रत्येक खोल से बाहर निकल जाता है, और इसमें बहुत कुछ नहीं है। मुझे इतिहास की 10,000 लाइनें पसंद हैं:

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"

इस तरह, अगर मुझे पता है कि मैंने पहले कुछ किया है लेकिन विनिर्देशों को याद नहीं कर सकता, तो जल्दी history | grep foo मेरी याददाश्त में मदद करेगा।

मैं अक्सर अपने आप को पाइपिंग आउटपुट के माध्यम से मिला awk आउटपुट के एक निश्चित कॉलम को प्राप्त करने के लिए, जैसा कि df -h | awk '{print $2}' मेरे प्रत्येक डिस्क का आकार खोजने के लिए। इसे आसान बनाने के लिए, मैंने एक फ़ंक्शन बनाया है fawk मेरे .bashrc में:

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

अब मैं दौड़ सकता हूँ df -h|fawk 2 जो टाइपिंग का एक अच्छा सा बचाता है।

यदि आपको एक डिलीमीटर निर्दिष्ट करने की आवश्यकता है (जैसे, awk -F: के लिये /etc/passwd), यह कार्य स्पष्ट रूप से इसे संभाल नहीं सकता है। थोड़ा-ओवरहाल्ड संस्करण में यह जिस्ट मनमाने ढंग से संभाल सकते हैं awk क्षेत्र संख्या से पहले तर्क (लेकिन अभी भी stdin से इनपुट की आवश्यकता है)।


19



मैं ssh alias और ssh कुंजी का भी उपयोग करता हूं ... यह हर इतना आसान बनाता है - devin
इतिहास नियंत्रण युक्तियों के लिए +1। - Rene Saarsoo
आप मेजबाननाम उपनामों को .ssh / config में उसी प्रभाव में डाल सकते हैं। इस मामले में, 'उपयोगकर्ता नाम dinomite' के साथ 'होस्ट क्लाउडियस' प्रविष्टि जोड़ें - Sirex


जीपीजी एन्क्रिप्टेड bashrc

मुझे यकीन है कि हमारे पास सभी चीजें हैं जो हम अपने bashrc में रखना चाहते हैं कि हम सूडर्स द्वारा आसानी से पठनीय नहीं करना चाहते हैं। इसका मेरा समाधान है:

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

मेरे पास एक जीपीजी एजेंट है जो इसे बनाता है इसलिए मुझे केवल कुछ ही घंटों में एक बार अपनी निजी कुंजी का पासवर्ड दर्ज करना होगा। आपको अभी भी सिस्टम के उपयोगकर्ताओं में कुछ भरोसा होना है क्योंकि आपके चर, फ़ंक्शन और उपनाम जिन्हें आप परिभाषित करते हैं उन्हें रैम से निकाला जा सकता है। हालांकि, मैं मुख्य रूप से अपने लैपटॉप के लिए इसका उपयोग करता हूं। अगर यह चोरी हो जाता है, तो मैं नहीं चाहता कि कोई आसानी से चीजों को देख सके:

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

15



क्या आप उस मामले में अपना इतिहास भी एन्क्रिप्ट करते हैं? अपने $ घर एन्क्रिप्ट क्यों नहीं करें - Rqomey
@Rqomey, पूरा मुद्दा यह है कि मुझे अपना इतिहास एन्क्रिप्ट नहीं करना है क्योंकि मेरे पासवर्ड मेरे .bash_history में दिखाई नहीं देते हैं क्योंकि वे उपनाम या कार्यों से छिपाए जाते हैं। इसमें आप चीजें देखते हैं MYsql < garbagecollect.sql के बजाय mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


यह इसके लिए एक शानदार संसाधन है:

हमें अपना .bashrc दिखाओ


12





मैं इन जगहों पर इन्हें सेट अप करता था लेकिन फिर एहसास हुआ कि उन्हें याद रखना बेहतर था कि उन्हें 'मैन्युअल रूप से कैसे करें' क्योंकि इसका मतलब था कि मैं 1) पूरी तरह से समझ रहा था कि क्या हो रहा था और 2) इन क्षमताओं तक पहुंच है मेरा कस्टम .bashrc स्थापित नहीं किया गया था।

इन दिनों के लिए उपनाम का उपयोग करने वाली एकमात्र चीज वास्तव में लंबी लाइनों के दोहराव वाले टाइपिंग पर कटौती की जाती है (उदाहरण के लिए। alias myhost='ssh -T user@my.remote.host screen -dAr' )


12



लंबे उपयोगी आदेश याद रखने के बारे में सहमत हैं। मुझे लगता है कि मैं रनवे सर्वर पर अक्सर 'डिस्कस्पेस' चला रहा हूं (यानी php सभी जगह पर coredumping है)। - Gareth
हाँ, मेरे पास वास्तव में कुछ ऐसा है (du / home / * --max-depth 1 | sort -n> /home/.sizes) रात को चलाएं ताकि मैं अपने उपयोगकर्ताओं की अंतरिक्ष खपत पर बड़ी नजर रख सकूं साझा मशीन - pjz
हालांकि, नियमित रूप से उपयोग किए जाने वाले सिस्टम पर अपनी कस्टम कॉन्फ़िगरेशन को तैनात करना काफी आसान है। - Tobu
जैसे ही आप एसएस उर्फ ​​का अनुसरण करते हैं, यह वही है जो मैं हर समय करता हूं। डीएनएस आउटेज के मामले में मैं हमेशा आईपी के साथ ऐसा करता हूं। - jwbensley


वहाँ एक लाइनर और छोटी लिपियों हमेशा के लिए जा सकता है। मैं आदमी को झुकाव और चीजों को लिखने की सलाह देता हूं। कुछ अच्छे शॉर्ट बैश सामान पर http://www.commandlinefu.com। कुछ चीजें हैं।

#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



मुझे पसंद हैं तुम्हारा history -p छल। - Tobu


यदि आप एक sysadmin हैं और रूट विशेषाधिकारों के साथ काम करते हैं तो बैश के लिए एक छोटी सी युक्ति:

shopt -o noclobber

यदि आप आउटपुट (> फ़ाइल नाम) को रीडायरेक्ट करते हैं तो यह आपको पहले से मौजूद फाइल की सामग्री को गलती से नष्ट करने से रोक देगा। आप हमेशा> फ़ाइल नाम के साथ ओवरराइटिंग को मजबूर कर सकते हैं।


9