কারও কি .Bashrc এ দরকারী জিনিস যুক্ত করতে পারে? [বন্ধ]


141

এমন কিছু কি আছে যা আপনি ছাড়া বাঁচতে পারবেন না এবং আমার জীবনকে এত সহজ করে দেবে? এখানে আমি ব্যবহার করছি এমন কিছু রয়েছে ('ডিস্কস্পেস' এবং 'ফোল্ডারগুলি বিশেষত কার্যকর)।

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

3
এটি সম্প্রদায়ের উইকি হওয়া উচিত
টোরো

1
সম্প্রদায় উইকিতে পরিণত হয়েছে। উপভোগ করুন।
গ্যারেথ

4
আরও পাইপ করা? আমি বাজি
ধরছি আপনি

আরও আগে এই "সাজানো" বাদে, যেহেতু সাজানোর সম্পূর্ণ ইনপুট দরকার, কম -F কেবল আপনাকে বাছাই করতে আরও দ্রুত দেখায়, এবং আমি বাজি ধরছি এটি বেশ ডাং দ্রুত।
গ্রিনকিউই

1
যে কোনও ব্যক্তির আগ্রহ থাকলে, এমন একটি পরিষেবা রয়েছে যা আপনাকে ব্রাউজ করতে, একটি তালিকা তৈরি করতে এবং আপনার উপাত্ত
Sam152

উত্তর:


81

আমার কাছে একটি ছোট স্ক্রিপ্ট রয়েছে যা সংরক্ষণাগারগুলি বের করে, আমি এটি নেট থেকে কোথাও পেয়েছি:

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
 }

1
খুশী হলাম। আবার যদিও, মেমরি থেকে আদেশগুলি জানতে আইডিই / ভিম যুক্তি আছে। যদিও স্ক্রিপ্টের চমত্কার বিট। অবশ্যই .bashrc চিয়ার্সে যাচ্ছেন!
গ্যারেথ

19
"আনপ" নামে একটি দুর্দান্ত এবং সাধারণ লিনাক্স কমান্ড রয়েছে, আনপ্যাকার যা এটি এবং আরও অনেক কিছু করে।
স্যান্ডার মেরেচাল

কমান্ডটিতে একটি অনুপস্থিত বৈশিষ্ট্য রয়েছে। এটি boost.org/doc/libs/1_39_0/more/getting_start/… এ 7z প্যাকেজটি সঠিকভাবে খুলতে পারে না । আপনি কীভাবে সমস্যার সমাধান করবেন জানেন?
লিও লোপোল্ড হার্টজ 준영

7
তারার নতুন সংস্করণগুলি সংরক্ষণাগার ধরণেরটি স্বয়ংক্রিয়ভাবে সনাক্ত করে, সুতরাং কেবলমাত্র 'টার এক্সভিএফ' দ্বারা সমস্ত সমর্থিত ফর্ম্যাটগুলি বের করতে পারে।
মরিয়ার্টি

@ স্যান্ডার ডিটিএক্স এটিও খারাপ নয়। এটি সংরক্ষণাগারটি তার নিজস্ব উপ-ডিরেক্টরিতে নিষ্কাশন করে তা নিশ্চিত করে।
টুবু

39

যেহেতু আমি অনেকগুলি বিভিন্ন মেশিন ব্যবহার করি, আমার .bashrcসর্বদা কমান্ড প্রম্পটটি সেট করে যা আমি বর্তমানে লগইন করে থাকা সার্ভারের নাম সহ অন্যান্য জিনিসের মধ্যে অন্তর্ভুক্ত করি। এইভাবে, যখন আমি টেলনেট / এসএসএসের তিন স্তরের গভীর তখন আমি ভুল উইন্ডোতে ভুল জিনিসটি টাইপ করি না। এটি সত্যিই rm -rf .ভুল উইন্ডোতে স্তন্যপান! (দ্রষ্টব্য: বাড়িতে, টেলনেট সমস্ত মেশিনে অক্ষম করা হয় work কর্মক্ষেত্রে, 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} "

