Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?
You must be signed in to comment.
commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.
Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.
» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10
Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):
Subscribe to the feed for:
alias :="cd .."
alias :.="cd ../.."
alias ::="cd ../../.."
alias ::.="cd ../../../.."
# repeat until bored :-) -so now you can write just :: !!! :-){VAR:-VAL} means use $VAR if it's non-null, otherwise use VAL - think of it as a default.
# do ". acd-func.sh"
# acd-func 1.0.5, 10-nov-2004
# petar marinov, http:/geocities.com/h2428, this is public domain
# http://linuxgazette.net//109/marinov.html
..() {
for (( j=${1:-1},i=0; i<j; i++)); do
# cd .. always succeeds (on linux, at least) even if we're at /
builtin cd ..
done
pwd
ls -CF
}
alias ...=".. 2" ....=".. 3"
cd_func ()
{
local x2 THE_NEW_DIR ADIR INDEX
local -i CNT
if [[ $1 == "--" ]]; then
dirs -v
return 0
fi
THE_NEW_DIR=$1
[[ -z $1 ]] && THE_NEW_DIR=$HOME
if [[ ${THE_NEW_DIR:0:1} == '-' ]]; then
#
# Extract dir N from dirs
INDEX=${THE_NEW_DIR:1}
[[ -z $INDEX ]] && INDEX=1
ADIR=$(dirs +$INDEX)
[[ -z $ADIR ]] && return 1
THE_NEW_DIR=$ADIR
fi
#
# '~' has to be substituted by ${HOME}
[[ ${THE_NEW_DIR:0:1} == '~' ]] && THE_NEW_DIR="${HOME}${THE_NEW_DIR:1}"
#
# Now change to the new dir and add to the top of the stack
pushd "${THE_NEW_DIR}" > /dev/null
[[ $? -ne 0 ]] && return 1
THE_NEW_DIR=$(pwd) || builtin cd ${THE_NEW_DIR} || exit $?
pwd
ls -CF
#
# Trim down everything beyond 11th entry
popd -n +11 2>/dev/null 1>/dev/null
#
# Remove any other occurence of this dir, skipping the top of the stack
CNT=1
while [ "$CNT" -lt 10 ]; do
x2=$(dirs +${CNT} 2>/dev/null)
[[ $? -ne 0 ]] && return 0
[[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
if [[ "${x2}" == "${THE_NEW_DIR}" ]]; then
popd -n +$CNT 2>/dev/null 1>/dev/null
CNT=$(($CNT - 1))
fi
CNT=$(($CNT + 1))
done
return 0
}
if [[ $BASH_VERSION > "2.05" ]]; then
alias cd=cd_func
# ctrl+w shows the menu
# but first make sure ^w doesn't get eaten by stty werase
stty werase ^-
bind -x '"\C-w": cd_func -- ;'
fi