it-swarm-vi.com

Những thứ hữu ích nào người ta có thể thêm vào .bashrc?

Có bất cứ điều gì mà bạn không thể sống thiếu và sẽ làm cho cuộc sống của tôi SO dễ dàng hơn nhiều không? Dưới đây là một số thứ tôi sử dụng ('không gian đĩa' & 'thư mục' đặc biệt tiện dụng).

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

Tôi có một đoạn script trích xuất tài liệu lưu trữ, tôi tìm thấy nó ở đâu đó trên mạng:

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
Gert M

Vì tôi sử dụng rất nhiều máy khác nhau, .bashrc Của tôi luôn đặt lệnh Nhắc để bao gồm, trong số những thứ khác, tên của máy chủ mà tôi hiện đang đăng nhập. Theo cách này, khi tôi ở ba cấp độ sâu trong telnet/ssh, tôi không gõ sai trong cửa sổ sai. Nó thực sự hút đến rm -rf . Trong cửa sổ sai! (Lưu ý: Ở nhà, telnet bị tắt trên tất cả các máy. Tại nơi làm việc, ssh không phải lúc nào cũng được bật và tôi không có quyền truy cập root vào rất nhiều máy.)

Tôi có một tập lệnh ~/bin/setprompt Được thực thi bởi .bashrc, Chứa:

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

Tập lệnh này đặt Nhắc đến tên Máy chủ theo sau :) Nếu lệnh cuối cùng thành công và :( Nếu lệnh cuối cùng thất bại.

39
Eddie

Màu cho các trang ít hơn làm cho các trang dễ đọc hơn một chút:

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'

Các trang màu cũng có thể được lấy bằng cách cài đặt hầu hết và sử dụng nó làm biến env MANPAGER. Nếu bạn muốn sử dụng máy nhắn tin này không chỉ cho con người, hãy sử dụng biến PAGER, như thế này:

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

Không còn cd ../../../ .. nhưng tăng 4

Tăng nhiều thư mục khi số được truyền dưới dạng đối số, nếu không có giá trị nào tăng lên 1 theo mặc định (được tìm thấy trong một liên kết trong một nhận xét trong stackoverflow.com và sửa đổi một chút)

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
Alberto Zaccagni

Tôi giao dịch với rất nhiều máy khác nhau, vì vậy một trong những mục yêu thích của tôi là bí danh cho mỗi máy mà tôi cần thường xuyên SSH để:

alias claudius="ssh [email protected]"

Nó cũng hữu ích để thiết lập một .ssh/configphím ssh để giúp việc nhảy giữa các máy trở nên dễ dàng hơn.

Một trong những bí danh yêu thích của tôi là để di chuyển lên các thư mục:

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

Và một số cho các biến thể thường được sử dụng của ls (và lỗi chính tả):

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"

Lịch sử có thể rất hữu ích, nhưng theo mặc định trên hầu hết các bản phân phối, lịch sử của bạn bị thổi bay bởi mỗi lần thoát Shell và nó không có nhiều thứ để bắt đầu. Tôi muốn có 10.000 dòng lịch sử:

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"

Bằng cách đó, nếu tôi biết rằng tôi đã làm một cái gì đó trước đây nhưng không thể nhớ chi tiết cụ thể, hãy nhanh chóng history | grep foo sẽ giúp chạy bộ nhớ của tôi.

Tôi thường thấy mình đầu ra đường ống thông qua awk để có được một cột nhất định của đầu ra, như trong df -h | awk '{print $2}' để tìm kích thước của mỗi đĩa của tôi. Để làm cho điều này dễ dàng hơn, tôi đã tạo một hàm fawk trong .bashrc:

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

Bây giờ tôi có thể chạy df -h|fawk 2 giúp tiết kiệm một chút gõ.

Nếu bạn cần chỉ định một dấu phân cách ( ví dụ: , awk -F: cho /etc/passwd), chức năng này rõ ràng không thể xử lý đó. Phiên bản được đại tu một chút trong Gist này có thể xử lý các đối số awk tùy ý trước số trường (nhưng vẫn yêu cầu đầu vào từ stdin).

19
Drew Stephens

bashrc được mã hóa GPG

Tôi chắc rằng tất cả chúng ta đều có những thứ chúng ta muốn đưa vào bashrc mà chúng ta không muốn dễ dàng đọc được bởi những kẻ lừa đảo. Giải pháp của tôi cho vấn đề này là:

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

Tôi có một đại lý GPG làm cho nó vì vậy tôi chỉ phải nhập mật khẩu của khóa riêng của mình vài giờ một lần. Bạn vẫn phải có một số niềm tin vào người dùng hệ thống vì biến, chức năng và bí danh mà bạn xác định có thể được trích xuất từ ​​RAM. Tuy nhiên, tôi sử dụng chủ yếu cho máy tính xách tay của tôi. Nếu nó bị đánh cắp, tôi không muốn ai đó dễ dàng nhìn thấy những thứ như:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:[email protected]/latest; }
15
Bruno Bronosky