এই স্ক্রিপ্টটি :)সর্বশেষ কমান্ডটি সফল হয়েছিল এবং :(শেষ আদেশটি ব্যর্থ হলে হোস্টের নামের অনুরোধ জানায় ।


$? চেক একটি সুন্দর ঝরঝরে ধারণা, আমি এটি পছন্দ করি।
ডার্ববার্ট

6
আমি আমার প্রম্পটে স্থিতিটিও দেখাই, তবে সংখ্যার মানটি রাখুন এবং শূন্য-না হলে এটি লাল করুন, অন্যথায় সবুজ।
pgs

আকর্ষণীয় ....
ইমপোল্লো

25

কম ম্যানপেজের জন্য রঙ ম্যানপেজগুলি পড়ার জন্য আরও সহজ করে তোলে:

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'

রঙিন ম্যানাপেজগুলি বেশিরভাগ ইনস্টল করে এবং এটি ম্যানপাগার এনভি ভেরিয়েবল হিসাবে ব্যবহার করেও পাওয়া যায়। আপনি যদি এই পেজারটি কেবলমাত্র মানুষের জন্যই ব্যবহার করতে না চান, তবে PAGER ভেরিয়েবলটি ব্যবহার করুন:

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

24

আর সিডি হবে না ../../../ .. তবে 4 পর্যন্ত

সংখ্যাটি আর্গুমেন্ট হিসাবে পাস হওয়ার সাথে সাথে অনেকগুলি ডায়ের উপরে উঠে যায়, যদি কেউ ডিফল্ট হিসাবে 1 দ্বারা উপরে না যায় (স্ট্যাকওভারফ্লো ডটকমের একটি মন্তব্যে একটি লিঙ্কে পাওয়া যায় এবং কিছুটা সংশোধিত)

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
}

আপ () এর এই সংস্করণটি অযথা জটিল বলে মনে হচ্ছে। আমি এই সংস্করণটি ব্যবহার করি: আপ () {সিডি $ (ইভাল প্রিন্টফ '.. /'৯০.০ সেংস {1 .. $ 1}) && pwd; }। আপনি যদি স্পষ্টভাবে ইচ্ছুক হন তবে আপনি কলটি 'পিডব্লিউডিতে' সরাতে পারেন।
ম্যাথু জি

আমি এর মতো কিছু ব্যবহার করি: # ডিরেক্টরি নেভিগেশন এলিয়াসalias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..'
ম্যাট কেনেফিক

19

আমি প্রচুর বিভিন্ন মেশিনের সাথে ডিল করি তাই প্রতিটি মেশিনের জন্য আমার প্রিয় পছন্দের একটি হ'ল উপাধি যা আমাকে প্রায়শই এসএসএইচ করতে হবে:

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আমার .বাশার্কে একটি ফাংশন তৈরি করেছি:

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

আমি এখন চালাতে পারি df -h|fawk 2যা টাইপিংয়ের একটি ভাল বিট সংরক্ষণ করে।

যদি আপনাকে কোনও ডিলিমিটার নির্দিষ্ট করতে হয় ( যেমন , এর awk -F:জন্য /etc/passwd), এই ফাংশনটি অবশ্যই এটি পরিচালনা করতে পারে না। এই গিস্টটির সামান্য-ওভারহুলড সংস্করণটি awkক্ষেত্রের সংখ্যার আগে স্বেচ্ছাসেবী যুক্তিগুলি পরিচালনা করতে পারে (তবে এখনও স্টিডিনের ইনপুট প্রয়োজন)।


2
আমি ssh ওরফে এবং ssh কীগুলিও ব্যবহার করি ... এটি এত সহজ করে তোলে

1
ইতিহাস নিয়ন্ত্রণ টিপসের জন্য +1।
রিনি সরসু

2
আপনি একই প্রভাবতে .ssh / কনফিগারেশনে হোস্টনামের নাম রাখতে পারেন। এই ক্ষেত্রে, 'ইউজারনেম ডায়নোমাইট' সহ একটি 'হোস্ট ক্লাউডিয়াস' এন্ট্রি যুক্ত করুন
সাইরেক্স

15

জিপিজি এনক্রিপ্ট করা বাশার্ক

আমি নিশ্চিত যে আমাদের সকলের কাছে আমরা আমাদের বাশারসিটিতে রাখতে চাই যা আমরা sudoers দ্বারা সহজেই পঠনযোগ্য চাই না। এটির জন্য আমার সমাধানটি হ'ল:

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

