分类: BSD
2008-05-03 12:28:13
Now that you can move around fairly quickly, let's fine-tune some of these hacks. How many times have you found yourself repeating commands just to alter them slightly? The following scenario is one example.
Remember that document I created? Instead of using the history to bring up my previous command so I could edit it, I might have found it quicker to type this:
% wc !$ wc mydocs/today/verylongfilename 19 97 620 mydocs/today/verylongfilename
The !$ tells the shell to take the last parameter from the previous command. Since that command was:
% vi mydocs/today/verylongfilename
it replaced the !$ in my new command with the very long filename from my previous command.
The ! (or bang!) character has several other useful applications for dealing with previously issued commands. Suppose you've been extremely busy and have issued several dozen commands in the last hour or so. You now want to repeat something you did half an hour ago. You could keep tapping your up arrow until you come across the command. But why search yourself when ! can search for you?
For example, if I'd like to repeat the command mailstats, I could give ! enough letters to figure out which command to pick out from my history:
$ !ma
! will pick out the most recently issued command that begins with ma. If I had issued a man command sometime after mailstats command, tcsh would find that instead. This would fix it though:
% !mai
If you're not into trial and error, you can view your history by simply typing:
% history
If you're really lazy, this command will do the same thing:
% h
Each command in this history will have a number. You can specify a command by giving ! the associated number. In this example, I'll ask tcsh to reissue the mailstats command:
% h 165 16:51 mailstats 166 16:51 sockstat 167 16:52 telnet localhost 25 168 16:54 man sendmail % !165