Use variable names in your shell
Tired of typing in that long directory name?
Sometimes when I am developing something I will end up
working in two separate directories that are not that
related. For example, I may be writing slides in my
~/class/cs421/periods/course-introduction/slides/
directory, and when they are done I want to put the
PDF in ~/web/cs421/slides/
.
You can save a lot of typing by creating some variables for it. So instead of
% cd ~/class/cs421/periods/course-introduction/slides/
% make slides.pdf
% cp slides.pdf ~/web/cs421/slides/introduction.pdf
you could have something like…
% slides=~/class/cs421/periods/course-introduction/slides/
% web=~/web/cs421/slides/
% cd $slides
% make slides.pdf
% cp slides.pdf $web/introduction.pdf
If you are going to use them a lot, you can put them in your startup file.
Use subshell tab completion
Another similiar trick is to use tab completion. I'm using zsh
, which
will run sub-shells if you hit tab. Suppose you are in that $slides
directory as before, and you want to access the directory
~/class/cs421/periods/recursion/slides
. Yeah, you could use ../..
but that can get tedious. But you could also type
cd $(pwd)
and hit <TAB>
instead of <ENTER>
. This will run the pwd
command
and paste it into your command line, leaving you with
cd ~/class/cs421/periods/course-introduction/slides/
You can then just edit the line to get what you want.
Trick three — use zsh
extension to cd
.
If you give cd
two targets in zsh
, it will treat that as a search
and replace command for your current directory name. So
cd course-introduction recursion
will do the same directory switch as above.