আপনি কি সেই ক্ষেত্রে আপনার ইতিহাসকে এনক্রিপ্ট করেন? আপনার $ বাড়িটি কেন এনক্রিপ্ট করবেন না
রিকোমি

@ রিকোমি, পুরো বিষয়টি হ'ল আমার ইতিহাসটি আমার এনক্রিপ্ট করতে হবে না কারণ আমার পাসওয়ার্ডগুলি আমার .bash_history এ প্রদর্শিত হয় না কারণ এগুলি এলিয়াস বা ফাংশন দ্বারা লুকানো রয়েছে। এতে আপনি এর MYsql < garbagecollect.sqlপরিবর্তে জিনিসগুলি দেখতে পাবেনmysql -uadmin -psecret < garbagecollect.sql
ব্রুনো ব্রোনসকি


12

আমি এগুলি পুরো জায়গাতেই স্থাপন করতাম তবে তখন বুঝতে পেরেছিলাম যে কীভাবে তাদের 'ম্যানুয়ালি' করবেন তা কেবল মনে রাখা ভাল কারণ এটির অর্থ আমি 1) কী চলছে এবং সম্পূর্ণভাবে বুঝতে পারি 2) এই ক্ষমতাগুলিতে অ্যাক্সেস থাকলেও আমার কাস্টম .bashrc ইনস্টল করা হয়নি।

এই দিনগুলির জন্য আমি কেবলমাত্র এলিয়াস ব্যবহার করি তা হ'ল সত্যিকারের দীর্ঘ লাইনের পুনরাবৃত্তি টাইপিং কেটে দেওয়া (যেমন alias myhost='ssh -T user@my.remote.host screen -dAr'))


2
দীর্ঘ দরকারী কমান্ড মুখস্থ করার বিষয়ে সম্মত। আমি দেখতে পেয়েছি যে আমি পলাতক সার্ভারগুলিতে প্রায়শই 'ডিস্কস্পেস' চালাচ্ছি (অর্থাত্ পিএইচপি সমস্ত জায়গাতেই কর্ডাম্পিং করছে)।
গ্যারেথ

হ্যাঁ, আমার কাছে আসলে এর মতো কিছু রয়েছে (ডু / হোম / * --ম্যাক্স গভীরতা 1 | সাজান-এন> / হোম /.সাইজস) রাত্রে চালানো যাতে আমি আমার ব্যবহারকারীর স্থানের ব্যবহারের উপর বড় নজর রাখতে পারি ভাগ করা মেশিন।
pjz

1
যদিও আপনি নিয়মিত ব্যবহার করেন এমন সিস্টেমে আপনার কাস্টম কনফিগারেশন মোতায়েন করা যথেষ্ট সহজ।
টুবু

আপনার অনুসরণ হিসাবে ssh ওরফে, এটি আমি সর্বদা করি। আমি সর্বদা আইপি দিয়ে এটি করি যদিও ডিএনএস আউটেজের ক্ষেত্রে।
jwbensley

9

ওখানে যে একটি লাইনার এবং ছোট স্ক্রিপ্ট রয়েছে তা চিরকালের জন্য যেতে পারে। আমি মানুষকে বাশ এবং জিনিস নিজেই লেখার পরামর্শ দিচ্ছি। 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
}

2
আমি আপনার history -pকৌশল পছন্দ।
টুবু

9

আপনি যদি সিসাদমিন হন এবং মূল সুবিধার সাথে প্রচুর পরিমাণে কাজ করেন তবে বাশের জন্য একটি সামান্য পরামর্শ ip

shopt -o noclobber

যদি আপনি আউটপুট (> ফাইলের নাম) পুনর্নির্দেশ করেন তবে এটি আপনাকে দুর্ঘটনাক্রমে একটি বিদ্যমান ফাইলের সামগ্রীটি ধ্বংস হতে আটকাবে। আপনি সর্বদা> | ফাইলের নাম দিয়ে ওভাররাইট করা জোর করতে পারেন।


8

আমার বাশার্কে আমার কাছে নিম্নলিখিতগুলি রয়েছে

