Command Shorthand

Filename Expansion and Pattern Matching


Character(s)Meaning
* match zero or more characters
? match any single character
[list] match any character in list
[lower-upper] match any character in range between lower and upper
str{str1, str2, ...} expand different parts with common str
~ your home directory
~user home directory of user

Quoting


Character(s)Meaning
`cmd` execute cmd and substitute output (command substitution)
\c escape character c (take literally)
'str' string characters taken literally. Quotes everything except ' and !
"str" allow command substitution and variable substitution. Quotes everything except !, $, \ and `

Special Characters that must be Escaped


Character(s)Meaning
<Space> command argument separator
<Tab> command argument separator
<Return> command argument terminator
$ variable identifier
* [ ] ? { } ~ - file expansion
< > & ! redirection
! ^ history
| pipe
; command delimiter
( ) command group
\ ' " quoting
` command substitution
& background execution

Aliasing

An alias can be a command shorthand: an abbreviation for (series of) commands.

But it can be more:

Aliases can have arguments, pipes, and variables; they execute faster than shell scripts and if you place them in .cshrc file in your home directory, they are available at any time!

Example: count the plain files

% alias files 'ls -l | grep ^- | wc -l'

History List Recall

You can store a number of commands in a history list (you set this number by:

% set history = number) and you can refer to them later on without having to retype commands or parts of commands.

If you are using the Tenex C shell (tcsh) instead of the C shell, you can use the cursor positioning keys (↑, ↓) to go through the history list and the other keys (←, →) to modify the current command.

Format: command [word] [modifier]


CommandFrom History List
!n command with number n
!! last command
!-n nth command from last one
!str last command starting with str
!?str? last conmmand with str anywhere in command line
!?str?% produce argument from last command with str
!{str1}str2 last command with str1, append with str2
^str1^str2 substitute str2 for str1 in last command

WordCommand
:0 command name
:n nth word
:^ (!^) first word (of last command)
:$ (!$) last word (of last command)
:% word matched by ?str? search
:n-m nth through mth words
:-n 0 through nth words
:n- n through next-to-last word
:n* n through last word
:* (!*) first through last word (of last command)

ModifierMeaning/disk1/users/peter/F90/program.o
:e pathname extension (BSD) o
:h pathname head /disk1/users/peter/F90
:r pathname root (no extension) /disk1/users/peter/F90/program
:t pathname tail program.o
:q quote wordlist
:x quote individual words
:& repeat previous substitution
:g& repeat previous substitution globally
:s/str1/str2/ substitute str2 for str1
:g[hrtes] modify all words in wordlist using specified modifier

Example:


  % set file = /disk1/users/peter/F90/program.o
  % echo $file:e
  o
  % echo $file:h
  /disk1/users/peter/F90
  % echo $file:r
  /disk1/users/peter/F90/program
  % echo $file:t
  program.o
  % echo $file:r:t
  program
  % program
  program started at xx-xx-xxxx
  program execution in progress ...
  **** program terminated ok ****
  % history
  222 9:35 setenv DISPLAY terminal-name:0.0
  223 9:40 alias files 'ls -l \!* | grep ^- | wc -l'
  224 9:42 set file = /disk1/users/peter/F90/program.o
  225 10:00 echo $file:e
  226 10:03 echo $file:h
  227 10:05 echo $file:r
  228 10:12 echo $file:t
  229 10:13 echo $file:r:t
  230 10:14 program
  231 10:14 history
  % !226
  echo $file:h
  /disk1/users/peter/F90
  % !e
  echo $file:r:t
  program
  % !223:1
  files
  5
  % echo $!224:^
  /disk1/users/peter/F90/program.o
  % echo "$!225"
  o
  % echo '$!226'
  $!226
  % alias cd 'set alt = $cwd; \
  ?    chdir \!*; \
  ?    if (($status == 0) && ($alt+1 != $cwd+1)) set old = $alt; \
  ?    set prompt = "$cwd:t >"; \
  ?    if ((-e .README) && (!-z .README)) more .README'
  % alias - 'set back = $old;set old = $cwd;cd $back;unset back'
  % cd
  peter >pwd
  /disk1/users/peter
  peter >-
  F90 >