উত্পাদনশীলতা বাড়াতে আপনি নিজের শেল প্রোফাইলে কী কী কাস্টমাইজেশন করেছেন?


25

আমি জানি কিছু লোকের কিছু স্টার্টআপ স্ক্রিপ্ট থাকে এবং কিছু লোক প্রম্পটটিকে ব্যক্তিগতকৃত করে। একজন বিকাশকারী প্রায়শই যে দীর্ঘ পথটিতে যান এবং ঘন ঘন কমান্ডগুলি চালান তার জন্য সংক্ষিপ্তनाव ব্যবহার করে।

উত্পাদনশীলতা এবং ব্যবহারের সহজলভ্যতা বৃদ্ধির জন্য আপনি আপনার ইউনিক্স প্রোফাইলে কী কার্যকর কাস্টমাইজেশন করেছেন?


সিডাব্লু হওয়া উচিত, পোষাকের উদ্দেশ্যমূলকভাবে উত্তর দেওয়া উচিত।
আকির

আমি রাজী. তবে সিডব্লিউর জন্য কোনও বিকল্প ছিল না। :-(
সান

@ কীরা @ মিশেল আমি প্রায়শই এই পরিস্থিতির মুখোমুখি হই। মডারেটররা প্রশ্ন সম্পাদনা / ক্রস পোস্ট / পুনর্নির্দেশ করতে পারলে দুর্দান্ত হবে। কারণ আপনি যে মন্তব্যটি দিয়েছেন তা ব্যবহারকারীর সত্যিকার অর্থে যা চায় তা অর্জন করতে খুব একটা সহায়তা করে না। কোনও অপরাধ নয়, কেবল একটি পরামর্শ। আশা করি বুঝতে পেরেছো.
সান

আপনি যদি কোনও প্রশ্ন সম্প্রদায় উইকি করতে চান তবে এটি মডারেটরের মনোযোগের জন্য পতাকাঙ্কিত করুন। দেখুন সম্প্রদায় উইকি প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
গিলস 'অশুভ হওয়া বন্ধ করুন'

উত্তর:


11

.vimrc

টাইপ করে রুট অনুমতি নিয়ে ফাইল সংরক্ষণ করুন w!!:

cmap w!! w !sudo tee % > /dev/null


.bashrc

আইএনএন করার সময় ডিভাইস বা বাইনারি ফাইলগুলি নিয়ে বিরক্ত করবেন না grep:

alias grep='grep --color=auto --binary-files=without-match --devices=skip'


ওয়েবে কোড শেয়ার করুন (পেস্টবিনের মতো, তবে আরও সহজ) by cat 1337.sh | webshare

alias webshare='curl -F "sprunge=<-" http://sprunge.us | xclip'

এটি আপনার ক্লিপবোর্ডে একটি সংক্ষিপ্ত url দেয় ; আপনি পারেন সংযোজন ?whatever-langফিরে URL এ এটা হাইলাইট সিনট্যাক্স এবং লাইন সংখ্যা আছে।


.inputrc

রিডলাইন গ্রন্থাগার (অনেক প্রোগ্রাম) ব্যবহার করে এমন প্রতিটি ক্ষেত্রে vi মোড ব্যবহার করুন:

set editing-mode vi
set keymap vi

দুর্দান্ত টিপস যা আমি কখনই জানতাম না।
সান

7

একটি কমান্ডে একটি ডিরেক্টরি তৈরি করুন এবং সিডি করুন

বেশিরভাগ সময় আমি করি mkdir, আমার পরবর্তী আদেশটি cd <that dir>

এটি কিছু টাইপিং সংরক্ষণ করে:

# make a directory and cd to it
mcd()
{
    test -d "$1" || mkdir "$1" && cd "$1"
}

উদাহরণ স্বরূপ:

/home/mikel$ mcd somedir
/home/mikel/somedir$ 

আরেকটি জিনিস যা আমি দরকারী মনে করি তা হ'ল ডিরেক্টরি বানানোর সহজ উপায়। উদাহরণস্বরূপ যদি আমি একটি প্রোগ্রাম সংকলন করছি বা এমনকি আমি এই সাইটে কোনও সমস্যা পুনরুত্পাদন করার চেষ্টা করছি। কখনও কখনও আমি ডিরেক্টরিটি পরিষ্কার করতে ভুলে যেতে পারি।

# make a temporary directory and cd to it
mtd()
{
    local dir
    dir=$(mktemp -d)
    if test -n "$dir"
    then
        if test -d "$dir"
        then
            echo "$dir"
            cd "$dir"
        else
            echo "mktemp directory $dir does not exist"
        fi
    else
        echo "mktemp didn't work"
    fi
}

এটি কাজ করে দেখায়:

/home/mikel$ mtd
/tmp/tmp.wsnZjJ2KN6
/tmp/tmp.wsnZjJ2KN6$ 

আমি /tmpএকটি রিবুট পরে সিস্টেম পরিষ্কারের উপর নির্ভর করছি , তবে এটি উন্নত করা সম্ভব হবে, উদাহরণস্বরূপ শেলটি থেকে বেরিয়ে যাওয়ার পরে এটি অস্থায়ী দিরটিকে মুছুন।


আমি এমসিডি অপশনটি পছন্দ করতাম। একটি ভাল, ধন্যবাদ।
সান

+1 আমি আমার সংস্করণটি mcdবহু বছর ধরে ব্যবহার করছি এবং mtdশীঘ্রই এর মতো কিছু যুক্ত করতে যাচ্ছি ।
মার্টিনাস

আমি আমার সংজ্ঞা mtd() { mcd $TMP/`date +%y%m%d-%H%M%S-%N`; }। এটি সম্ভবত একটি বহনযোগ্যতা অভাব আছে, কিন্তু এটি আমার পক্ষে যথেষ্ট ভাল।
মার্টিনাস

4

আমি আমার বাশ প্রম্পটটি পূর্ববর্তী কমান্ডের শূন্যপদ থেকে প্রস্থান কোডটি প্রদর্শন করতে চাই। আমি আমার শেলটি এটি ব্যবহার করার সময় আমাকে উত্সাহিত করতে পছন্দ করি, তাই আমি কিছুটা বোকামি যোগ করেছি:

smiley() {
    RC=$?
    [[ ${RC} == 0 ]] && echo ':)' || echo ":( ${RC}"
}

export PS1="\$(smiley) \h [\A] [\W] \$ "

সুতরাং আমি যখন কমান্ডগুলি চালনা করি তখন আমি কিছু দুর্দান্ত ভিজ্যুয়াল প্রতিক্রিয়া পাই:

:) mycomputer [23:03] [~] $ sh -c 'exit 0'
:) mycomputer [23:03] [~] $ sh -c 'exit 11'
:( 11 mycomputer [23:03] [~] $ 

সম্পাদনা করুন : এটি আমার। / .Bashrc এ রেখেছি


বেশ আকর্ষণীয়। তবে, আমার সন্দেহ আছে। কোডটি কোথায় থাকা উচিত?
সান

ইন .bashrcসম্ভবতঃ।
মাইকেল

হ্যাঁ, এটি আমার। / .bashrc
jsbillings

চেষ্টা করে দেখুন ..
সান

4

আপ এন

ডিরেক্টরি ট্রিতে লাফ দিন N ডিরেক্টরি

টাইপিংয়ের পরিবর্তে

cd ../../../..

আপনি শুধু টাইপ করুন

up 4

এবং ক

cd -    

তোমাকে ফিরিয়ে আনবে

এটি ব্যবহার করতে আপনার .bashrc এ ফাংশনটি রাখুন।

# (c) 2007 stefan w. GPLv3          
function up {
ups=""
for i in $(seq 1 $1)
do
        ups=$ups"../"
done
cd $ups
}

বাহ .. এটি একটি দুর্দান্ত ধারণা ..
সান

2

.zshrc:

alias l='ls -CF'
alias ll='ls -ClhF'
alias la='ls -CaF'
alias lla='ls -CalhF'
alias l.='ls -CAF --ignore=\*'
alias ll.='ls -CAlhF --ignore=\*'
alias t='tree -C'

PS1=$'%{\e[0;33m%}%m %{\e[32;1m%}%~ %{\e[0;31m%}%#%{\e[m%} '

bindkey '^[[3~' delete-char

export GREP_OPTIONS="--color"

.xmodmaprc:

clear lock
keycode 9 = Caps_Lock ISO_Next_Group Caps_Lock ISO_Next_Group
keycode 66 = Escape NoSymbol Escape
add lock = Caps_Lock

(স্যুপস এস্কেপ এবং ক্যাপস লক কীগুলি)।


কীগুলির রিম্যাপিংয়ের জন্য +1, আমার ক্যাপস লকটি ফিরে আসার জন্য ম্যাপ করা হয়েছে, কে এখনই কেপস লক দরকার?
ওয়াগ

1
আমি একজন ভিম ব্যবহারকারী। এটি ভিম ব্যবহারকারীদের পক্ষে ক্যাপস লক থেকে মুক্ত হওয়ার মানচিত্র তৈরি করা সাধারণ। ইমাক্স ব্যবহারকারী ক্যাপস লক এ নিয়ন্ত্রণ করতে মানচিত্রের প্রবণতা রাখে।
পোলেমন

1

আমি আমার বাশার্কের সাথে জগাখিচুড়ি করি যেহেতু আমি টার্মিনালটি প্রচুর ব্যবহার করি (এটি আমাকে দ্রুত শিখতে এবং আকর্ষণীয় সরঞ্জামগুলি পাশাপাশি আকর্ষণীয় সরঞ্জামগুলি ব্যবহার করতে শেখায়)। আমি আমার বাশার্কে প্রচুর কার্যকারিতা সংজ্ঞায়িত করি। উদাহরণ:

সংরক্ষণাগারগুলি বের করুন:

extract () {
libextract () {
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" ;;
    *.7z) 7z x "$1" ;;
    *) echo "$1 ne moze biti raspakovan!" ;;
  esac
else
  echo "$1 nije validan fajl"
fi
}
 echo "Unesite putanju do direktorijuma u kome se nalaze arhive: " && read dir && dirprovera && cd $dir
  for f in *
    do
      mkdir ./$f-raspakovano && cd ./$f-raspakovano
      libextract ./../$f
      cd ./../
    done
  tipka
}