function __setprompt {
  local BLUE="\[\033[0;34m\]"
  local NO_COLOUR="\[\033[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'`
  if [ $SSH2_IP ] || [ $SSH_IP ] ; then
    local SSH_FLAG="@\h"
  fi
  PS1="$BLUE[\$(date +%H:%M)][\u$SSH_FLAG:\w]\\$ $NO_COLOUR"
  PS2="$BLUE>$NO_COLOUR "
  PS4='$BLUE+$NO_COLOUR '
}
__setprompt

একটি স্থানীয় মেশিনে এটির মতো দেখাচ্ছে:

[17:57][user:~]$

তবে একটি রিমোটে (এসএসএসের মাধ্যমে) এটি হ'ল:

[17:57][user@machine:~]$

6

আমি এটি আমার .Bashrc এ কিছুক্ষণ রেখেছি এবং এটি সহায়ক বলে মনে করেছি। আপনি যদি বাক্সটিতে প্রবেশ করছেন, আপনি লগইন করার সাথে সাথে স্বয়ংক্রিয়ভাবে পর্দা শুরু হবে, যখন আপনার নেটওয়ার্ক সংযোগটি বাধাগ্রস্ত হয় বা যাই হয়, আপনি যা করছিলেন তা হারাবেন না। এটি শেষে রাখা উচিত।

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x  -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs

sleep 1
screen -U -RR && exit 0

echo "Screen failed! continuing with normal bash startup"
fi

যদি আপনি আপনার লগইন শেলটিকে স্ক্রিন হিসাবে সেট করেন (এবং আপনার .screenrc এ যেমন বাশটি কনফিগার করেন), তবে আপনি যখনই এসএসএইচ করবেন তখন স্ক্রিনটি স্বয়ংক্রিয়ভাবে সংযোগ বিচ্ছিন্ন স্ক্রিনগুলিতে পুনরায় সংযোগ করার চেষ্টা করবে। যদি এটি ব্যর্থ হয় তবে এটি একটি নতুন স্ক্রিন তৈরি করবে।
ড্যান উদে

@ ডান উদে আপনি নিজের পরামর্শ অনুযায়ী যা চেষ্টা করেছিলেন তা আমি চেষ্টা করি নি, তবে আমি পোস্ট করা ব্যাশ কেবলমাত্র লগইনগুলিতে স্ক্রিনটি শুরু করবে আপনার লগইন শেল হিসাবে স্ক্রিন স্থাপন করার সাথে সাথে এটি স্থানীয় লগিনগুলিতেও শুরু করবে। যা সম্ভবত আপনি চান। আমি যা চাই তা ঠিক তা নয়। :-)
বাডট্যাক

আপনি যদি সংযোগ বিচ্ছিন্ন হওয়ার বিষয়ে উদ্বিগ্ন হন, মোশ দেখুন, আমি এটি সর্বদা ব্যবহার করি এবং এটির উচ্চ পরামর্শ দিচ্ছি
jwbensley

5

fortuneযাইহোক, আপনার কতগুলি উপাধিকার দরকার?

আমি এমন একটি cddউপাধি তৈরি করতে চাই যা আমাকে যেখানে যেখানে নিয়ে যায় সেখানে আমি বর্তমানে সেই সার্ভারে কাজ করার সবচেয়ে বেশি সম্ভাবনা রাখি।

PATHনতুন সংজ্ঞা সত্যিই অন্তর্গত .bash_profile, না .bashrc

এমন একটি সার্ভারে যেখানে আমি নিয়মিত একটি বড় সেট ব্যবহার করি screen, আমার .bashrcউইলের মধ্যে থাকবে:

alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on

( screenউদাহরণস্বরূপ, এর সাথে সেট আপ করা হয়েছিল screen -U -S chaos1))


2
@ চাওস "যাইহোক, আপনার ভাগ্যের জন্য কতটি এলিয়াস দরকার?"। জয়ের জন্য উও। ব্যর্থতার জন্য ফ্রেক (এবং বিকল্প বানান)
গ্যারেথ

