Script Language Assignment
A.First Edition
This is totally CRAP, GARBAGE, TRASH or whatever you want to call it!!!!!!!
I stole the code from my classmate and make some copy jobs.
1. I corrected the bug of subscription bug when user input "cd" with no param.
2. I add the functionality to filter "." and ".." when option "-all" is input.
3. I add sorting options for "-biggerthan" and "smallerthan".
4. Corrected several small bugs like wrong "endif", "endbw".
C.Further improvement
It is a shameful thing to post it, however I have to do it, just record what I have done.
กก
#!/bin/tcsh while( ! $?x ) echo -n "mydv:" set argmydv= ($<) if ( $#argmydv ) then switch ( $argmydv[1] ) case 'cd': if ( $#argmydv >= 2 ) then if ( -d $argmydv[2] ) then cd $argmydv[2] else echo -n "The directory $argmydv[2] does not exist " endif endif breaksw case 'dl': if ( $#argmydv == 2 ) then ls -lA |awk '{if ( $9 == "." || $9 == ".." ) next; print ;}' endif if ( $#argmydv == 3 ) then switch ( $argmydv[2] ) case '-range' : ls -l|awk '$9 ~ /^['$argmydv[3]']/' breaksw case '-modified' : ls -l|awk '$6 == "'$argmydv[3]'"' breaksw case '-biggerthan' : ls -l|awk '$5 > '$argmydv[3]''|sort -k 5 breaksw case '-smallerthan' : ls -l|awk '$5 < '$argmydv[3]''|sort -rk 5 breaksw endsw endif if ( $#argmydv == 4 ) then switch ( $argmydv[2] ) case '-all' : switch ( $argmydv[3] ) case '-range' : ls -lA|awk '{if ( $9 == "." || $9 == ".." ) next; print ;}'|awk '$9 ~/^['$argmydv[4]']/' breaksw case '-modified' : ls -lA|awk '{if ( $9 == "." || $9 == ".." ) next; print ;}'|awk '$6 == "'$argmydv[4]'"' breaksw case '-biggerthan' : ls -lA|awk '{if ( $9 == "." || $9 == ".." ) next; print ;}'|awk '$5 > '$argmydv[4]''|sort -k 5 breaksw case '-smallerthan' : ls -lA|awk '{if ( $9 == "." || $9 == ".." ) next; print ;}'|awk '$5 < '$argmydv[4]''|sort -rk 5 breaksw endsw breaksw case '-modified' : ls -l|awk '{if ( $9 == "." || $9 == ".." ) next; print ;}'|awk '$6 == "'$argmydv[3]'" && $7 == '$argmydv[4]'' breaksw endsw endif if ( $#argmydv == 5 ) then ls -lA|awk '$6 == "'$argmydv[4]'" && $7 == '$argmydv[5]' ' endif breaksw default: $argmydv endsw endif end