Journaling on estrip is free and easy. get started today

Last Visit 2012-11-09 18:06:58 |Start Date 2005-09-01 15:28:14 |Comments 1,246 |Entries 866 |Images 935 |Sounds 4 |Videos 95 |Mobl 173 |Theme |

Category: unix

07/22/09 10:27 - ID#49353

Terminal Tips

These are for bash shells, and may be Mac-specific also, and would go in .bash_profile or .bash_login or as marked specifically below:

1. Always open new terminal windows in the location of the last directory that you cd'd to (source: ):


pathed_cd () {
if [ "$1" == "" ]; then
cd
else
cd "$1"
fi
pwd > ~/.cdpath
}
alias cd="pathed_cd"

if [ -f ~/.cdpath ]; then
cd $(cat ~/.cdpath)
fi



2. Erase duplicate entries from command history (source: ):


export HISTCONTROL=erasedups
shopt -s histappend



3. Allow partial matching of previous history instead of scrolling back through full history (note this one goes in .inputrc, source: ):


  1. do not make noise
set bell-style none

  1. By default up/down are bound to previous-history
  2. and next-history respectively. The following does the
  3. same but gives the extra functionality where if you
  4. type any text (or more accurately, if there is any text
  5. between the start of the line and the cursor),
  6. the subset of the history starting with that text
  7. is searched (like 4dos for e.g.).
  8. Note to get rid of a line just Ctrl-C
"e[B": history-search-forward
"e[A": history-search-backward

$if Bash
# F10 toggles mc on and off
# Note Ctrl-o toggles panes on and off in mc
"e[21~": "mcC-M"

#do history expansion when space entered
Space: magic-space
$endif

  1. Include system wide settings which are ignored
  2. by default if one has their own .inputrc
$include /etc/inputrc




4. Add status indicator for local changes to git or svn versioned directories (source: ):



  1. Prompt setup, with SCM status
parse_git_branch() {
    local DIRTY STATUS
    STATUS=$(git status 2>/dev/null)
    [ $? -eq 1 ] || return
    [[ "$STATUS" == *'working directory clean'* ]] || DIRTY=' *'
    echo "($(git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* //')$DIRTY)"
}

parse_svn_revision() {
    local DIRTY REV=$(svn info 2>/dev/null | grep Revision | sed -e 's/Revision: //')
    [ "$REV" ] || return
    [ "$(svn st)" ] && DIRTY=' *'
    echo "(r$REV$DIRTY)"
}

PS1='u@h:W$(parse_git_branch)$(parse_svn_revision) $ '



5. Misc aliases.



  1. various ls aliases
alias ll="ls -lp"
alias la="ls -ap"
alias lla="ls -lap"

  1. shorthand to search history, "h blah"
alias h="history | grep "

  1. open current directory in finder
alias o='open .'

  1. add all new files, which aren't ignored, to svn repo
alias san='svn status | grep "^?" | awk "{print $2}" | xargs svn add'



print add/read comments

Permalink: Terminal_Tips.html
Words: 411


Search

Chatter

New Site Wide Comments

joe said to joe
Never send a man to do a grandma's job...

sina said to sina
yes thank you!
Well, since 2018 I am living in France, I have finished my second master of science,...

paul said to sina
Nice to hear from you!! Hope everything is going great....

paul said to twisted
Hello from the east coast! It took me so long to see this, it might as well have arrived in a lette...