Pertanyaan Apa hal yang bermanfaat yang dapat ditambahkan ke bashrc seseorang? [Tutup]


Apakah ada sesuatu yang Anda tidak dapat hidup tanpanya dan akan membuat hidup saya menjadi jauh lebih mudah? Berikut adalah beberapa yang saya gunakan ('diskspace' & 'folder' sangat berguna).

# 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




Ini harus menjadi wiki komunitas - Toro
Berubah menjadi komunitas wiki. Nikmati. - Gareth
disalurkan ke lebih banyak lagi? Saya yakin Anda akan lebih bahagia dengan kurang atau kurang -F - derobert
Kecuali bahwa ada semacam "semacam" sebelum lebih, karena semacam membutuhkan input penuh, yang kurang -F hanya akan membiarkan Anda melihat pemilahan lebih cepat, dan saya yakin itu cukup cepat. - GreenKiwi
Jika ada yang tertarik, ada layanan yang memungkinkan Anda menjelajah, membuat daftar, dan sumber alias Anda: alias.sh - Sam152


Jawaban:


Saya memiliki skrip kecil yang mengekstraksi arsip, saya menemukannya di suatu tempat di internet:

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



Bagus. Sekali lagi, ada argumen IDE / Vim tentang mengetahui perintah dari memori. Sedikit script yang fantastis. Pasti akan masuk .bashrc Cheers! - Gareth
Ada perintah linux yang bagus dan sederhana yang disebut "unp", Unpacker yang melakukan ini dan banyak lagi. - Sander Marechal
Perintah memiliki satu fitur yang hilang. Tidak bisa membuka paket 7z di boost.org/doc/libs/1_39_0/more/getting_started/… benar. Apakah Anda tahu cara menyelesaikan masalah? - Léo Léopold Hertz 준영
Versi tar baru mendeteksi jenis arsip secara otomatis, sehingga dapat mengekstrak semua format yang didukung hanya dengan 'tar xvf'. - Prof. Moriarty
@Sander dtrx tidak buruk juga. Ini memastikan arsip ekstrak ke subdirektori sendiri. - Tobu


Karena saya menggunakan begitu banyak mesin yang berbeda, saya .bashrc selalu mengatur command prompt untuk memasukkan, antara lain, nama server yang saya masuki saat ini. Dengan cara ini, ketika saya tiga tingkat jauh di telnet / ssh, saya tidak mengetikkan hal yang salah di jendela yang salah. Benar-benar menyebalkan rm -rf . di jendela yang salah! (Catatan: Di rumah, telnet dinonaktifkan pada semua mesin. Di tempat kerja, ssh tidak selalu diaktifkan dan saya tidak memiliki akses root ke banyak mesin.)

Saya punya skrip ~/bin/setprompt yang dieksekusi oleh saya .bashrc, yang mengandung:

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