দয়া করে এই পদক্ষেপগুলি অনুসরণ করুন। 1) আপনার .Bashrc এ আপনার পথ প্রসারিত করুন। 2) টাইপ করুন 'বাশ'। 3) 'প্রতিধ্বনি $ PATH' টাইপ করুন। 4) টাইপ করুন 'বাশ'। 5) টাইপ করুন 'প্রতিধ্বনি $ PATH'। )) অজ্ঞতাবশত মানুষকে অবহেলা ও অপমান করার জন্য নিজেকে মাথায় ঘুষ দিন কারণ তারা আপনার চেয়ে সিসাদমিন সেরা অভ্যাস সম্পর্কে আরও জানে।
বিশৃঙ্খলা

আমি মুগ্ধ হয়েছি যে আপনার কিছুটা বৈধ কারণ আছে, যদিও নিজেকে মুখে খোঁচা দিতে যাচ্ছেন না। লগ-ইন শেলগুলি পাওয়া আপনার পক্ষে যেখানে আপনার পথটি ইতিমধ্যে প্রসারিত হয়নি। আমি এটি ফিরিয়ে নিচ্ছি যে এটি বোবা, আমি এটি প্রথমে পড়েছিলাম যে আপনি এটি বলার চেষ্টা করছেন যে আপনার .brcrc বা কোনও কিছুর মধ্যে গুরুত্বপূর্ণ ভেরিয়েবল সেট করা উচিত নয়।
ইয়ান কেলিং

সম্ভবত কারও একটি "শুরু করা উচিত আমার প্যাট ভেরিয়েবলগুলি .bashrc বা .bash_profile এ সেট করা উচিত"?
গ্যারেথ

3
@ ইয়ান কেলিং: আমি আসলে যা বলছি তা হ'ল লগইন প্রতি একবার করা উচিত অপারেশনগুলি .বাশ_প্রফাইলে অন্তর্ভুক্ত থাকে এবং শেল ইনস্ট্যান্টেশন প্রতি একবার সম্পাদন করা উচিত অপারেশনগুলি .bashrc এর অন্তর্ভুক্ত।
বিশৃঙ্খলা

5

অন্যান্য জিনিসের মধ্যে আমি কমের জন্য কিছু ডিফল্ট সেট করেছি, দুর্ঘটনাক্রমে আমার টার্মিনালটি বন্ধ করতে এবং ইতিহাসের মাধ্যমে এগিয়ে যাওয়া সক্রিয় করতে সক্ষম করেছি:

# ignore case, long prompt, exit if it fits on one screen, allow colors for ls and grep colors
export LESS="-iMFXR"

# must press ctrl-D 2+1 times to exit shell
export IGNOREEOF="2"

# allow ctrl-S for history navigation (with ctrl-R)
stty -ixon

জন্য +1export IGNOREEOF="2"
serverhorror

5

আমার কয়েকটি বিট রয়েছে:

# stop the pc speaker ever annoying me :)
setterm -bfreq 0

# don't put duplicate lines in the history. See bash(1) for more options
HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
HISTCONTROL=ignoreboth

# Expand the history size
HISTFILESIZE=10000 
HISTSIZE=100

# commands with leading space do not get added to history
HISTCONTROL=ignorespace

# am I on the internet?
alias p4='ping 4.2.2.2 -c 4'

# pwsafe
alias pw='pwsafe -p'

# ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -laptr' #oldest first sort
alias labc='ls -lap' #alphabetical sort

# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# install a package and automatically respond yes to confirmation prompt
alias ins="sudo aptitude install"

# remove a package and its configuration files
alias remp="sudo aptitude purge"

# search for a package - apt-cache and aptitude search in different ways
# so have both
alias searchc="apt-cache search"
alias search="aptitude search"
alias show="aptitude show"

3
আপনার HISTCONTROL লাইন একে অপরকে ওভাররাইড করে, যেহেতু এটি কেবল শেল পরিবর্তনশীল shell উপেক্ষাবথ উপেক্ষা স্থান এবং উপেক্ষা আপ একত্রিত।
আনিকা ব্যাকস্ট্রোম


5

সমস্ত লগ / var / লগ টেইল করুন

alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"

4

সব গ্রেপ কমান্ড যেমন গ্রেপ, উদাহরণস্বরূপ এবং zgrep এর জন্য রঙ ধারণ করতে আমার আমার .bashrc এ নিম্নলিখিতগুলি রয়েছে

export GREP_OPTIONS='--color=auto'