đây là một nguồn tài nguyên tuyệt vời cho việc này:

cho chúng tôi xem .bashrc của bạn

12
devin

Tôi đã từng thiết lập những thứ này ở khắp mọi nơi nhưng sau đó nhận ra rằng tốt hơn hết là chỉ cần nhớ cách thực hiện chúng 'thủ công' vì điều đó có nghĩa là tôi sẽ 1) hiểu đầy đủ những gì đang diễn ra và 2) có quyền truy cập vào các khả năng này ngay cả khi .bashrc tùy chỉnh của tôi chưa được cài đặt.

Điều duy nhất tôi sử dụng bí danh cho những ngày này là cắt giảm việc gõ lặp đi lặp lại các dòng thực sự dài (ví dụ: alias myhost='ssh -T [email protected] screen -dAr')

12
pjz

Một trong những lớp lót và các kịch bản nhỏ ngoài kia có thể tiếp tục mãi mãi. Tôi khuyên bạn nên bash và viết những điều bản thân mình. Một số công cụ bash ngắn tốt tại http://www.commandlinefu.com . Đây là một vài điều.

#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 "[email protected]"
    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 "[email protected]"
        $1 "$2"
    }
    for x in "[email protected]"; 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
Ian Kelling

Một mẹo nhỏ cho Bash nếu bạn là một sysadmin và làm việc với các đặc quyền gốc rất nhiều:

shopt -o noclobber

Điều này sẽ ngăn bạn vô tình phá hủy nội dung của tệp đã có nếu bạn chuyển hướng đầu ra (> tên tệp). Bạn luôn có thể buộc ghi đè bằng> | tên tệp.

9
Cyberdrow

Tôi có những điều sau đây trong bashrc của tôi

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

Trên một máy cục bộ, nó trông giống như:

[17:57][user:~]$

nhưng trên một điều khiển từ xa (thông qua ssh) đó là:

[17:57][[email protected]:~]$
8
Anders Rasmussen

Tôi đã có cái này trong .bashrc trong một thời gian và tôi thấy nó hữu ích. Nếu bạn đang sshing vào hộp, sẽ tự động khởi động màn hình khi bạn đăng nhập, theo cách đó khi kết nối mạng của bạn bị gián đoạn hoặc bất cứ điều gì, bạn sẽ không mất bất cứ điều gì bạn đang làm. Nó nên được đặt ở cuối.

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
6
baudtack

Tôi có một vài bit:

# 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"
5
Hamish Downer

Bạn cần bao nhiêu bí danh cho fortune?

Tôi muốn tạo một bí danh cdd đưa tôi đến bất cứ nơi nào tôi có khả năng làm việc trên máy chủ đó.

PATH xác định lại thực sự thuộc về .bash_profile, không phải .bashrc.

Trên máy chủ nơi tôi thường xuyên sử dụng một bộ lớn screens, .bashrc Của tôi sẽ có:

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