Skrip ini mengatur prompt ke nama host yang diikuti :) jika perintah terakhir berhasil dan :( jika perintah terakhir gagal.


39



$ Itu? cek adalah ide yang cukup rapi, saya suka itu. - derobert
Saya juga menunjukkan status di prompt saya, tetapi tetap nilai numerik dan warnai merah jika tidak nol, jika tidak hijau. - pgs
Menarik.... - imapollo


Warna untuk manpages yang lebih sedikit membuat manpage lebih mudah dibaca:

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'

Coloured manpages juga dapat diperoleh dengan menginstal sebagian besar dan menggunakannya sebagai MANPAGER env variable. Jika Anda ingin menggunakan pager ini tidak hanya untuk pria, gunakan variabel PAGER, seperti ini:

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

25





Tidak ada lagi cd ../../../ .. tapi sampai 4

Naik banyak dirs sebagai nomor yang dilewatkan sebagai argumen, jika tidak ada yang naik sebesar 1 secara default (ditemukan di tautan dalam komentar di stackoverflow.com dan dimodifikasi sedikit)

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



Versi up () ini tampaknya terlalu rumit. Saya menggunakan versi ini: atas () {cd $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }. Anda dapat menghapus panggilan ke 'pwd' jika Anda ingin jelas. - Matthew G
Saya menggunakan sesuatu seperti ini: # Alias ​​navigasi direktori alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


Saya berurusan dengan banyak mesin yang berbeda sehingga salah satu favorit saya adalah alias untuk setiap mesin yang saya perlukan untuk sering SSH ke:

alias claudius="ssh dinomite@claudius"

Ini juga berguna untuk menyiapkan yang baik .ssh/config dan kunci ssh membuat hopping di antara mesin lebih mudah.

Salah satu alias favorit saya adalah memindahkan direktori:

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

Dan beberapa untuk variasi yang umum digunakan ls (dan salah ketik):

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"

Sejarah dapat menjadi sangat berguna, tetapi secara default pada sebagian besar distribusi, sejarah Anda terpesona oleh setiap cangkang yang keluar, dan tidak memiliki banyak hal untuk memulainya. Saya suka memiliki 10.000 baris sejarah:

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"

Dengan begitu, jika saya tahu bahwa saya telah melakukan sesuatu sebelumnya tetapi tidak dapat mengingat secara spesifik, cepat history | grep foo akan membantu mengarungi ingatanku.

Saya sering menemukan diri saya memancarkan output awk untuk mendapatkan kolom tertentu dari output, seperti pada df -h | awk '{print $2}' untuk menemukan ukuran masing-masing disk saya. Untuk membuatnya lebih mudah, saya membuat sebuah fungsi fawk di .bashrc saya:

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

Saya sekarang bisa berlari df -h|fawk 2 yang menghemat sedikit pengetikan.

Jika Anda perlu menentukan pemisah (misalnya, awk -F: untuk /etc/passwd), fungsi ini jelas tidak bisa mengatasinya. Versi yang sedikit di-overhaul inti ini dapat menangani sewenang-wenang awk argumen sebelum nomor lapangan (tetapi masih membutuhkan masukan dari stdin).


19



Saya menggunakan ssh alias dan kunci ssh juga ... itu membuatnya sangat mudah - devin
+1 untuk kiat kontrol riwayat. - Rene Saarsoo
Anda dapat menempatkan alias nama host di .ssh / config dengan efek yang sama. Dalam hal ini, tambahkan entri 'Host cloudius' dengan 'nama pengguna dinomite' - Sirex


Bashrc dienkripsi GPG

Saya yakin kita semua memiliki hal-hal yang ingin kita masukkan ke dalam bashrc yang tidak mudah dibaca oleh sudoers. Solusi saya untuk ini adalah:

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

Saya memiliki agen GPG yang membuatnya jadi saya hanya perlu memasukkan kata kunci kunci pribadi saya setiap beberapa jam sekali. Anda masih harus memiliki kepercayaan pada pengguna sistem karena variabel, fungsi, dan alias yang Anda tetapkan dapat diekstrak dari RAM. Namun, saya menggunakan ini terutama untuk laptop saya. Jika dicuri, saya tidak ingin seseorang dengan mudah melihat hal-hal seperti:

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

15



Apakah Anda juga mengenkripsi riwayat Anda dalam kasus itu? Mengapa tidak mengenkripsi $ rumah Anda - Rqomey
@Rqomey, intinya adalah saya tidak perlu mengenkripsi riwayat saya karena kata sandi saya tidak muncul di .bash_history saya karena tersembunyi oleh alias atau fungsi. Di dalamnya Anda melihat hal-hal seperti MYsql < garbagecollect.sql dari pada mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


ini adalah sumber daya yang luar biasa untuk ini:

tunjukkan kami .bashrc Anda


12





Saya menggunakannya untuk mengatur semua tempat tetapi kemudian menyadari bahwa lebih baik untuk mengingat bagaimana melakukannya 'secara manual' karena itu berarti saya akan 1) memahami sepenuhnya apa yang sedang terjadi dan 2) memiliki akses ke kemampuan ini bahkan jika kebiasaan saya .bashrc tidak diinstal.

Satu-satunya hal yang saya gunakan alias untuk hari-hari ini adalah untuk mengurangi pengetikan berulang dari garis-garis yang sangat panjang (mis. alias myhost='ssh -T user@my.remote.host screen -dAr' )


12



Setuju tentang menghafal perintah yang bermanfaat panjang. Saya menemukan bahwa meskipun saya menjalankan 'diskspace' cukup sering pada server pelarian (yaitu php adalah coredumping di semua tempat). - Gareth
ya, saya benar-benar memiliki sesuatu yang mirip dengan itu (du / home / * --max-depth 1 | sort -n> /home/.sizes) dijalankan setiap malam sehingga saya dapat terus mengawasi konsumsi ruang pengguna saya di mesin bersama. - pjz
Cukup mudah untuk menerapkan konfigurasi kustom Anda pada sistem yang biasa Anda gunakan. - Tobu
Sama seperti Anda mengikuti ssh alias, ini adalah sesuatu yang saya lakukan sepanjang waktu. Saya selalu melakukan ini dengan IP meskipun dalam kasus pemadaman DNS. - jwbensley


Satu liners dan skrip kecil di luar sana bisa berlangsung selamanya. Saya merekomendasikan man bash dan menulis sendiri. Beberapa barang bash pendek yang bagus di http://www.commandlinefu.com. Berikut beberapa hal.

#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



Aku suka kamu history -p menipu. - Tobu