4

'ফোল্ডার' ওরফে দুর্দান্ত! আমি এটিকে কিছুটা সংশোধন করেছি যাতে স্পেস সহ ডিরেক্টরিগুলি ত্রুটির কারণ না ঘটে।

alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'

2
ফোল্ডারগুলি ডিস্কের ব্যবহার অনুসারে বাছাই করা হয়েছে, দুর্দান্ত
dotjoe

3

আমি জিনিসগুলি সেট আপ করার পরিবর্তে ম্যানুয়ালি জানার বিষয়ে @ পিজেজেডের মন্তব্য প্রতিধ্বনিত করব। বিশেষত আপনি যদি असंख्य মেশিনগুলিতে অ্যাক্সেস করেন তবে যেমন আমি সবসময় করি seem

তাই আমি অবশ্যই জানি is set -o vi কারণ আমি বাশ-এ ভিআই-সম্পাদনা কমান্ডগুলি জানি এবং আমি ইম্যাকগুলিও জানি না (পাশাপাশি, সিটিআরএল + এ হস্তক্ষেপ করে screen)। আমার নিজের বাক্সে, আমি এটি putুকিয়েছি.bashrc

আমারও অন্তর্ভুক্ত থাকতে হবে বলে আমি মনে করি export EDITOR=vim কারণ সাম্প্রতিক কয়েকটি ডিস্ট্রো ডিফল্ট ন্যানোতে যা সবচেয়ে বেশি বিরক্তিকর একটি ইউটিলিটি যা আপনাকে কিছু সম্পাদনা করার দরকার হয়, যখন আমি vi এর প্রত্যাশা করছিলাম। : - /

আমি আমার প্রম্পটটিও পরিবর্তন করেছি। আমি দীর্ঘদিন আগে খুঁজে পেয়েছি যে শেষ ত্রুটি কোড যুক্ত করা আমার পক্ষে এটি যথেষ্ট কার্যকর। এবং আমি প্রম্পটে পুরো পথ নাম পছন্দ করি। এবং বর্তমান screenসংখ্যা, খুব। এবং এটি কেবলমাত্র বর্তমান ব্যবহারকারীর এবং হোস্ট-নেম অন্তর্ভুক্ত করার জন্য অর্থবোধ করে। আমার প্রম্পট হয়PS1='\u@\h $PWD $WINDOW [$?] \$ '


\ ডাব্লু আপনাকে পুরো পথের নাম দিতে হবে (যদি আপনি '/ home / me' '' becomes 'হয়ে যায় তখন আপনি আপনার হোম ডিরেক্টরি
ডাঃ-জান

এটি "বাদে" বিট যা আমি \ w ব্যবহার করি না। :-)
স্ট্যাটিকসান

3

উইন্ডোর আকার পরিবর্তন হয়েছে কিনা তা দেখতে বাশ চেক করুন (যদি আপনি আপনার টার্মিনাল উইন্ডোর আকার পরিবর্তন করেন তবে লাইন-সম্পাদনকে অদ্ভুত হতে বাধা দেয়)

shopt -s checkwinsize

এটি আমার প্রিয়। ইতিহাসটিকে ওভাররাইট করার পরিবর্তে বাশকে ইতিহাসে যুক্ত করার কারণ ঘটায় । সাধারণত আপনি যখন ব্যাশ চালু করেন তখন ইতিহাসটি স্মৃতিতে লোড হয় এবং আপনি যখন এটি বন্ধ করেন তখন এটি এটিকে লিখে দেয়। এর অর্থ হ'ল আপনি যদি দুটি শেল লোড করেন, উভয়টি ব্যবহার করেন, তবে উভয়টি বন্ধ করুন, আপনি শেষটি বন্ধ করেছেন সে সমস্ত পরিবর্তনকে ওভাররাইট করে।

এই স্নিপেট এটি প্রথমে কেবলমাত্র পুরো বাফারের সাথে ওভাররাইট করার পরিবর্তে পরিবর্তিত সংযোজনগুলির কারণ ঘটায় এবং তারপরে প্রতিটি কমান্ডের পরে পরিবর্তনগুলি লিখতে বাধ্য করে। বাস্তবে, আপনি লাইভ আপডেটিং .Bash_history পান, সুতরাং আপনি যদি একটি নতুন টার্মিনাল শুরু করেন, আপনার অন্যান্য চলমান সেশনগুলির ইতিহাস থেকে সমস্ত কমান্ড রয়েছে।