ফাইল এবং ফোল্ডারগুলির নাম পরিবর্তন করুন:

frename () {
if [ $# -gt 0 ]
then
 dir="$(echo $1)"
  dirprovera
  cd $dir
  for f in *
    do
      mv "$f" "`echo "$f" | tr -s " " "_" | tr "A-Z" "a-z"`" 2>/dev/null &
    done
  tipka
else
 echo "Upotreba: frename [direktorijum]" >&2
fi
}

এবং কয়েকটি বড় ফাইলগুলিতে বড় ফাইলগুলি বিভক্ত করার জন্য এটি পছন্দ করুন:

fsplit () {
if [ $# -gt 1 ]
then
 file="$(echo $1)"
 SIZE="$(echo $2)"
 PREFIX="$(echo $3)"
 if [ -z "$PREFIX" ]; then PREFIX="fsplit"; fi
  fileprovera
  split -d -a 3 -b $SIZE $file "$PREFIX-part-" || echo "Doslo je do greske!"
  tipka
else
 echo "Upotreba: fsplit [fajl] [velicina] [prefix]
Za velicinu se koriste m (MB), g (GB) ili k (KB) (15m, 650kb, 4.7g...)

Prefiks moze sadrzati brojeve, slova, i crtice (primer: moj_pre-fiks)
Ukoliko ne unesete prefiks isti ce biti dodeljen automatski u sledecem formatu:
  fsplit-part-XXX
gde XXX predstavlja broj dela fajla (001, 005, 189...)" >&2
fi
}

এছাড়াও আমি অনেক উপকরণ সম্পাদনা করেছি যেহেতু আমি দেখতে পেয়েছি যে কিছু ক্ষেত্রে ডিফল্ট হিসাবে আর্গুমেন্টের সাথে একটি কমান্ড ব্যবহার করা আরও সহজ (যেমন এলএস, গ্রেপ এবং ছোট কমান্ডগুলিতে) তারপরে প্রতিটি সময় লিখতে হবে।


1

(সম্প্রদায় উইকি, তাই প্রতিটি কৌশল পৃথক উত্তরের অন্তর্ভুক্ত))

নিরাপদ লগআউট

Ctrl+ Dশেলটি থেকে বেরিয়ে আসার সবচেয়ে সহজতম উপায় তবে আপনার যদি এখনও কাজ চালাচ্ছেন তবে তা খুশিতে শেলটি প্রস্থান করবেন। ডিফল্টরূপে, এর অর্থ আপনি যে শেলটির অভ্যন্তর থেকে চালাচ্ছিলেন সেগুলিই মারা যাবে।

কিছু শেল আপনাকে কেবলমাত্র দুবার Ctrl+ চাপ দেওয়ার পরে লগ আউট করতে দেয় D, তবে দুর্ঘটনাক্রমে এটি করা খুব সহজ।

সুতরাং পরিবর্তে, এর এই অ্যাড .bashrcবা .zshrcবা যেটা কনফিগ ফাইলটি আপনি পছন্দ করেন।

alias x='_exit'

# prevent running "exit" if the user is still running jobs in the background
# the user is expected to close the jobs or disown them
_exit()
{
    case $- in *m*)
        # this way works in bash and zsh
        jobs | wc -l | grep -q '^ *0 *$'
        if test $? -eq 0
        then
            command exit "$@"
        else
            jobs
        fi
        ;;
    *)
        command exit "$@"
        ;;
    esac
}