(Ví dụ: screens đã được thiết lập với screen -U -S chaos1.)

5
chaos

Trong số những thứ khác, tôi đặt một số giá trị mặc định ít hơn, ngăn chặn việc vô tình đóng thiết bị đầu cuối của tôi và cho phép điều hướng chuyển tiếp qua lịch sử:

# 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

Đuôi tất cả các bản ghi trong/var/log

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"
5
hoberion

Để có màu cho tất cả các lệnh grep như grep, egrep và zgrep, tôi có phần sau trong .bashrc của mình

export GREP_OPTIONS='--color=auto'

Bí danh 'thư mục' là tuyệt vời! Tôi đã sửa đổi nó một chút để các thư mục có dấu cách không gây ra lỗi.

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

Tôi sẽ lặp lại nhận xét của @ pjz về việc biết mọi thứ bằng tay thay vì thiết lập chúng. Đặc biệt là nếu bạn truy cập vào nhiều máy, như tôi dường như luôn luôn làm.

Vì vậy, một trong những tôi chắc chắn biết là set -o vi bởi vì tôi biết các lệnh chỉnh sửa vi trong bash và tôi không biết các lệnh emacs (bên cạnh đó, Ctrl + A can thiệp vào screen). Trên hộp của riêng tôi, tôi đặt nó vào .bashrc

Tôi cũng thấy tôi phải bao gồm export EDITOR=vim bởi vì một số bản phân phối gần đây mặc định là nano gây khó chịu nhất khi bị tiện ích cần bạn chỉnh sửa thứ gì đó, khi tôi đang mong đợi vi. : - /

Tôi cũng thay đổi Lời nhắc của mình. Tôi đã tìm thấy một thời gian dài trước đây rằng việc thêm mã lỗi cuối cùng chỉ đủ hữu ích để tôi thích nó. Và tôi thích tên đường dẫn đầy đủ trong Lời nhắc. Và số screen hiện tại cũng vậy. Và nó có ý nghĩa để bao gồm tên người dùng và tên máy chủ hiện tại. Lời nhắc của tôi là PS1='\[email protected]\h $PWD $WINDOW [$?] \$ '

3
staticsan

Đây là mỏ:

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'
3
Federico
3
raspi

Kiểm tra bash để xem kích thước cửa sổ có thay đổi không (ngăn chỉnh sửa dòng không bị lạ nếu bạn thay đổi kích thước cửa sổ đầu cuối)

shopt -s checkwinsize

Đó là sở thích của tôi. Gây ra bash cho chắp thêm vào lịch sử thay vì ghi đè nó. Thông thường khi bạn khởi chạy bash, nó sẽ tải lịch sử vào bộ nhớ và khi bạn đóng nó sẽ ghi lại. Điều này có nghĩa là nếu bạn tải hai shell, sử dụng cả hai, sau đó đóng cả hai, cái bạn đã đóng cuối cùng sẽ ghi đè tất cả các thay đổi.

Đoạn mã này trước hết chỉ bổ sung các thay đổi (thay vì ghi đè bằng toàn bộ bộ đệm), và sau đó làm cho nó, sau mỗi lệnh, viết ra các thay đổi. Thực tế, bạn nhận được một bản cập nhật trực tiếp .bash_history, vì vậy nếu bạn bắt đầu một thiết bị đầu cuối mới, bạn có tất cả các lệnh từ lịch sử các phiên chạy khác của bạn.

shopt -s histappend
Prompt_COMMAND='history -a'
3
Dan Udey

Đây là một trong số những cái tôi thích:

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
Tom

Từ Tự động hóa quản trị Linux và Unix bởi Kirk Bauer (cuốn sách tuyệt vời!)

PS1='\n[\[email protected]\h]: \w\n$?> '

Dòng mới ở đầu là của tôi, tôi muốn có một ranh giới rõ ràng giữa đầu ra trước đó và Nhắc. Phần còn lại là:

\ u = tên người dùng

\ h = Máy chủ