shopt -s histappend
PROMPT_COMMAND='history -a'


3

এখানে খনিগুলি:

export HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:bg:fg"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# shows you if you are in a chroot or in a git repository
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;30m\]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$(__git_ps1)\$ '


if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# two handy single-letter aliases

alias u='ls -hltr'
alias e='du * -cs | sort -nr | head'
alias g='grep -C5 --color=auto'

# creates a temp dir and cds into it
alias td='pushd $(mktemp -d)'

# find <dir> <file name regexp> <file contents regexp>
function fing { find "$1" -name "$2" -exec grep -H "$3" "{}" \; }

# shows "git diff" across any project in any subdirectory
alias git-differ='for g in $(find . -name ".git"); do g=${g%%.git};printf "$g\t\t\t";pu $g >/dev/null && git diff |wc -l; p >/dev/null; done'

# does git house keeping across any project in any subdirectory
alias git-housekeep='for g in $(find . -name ".git"); do g=${g%%.git};echo $g;pu $g && git repack && git gc --auto && p;done'

# Debian update
alias apg='aptitude update && aptitude dist-upgrade && aptitude clean'

# Quick way to serve files in HTTP from the local dir
alias webs='python -m SimpleHTTPServer'

2

এগুলি আমার প্রিয়:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

আমি একটি কমান্ড-লাইনের ইতিহাস রাখতে চাই যা কখনই ভুলে যায় না।

দুর্ভাগ্যক্রমে, কিছুক্ষণ আগে আমি ক্রোন থেকে একটি শেল চালু করেছি যা কোনওভাবেই .বাশার্ক পড়েনি, এবং সমস্ত কিছু 500 টুকরো টুকরো টুকরো করে কাটিয়ে এক বছরের ইতিহাস ধ্বংস করে দিয়েছে। সুতরাং আমি এগুলিকে / etc / bashrc এ যাওয়ার পরামর্শ দিচ্ছি।


2

এখানে আমার কয়েকটি প্রিয় রয়েছে:

alias ls='ls -F --color=auto'
alias l='ls'
alias ll='ls -ahl'
alias ..='cd ..'
alias ...='cd ../..'
alias mv='mv -i'