1

(সম্প্রদায় উইকি, তাই প্রতিটি কৌশল পৃথক উত্তরের অন্তর্ভুক্ত))

আপনি কমান্ড চালানোর সমস্ত উপায়ে আপনার ইতিহাস অনুসন্ধান করুন

আপনি ইতিমধ্যে Ctrl+ সম্পর্কে জেনে থাকতে পারেন R, তবে এই উপায়টি খুব মসৃণ IMHO।

আপনি ইতিমধ্যে টাইপ করা কমান্ডগুলির সাথে শুরু হওয়া আদেশগুলির জন্য অনুসন্ধানের ইতিহাস অনুসন্ধান করতে Alt+ সেট আপ করুন P

যেমন ls Alt+ P, Alt+ P, Alt+ P আপনার সমস্ত lsকমান্ডের মাধ্যমে পিছনে সন্ধান করবে ।

আপনি আপনার এই রাখতে হবে /etc/inputrcবা .inputrcজন্য bash:

$if mode=emacs
"\ep": history-search-backward
"\en": history-search-forward
$endif

এবং এটি আপনার .zshrcজন্য zsh:

bindkey -M emacs '^[p' history-beginning-search-backward
bindkey -M emacs '^[n' history-beginning-search-forward

এমনকি আপনি আরও এক ধাপ এগিয়ে যেতে এবং আপ তীরটিকে এটি করতে সক্ষম করতে পারেন।