\ w = thư mục làm việc

$? = mã trả lại lần cuối

2
Cawflands

Tôi sử dụng điều này khoảng 20 lần một ngày để cd vào thư mục thay đổi cuối cùng:

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

Hai cái này giữ dấu trang vĩnh viễn của các thư mục thường được sử dụng:

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
gz34

Đây là những mục yêu thích của tôi:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

Tôi thích có một lịch sử dòng lệnh không bao giờ quên.

Thật không may, một lúc sau tôi đã khởi chạy Shell từ cron mà không đọc .bashrc bằng cách nào đó và cắt mọi thứ xuống còn 500 dòng, phá hủy lịch sử một năm. Vì vậy, tôi khuyên bạn nên đi trong/etc/bashrc.

2
skiphoppy

Đây là một trong những điều ưa thích của tôi:

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

Nếu tôi quên xác thực, nó cho phép tôi làm như vậy mà không phải lãng phí việc gõ phím của mình khi thực hiện ssh-add sa phiên ssh.

1
joshk0

Một vài cái tốt

Làm cho SSH tự động hoàn thành tên máy chủ mà bạn ssh (nếu đó là trong cấu hình hoặc lịch sử của bạn)

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

Một số cài đặt hoàn thành bash hữu ích

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

Một số ứng dụng hữu ích cho Mac OS X

