Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I am new to linux and was wondering whether it is possible to create abbreviations that can be used in terminal. I know about alias command, but am not sure whether that can be used for what I am looking for.

Example: Say I often need to copy stuff from folder ~/Dropbox/thisfolder. I know that I can create a shortcut to switch to this folder by creating an alias, such as,

alias tf="cd ~/Dropbox/thisfolder"

However, if I do

alias justpath="~/Dropbox/thisfolder"

then, I cannot use commands such as cp justpath/blahfile ./. Is it possible to do something like this using some other way to abbreviate the path ~/Dropbox/thisfolder?

share|improve this question
3  
Use a variable, e.g. justpath=~/Dropbox/thisfolder then cp $justpath... –  Mikel May 18 '12 at 1:29
    
Awesome! Thanks. –  Curious2learn May 18 '12 at 1:34
1  
I use symlinks, which I collect in a "shallow" easily accessible directory, like ~/Desktop. This way the short paths are shell-agnostic. The only caveat is to be careful running recursive commands on the symlink dir (tell them to not follow symlinks). –  jw013 May 18 '12 at 1:36
1  
This depends a lot on your shell; there are several good ways in zsh –  Michael Mrozek May 18 '12 at 1:41
add comment

1 Answer 1

up vote 5 down vote accepted

In any shell, you can define a variable.

justpath=~/Dropbox/thisfolder

(Note: no quotes here, otherwise the ~ wouldn't be expanded.) Prefix it with a $ to use it:

cp $justpath/blahfile .

Note that unless you're using zsh, if the value contains whitespace or wildcards *?\[, you need to put double quotes around the variable expansion when you use it.

justpath=~/'Dropbox/that folder'
cp "$justpath/blahfile" .

Zsh has (as it often does) better facilities. You can define named directories accessed with the syntax ~foo, generalizing the case where foo is a user name and ~foo is this user's home directory.

alias -d justpath=~/Dropbox/thisfolder
cp ~justpath/blahfile .

And for more complex cases, zsh offers dynamic named directories.

share|improve this answer
    
Strictly speaking that's not for any shell. In csh the variables are set with the set command. –  Alexander Shcheblikin Dec 5 '12 at 20:35
    
@AlexanderShcheblikin “Shell” in the unix world today (as opposed to 20 years ago) usually means Bourne-style shell by default. Csh, fish, psh, non-command-line shells and so on aren't included. –  Gilles Dec 5 '12 at 20:55
    
I agree, csh is mostly terrible, but "default" and "any" are quite different things anyway. –  Alexander Shcheblikin Dec 5 '12 at 22:22
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.