mkcd() {
        if [ $# != 1 ]; then
                echo "Usage: mkcd <dir>"
        else
                mkdir -p $1 && cd $1
        fi
}

# Git related
alias gs='git status'
alias gc='git commit'
alias ga='git add'
alias gd='git diff'
alias gb='git branch'
alias gl='git log'
alias gsb='git show-branch'
alias gco='git checkout'
alias gg='git grep'
alias gk='gitk --all'
alias gr='git rebase'
alias gri='git rebase --interactive'
alias gcp='git cherry-pick'
alias grm='git rm'

2

আমি এটি সর্বশেষ পরিবর্তিত ডিরেক্টরিতে সিডি করতে দিনে প্রায় 20 বার ব্যবহার করি:

cl()
{
        last_dir="$(ls -Frt | grep '/$' | tail -n1)"
        if [ -d "$last_dir" ]; then
                cd "$last_dir"
        fi
}

এই দুটি প্রায়শই ব্যবহৃত ডিরেক্টরিগুলির স্থায়ী বুকমার্ক রাখে:

rd(){
    pwd > "$HOME/.lastdir_$1"
}

crd(){
        lastdir="$(cat "$HOME/.lastdir_$1")">/dev/null 2>&1
        if [ -d "$lastdir" ]; then
                cd "$lastdir"
        else
                echo "no existing directory stored in buffer $1">&2
        fi
}

2

কার্ক বাউয়ার দ্বারা অটোমেটিং লিনাক্স এবং ইউনিক্স প্রশাসন থেকে (দুর্দান্ত বই!)

PS1='\n[\u@\h]: \w\n$?> '

শুরুতে নতুন লাইনটি আমার, আমি পূর্ববর্তী আউটপুট এবং প্রম্পটের মধ্যে একটি স্পষ্ট লাইন রাখতে চাই। বাকীটি হ'ল:

= u = ব্যবহারকারীর নাম

\ এইচ = হোস্ট

\ ডাব্লু = ওয়ার্কিং ডিরেক্টরি

$? = শেষ রিটার্ন কোড


1

আমি ম্যানুয়ালি অনেকগুলি জিনিস $ হোম / লোকাল মধ্যে সংকলন করি যাতে আমার এই ছোট্ট স্নিপেট থাকে:

for prog in $HOME/local/*
do
    if [ -d "$prog/bin" ]; then
        export PATH=$prog/bin:$PATH
    fi
    if [ -d "$prog/include" ]; then
        export C_INCLUDE_PATH=$prog/include:$C_INCLUDE_PATH
    fi
    if [ -d "$prog/lib" ]; then
        export LD_LIBRARY_PATH=$prog/lib:$LD_LIBRARY_PATH
        export LIBRARY_PATH=$prog/lib:$LIBRARY_PATH
    fi
    if [ -d "$prog/man" ]; then
        export MANPATH=$prog/man:$MANPATH
    fi
    if [ -d "$prog/share/man" ]; then
        export MANPATH=$prog/share/man:$MANPATH
    fi
done

আমার সার্ভারে আমার আইআরসি ক্লায়েন্টটি স্ক্রিনে চলছে তাই আমার এটি (একটি .bashrc জিনিস নয়, তবে এখনও দরকারী)

#!/usr/bin/env bash

RUNNING=`screen -ls | grep irc`
if [ "" = "$RUNNING" ]; then
   screen -S irc irssi
else
   screen -dr irc
fi

1

আমি আমার বাশার্কটি অসংখ্য মেশিনে ব্যবহার করি, সুতরাং এলএসটি রঙিন হয়েছে কিনা তা নিশ্চিত করার জন্য আমি এই ছোট্ট স্নিপেটটি পেয়েছি। এটি ওএসএক্স মেশিনে এটি ঠিক করবে, এমনকি আপনি বিএসডি লাইন সামঞ্জস্য করলে এমনকি * বিএসডিও।

if [ "$TERM" != "dumb" ]; then
    if [ `uname` == "Darwin" ]; then
       alias ls='ls -G'
    else
       eval "`dircolors -b`"
       alias ls='ls --color=auto'
    fi
fi

এছাড়াও, আমার কাছে একটি ফাইলের ব্যাকআপ নেওয়ার জন্য একটি কমান্ড পেয়েছে, যদি আপনি কোনও কনফিগার ফাইল পরিবর্তন করতে চান এবং আপনার হাতে একটি দ্রুত অনুলিপি তৈরি করতে চান তবে দরকারী।

bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }

@ অ্যান্ড্রু: আমি আপনার প্রথম কোডটি ওএসএক্সে অসফলভাবে চালিত করি। এটি আমার প্রম্পট সেটিংস ভঙ্গ করে।
লিও লোপোল্ড হার্টজ

কাজ এখানে জরিমানা (10.6.X)
Rev316

1

এটা আমার পছন্দের একটি:

alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "$@"'

যদি আমি প্রমাণীকরণ করতে ভুলে যাই তবে এটি ssh সেশনের পরে আমার টাইপিংয়ে ssh-add না করে ব্যর্থ না করে তা করতে দেয় ।


1

একটি দম্পতি ভাল

এসএসএইচকে আপনি যে হোস্টনামটি পাঠিয়েছেন তা স্বয়ংক্রিয়ভাবে সম্পূর্ণ করুন (এটি যদি আপনার কনফিগারেশনে বা ইতিহাসে থাকে)

complete -o default -o nospace -W "$(/usr/bin/env ruby -ne 'puts $_.split(/[,\s]+/)[1..-1].reject{|host| host.match(/\*|\?/)} if $_.match(/^\s*Host\s+/);' < $HOME/.ssh/config)" scp sftp ssh

কিছু দরকারী বাশ সম্পূর্ণ করার সেটিংস

bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
bind "set show-all-if-ambiguous On" # show list automatically, without double tab

ম্যাক ওএস এক্স এর জন্য কিছু কার্যকর

alias nospotlight='sudo mdutil -a -i off'
alias cleardnscache='sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.