سؤال ما الأشياء المفيدة التي يمكن إضافتها إلى البشرك؟ [مغلق]


هل هناك أي شيء لا يمكنك العيش بدونه وسيجعل حياتي أسهل بكثير؟ فيما يلي بعض الأشياء التي أستخدمها ('diskspace' و 'folders' مفيدة بشكل خاص).

# 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
piped إلى أكثر؟ أراهن أنك سوف تكون أكثر سعادة مع أقل أو أقل- F - derobert
باستثناء أن هناك "فرز" قبل أكثر ، بما أن الفرز يحتاج إلى مدخلات كاملة ، فإن أقل- F سيسمح لك بمشاهدة الفرز بشكل أسرع ، وأراهن أنه سريع جدًا. - 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



لطيف. مرة أخرى على الرغم من ذلك ، هناك تلك الوسيطة IDE / Vim بخصوص معرفة الأوامر من الذاكرة. بت رائعة من البرنامج النصي رغم ذلك. بالتأكيد سوف أذهب في. bashrc Cheers! - 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 يقوم دائمًا بتعيين موجه الأوامر ليشمل ، من بين أشياء أخرى ، اسم الخادم الذي قمت بتسجيل الدخول إليه حاليًا. بهذه الطريقة ، عندما أكون ثلاثة مستويات عميقة في telnet / ssh ، لا اكتب الشيء الخطأ في النافذة الخاطئة. انها حقا تمتص ل rm -rf . في النافذة الخاطئة! (ملاحظة: في المنزل ، يتم تعطيل Telnet على جميع الأجهزة. في العمل ، لا يتم تمكين ssh دائمًا وليس لدي إمكانية الوصول الجذر إلى العديد من الأجهزة.)

لدي برنامج نصي ~/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'

يمكن الحصول على manpages ملونة عن طريق تثبيت معظم واستخدامها كمتغير MANPAGER env. إذا كنت تريد استخدام هذا النداء ليس فقط للإنسان ، استخدم متغير PAGER ، مثل هذا:

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

25





لا مزيد من القرص المضغوط ../../../ .. ولكن حتى 4

يتحول إلى العديد من dirs حيث يتم تمرير الرقم كوسيطة ، إذا لم يكن أي منها يرتفع بنسبة 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



هذا الإصدار من up () يبدو معقدا دون داع. أستخدم هذا الإصدار: up () {cd $ (eval printf '../'٪.0s {1 .. $ 1}) && pwd؛ }. يمكنك إزالة المكالمة إلى "pwd" إذا كنت ترغب في ذلك بوضوح. - Matthew G
يمكنني استخدام شيء من هذا القبيل: # الأسماء المستعارة الملاحة الدليل alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


أنا أتعامل مع الكثير من الأجهزة المختلفة ، لذا فأحد المفضلات لدي هو الأسماء المستعارة لكل جهاز أحتاج إليه بشكل متكرر لـ SSH:

alias claudius="ssh dinomite@claudius"

من المفيد أيضًا إعداد جيد .ssh/config و مفاتيح سه لجعل التنقل بين الآلات أسهل.

واحد آخر من الأسماء المستعارة المفضلة هو لنقل الدلائل:

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) ، من الواضح أن هذه الوظيفة لا تستطيع التعامل معها. النسخة المحدثة قليلاً في هذا gist يمكن التعامل مع التعسفي awk الحجج قبل رقم الحقل (ولكن لا يزال يتطلب مدخلات من stdin).


19



أنا استخدم الاسم المستعار سه ومفاتيح إس إس أيضا ... يجعل كل ذلك سهلة للغاية - devin
إجراء 1+ للاطلاع على نصائح التحكم في السجل. - Rene Saarsoo
يمكنك وضع اسم مستعار لاسم مستعار في .ssh / config لنفس التأثير. في هذه الحالة ، أضف إدخال "Host cloudius" مع "اسم المستخدم dinomite" - Sirex


GPG مشفرة bashrc

أنا متأكد من أننا جميعا لدينا أشياء نود أن نضعها في الباشرك التي لا نريد قراءتها بسهولة بواسطة sudoers. الحل الخاص بي لهذا هو:

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

لدي وكيل GPG الذي يجعل ذلك حتى أحتاج فقط إلى إدخال كلمة مرور المفتاح الخاص مرة واحدة كل بضع ساعات. لا يزال لديك بعض الثقة في مستخدمي النظام لأنه يمكن استخراج المتغير الخاص بك ، والوظائف ، والأسماء المستعارة التي تحددها من ذاكرة الوصول العشوائي. ومع ذلك ، يمكنني استخدام هذا بشكل رئيسي لجهاز الكمبيوتر المحمول الخاص بي. إذا تمت سرقته ، فلا أريد أن يرى شخص ما أشياء بسهولة مثل:

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


هذا مصدر رائع لهذا:

تبين لنا بك


12





اعتدت على إعداد هذه الأشياء في كل مكان ، ولكن بعد ذلك أدركت أنه من الأفضل أن نتذكر فقط كيفية القيام بها "يدويًا" لأن ذلك يعني أنني سأفهم تمامًا ما كان يحدث ، و 2) إمكانية الوصول إلى هذه القدرات حتى لو لم يتم تثبيت بلدي العرف. bashrc.

الشيء الوحيد الذي استخدم فيه الأسماء المستعارة لهذه الأيام هو تقليل الكتابة المتكررة للخطوط الطويلة بالفعل (على سبيل المثال. alias myhost='ssh -T user@my.remote.host screen -dAr' )


12



وافقت على حفظ الأوامر المفيدة الطويلة. أجد على الرغم من أنني أشغل "مساحة القرص المضغوط" إلى حد ما في كثير من الأحيان على خوادم هارب (أي php هو الإكثار في جميع أنحاء المكان). - Gareth
نعم ، لدي بالفعل شيء مشابه لذلك (du / home / * - max-deep 1 | sort -n> /home/.sizes) ليلاً حتى أتمكن من مراقبة استهلاك مساحة المستخدمين على مساحة كبيرة آلة مشتركة. - pjz
من السهل نشر التهيئة المخصصة على الأنظمة التي تستخدمها بانتظام. - Tobu
فقط كمتابعة لك الاسم المستعار سه ، وهذا شيء أقوم به في كل وقت. دائمًا أفعل ذلك مع IP في حالة انقطاع DNS. - 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


نصيحة صغيرة لـ Bash إذا كنت مسؤولاً عن النظام وتعمل مع امتيازات الجذر كثيرًا:

shopt -o noclobber

سيمنعك هذا من تدمير محتوى ملف موجود بالفعل عن طريق الخطأ إذا قمت بإعادة توجيه الإخراج (> اسم الملف). يمكنك دائمًا فرض الكتابة فوق> اسم الملف.


9