alias nospotlight='Sudo mdutil -a -i off'
alias cleardnscache='Sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'
1
lynxman
# vi ~/.bashrc # red/green terminal colors regarding exit code
export Prompt_COMMAND='PS1="`
if [[ \$? = "0" ]];
then echo "\\[\\033[0;32m\\]";
else echo "\\[\\033[0;31m\\]";
fi`[\[email protected]\h \w]\[\e[m\] "'
export PS1
1
LanceBaynes
IP_ADDRESS_BASH=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
PS1="\h $IP_ADDRESS_BASH \w % "

Và sau đó nó sẽ hiển thị IP của máy bạn vừa đăng nhập.

1
mrkafk

Tôi biên dịch một số thứ theo cách thủ công thành $ HOME/local để tôi có đoạn trích nhỏ này:

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

Tôi cũng có máy khách IRC trên máy chủ của mình đang chạy trên màn hình để tôi có cái này (không phải là .bashrc, nhưng vẫn hữu ích)

#!/usr/bin/env bash

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

Tôi sử dụng bashrc của mình trên nhiều máy, vì vậy tôi đã có đoạn trích nhỏ này để đảm bảo LS được tô màu. Điều này sẽ sửa nó trên các máy OSX, thậm chí có thể * BSD nếu bạn điều chỉnh dòng uname.

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

Ngoài ra, tôi đã có một lệnh vào một tập tin sao lưu, hữu ích nếu về bạn để thay đổi một tập tin cấu hình và muốn tạo một bản sao nhanh chóng trước khi tay.

bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }
1
Andrew Williams
mkdircd () { mkdir -p "[email protected]" && eval cd "\"\$$#\""; }

ecb () { emacsclient -n -a emacs [email protected] & } # open in emacsclient in the background
ecp () { emacsclient -n $(which [email protected]) & } # open a given file found in a $PATH in emacsclient
ecr () { Sudo_EDITOR="emacsclient -a emacs" sudoedit [email protected]; } # start emacsclient or emacs and open the file as root

eCf () { emacs --batch --eval "(byte-compile-file \"[email protected]\")"; } # byte-compile file
eCa () { emacs --batch --eval "(batch-byte-compile-if-not-done)" *.el; } # byte-compile all el files in the current directory and it's children
1
Adobe

. $ HOME/thùng/git-Nhắc/ git-Prompt.sh

0
brunoqc

Một vài bí danh tôi sử dụng để loại bỏ Edge của CLI Grind hàng ngày ...

# I find myself doing this a lot
alias hg='history | grep '

# Likewise this, plus I'm always mistyping it...
alias findy='find . -name'

# sometimes you're just not sure you want to delete something...
alias trash='mv -t ~/.local/share/Trash/files --backup=t'

alias vb='vim ~/.bashrc'

# I find typing 'cd ..' less than optimal
alias up='cd ..'
alias 2up='cd ../../'
alias 3up='cd ../../../'
alias 4up='cd ../../../../'

# re-map caps lock key to be Ctrl
# (works on Linux, at least)
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "add control = Caps_Lock"

# helpful history settings:
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE=ls:ll:la:l:cd:pwd:exit:mc:su:df:clear:cls
0
yalestar

Đôi khi tôi phải sử dụng hệ thống Solaris tại nơi làm việc.

Tuy nhiên, hệ thống được quản lý tập trung thông qua Puppet, bao gồm tệp mật khẩu (bao gồm cài đặt Shell).

.bashrc Của tôi do đó đọc một cái gì đó như:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

Để sửa kích thước cửa sổ trong màn hình GNU sau khi thay đổi kích thước:

shopt -s checkwinsize

Để hiển thị các quyền trên một thư mục, phím tắt ls -ld:

alias lld='ls -ld'

Xem lịch sử:

alias h='history | zgrep'

Và nội dung của tập lệnh zgrep của tôi, mà tôi không thể tìm ra cách nhồi nhét trực tiếp vào bí danh:

#!/bin/sh
grep "${*-.}"
0
Annika Backstrom

Tôi nghiện màn hình và tôi sử dụng các phím tắt sau để SSH vào máy. Với kịch bản này, tôi gõ p hostname đến SSH đến Máy chủ và chạy màn hình hoặc o hostname để làm tương tự nhưng chạy màn hình trên máy cục bộ.

Đầu tiên, tập lệnh kết nối với máy chủ SSH có cùng tên với tập lệnh bạn đang chạy. Tôi gọi đây là simple_ssh:

#!/bin/sh
BASENAME=$(basename $0)

if [ "$SCREEN" = "1" ]; then
    export SCREEN=0
    exec screen -RD scr$BASENAME -s $0
Elif [ "$SCREEN" = "2" ]; then
    exec ssh $BASENAME "[email protected]" -t 'screen -RD'
fi

exec ssh $BASENAME "[email protected]"

Liên kết này tới mars trong đường dẫn của bạn và mars trở thành lối tắt cho ssh mars:

[email protected]:bin$ ln -s simple_ssh mars
[email protected]:bin$ mars
[email protected]:~$

Các $SCREEN biến môi trường cho phép bạn tự động thực thi GNU màn hình có kết nối. SCREEN=1 chạy màn hình cục bộ (giả sử, nếu màn hình không được cài đặt trên Máy chủ) và SCREEN = 2 sẽ chạy màn hình trên Máy chủ.

Sử dụng một vài bí danh để tắt cái này:

alias o='SCREEN=1 exec'
alias p='SCREEN=2 exec'

Sử dụng tập lệnh để tạo liên kết tượng trưng cho tất cả các máy chủ lưu trữ của bạn được cung cấp ~/.ssh/config tập tin như thế này:

Host mars
    HostName mars.example.com
    User abackstrom

Kịch bản, sshconfig2simplessh:

#!/bin/sh

BASENAME=$(basename "$0")
USAGE="Usage: $BASENAME /path/to/bin"

if [ -z "$1" ] ; then
    echo $USAGE
    exit 0
fi

if [ ! -d "$1" ] ; then
    echo "$1 is not a directory" >&2
    exit 1
fi

cd "$1"

HOSTS=$(grep '^Host ' < ~/.ssh/config | cut -d' ' -f2)

for Host in $HOSTS ; do
    if [ ! -e "$Host" ]; then
        echo ln -s simple_ssh "$Host"
        ln -s simple_ssh "$Host"
    fi
done
0
Annika Backstrom

Fedora

alias install=Sudo yum install

Debian

alias install=Sudo apt-get update && Sudo apt-get install
0
egorgry