1

সাধারণ ক্যালকুলেটর

আপনি খুব বেসিক গণনা ব্যবহার করতে $(( ... ))বা করতে পারেন expr ...তবে এটি পূর্ণসংখ্যা বিভাগ যেমন, যেমন

$ expr 3 / 2
1

$ expr 1.5 \* 2
expr: non-integer argument

একটি ভাল উপায় ব্যবহার করা হয় bc

# do some floating point arithmetic
calc()
{
    echo "scale=3; $*" | bc
}

তারপর:

$ calc 3 / 2
1.500
$ calc 1.5 \* 2
3.0

1
আমার ক্যালকুলেটর alias py='PYTHONSTARTUP=~/.pythonstartup python'সঙ্গে from math import *;যে ফাইল হবে। পূর্ণসংখ্যা-বিভাগের সমস্যাটি অমীমাংসিত থেকে যায়, তবে আরও জটিল ক্রিয়াকলাপগুলির জন্য এটি আরও কার্যকর।
মার্টিনাস

1

আরও ভাল ট্যাব সমাপ্তি

আমি মনে করি না যে কেউ কাস্টমাইজিং Tabসমাপ্তির উল্লেখ করেছেন ।

আমার যা আছে তা এখানে।

এটি দুটি প্রধান জিনিস হ'ল:

  • কমান্ডটি যা প্রত্যাশা করে তার উপর নির্ভর করে প্রতিটি কমান্ড ট্যাব সম্পূর্ণ করবে
    উদাহরণস্বরূপ cd <Tab>কেবল ডিরেক্টরিগুলিই পরামর্শ দেবে
  • মামলা উপেক্ষা
    যেমন d<Tab>এখনও সম্পূর্ণ হবে DesktopএবংDownloads

ব্যাশের জন্য:

# custom tab completions
if type complete >/dev/null 2>&1
then
    if complete -o >/dev/null 2>&1
    then
        COMPDEF="-o complete"
    else
        COMPDEF="-o default"
    fi
    complete -a alias unalias
    complete -d cd pushd popd pd po
    complete $COMPDEF -g chgrp 2>/dev/null
    complete $COMPDEF -u chown
    complete -j fg
    complete -j kill
    complete $COMPDEF -c command
    complete $COMPDEF -c exec
    complete $COMPDEF -c man
    complete -e printenv
    complete -G "*.java" javac
    complete -F complete_runner -o nospace -o default nohup 2>/dev/null
    complete -F complete_runner -o nospace -o default sudo 2>/dev/null
    complete -F complete_services service
    # completion function for commands such as sudo that take a
    # command as the first argument but should complete the second
    # argument as if it was the first
    complete_runner()
    {
        # completing the command name
        # $1 = sudo
        # $3 = sudo
        # $2 = partial command (or complete command but no space was typed)
        if test "$1" = "$3"
        then
            set -- `compgen -c "$2"`
        # completing other arguments
        else
            # $1 = sudo
            # $3 = command after sudo (i.e. second word)
            # $2 = arguments to command
            # use the custom completion as printed by complete -p,
            # fall back to filename/bashdefault
            local comps
            comps=`complete -p "$3" 2>/dev/null`
            # "complete -o default -c man" => "-o default -c"
            # "" => "-o bashdefault -f"
            comps=${comps#complete }
            comps=${comps% *}
            comps=${comps:--o bashdefault -f}
            set -- `compgen $comps "$2"`
        fi
        COMPREPLY=("$@")
    }

    # completion function for Red Hat service command
    complete_services()
    {
        OIFS="$IFS"
        IFS='
        '
        local i=0
        for file in $(find /etc/init.d/ -type f -name "$2*" -perm -u+rx)
        do
            file=${file##*/}
            COMPREPLY[$i]=$file
            i=$(($i + 1))
        done
        IFS="$OIFS"
    }
fi

Zsh এর জন্য:

# set command completions
compctl -a {,un}alias
compctl -b bindkey
compctl -c command
compctl -/ {c,push,pop}d
compctl -E {print,set,unset}env
#compctl -c exec
compctl -f -x "c[-1,exec]" -c -- exec
compctl -j fg
# no -g according to zshcompctl
#compctl -g {ch}grp
compctl -j kill
compctl -c man
compctl -c nohup
compctl -u {ch}own
compctl -o {set,unset}opt
compctl -f -x "c[-1,sudo]" -c -- sudo
compctl -c {whence,where,which}
compctl -M '' 'm:{a-zA-Z}={A-Za-z}'

# make file name completion case-insensitive
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'

1

নিরাপদ সংকোচনের

সংক্ষেপণ প্রোগ্রামগুলি ডিফল্টরূপে মূল ফাইলটি মুছে দেয়। আমি এটা পছন্দ করি না।

alias gzip='gzip --keep'
alias bzip2='bzip2 --keep'
alias xz='xz --keep'
alias lzma='lzma --keep'

মাল্টি-লাইন প্রম্পট

tag() {
    TAG="${TAG} [$1]" exec zsh
}

reset_tags() {
    TAG='' exec zsh
}

color='green'
if [ "${USER}" = 'root' ]; then
    color='red'
fi

export PS1="${TAG} %B%F{yellow} *** %F{blue}%~\

%F{yellow}%(1j.[%j] .)%F{red}%(?..(%?%) )%F{${color}}%n@%m %F{blue}%# %f%b"
export RPS1='%B%F{blue}%D{%Y-%m-%d} %F{green}%D{%H:%M:%S}'
export PS2='%B%F{red}%n@%m%k %B%F{blue}%_> %b%f%k'
unset color
  • বর্তমান ডিরেক্টরিটি একটি পৃথক লাইনে দেখায়। 80 কলামের টার্মিনালে একটি গভীর ডিরেক্টরি ট্রি পরিচালনা করার জন্য দরকারী।
  • আপনি যদি গ্রাফিকাল পরিবেশ ব্যবহার করেন তবে কোণে একটি ঘড়ি থাকা একটি দুর্দান্ত জিনিস। এই প্রম্পট সময় দেখায়। দুর্ভাগ্যক্রমে এটি আপডেট করার জন্য আপনাকে এন্টার টিপতে হবে।
  • আপনি পরিবেশের ভেরিয়েবলের সাথে "ট্যাগ" প্রদর্শন করতে পারেন। উদাহরণ:

    tag 'DONT SHTUDOWN!!'
    reset_tags
  • কোড অন্তত আংশিকভাবে ভিত্তিতে এই

ইতিহাস সেটিংস

dont_log() {
    HISTFILE="/dev/null" TAG="${TAG} %B%F{red}[LOGGING DISABLED]" zsh
}

if [ "${HISTFILE}" != '/dev/null' ]; then
    # history
    export HISTFILE="${HOME}/.zsh/history"
    export HISTSIZE="4096"
    export SAVEHIST="4096"

    # Don't overwrite, append!
    setopt APPEND_HISTORY

    # Write after each command
    # setopt INC_APPEND_HISTORY

    # Killer: share history between multiple shells
    setopt SHARE_HISTORY

    # If I type cd and then cd again, only save the last one
    setopt HIST_IGNORE_DUPS

    # Even if there are commands inbetween commands that are the same, still only save the last one
    setopt HIST_IGNORE_ALL_DUPS

    # Pretty    Obvious.  Right?
    setopt HIST_REDUCE_BLANKS

    # If a line starts with a space, don't save it.
    setopt HIST_IGNORE_SPACE
    setopt HIST_NO_STORE

    # When using a hist thing, make a newline show the change before executing it.
    setopt HIST_VERIFY

    # Save the time and how long a command ran
    setopt EXTENDED_HISTORY

    setopt HIST_SAVE_NO_DUPS
    setopt HIST_EXPIRE_DUPS_FIRST
    setopt HIST_FIND_NO_DUPS
fi
  • নির্লজ্জভাবে এখান থেকে চুরি ।
  • আমি লগিং স্পষ্টভাবে অক্ষম করার জন্য সমর্থন যুক্ত করেছি। আপনি যদি এমন প্রোগ্রামগুলির সাথে ডিল করছেন যা একটি সি এল এল আর্গুমেন্ট হিসাবে পাসওয়ার্ড আশা করে।

0
  • বাশআরসিআর : আমি একজন zsh ব্যবহারকারী, সুতরাং আমার বাশারসিটিতে আমার কয়েকটি লাইন রয়েছে যা কোনও সিস্টেমে উপলব্ধ থাকলে zsh শুরু করে।
  • zshrc : জিআরসিএল জাতীয় কিছু থেকে আমার zshrc অনুলিপি না করে (যদিও zshrc বেশ ভাল, তাই আপনি যদি নিজের নিজস্ব রোল করতে না চান তবে সম্ভবত এটি অন্যতম সেরা) আমি আমার নিজের zshrc লিখি।
    • আমার একটি কাস্টমাইজড প্রম্পট রয়েছে। অন্য কয়েকটি জিনিসের মধ্যে এটি শেষ কমান্ডের রিটার্ন কোডটি দেখায় যদি এটি 0 তে অসম হয়।
    • আমার কিছু উপাধি আছে আমার বেশিরভাগ সার্ভারের অ্যাকাউন্ট রয়েছে বলে আমি কখনও কখনও কোনও সিস্টেমে কমান্ডের কোন সংস্করণ পাওয়া যায় তার জন্য পরীক্ষা করাতে হয় এবং সেই অনুসারে উপন্যাসটি সেট করতে হয়।
    • আমি আমার PATH ভেরিয়েবল সেট করেছি।
    • আমি কিছু অন্যান্য পরিবেশ পরিবর্তনশীল সেট করেছি (উদাহরণস্বরূপ $ সম্পাদনা)
  • ভিআইএমআরসি : আমি একজন ভিআইএম ব্যবহারকারী, তাই আমার একটি কাস্টমাইজড এবং একটি কাস্টমাইজড রঙের স্কিম রয়েছে।
  • স্ক্রিনসিআরসি : আমি একাধিক টার্মিনাল খুলতে না পেরে এবং লগ ইন না হয়ে ইতিহাস সংরক্ষণ করার জন্য জিএনইউ স্ক্রিন ব্যবহার করি, তাই আমার নিজের নিজস্ব স্ক্রিনসিআর রয়েছে।

0

আপনি যদি স্বতঃসিদ্ধ এবং ফাইলটি নাম স্পেলিং সংশোধন চালু করতে পারেন! এটি সম্ভবত দুটি জিনিস যা আপনাকে সবচেয়ে বেশি সময় বাঁচাবে। তারপরে, এগুলি ব্যবহার করতে শিখুন - বাশ এবং জেডের ট্যাব-সমাপ্তি রয়েছে। Ksh এর একটি অকার্যকর-পাল্টানো ব্যাকস্ল্যাশ রয়েছে, তাই আমি Ksh এর বিরুদ্ধে সুপারিশ করব।

আমি Zsh ব্যবহার করি, তবে এর মতো উপকরণ Csh ব্যতীত প্রায় কোনও শেলের মধ্যে কাজ করবে:

alias l='ls -FC --color=tty'
alias ls='ls -FC --color=tty'
alias h=history
alias m=more
alias vi=vim
alias cx='chmod +x'

দেখে মনে হচ্ছে যে 'পিএস' এর একটি এলিফ থাকা উচিত, তবে আমি নিজেকে বিভিন্ন উপায়ে 'পিএস' ব্যবহার করে দেখতে পেয়েছি এবং এখনও অবধি আমি কিছু পাইনি।

জেডসে, আপনার আরপিআরএমপিটি সেট করুন (কোনও টাইপো নয়!) ভেরিয়েবল:

RPROMPT='%d'

সম্পূর্ণ ডিরেক্টরি কমান্ড লাইনের ডানদিকে প্রদর্শিত হবে , কাট-এন-পেস্ট করার জন্য প্রস্তুত। আরও পরে।

একাধিক ভিআইএম-উইন্ডো কোনও ফাইলে রাখার ক্ষমতা এবং একাধিক বাফারগুলির কারণে আপনার সঠিকভাবে সংকলিত আধুনিক ভিম ব্যবহার করা উচিত। আপনার .vimrc এর মধ্যে এমন জিনিস থাকতে পারে:

set mouse=c
set ml
set mls=5
set nowrap
set nobackup
set nonu
set showmatch
set tabstop=4
set shiftwidth=4
set showmode
set showcmd
set ruler
set notextauto
set laststatus=2
set mps=(:),{:},[:],<:>
set modelines=0

এগুলির মধ্যে অনেকগুলি ব্যক্তিগত পছন্দ, তবে আমি বিশ্বাস করি যে 8-স্পেস ট্যাব কোডগুলি কম পাঠযোগ্য করে তোলে এবং এটি প্রমাণ করার জন্য একটি অধ্যয়ন ভাসমান রয়েছে।

এছাড়াও, "মাউস = সি" গুরুত্বপূর্ণ। কোনও ফাইলের অভ্যন্তরে ঘুরতে আপনার মাউস ব্যবহার করা উচিত নয়। আপনার হাত কীবোর্ড থেকে তুলে মাউস স্পর্শ করা এবং তাদের পিছনে সরিয়ে আস্তে আস্তে। "Hjkl" কার্সার মুভমেন্ট এবং অন্যান্য কীবোর্ড পেজিং এবং কার্সার মুভমেন্ট কী ব্যবহার করুন।

আপনি যদি এক্স 11 ব্যবহার করছেন তবে আপনার এক্সটার্ম কনফিগারেশনে আপনার কয়েকটি জিনিস করা উচিত। এটি আমার .আরক্ষত্র ফাইল থেকে বেরিয়ে আসে:

XTerm*VT100.scrollBar: true
XTerm*VT100.saveLines: 1000
XTerm*VT100.cutNewLine: false 
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48
XTerm*VT100*translations: #override \n\
    <Key>F2: insert-selection(PRIMARY,CUT_BUFFER0)

এক্সটার্মকে ডিফল্টরূপে একটি স্ক্রোলবার দিন, বাফারে 1000 লাইনের পাঠ্য সংরক্ষণ করুন, এটি দুর্দান্ত।

চারক্লাসের নির্দেশিকাতে একটি "শব্দ" তৈরি হয় '।', '/' এবং '*' এর মতো জিনিস include কোনও '/' - বিচ্ছিন্ন ফাইলের নামের কোনও অংশে দ্বিগুণ ক্লিক করা এবং আপনি পুরো জিনিসটি কম পাবেন: 'অক্ষরগুলি।

কাটটোবেগিনিংঅফলাইন উপরের Zsh RPROMPT এর সাথে কাজ করে। আপনার কমান্ড লাইনের আরএইচএসে উপস্থিত বর্তমান কার্যক্ষম ডিরেক্টরিটির পথে ট্রিপল ক্লিক করুন এবং আপনি কেবলমাত্র পথটি বেছে নিন: অনুলিপিটি শব্দের শুরুতে থামে। আপনি এটি ব্যবহার করতে পারলে উচ্চ দক্ষ।

উপরের এক্স সংস্থানগুলি এটিকে একটি পেস্ট কী তৈরি করে। এইভাবে, একবার আপনি অনুলিপি করেছেন (সম্ভবত মাউস ব্যবহার করে) আপনি নিজের হাতটি মাউসের দিকে না সরিয়ে পেস্ট করতে পারেন ক্লিক করতে।


এফডাব্লুআইডাব্লু, ফাইলের নাম সমাপ্তি Esc``Escবা Esc``=ভিতরে রয়েছে kshএবং এতে Tabকাজ করে ksh93। ঠিক যদি কেউ এর সাথে আটকে থাকে বা এটি পছন্দ করে।
মিকেল 21

0

শেষ কমান্ডের শূন্য-বিহীন রিটার্ন মান যুক্ত করা একটি দুর্দান্ত ধারণা। আমি মনে করি মূল পোস্টারটি বিশেষত। প্রোফাইল / .cshrc / .bashrc সম্পর্কে জিজ্ঞাসা করেছিল। এটি অন্যান্য সাধারণভাবে কাস্টমাইজড আরসি ফাইলগুলির তালিকা উল্লেখ করার মতো, তবে আমি এই প্রশ্নের জন্য কেবল শেল কাস্টমাইজেশনকে আটকে রাখব।

আমি সম্প্রতি আমার প্রম্পটে একটি পতাকাও যুক্ত করেছি যা শেল স্ক্রিনের অধীনে চলতে দেখায়। পূর্বপুরুষের প্রক্রিয়াগুলি অনুসন্ধান করতে এটি সোলারিস "ptree" কমান্ড ব্যবহার করে তবে আপনি লিনাক্সে "pstree" কমান্ডটি একই জিনিস ব্যবহার করতে পারেন।

SCREEN=""
if [ -f /usr/bin/ptree ]; then
   if ptree $$ | grep -v grep | grep -w screen > /dev/null 2>&1; then
       SCREEN="SCREEN "
   fi
fi

শেষ কমান্ডের রিটার্ন কোডটি এম্বেড করতে কীভাবে তা নির্ধারণ করতে আমার কয়েক মিনিট সময় লেগেছে, তাই আমি এটি এখানে পোস্ট করব।

PROMPT_COMMAND='if [ "$?" = 0 ]; \
        then RC=""; \
        else RC="RV=$? "; fi; PS1="% ${SCREEN}\h $RC\w\n% "'

আমি নিশ্চিত যে আরও সুন্দর করা যেতে পারে। :-)

ভবিষ্যতের টিপস, পড়া সম্পর্কে সতর্ক থাকুন $? "if [" ব্যবহার করার পরে। বাম বন্ধনী যদি অন্তর্নির্মিত হয় তবে এটি $? এর মানকে ওভাররাইড করবে না। তবে আপনি যদি শেল ব্যবহার করেন যেখানে [অন্তর্নির্মিত নয়, তবে এটি $ এর মানটি পুনরায় সেট করবে? পরীক্ষার পরে। এটি নিরাপদে assign নির্ধারিত? এই মুহুর্তে একটি অস্থায়ী পরিবর্তনশীল এবং তারপর সেই পরিবর্তনশীল পরীক্ষা।


আপনার উত্তর সম্ভবত একটি মন্তব্য করা উচিত ... এই মত!
VxJasonxV

0

সর্বাধিক পরিবর্তিত ফাইলটি দেখান

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

ls -lt | head টাইপ করার জন্য তবে একটি জটিল, তাই এখানে একটি বিকল্প রয়েছে:

# show the most recently changed file
latest()
{
    if test $# -ne 0
    then
        /bin/ls -t -1 -d "$@" | head -n 1
    else
        /bin/ls -t -1 -d * | head -n 1
    fi
}

এটি একটি ওয়াইল্ডকার্ড বা ফাইলগুলির তালিকাও নেয়, যেমন

$ latest mail* syslog*
syslog

আপনার সমস্ত লগ ফাইলগুলির নামে একটি টাইমস্ট্যাম্প থাকলে এটি বিশেষত কার্যকর। টাইমস্ট্যাম্পটি কী ফর্ম্যাটে রয়েছে তা চিন্তা না করে আপনি সেই প্রোগ্রামটির জন্য সর্বশেষতম লগ খুঁজে পেতে পারেন।

$ touch -d 'Feb 1' mylog.20110201
$ touch -d 'Feb 2' mylog.20110202
$ touch -d 'Feb 3' mylog.20110203
$ latest mylog*
mylog.20110203

এবং এখানে একটি বর্ধিত সংস্করণ যা একের পরিবর্তে লাইনগুলি -<number>মুদ্রণের বিকল্পকে সমর্থন করে <number>

# show the most recently changed file
latest()
{
    local count=1               # how many files to print
    local promptlines=5         # how many lines to leave for the prompt
                                # when printing a screenful with -s
    local usage="Usage: latest [-n <number>] [-s] [--] [pattern]"
    while test $# -gt 0
    do
        case $1 in
        # -- = stop processing options
        --)
            shift
            break
            ;;
        # -n <number> = <number> files
        -n)
            if test -n "$2"
            then
                count=$2
                shift 2
            else
                echo "$usage" 1>&2
                return 1
            fi
            ;;
        # -s = one screenful
        -s)
            count=$((LINES - promptlines))
            shift
            ;;
        # -<number> = <number> files
        -[0-9]*)
            count=${1#-}
            shift
            ;;
        # anything else starting with a minus is a usage error
        -*)
            echo "$usage" 1>&2
            return 1
            ;;
        *)
            break
            ;;
        esac
    done

    if test $# -ne 0
    then
        /bin/ls -t -1 -d "$@" | head -n $count
    else
        /bin/ls -t -1 -d * | head -n $count
    fi
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.