°ëÄêǰµÄÉÏ»ØÊé˵µ½ÄãÈçºÎÈ¥ÍæshellÓÎÏ·£¬¹À¼ÆÏÖÔÚÄãÒÑ¾ÍæÄåÁË£¬²»¹ý²»Òª×ż±£¬ÏÂÃæ£¬¸ÃÂÖµ½shellÍæÄãÁË¡£
»¶ÓÀ´µ½ÔªÓï·¨(metasyntacitic)¶¯ÎïÔ°
C ShellµÄÔªÓï·¨²Ù×÷·û´øÀ´ÁË´óÁ¿ºÍÒýÓÃÓйصÄÎÊÌâºÍ»ìÂÒ¡£Ôª²Ù×÷·ûÔÚÒ»¸öÃüÁî±»Ö´ÐÐǰ¶ÔÆä½øÐÐת»»¡£ÎÒÃǰÑÕâЩ²Ù×÷·û½Ð×öÔª²Ù×÷·ûÊÇÒòΪËüÃDz»ÊôÓÚÃüÁîµÄÓï·¨³É·Ö£¬ËüÃÇ×÷ÓÃÓÚÃüÁî±¾Éí¡£´ó¶àÊý³ÌÐòÔ±¶ÔÔª²Ù×÷·û(ÓÐʱҲ½Ð×öescape operators)²¢²»Ä°Éú¡£±ÈÈ磬C×Ö·û´®Öеķ´Ð±¸Ü()¾ÍÊÇÒ»¸öÔªÓï·¨²Ù×÷·û£»Ëü²»´ú±í×Ô¼º£¬¶øÊÇ¶ÔÆäºóµÄ×Ö·ûµÄ˵Ã÷¡£Èç¹ûÄ㲻ϣÍûÈç´Ë£¬Äã±ØÐëʹÓÃÒýÓûúÖÆÀ´¸æËßϵͳ°ÑÔª²Ù×÷·ûµ±×öÒ»°ã×Ö·ûÀ´´¦Àí¡£»Øµ½¸Õ²ÅC×Ö·û´®µÄÀý×Ó£¬Èç¹ûÏëµÃµ½·´Ð±¸Ü×Ö·û£¬Äã±ØÐëд³É¡£
¼òµ¥µÄÒýÓûúÖÆÔÚC ShellÖкÜÄѹ¤×÷£¬ÕâÊÇÒòΪShellºÍËüÖ´ÐеijÌÐòÖ®¼ä¸÷Ö´Ò»´Ê£¬ÎÞ·¨Í³Ò»¡£ÀýÈ磬ÏÂÃæÊǸö¼òµ¥µÄÃüÁ
grep string filename;
²ÎÊýstring°üº¬ÁËgrep¶¨ÒåµÄ×Ö·û£¬±ÈÈç?, [, ºÍ]µÈµÈ£¬µ«ÕâЩ×Ö·ûÊÇshellµÄÔª²Ù×÷·û¡£ÕâÒâζ×űØÐë¶ÔËüÃǽøÐÐÒýÓá£È»¶ø£¬ÓÐЩʱºò¿ÉÄܲ»ÐèÒªÈç´Ë£¬ÕâºÍÄãʹÓÃʲôÑùµÄshellÒÔ¼°»·¾³±äÁ¿Óйء£
Èç¹ûÏëÔÚ×Ö·û´®ÖÐѰÕÒ°üº¬µã(.)»òÆäËûÒÔºá¸Ü(-)¿ªÍ·µÄģʽ£¬Õâ¾Í¸üΪ¸´ÔÓÁË¡£
Ò»¶¨Òª¼Çס¶ÔÔª×Ö·û½øÐÐÕýÈ·ÒýÓᣲ»ÐÒµÄÊÇ£¬ºÍģʽʶ±ðÒ»Ñù£¬²Ù×÷ϵͳµÄ¸÷¸ö²¿·Ö¶¼³ä³â×Å»¥²»¼æÈݵÄÒýÓñê×¼¡£
C ShellµÄÔªÓï·¨¶¯ÎïÔ°ÀïËÇÑø×ÅÆßÖÖ²»Í¬µÄÔª²Ù×÷·û¼Ò×å¡£¶·×ªÐÇÒÆ£¬×ªÑۼ䶯ÎïÔ°ÀïÒѾÈËÂúΪ»¼ÁË£¬Áý×ÓʹÓõIJ»ÔÙÊǸÖÌú£¬¶øÊÇÓÃÎýÁË¡£¶¯Îï¼äµÄСĥ²Á²»¶Ï¡£ÕâÆßÖÖÕë¶ÔshellÃüÁîÐеÄת»»·½Ê½ÊÇ£º
±ðÃû alias, unalias
ÃüÁîÊä³öÌæ´ú `
ÎļþÃûÌæ´ú *, ?, []
ÀúÊ·Ìæ´ú !, ^
±äÁ¿Ìæ´ú $, set, unset
½ø³ÌÌæ´ú %
ÒýÓÃ ',"
ÕâÒ»¡°Éè¼Æ¡±µÄ½á¹ûÊÇ£¬ÎʺÅ(?)ÓÀÔ¶±»shellµ±³Éµ¥×Ö·ûÆ¥Åä·û£¬ËüÓÀÔ¶ÎÞ·¨±»×÷ΪÃüÁîÐвÎÊý´«¸øÓû§³ÌÐò£¬ËùÒÔ±ðÏëʹÓÃÎʺÅÀ´×÷Ϊ°ïÖúÑ¡Ïî¡£
Èç¹ûÕâÆßÖÖÔª×Ö·ûÓÐ×ÅÇåÎúµÄÂ߼˳ÐòºÍ¶¨Ò壬ÄÇôÇé¿öÒ²²»»áÌ«Ôã¸â¡£¿ÉÊÂʵ²¢·ÇÈç´Ë£º
ÈÕÆÚ: Mon, 7 May 90 18:00:27 - 0700
·¢ÐÅÈË: Andy Beals <
bandy@lll-crg.llnl.gov>
Ö÷Ìâ: Re: today's gripe: fg %3 (½ñÌìÖ®²»Ë¬Ê£ºfg %3)
ÊÕÐÅÈË: UNIX-HATERS
Äã¿ÉÒÔʹÓÃ%emacs»òÕß%eÀ´»Ö¸´Ò»¸öÈÎÎñ£¨Èç¹ûΨһµÄ»°£©£¬Ò²¿ÉÒÔʹÓÃ%?foo£¬Èç¹û"foo"³öÏÖÔÚÃüÁîÐÐÖС£
µ±È»£¬!emaºÍ!?fooÒ²¿ÉÒÔÓÃÓÚÀúÊ·ÃüÁîÌæ»»ÉÏ¡£
µ«ÊÇ£¬UCBµÄÖíÍ·(pinheads)ÃÇûÓÐÏëµ½!?fooºóÃæ¿ÉÄܰéËæµÄ±à¼ÃüÁ
!?foo:s/foo/bar&/:p
¶àÏòǰɨÃèÒ»¸ö±à¼×Ö·ûÕæµÄÕâôÀ§ÄÑô£¿
ÄÄÅÂÊÇUnix¡°×¨¼Ò¡±£¬Ò²ÒªÔβËÁË¡£ÏÂÃæÔÙÀ´¿´¿´Milt EpsteinµÄÕâ¸öÀý×Ó£¬ËûÏëд¸öshell½Å±¾»ñµÃʵ¼Ê±»ÇÃÈëµÄÃüÁîÐУ¬¶ø²»ÊÇÄǸö¾shell´¦ÀíºóµÄ½á¹û¡£Ëû×îºó·¢ÏÖÕâ²¢²»ÈÝÒ×£¬ÒòΪshell ΪÃüÁî×öÁËÌ«¶àµÄ¡°ºÃÊ¡±¡£Òª×öµ½ÕâÒ»µã£¬ÐèÒª¸÷ÖÖÏ¡Ææ¹Å¹ÖµÄ±äÐμ¼Êõ£¬Á¬Unixר¼ÒÒ²»áÍû¶øÈ´²½¡£Õâ¾ÍÊÇUnixµÄµäÐÍ×ö·¨£º°Ñ¼òµ¥µÄ¶«Î÷¸ãµÃÒì³£¸´ÔÓ£¬ÕâÖ»ÊÇÒòΪÕâЩ¶«Î÷ÔÚUnixµ®Éú֮ʱ´Óû±»×Ðϸ¿¼Âǹý£º
ÈÕÆÚ: 19 Aug 91 15:26:00 GMT
·¢ÐÅÈË:
Dan_Jacobson@att.com
Ö÷Ìâ: ${1+"$@"} in /bin/sh family of shells shell scripts
ÊÕÐÅÈË: comp.emacs.gnu.emacs.help, comp.unix.shell
>>>>> On Sun, 19 Arg 91 18:21:58 - 0500
>>>>> Milt Epstein <
esptein@suna0.cs.uiuc.edu>
дµ½£º
Milt> "${1+"$@"}"¾¿¾¹ÊÇʲôÒâ˼£¿ÎÒ¹À¼ÆÕâÊÇÓÃÀ´
Milt> ¶ÁÈ¡ÆäÓàµÄÃüÁîÐвÎÊý£¬µ«ÎÒ²»¸Ò¿Ï¶¨¡£
ÕâÊÇ/bin/shÀïÓÃÀ´ÍêÕû¸´ÖÆÃüÁîÐвÎÊýµÄÒ»ÖÖ·½·¨¡£
ËüµÄÒâ˼ÊÇ£ºÈç¹ûÓÐÖÁÉÙÒ»¸ö²ÎÊý(${1+)£¬ÄÇôÓÃËùÓвÎÊý("$@")À´Ìæ´úÒÔ±£ÁôËùÓеĿհ××Ö·û¡£
Èç¹ûÎÒÃÇֻʹÓÃ"$@"£¬ÄÇôÔÚûÓвÎÊýµÄÇéÐÎÏ»áµÃµ½""¶ø²»ÊÇÎÒÃÇÏëÒªµÄ¿Õ²ÎÊý¡£
ÄÇô£¬ÎªÊ²Ã´²»Ê¹ÓÃ"$*"ÄØ£¿sh(1)µÄmanÊÖ²áÊÇÕâÑù˵µÄ£º
Ë«ÒýºÅÖ®¼äµÄ²ÎÊýºÍÃüÁî»á±»Ìæ»»£¬shell»á¶Ô½á¹û¼ÓÉÏÒýÓã¬ÒÔ±ÜÃâ½âÎö¿Õ¸ñ»òÉú³ÉÎļþÃû¡£Èç¹û$*³öÏÖÔÚË«ÒýºÅÖ®ÖУ¬¸÷¸ö²ÎÊýÖ®¼äµÄ¿Õ¸ñ»á±»¼ÓÉÏÒýÓà ("$1 $2 ...")£¬¶øÈç¹û$@³öÏÖÔÚË«ÒýºÅÖ®ÖУ¬¸÷¸ö²ÎÊýÖ®¼äµÄ¿Õ¸ñ²»»á±»¼ÓÉÏÒýÓÃ("$1""$2" ...)¡£
ÎÒÈÏΪ${1+"$@"}Ò»Ö±¿ÉÒÔ¼æÈݵ½¡°°æ±¾7¡±µÄshell¡£
ÀÏÌ죡һֱ¼æÈݵ½¡°°æ±¾7¡±¡£
Ìý"chdir"µÄ»¹ÊÇÌý"cd"µÄ£¿
UnixÔÚÂþ³¤µÄÑÝ»¯¹ý³ÌÖм¸¾Ò×ÊÖ£¬ÕâЩUnixϵͳ¿ª·¢Õß°ÑUnixÒýÏòÁ˲»Í¬·½Ïò£¬ËûÃÇÖ®ÖÐûÓÐÒ»¸öÈËÍ£ÏÂÀ´¿¼ÂÇÒ»ÏÂ×Ô¼ºµÄ×ö·¨»á²»»á¶ÔºÍÆäËûÈË·¢Éú³åÍ»¡£
ÈÕÆÚ: Mon, 7 May 90 22:58:58 EDT
·¢ÐÅÈË: Alan Bawden <
alan@ai.mit.edu>
Ö÷Ìâ: cd ..: I am not making this up (cd ..: Õâ²»ÊÇÎÒ±àÔì³öÀ´µÄ)
ÊÕÐÅÈË: UNIX-HATERS
ÓÐʲôÃüÁîÄܱÈ"cd"¸üÖ±½ÓÁ˵±µÄÄØ£¿ÈÃÎÒÃÇ¿´Õâ¸ö¼òµ¥µÄÀý×Ó£º"cd ftp"¡£Èç¹ûÎҵĵ±Ç°Ä¿Â¼/home/ar/alanÖÐÓиö×ÓĿ¼½Ð×ö"ftp"£¬ÄÇôËü¾Í±ä³ÉÁËÎÒеĵ±Ç°Ä¿Â¼£¬ÏÖÔÚÎÒÔÚ/home/ar/alan/ftpÏÂÁË¡£¼òµ¥°É£¿
ÏÖÔÚ£¬ÄãÃÇÖª²»ÖªµÀ"."ºÍ".."£¿Ã¿¸öĿ¼¶¼»áÓÐÁ½¸ö¼Ç¼£º"."ÊÇÖ¸¸ÃĿ¼×Ô¼º£¬".."ÊÇÖ¸¸¸Ä¿Â¼¡£ÔÚÉÏÃæµÄÀý×ÓÖУ¬Èç¹ûÎÒÏë»Øµ½/home/ar/alan£¬Ö»ÒªÇÃ"cd .."¾Í¿ÉÒÔÁË¡£
ÏÖÔÚ¼ÙÉè"ftp"ÊÇÒ»¸ö·ûºÅÁ´½Ó¡£¼ÙÉèËüÖ¸ÏòµÄÊÇĿ¼/com/ftp/pub/alan¡£Èç¹ûÖ´ÐÐ"cd ftp"£¬Îҵĵ±Ç°Ä¿Â¼½«ÊÇ/com/ftp/pub/alan¡£
ºÍÆäËûËùÓÐĿ¼һÑù£¬/com/ftp/pub/alanÒ²ÓÐÒ»¸ö½Ð".."µÄ¼Ç¼£¬ËüÖ¸µÄÊǸ¸Ä¿Â¼£º/com/ftp/pub¡£Èç¹ûÎÒÏë½øÈëÄǸöĿ¼£¬ÎÒÇÃÈëÃüÁ
% cd ..
²ÂÒ»ÏÂÎÒÏÖÔÚÔÚÄĶùÄØ£¿ÎÒÓֻص½ÁË/home/ar/alan£¡shell(׼ȷµÄ˵ÊÇÈ˹¤ÖÇÄÜʵÑéÊÒÀïÓõÄtcsh)ÈÏΪÎÒÆäʵÊÇÏë»Øµ½ÄǸö×°ÓзûºÅÁ´½ÓµÄĿ¼¡£ÏÖÔÚÎÒ±ØÐëʹÓÃ"cd ./.."²ÅÄܽøÈë/com/ftp/pub¡£
Shell±à³Ì
Shell³ÌÐòÔ±ºÍ¡¶ÙªÂ޼͹«Ô°¡·ÀïµÄ¿ÖÁúÖÆÔìÕßÓÐЩÀàËÆ¡£ËûÃÇÊÖÉÏûÓÐËùÐèµÄÍêÕû²ÄÁÏ£¬ËùÒÔ²»µÃ²»ÓÃһЩÂÒÆß°ËÔãµÄ²ÄÁÏÌî³ä¡£¾¡¹ÜÓÐ×ÅÎÞÇîµÄ×ÔÐźÍÄÜÁ¦£¬ËûÃÇËÆºõ²¢²»ÊÇ×ÜÄÜ¿ØÖÆ×¡Ôì³öÀ´µÄÄÇÐ©ÍæÒâ¡£
ÀíÂÛÉÏ˵£¬Ê¹ÓÃShell±à³Ì±ÈÓÃCÓïÑÔÒªÓкܶàºÃ´¦£ºShell³ÌÐòÒÆÖ²ÈÝÒס£ÕâÖ¸µÄÊÇʹÓÃshell¡°±à³ÌÓïÑÔ¡±Ð´µÄ³ÌÐòÄܹ»ÔÚ²»Í¬µÄÌåϵ½á¹¹ºÍ²»Í¬µÄ Unix±äÖÖÉÏÔËÐУ¬ÒòΪshell»á½âÎöÕâЩ³ÌÐò£¬¶ø²»ÊǰÑÕâЩ³ÌÐò±àÒë³É»úÆ÷ÂëÔËÐС£¶øÇÒ£¬±ê×¼Unix Shell sh ×Ô´Ó1977ÄêÒÔÀ´¾Í³ÉΪUnixÖв»¿É»òȱµÄÒ»²¿·Ö£¬ËùÒÔÄã¿ÉÒÔÔÚÐí¶à»úÆ÷ÉÏÕÒµ½Ëü¡£
ÈÃÎÒÃÇÀ´ÑéÖ¤Ò»ÏÂÕâ¸öÀíÂÛ£¬Ð´¸ö½Å±¾ÁоÙĿ¼ÏµÄËùÓÐÎļþ£¬²¢Ê¹ÓÃfileÃüÁîÀ´ÏÔʾÎļþµÄÀàÐÍ£º
ÈÕÆÚ: Fri, 24 Apr 92 14:45:48 EDT
·¢ÐÅÈË: Stephen Gildea <
gildea@expo.lcs.mit.edu>
Ö÷Ìâ: Simple Shell Programming (¼òµ¥Shell±à³Ì)
ÊÕÐÅÈË: UNIX-HATERS
ͬѧÃǺ᣽ñÌìÎÒÃǽ«Ñ§Ï°"sh"±à³Ì¡£"sh" ÊǸö¼òµ¥£¬ÓÃ;¹ã·ºµÄ³ÌÐò£¬ÈÃÎÒÃÇÏÈ¿´¸ö»ù±¾µÄÀý×Ó£º
´òÓ¡Ò»¸öĿ¼ÏÂËùÓÐÎļþµÄÀàÐÍ
(ÎÒÌýµ½ÄãÃÇÔÚºóÃæËµÊ²Ã´ÁË£¡ÄÇЩÒѾ»áÁ˵Äͬѧ¿ÉÒÔд¸ö½Å±¾ÔÚÔ¶³ÌÆô¶¯Ò»¸öX11¿Í»§¶Ë£¬²»Òª³³³³£¡)
ÎÒÃÇѧϰsh±à³ÌµÄͬʱ£¬µ±È»Ò²Ï£Íû×Ô¼ºµÄ³ÌÐòÊǽ¡×³£¬¿ÉÒÆÖ²ºÍÓÅÑŵġ£ÎÒ¼ÙÉèÄãÃǶ¼¶Á¹ýÁËÏàÓ¦µÄmanÊֲᣬËùÒÔÏÂÃæÕâ¸öʵÏÖÓ¦¸ÃºÜ¼òµ¥£º
file *
ºÜ²»´í£¬ÊDz»ÊÇ£¿¼òµ¥µÄ´ð°¸¸ø¼òµ¥µÄÎÊÌ⣻·ûºÅ * ÓÃÀ´Æ¥ÅäĿ¼ÏµÄËùÓÐÎļþ¡£àÅ£¬²»Ò»¶¨¡£ÒÔµã(.)¿ªÍ·µÄÎļþ»á±»ºöÂÔ£¬*²»»áÆ¥ÅäËüÃÇ¡£Ò²ÐíÕâÖÖÇé¿öºÜÉÙ·¢Éú£¬µ«¼ÈȻҪд½¡×³µÄ³ÌÐò£¬ÎÒÃǽ«Ê¹ÓÃ"ls"µÄÒ»¸öÌØÊâÑ¡Ï
for file in `ls -A`
do
flie $file
done
¶àôÓÅÑÅ£¬¶àô½¡×³£¡²»¹ý£¬°¦£¬Ò»Ð©ÏµÍ³ÉϵÄ"ls"²»½ÓÊÜ"-A"Ñ¡ÏûÎÊÌ⣬ÎÒÃÇʹÓÃ"-a"Ñ¡ÏȻºóÔÙÈ¥µô"."ºÍ".."£º
for file in `ls -a`
do
if [ $file != . -a $file != ..] then
file $file
fi
done
²»ÊÇÄÇôÓÅÑÅ£¬µ«ÖÁÉÙÊǽ¡×³µÄºÍ¿ÉÒÆÖ²µÄ¡£Äã˵ʲô£¿"ls -a"Ò²²»ÊÇÄÄÀï¶¼ÄÜÓõģ¿Ã»ÎÊÌ⣬ÎÒÃÇÓÃ"ls -f"ºÃÀ²¡£Ëü»¹¿ìÒ»µãÄØ¡£ÎÒÏ£ÍûÄãÃÇÄÜ´ÓmanÊÖ²áÖп´µ½ËùÓÐÕâЩ¶«Î÷¡£
ßí£¬¿ÉÄܲ»ÊÇÄÇô½¡×³¡£UnixÎļþÃûÖгýÁËб¸Ü(/)ÒÔÍâ¿ÉÒÔʹÓÃÈκÎ×Ö·û¡£Èç¹ûÎļþÃûÖÐÓиö¿Õ¸ñµÄ»°£¬Õâ¸ö½Å±¾¾ÍÍêµ°ÁË£¬ÕâÊÇÒòΪshell»á°ÑËüµ±³ÉÁ½¸öÎļþÃû´«¸ø"file"ÃüÁî¡£²»¹ýÕâÒ²²»ÊÇÌ«ÄѶԸ¶¡£ÎÒÃÇÖ»Òª°ÑËü·Åµ½ÒýÓÃÖоͿÉÒÔÁË£º
for file in `ls -f`
do
if [ "$file" != . -a "$file" != ..]
then
file "$file"
fi
done
ÄãÃÇÖпÉÄÜÒѾÓÐÈË¿´³öÀ´ÁË£¬ÎÒÃÇÖ»ÊǼõÉÙÁËÎÊÌ⣬µ«»¹ÊÇûÓÐÍêÈ«½â¾ö¡£ÒòΪ»»ÐзûÒ²ÄÜÓÃÔÚÎļþÃûÖС£
ÎÒÃǵĽű¾²»ÊÇÄÇô¼òµ¥ÁË£¬¿´À´µÃÖØÐÂÆÀ¹ÀÒ»ÏÂÎÒÃÇÓõķ½·¨ÁË¡£Èç¹ûÎÒÃDz»Ê¹ÓÃ"ls"¾Í²»Ó÷Ѿ¢È¥´¦ÀíËüµÄÊä³öÁË¡£Õâ¸öÔõôÑù£º
for file in * .*
do
if [ "$file" != . -a "$file" != ..]
then
file "$file"
fi
done
¿´ÆðÀ´²»´í¡£Äܹ»´¦Àíµã(.)ÎļþºÍÓзǴòÓ¡×Ö·ûµÄÎļþÃû¡£ÎÒÃDz»¶Ï°ÑÒ»Ð©Ï¡Ææ¹Å¹ÖµÄÎļþÃû¼ÓÈëµ½²âÊÔĿ¼Ï£¬Õâ¸ö½Å±¾Ê¼ÖÕ¹¤×÷µÃºÜºÃ¡£È»¶øÓиö¼Ò»ïÓÃËü²âÒ»¸ö¿ÕĿ¼£¬Õâʱºò * ²úÉúÁË"No such file"(ûÓÐÕâ¸öÎļþ)µÄÊä³ö¡£²»¹ý£¬ÎÒÃǵ±È»¿ÉÒÔ¼ÌÐø´¦ÀíÕâÖÖÇé¿ö...
....µ½ÁËÕâÒ»²½uucp¿ÉÄÜ»áÏÓÎÒµÄÕâ·âÓʼþ¿ÉÄÜ£¬¿´À´ÎÒÖ»Äܵ½´ËΪֹÁË£¬Çë¶ÁÕßÈ¥×Ô¼º½â¾öʣϵÄbug°É¡£
Stephen
»¹ÓÐÒ»¸ö¸ü´óµÄÎÊÌâStephenûÓÐÏëµ½£¬ÎÒÃÇ´ÓÒ»¿ªÊ¼¾ÍÓÐÒâÒþ²Ø×Å£ºUnix file ÃüÁî²»¹¤×÷¡£
ÈÕÆÚ: Sat, 25 Apr 92 17:33:12 EDT
·¢ÐÅÈË: Alan Bawden <
Alan@lcs.mit.edu>
Ö÷Ìâ: Simple Shell Programming (¼òµ¥Shell±à³Ì)
ÊÕÐÅÈË: UNIX-HATERS
ร¡±ðæ¡£ÔÙ×Ðϸ¿´¿´¡£ÄãÕæµÄÏëÓÃ'file'ÃüÁÈç¹ûËÏ뿪ÐÄ´óЦһ³¡¿ÉÒÔÂíÉÏÈ¥ÕÒһ̨Unix»úÆ÷£¬ÔÚÓи÷ÖÖ¸÷ÑùÎļþµÄĿ¼ÏÂÇÃÃüÁî"file *"¡£
ÀýÈ磬ÎÒÔÚÓи÷ÖÖCÔ´´úÂëÎļþµÄĿ¼ÏÂÔËÐÐ"file"¡ª¡ªÕâÊÇһЩ½á¹û£º
arith.c: c program text
binshow.c: c program text
bintxt.c: c program text
¿´ÆðÀ´»¹²»´í¡£²»¹ýÕâ¸ö¾Í²»Ì«¶ÔÁË£º
crc.c: ascii text
¿´µ½ÁËô£¿'file'²¢²»ÊǸù¾Ýºó׺".c"È¥Åжϵģ¬Ëü¶ÔÎļþµÄÄÚÈݲÉÓÃÁËһЩÆô·¢Ê½(heuristics)Ëã·¨¡£ºÜÃ÷ÏÔcrc.c¿´ÆðÀ´²»ÄÇôÏóC´úÂ롪¡ª¾¡¹Ü¶ÔÎÒÀ´ËµËü¾ÍÊÇ¡£
gencrc.c.~4~: ascii text
gencrc.c: c program text
¹À¼ÆÎÒÔÚµÚ4°æ±¾ÒÔºó×öÁËһЩÐ޸ģ¬Ê¹µÃgencrc.c¸üÏóÊÇC´úÂëÁË...
tcfs.h.~1~: c program text
tcfs.h: ascii text
ºÜÃ÷ÏÔµÚ1°æ±¾ÒÔºóµÄtcfs.h²»Ì«ÏóÊÇC´úÂëÁË¡£
time.h: English text
û´í£¬time.h¿´ÆðÀ´¸üÏóÓ¢Ó¶ø²»ÊÇÒ»°ãµÄasciiÂë¡£ÎÒ²»ÖªµÀ'file'ÊDz»ÊÇ»¹ÄÜÅжϳöÎ÷°àÑÀÓï»ò·¨Óï¡£(˳±ã˵һÏ£¬ÄãµÄTeXÎĵµ»á±»µ±³É"ascii text"¶ø²»ÊÇ"English text"£¬²»¹ýÕâÓеã¶ùÅÜÌâÁË)
words.h.~1~: ascii text
words.h: English text
Õâ¿ÉÄÜÊÇÒòΪÎÒÔÚµÚ1°æ±¾ÒÔºóÔÚwords.hÖмÓÈëÁËһЩעÊÍ¡£
ÎÒ°Ñ×²ÉµÄÁôÔÚ×îºó£º
arc.h: shell commands
Makefile: [nt]roff, tbl, or eqn input text
¶¼´íµÃÒ»ËúºýÍ¿¡£ÎÒ²»ÖªµÀÈç¹û¸ù¾Ý'file'µÄÅжϽá¹ûȥʹÓÃÕâЩÎļþ»áÔì³Éʲô½á¹û¡£
¡ªAlan
Shell±äÁ¿
µ±È»Alan»¹²»Ëã×ùµÄ£¬ÖÁÉÙËûûÊÔ¹ýshell±äÁ¿¡£
ÎÒÃÇÇ°ÃæËµ¹ý£¬shºÍcsh¶Ôshell±äÁ¿µÄʵÏÖ²»Ì«Ò»Ñù¡£Õâ±¾À´Ã»ÓÐʲô£¬¿ÉÊÇһЩshell±äÁ¿µÄÓïÒå(±ÈÈ綨ÒåµÄʱ¿Ì£¬¸Ä±äµÄÔ×ÓÐÔµÈ)ûÓб»ºÃºÃ˵Ã÷»ò¶¨Òå¡£×Ü»áÓöµ½Ò»Ð©Ææ¹Ö·´³£¹æµÄshell±äÁ¿£¬Ö»Óз´¸´ÊÔÑéÒÔºó²ÅÄÜÃ÷°×¡£
ÈÕÆÚ: Thu, 14 Nov 1991 11:46:21 PST
·¢ÐÅÈË: Stanley's Tool Works <
lanning@parc.xerox.com)
Ö÷Ìâ: You learn something new every day (ÿÌì¶¼ÓÐз¢ÏÖ)
ÊÕÐÅÈË: UNIX-HATERS
ÔËÐÐÒ»ÏÂÕâ¸ö½Å±¾£º
#!/bin/csh
unset foo
if ( ! $?foo ) hen
echo foo was unset
else if ("$foo" = "You lose") then
echo $foo
endif
»á²úÉúÈçÏ´íÎó£º
foo: Undefined variable.
Èç¹ûÒªÈÃÕâ¸ö½Å±¾"ÕýÈ·¹¤×÷"£¬Äã±ØÐëÇóÖúÓÚÒÔÏÂÕâ¸ö½Å±¾£º
#!/bin/csh
unset foo
if ( ! $?foo ) hen
echo foo was unset
set foo
else if ("$foo" = "You lose") then
echo $foo
endif
[×¢Ò⣬ÎÒÃDZØÐëÔÚ·¢ÏÖfooûÓб»¶¨ÒåµÄʱºò'set foo'.] Çå³þÁËô£¿
´íÎóÂëºÍ´íÎó¼ì²é
ÎÒÃÇÉÏÃæµÄÀý×ÓûÓÐÖ¸³öfileÃüÁîÈçºÎ½«´íÎ󷵻ظø½Å±¾¡£ÊÂʵÉÏ£¬Ëü¸ù±¾¾ÍûÓзµ»Ø´íÎó¡£´íÎ󱻺öÂÔÁË¡£Õâ²»ÊÇÒòΪÎÒÃÇ´ÖÐÄ´óÒ⣺Ðí¶àUnix shell½Å±¾(ÒÔ¼°ÆäËû³ÌÐò)ºöÂÔËùµ÷ÓóÌÐòËù·µ»ØµÄ´íÎóÂë¡£Õâ¸ö×ö·¨ÊÇ¿ÉÈ¡µÄ£¬ÕâÊÇÒòΪûÓбê×¼µÄ´íÎóÂë¡£
Ò²ÐíÖ®ËùÒÔ´íÎóÂë±»¹ã·ºµØºöÂÔ£¬ÊÇÒòΪµ±Óû§ÇÃÃüÁîµÄʱºòÕâЩ´íÎóÂëºÜÉÙ±»ÏÔʾ³öÀ´¡£´íÎóÂëºÍ´íÎó¼ì²éÔÚUnixÕóÓªÖÐÊÇÈç´ËÉÙ¼û£¬ÒÔÖÁÓÚÓÐЩ³ÌÐòÉõÖÁ¸ù±¾¾Í²»·Ñ¾¢È¥±¨¸æ´íÎó¡£
ÈÕÆÚ: The, 6 Oct 92 08:44:17 PDT
·¢ÐÅÈË: Bjorn Freeman-Benson <
bnfb@ursamajor.uvic.ca>
Ö÷Ìâ: It's always good news in Unix land (UnixÊÀ½çÀï¶¼ÊǺÃÏûÏ¢)
ÊÕÐÅÈË: UNIX-HATERS
¿´¿´Õâ¸ötar³ÌÐò¡£ºÍËùÓеÄUnix"¹¤¾ß"(ËÆºõ²»Ì«×¼È·)Ò»Ñù£¬tarµÄ¹¤×÷·½Ê½·Ç³£Ææ¹ÖºÍÌØ±ð¡£ÀýÈ磬tarÊÇÒ»¸ö¼«ÎªÀÖ¹ÛÏòÉϵijÌÐò£¬ËüÈÏΪ´Ó²»»áÓÐʲô»µÊ£¬ËùÒÔÌ«´ÓÀ´²»·µ»Ø´íÎó״̬¡£ÊÂʵÉÏ£¬ÄÄÅÂÊÇÔÚÆÁÄ»ÉÏ´ò³öÁË´íÎóÐÅÏ¢£¬Ëü·µ»ØµÄÈÔÈ»ÊÇ"ºÃÏûÏ¢" (״̬0)¡£ÔËÐÐÒ»ÏÂÕâ¸ö½Å±¾£º
tar cf temp.tar no.such.file
if ( $status == 0 ) echo "good news! No error."
Ä㽫µÃµ½ÈçϽá¹û£º
tar: no.such.file: No such file or directory
Good news! No error.
ÎÒÃ÷°×ÁË¡ª¡ªÎÒ´ÓÒ»¿ªÊ¼¾Í²»Ó¦¸ÃÉÝÍûʲôһÖ£¬ÓÐÓ㬰ïÖúÁ¼ºÃ£¬¿ìËÙ£¬ÉõÖÁÊÇÕýÈ·µÄ½á¹û...
Bjorn
OK, ±»shellÕÛÌڵúÜˬ°É£¿»¹Ã»¹ý×ãñ«£¿²»Òª½ô£¬Ï»ØÊéÎÒÃÇ»»¸öµØ·½£¬×ê½øUnixÏÂË®µÀ(pipe)ÀïÌåÑéÎÞÇîµÄÍ´¿àºÍ¿ìÀÖ
¹ÜµÀ
UnixÊÜŰ¿ñÃÇ£¬»¶ÓÀ´µ½UnixÏÂË®µÀ¡£
¡°ÔÚÎÒÃÇÕâ¸öÊÀ¼Í£¬°ÍÀèÏÂË®µÀÈÔÊÇÒ»¸öÉñÃØµÄ³¡Ëù¡£Èç¹ûÖªµÀ×Ô¼ºµÄÏÂÃæÊǸö¿ÉŵĴó½Ñ£¬°ÍÀè»á¸Ðµ½²»°²¡£¡± ¡ª¡ª Óê¹û ¡¶±¯²ÒÊÀ½ç¡·
ÏÂÃæÖ»ÊÇÎÒ×Ô¼º¶ÔUnixµÄ¿´·¨¡£´óÔ¼ÁùÄêǰ(µ±ÎÒÓÐÁ˵Úһ̨¹¤×÷Õ¾µÄʱºò)£¬ÎÒÓÃÁ˺ܶàʱ¼äѧϰUnix¡£Ó¦¸ÃѧµÃËãÊDz»´íµÄ¡£ÐÒÔ˵ÄÊÇ£¬ÄÔ×ÓÀïµÄÕâЩÀ¬»øÕýËæ×Åʱ¼äµÄÍÆÒÆÂýÂý½µ½â¡£¿ÉÊÇ£¬×Ô´ÓÕâ¸öÌÖÂÛ¿ªÊ¼ÒÔÀ´£¬²»ÉÙUnixÖ§³ÖÕß·¢¸øÎÒÀý×ÓÀ´¡°Ö¤Ã÷¡±UnixµÄÇ¿´ó¡£ÕâЩÀý×Óµ±È»»½ÆðÁËÎÒÐí¶àÃÀºÃµÄ»ØÒ䣺ËûÃǶ¼ÊÇÓÃÒ»ÖÖ×î¹ÖÒìµÄ·½Ê½È¥ÊµÏÖһЩ¼òµ¥¶øÎÞÓõŦÄÜ¡£
Óиö¼Ò»ï·¢ÁËÆªÌù×Ó½²ÊöÒ»¸öshell½Å±¾ÊÇÈçºÎÈÃËû»ñµÃ¡°Ô²Âú¡±µÄ (Õâ¸ö½Å±¾Ê¹ÓÃÁËËĸöÔëÉùÒ»ÑùµÄÃüÁî°ÑËûËùÓеÄ'.pas'ºó׺µÄÎļþ¸ÄÃûΪ'.p' Îļþ)¡£¿ÉÎÒ»¹ÊÇÏë°Ñ×Ô¼ºµÄ×Ú½ÌÈÈÇéÁô¸ø±È¸Ä¼¸¸öÎļþÃû¸üÖØÒªµÄÊÂÇéÉÏ¡£Êǵģ¬Õâ¾ÍÊÇUnix¹¤¾ßÁô¸øÎҵļÇÒ䣺ÄãÓôóÁ¿µÄʱ¼äȥѧÄÇЩ¸´ÔÓÆæÌصύ¼Ü×Ó£¬¿Éµ½Í·À´È´ÊÇÒ»³¡¿Õ¡£ÎÒ»¹ÊÇȥѧЩÓÐÓõÄÕæ¹¦·ò°É¡£
¡ª¡ªJim Giles
Los Alamos¹ú¼ÒʵÑéÊÒ
Unix ÃÔÃǰݵ¹ÔڹܵÀ(pipe)µÄտɯÃÀ֮ϡ£ËûÃÇËûÃǸ質¹ÜµÀ£ºÃ»ÓйܵÀ¾ÍûÓÐUnix¡£ËûÃÇÒì¿ÚͬÉùµØËÌÑï¹ÜµÀ£º¡°¹ÜµÀÄܹ»ÈÃÄãÓüòµ¥µÄ³ÌÐòÈ¥¹¹Ôì¸ü¸´ÔӵijÌÐò¡£¹ÜµÀÄܹ»ÒÔÒâÏë²»µ½µÄ·½Ê½È¥Ê¹ÓÃÃüÁ¹ÜµÀʹµÃʵÏÖ¸üΪ¼òµ¥¡£¡±²»ÐÒµÄÊÇ£¬Ë̸è¶ÔUnixµÄ×÷Óò¢²»±È¶Ôΰ´óÆìÊÖµÄÒªºÃ¶àÉÙ¡£
¹ÜµÀ²¢²»ÊÇÒ»ÎÞÊÇ´¦¡£Ä£¿é»¯ºÍ³éÏó»¯Êǽ¨Á¢¸´ÔÓϵͳÖÐËù±ØÐèµÄ£¬ÕâÊǼÆËã»ú¿ÆÑ§µÄ»ù±¾ÔÔò¡£»ù±¾¹¤¾ßÔ½ÊÇÓÅÐ㣬ÓÃÆä½¨Á¢µÄ¸´ÔÓϵͳ¾Í»á¸üΪ³É¹¦£¬¿Éά»¤ÐÔÒ²Ô½¸ß¡£¹ÜµÀ×÷Ϊ¹¹Ô칤¾ß»¹ÊÇÓмÛÖµµÄ¡£
ÒÔÏÂÊǸö¹ÜµÀµÄÀý×Ó£º
egrep '^To:|^Cc:' /var/spool/mail/$USER |
cut -c5- |
awk '{ for (i = 1; i <= NF; i++) print $i}' |
sed 's/,//g' | grep -v $USER | sort | uniq
¿´Ã÷°×ÁËô£¿Õâ¸ö³ÌÐòͨ¹ý¶ÁÈ¡Óû§µÄÓÊÏ䣬µÃµ½Óû§ËùÔÚµÄÓʼþÁбí(²î²»¶àÊÇÕâ¸öÒâ˼)¡£ºÍÄã¼ÒÀïµÄË®¹ÜÒ»Ñù£¬Õâ¸öUnix¹ÜµÀÒ²»áÔÚÌØ¶¨Çé¿öÏÂÉñÃØµØÆÆÁÑ¡£
¹ÜµÀÓÐʱµÄÈ·ºÜÓÐÓ㬵«Ëüͨ¹ýÁ¬½Ó±ê×¼ÊäÈëÊä³öµÄ·½Ê½½øÐнø³Ì¼äͨѶ£¬Õâ¸ö»úÖÆÏÞÖÆÁËËüµÄÓ¦Óá£Ê×ÏÈ£¬ÐÅÏ¢Ö»Äܵ¥ÏòÁ÷¶¯¡£½ø³ÌÎÞ·¨Í¨¹ý¹ÜµÀ½øÐÐË«ÏòͨѶ¡£Æä´Î£¬¹ÜµÀ²»Ö§³ÖÈκÎÐÎʽµÄ³éÏó¡£·¢ËÍ·½ºÍ½ÓÊÕ·½Ö»ÄÜʹÓÃ×Ö·ûÁ÷´«ÊäÐÅÏ¢¡£±È×Ö·ûÉÔ΢¸´ÔÓÒ»µãµÄ¶ÔÏóÊDz»ÄÜͨ¹ý¹ÜµÀÖ±½Ó´«ÊäµÄ£¬±ØÐë´®Ðл¯Îª×Ö·ûÁ÷ÒÔºó²Å³É£¬µ±È»½ÓÊÕ·½±ØÐë¶ÔµÃµ½µÄ×Ö·ûÁ÷½øÐÐÖØÐÂ×é×°¡£ÕâÒâζ×ÅÄãÎÞ·¨´«ÊäÒ»¸ö¶ÔÏóÒÔ¼°ÓÃÓÚ½¨Á¢Õâ¸ö¶ÔÏóµÄ¶¨Òå´úÂë¡£ÄãÎÞ·¨´«ÊäÖ¸Õëµ½ÁíÒ»¸ö½ø³ÌµÄµØÖ·¿Õ¼ä¡£ÄãÎÞ·¨´«ÊäÎļþ¾ä±ú»òsocket¾ä±ú»òÎļþȨÏÞÊôÐÔ¡£
ð×ű»Âî×ö×ÔÒÔΪÊǵķçÏÕ£¬ÎÒÃÇÈÏΪÕýÈ·µÄÄ£ÐÍÓ¦¸ÃÊǹý³Ìµ÷ÓÃ(±¾µØµÄ»òÊÇÔ¶³ÌµÄ)£¬ÓÃÒÔ´«µÝµÚÒ»Àà½á¹¹(first-class structures)(ÕâÊÇCÓïÑÔ´ÓÒ»¿ªÊ¼¾ÍÖ§³ÖµÄ)ºÍº¯Êý×éºÏ(functional composition)¡£
¹ÜµÀ¶Ô¼òµ¥ÈÎÎñÊDz»´íµÄ£¬±ÈÈçÎı¾Á÷´¦Àí£¬µ«ÓÃËüÀ´½¨Á¢½¡×³Èí¼þ¾ÍÏÔµÃÓÐЩ׽½ó¼ûÖâÁË¡£ÀýÈ磬ÔçÆÚ¹ØÓڹܵÀµÄһƪÂÛÎÄÖÐ˵Ã÷ÁËÈçºÎʹÓùܵÀ°ÑһЩС³ÌÐò×éºÏÔÚÒ»ÆðÀ´¹¹³ÉÒ»¸öƴд¼ì²é³ÌÐò¡£ÕâÊÇÌåÏÖ¼òµ¥ÐԵľµäÖ®×÷£¬µ«Èç¹ûÕæµÄÓÃÀ´¼ì²éƴд´íÎó¾ÍÔÙÔã¸âûÓÐÁË¡£
¹ÜµÀÔÚshell½Å±¾ÖÐÓо³£ÄܶһСÊÖ¡£³ÌÐòÔ±ÓÃËüʵÏÖһЩ¼òµ¥¶ø´àÈõµÄ½â¾ö·½°¸¡£ÕâÊÇÒòΪ¹ÜµÀʹµÃÁ½¸ö³ÌÐòÖ®¼ä²úÉúÁËÒÐÀµ¹ØÏµ£¬Èç¹ûÄãÐÞ¸ÄÁËÒ»¸ö³ÌÐòµÄÊä³ö¸ñʽ£¬¾Í±ØÐëͬʱÐÞ¸ÄÁíÒ»¸ö³ÌÐòµÄÊäÈë´¦Àí¡£
´ó¶àÊý³ÌÐòÊÇÒ»²½²½½¨Á¢ÆðÀ´µÄ£ºÊ×ÏÈÖÆ¶¨³ÌÐòµÄÐèÇ󹿷¶£¬È»ºó³ÌÐòµÄÄÚ²¿Öð½¥³ÉÐÍ£¬×îºóдһ¸öÊä³ö´¦Àíº¯Êý¡£¹ÜµÀÔò²»°ÑÕâÒ»Ì×·ÅÔÚÑÛÀֻҪÓÐÈ˰ÑÒ»¸ö°ëÉú²»ÊìµÄ³ÌÐò·Åµ½Á˹ܵÀÖУ¬ÆäÊä³ö¸ñʽ¾Í¶¨ËÀÁË£¬²»¹ÜÊǶàô²»Ò»Ö£¬²»±ê×¼ºÍµÍЧ£¬Äã¶¼Ö»ÄÜÈÏÃüÁË¡£
¹ÜµÀ²»ÊdzÌÐò¼äͨѶµÄΨһѡÔñ¡£Macintosh¾ÍûÓйܵÀ£¬ÎÒÃÇ×îϲ»¶µÄUnixÐû´«ÊÖ²áÊÇÕâÑùдµÄ£º
µ«ÊÇ£¬Macintosh²ÉÓõÄÔòÊǽØÈ»Ïà·´µÄÒ»ÖÖÄ£ÐÍ¡£ÏµÍ³²»ºÍ×Ö·ûÁ÷´ò½»µÀ¡£Êý¾ÝÎļþ¾ßÓиü¸ßµÄ²ã´Î£¬×ÜÊǺÍÌØ¶¨µÄ³ÌÐòÏà¹ØµÄ¡£Äãʲôʱºò°ÑÒ»¸ö Mac³ÌÐòµÄÊä³ö´«¸øÁíÒ»¸ö¹ý£¿(Èç¹ûÄÜÕÒµ½¹ÜµÀ·û¶¼ËãÄãÔËÆø)³ÌÐò×Ô³ÉÒ»Ì壬Äã±ØÐë³¹µ×Ã÷°××Ô¼ºÔÚ¸ÉÂïÄØ¡£ÄãÎÞ·¨°ÑMacFooºÍMacBar¸ãµ½Ò»Æð¡£-¡ª Õª×Ô ¡¶UnixÉú»î¡· LibesºÍresslerÖø
ÊÇѽ£¬ÕâЩ¿ÉÁ¯µÄMacÓû§¡£Èç¹ûÎÞ·¨°Ñ×Ö·ûÁ÷ͨ¹ý¹ÜµÀËÄ´¦ÂÒ´«£¬ËûÃÇÔõôÄÜÔÚÎĵµÖвåÈë»æ»³ÌÐòÖÆ×÷µÄͼƬ£¿ÔõôÄܲåÈëÒ»¸ö±í¸ñÎĵµ£¿ÔõôÄܰÑÕâ¸ö¶«Æ´Î÷´Õ³ÉµÄÓõç×ÓÓʼþ·¢³öÈ¥£¿½Óµ½ÒÔºóÓÖÔõôÄÜÎÞ·ìµØ¶ÔËü½øÐÐä¯ÀÀºÍ±à¼£¬Ôٻظ´»ØÈ¥£¿Ã»ÓйܵÀ£¬ÎÒÃDz»ÄÜÏëÏñÕâÒ»ÇÐÔÚ¹ýÈ¥µÄÊ®ÄêÖÐÊÇÈçºÎ±» Macintosh×öµ½µÄ¡£
ÉÏ´ÎÄãµÄUnix¹¤×÷Õ¾ºÍ MacintoshÒ»ÑùÓÐÓÃÊÇʲôʱºò£¿ÉÏ´ÎÄãÄÜÔÚËüÉÏÃæÅܲ»Í¬¹«Ë¾(ÉõÖÁÊÇͬһ¹«Ë¾µÄ²»Í¬²¿ÃÅ)µÄÈí¼þÊÇʲôʱºò£¿¸ü²»ÓÃ˵ÕâЩÈí¼þÄÜ»¥ÏàͨÐÅ¡£Èç¹û UnixÕæ×öµ½ÁËÕâÒ»µã£¬ÄÇÊÇÒòΪMacÈí¼þ¿ª·¢ÉÌÆ´ÁËÀÏÃü°ÑËûÃǵÄÈí¼þÒÆÖ²µ½ÁËUnixÉÏ£¬¼ÄÏ£ÍûÓÚÈÃUnix¿´ÆðÀ´ÏóMacһЩ¡£
UnixºÍMacintosh²Ù×÷ϵͳµÄ¸ù±¾Çø±ðÊÇ£¬UnixÊÇΪȡÔóÌÐòÔ±¶øÉè¼ÆµÄ£¬¶øMacÊÇΪÁËÈ¡ÔÃÓû§¡£(WindowsÒ»ÃÅÐÄ˼ÏëÈ¡ÔõÄÔòÊÇ»á¼Æ£¬²»¹ýÕâÓÐЩÅÜÌâÁË)¡£
Ñо¿±íÃ÷¹ÜµÀºÍÖØ¶¨ÏòÊÇÄÑÓÚʹÓõ쬲»ÊÇÒòΪÏë·¨±¾Éí£¬¶øÊÇÓÉÓÚÆäËæÒâºÍ²»Ö±¹ÛµÄÏÞÖÆ¡£Unix×Ô¼ºµÄÎĵµÔç¾ÍÖ¸Ã÷ÁËÖ»ÓÐUnixËÀµ³²ÅÄÜÌå»á¹ÜµÀµÄÃî´¦¡£
ÈÕÆÚ: thu, 31 Jan 91 14:29:42 EST
·¢ÐÅÈË: Jim Davis <
jrd@media-lib.media.mit.edu>
ÊÕÐÅÈË: UNIX-HATERS
Ö÷Ìâ: Expertise (רҵ֪ʶ)
½ñÌìÔçÉÏÎÒ¶Áµ½¡¶ÈË»ú½Ó¿ÚÔÓÖ¾¡·ÉϵÄһƪÎÄÕ¡¶¼ÆËã»ú²Ù×÷ϵͳרҵ֪ʶ¡·£¬ÊÇStephanie M. DoaneºÍÆäËûÁ½Î»×÷ÕßдµÄ¡£²Â²ÂËûÃÇÑо¿µÄÊÇʲô²Ù×÷ϵͳ£¿Doane¶ÔUnixÐÂÊÖ¡¢ÖÐÊÖºÍר¼ÒµÄ֪ʶºÍ±íÏÖ½øÐÐÁËÑо¿£¬ÏÂÃæÊÇһЩժҪ£º
¡°Ö»ÓÐר¼ÒÄܹ»Ê¹ÓÃUnixÌØÓеÄһЩ¹¦ÄÜ(ÀýÈç¹ÜµÀºÍÖØ¶¨Ïò)À´¹¹ÔìÃüÁî×éºÏ¡±
»»¾ä»°Ëµ£¬UnixµÄÿ¸öй¦ÄÜ(³ýÁËÄÇЩ´ÓÆäËûϵͳÉÏÉú°áÓ²Ì×¹ýÀ´µÄ)¶¼ÊÇÈç´Ë¹ÖÒ죬ÒÔÖÁÓÚ±ØÐë¾¹ý¶àÄêͬÑù¹ÖÒìµÄѧϰºÍʵ¼ù²ÅÄÜÕÆÎÕ¡£
¡°Õâ¸ö·¢ÏÖÓÐЩ³öºõÒâÁÏ£¬ÒòΪÕâЩÕýÊÇUnixµÄ»ù´¡¹¦ÄÜ£¬¶øÇÒÕâЩ¹¦ÄÜÊÇËùÓгõ¼¶¿Î³Ì¶¼»áÉæ¼°µÄ¡±
Ëý»¹ÒýÓÃÁËS. W. DraperµÄһЩÎÄÕ£¬DraperÏàÐÅ£º
¡°ÊÀÉϸù±¾Ã»ÓÐʲôUnixר¼Ò£¬Èç¹ûר¼ÒÖ¸µÄÊÇÕâÑùһЩÈË£¬ËûÃÇÇÁËijרҵµÄËùÓÐ֪ʶ£¬ÎÞÐèÔÙѧϰʲôÁË¡£¡±
ÕâÒ»µãÎÒ²»Äܹ¶Í¬¡£ÔÚѧϰUnix¸÷ÖÖ»ÄÃý¼¼ÊõµÄÕ÷;ÉÏ£¬ÒѾÓÐÎÞÊýÈ˱»¡°Ç¡±ÁË¡£
ÓÐЩ³ÌÐòÉõÖÁ³Ô±¥Á˳ŵģ¬°Ñ¹ÜµÀºÍÎļþÖØ¶¨ÏòÇø±ð¶Ô´ýÁË£º
·¢ÐÅÈË: Leigh L. Klotz <
klotz@adoc.xerox.com>
ÊÕÐÅÈË: UNIX-HATERS
Ö÷Ìâ: | vs. < (|¶Ô<)
ÈÕÆÚ: Thu, 8 Oct 1992 11:37:14 PDT
collard% xtpanel -file xtpanel.out < .login
unmatched braces
unmatched braces
unmatched braces
3 unmatched right braces present
collard% cat .login | xtpanel -file xtpanel.out
collard%
Äã×Ô¼º×ÁÄ¥×ÁÄ¥°É¡£
Find
Unix×îΪ¿Ö²ÀµÄÊÇ£¬²»¹ÜÄã±»Ëü¿ª¹ý¶àÉÙ´ÎÆ°£¬Äã×ÜÊÇû·¨Ê§È¥Öª¾õ¡£Ëü¾ÍÕâô¿ªÀ´¿ªÈ¥£¬Ã»ÍêûÁË¡£
¡ª¡ªPatrick Sobalvarro
ÔÚÒ»¸öÅÓ´óµÄÎļþϵͳÖÐÒÅʧ¸ö°ÑÎļþÊdz£ÓеÄÊÂ(ÏëÏñһϴóº£ÀÌÕë)¡£ÏÖÔÚÓÉÓÚ¸ü´ó¸ü±ãÒ˵ĴÅÅ̵ijöÏÖ£¬PCºÍAppleÓû§Ò²Óöµ½ÁËÕâÑùµÄÎÊÌ⡣ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ϵͳÍùÍùÌṩһ¸öËÑË÷³ÌÐò£¬¸ù¾Ý¸÷ÖÖÌõ¼þ(±ÈÈçÎļþÃû³Æ£¬ÀàÐÍ£¬´´½¨Ê±¼äµÈµÈ)½øÐÐÎļþËÑË÷¡£Apple MacintoshºÍ΢ÈíWindows¶¼Ìṩǿ´ó¡¢·½±ã¡¢Îȶ¨µÄÎļþËÑË÷³ÌÐò¡£ÕâЩËÑË÷³ÌÐòµÄÉè¼ÆÖп¼Âǵ½ÁËÓû§Ï°¹ßºÍÏÖ´úÍøÂç¡£UnixµÄËÑË÷³ÌÐò find¿¼ÂǵÄÔò²»ÊÇÓû§£¬¶øÊÇcpio£¬Ò»¸öUnix±¸·Ý¹¤¾ß¡£FindûÄÜÔ¤¼ûµ½ÍøÂçµÄ´æÔÚºÍÎļþϵͳµÄй¦ÄÜ(Èç·ûºÅÁ´½Ó)£¬¼´Ê¹ÊǾÀúÁË·´¸´Ð޸ģ¬Ëü»¹ÊÇÎÞ·¨ºÜºÃ¹¤×÷¡£ÓÚÊÇ£¬¾¡¹ÜËü¶ÔÓÚÒÅʧÎļþµÄÓû§ÒâÒåÖØ´ó£¬find»¹ÊDz»ÄÜÎȶ¨¡¢Õý³£µÄ¹¤×÷¡£
UnixµÄ×÷ÕßÃÇŬÁ¦ÊÇ find¸úÉÏϵͳÆäËû²¿·ÖµÄ·¢Õ¹£¬µ«Õâ²¢²»ÈÝÒס£½ñÌìµÄfindÓи÷ÖÖÌØÊâµÄÑ¡ÏîÓÃÓÚ´¦ÀíNFSÎļþϵͳ£¬·ûºÅÁ´½Ó£¬Ö´ÐгÌÐò£¬½»»¥Ê½µØÖ´ÐгÌÐò£¬ÉõÖÁÖ±½ÓʹÓÃcpio»òcpio-c¸ñʽ¶ÔÕÒµ½µÄÎļþ½øÐй鵵¡£Sun¹«Ë¾ÐÞ¸ÄÁËfind£¬Ìí¼ÓÁËÒ»¸öºǫ́³ÌÐò½¨Á¢ÏµÍ³ÉÏÿ¸öÎļþµÄË÷ÒýÊý¾Ý¿â£¬ÓÉÓÚÒ»Ð©Ææ¹ÖµÄÀíÓÉ£¬µ±Äã²»¼ÓÈκβÎÊýÖ´ÐÐ"find filename"ʱ£¬Õâ¸öÊý¾Ý¿â±»ÓÃÓÚ½øÐÐËÑË÷£¬(¹»°²È«µÄ£¬Êǰɣ¿) ¼´Ê¹ÓиöÕâô¶àÐÞÐÞ²¹²¹£¬find»¹ÊDz»ÄÜÕý³£¹¤×÷¡£
ÀýÈ磬csh¼ûµ½·ûºÅÁ´½Ó»á˳×Å×ßÏÂÈ¥£¬µ«find²»»á£ºcshÊDz®¿ËÀû(·ûºÅÁ´½ÓµÄ·¢Ô´µØ)µÄ¼Ò»ïÃÇдµÄ£¬¿ÉÊÇfindÊÇ´ÓAT&TµÄÔʼʱ´ú¿ªÊ¼¾ÍÓÐÁË¡£¾ÍÕâÑù£¬¶«Î÷·½µÄÎÄ»¯²îÒ켤ÁÒµØÅöײÁË£¬Ôì³ÉÁ˾޴óµÄ»ìÂÒ£º
ÈÕÆÚ: Thu, 28 Jun 1990 18:14 EDT
·¢ÐÅÈË:
pgs@crl.dec.com
Ö÷Ìâ: more things to hate about Unix (¸ü¶àºÞµÄÀíÓÉ£¬¾ÍÔÚUnix)
ÊÕÐÅÈË: UNIX-HATERS
Õâ¸öÊÇÎÒµÄ×î°®¡£ÎÒÔÚÒ»¸öĿ¼Ï¹¤×÷£¬ÏëÓÃfindÈ¥ÕÒÁíÒ»¸öĿ¼ÀïµÄÎļþ£¬ÎÒÊÇÕâô×öµÄ£º
po> pwd
/ath/u1/pgs
po> find ~halstead -name "*.trace" -print
po>
¿´À´Ã»ÓÐÕÒµ½¡£²»¹ý±ð棬¿´¿´Õâ¸ö£º
po> cd ~halsead
po> find . -name "*.trace" -print
../learnX/fib-3.trace
../learnX/p20xp20.trace
../learnX/fib-3i.trace
../learnX/fib-5.trace
../learnX/p10xp10.trace
po>
ºÙ£¡Îļþ¾ÍÔÚÄÇÀïѽ£¡Ï´ÎÈç¹ûÄãÏëÕÒÒ»¸öÎļþ£¬¼Ç×¡Ëæ»úµ½¸÷¸öĿ¼ÏÂתת£¬Ëµ²»¶¨ÄãÒªµÄÎļþ¾Í²ØÔÚÄÇÀïÄØ¡£UnixÕâ¸ö·ÏÎï¡£
¿ÉÁ¯µÄHalsteadͬ־µÄ/etc/passwd¼Ç¼һ¶¨ÊÇʹÓÃÁË·ûºÅÁ´½ÓÈ¥Ö¸ÏòÁËÕæÕýµÄĿ¼£¬ËùÒÔÓеÄÃüÁ×÷£¬ÓеIJ»¹¤×÷¡£
Ϊʲô²»¸Ä¸Äfind£¬Ò²ÈÃËü˳×Å·ûºÅÁ´½ÓÄØ£¿ÕâÊÇÒòΪÈκÎÒ»¸öÖ¸Ïò¸ßÒ»¼¶Ä¿Â¼µÄ·ûºÅÁ´½Ó¶¼»á°ÑfindÒýÈëËÀÑ»·¡£Òª´¦ÀíÕâÖÖÇé¿öÐèÒª¾«ÐĵÄÉè¼ÆºÍСÐĵÄʵÏÖ£¬ÒÔ±£Ö¤ÏµÍ³²»»áÖØ¸´ËÑË÷ͬһ¸öĿ¼¡£Unix²ÉÓÃÁË×î¼òµ¥µÄ×ö·¨£ºË÷ÐÔ²»´¦Àí·ûºÅÁ´½Ó£¬ÈÃÓû§×Ô¼ºÈ¥¿´×Űì°É¡£
ÁªÍøÏµÍ³±äµÃÔ½À´Ô½¸´ÔÓ£¬ÎÊÌâÒ²Ô½À´Ô½ÄÑÒÔ½â¾öÁË£º
ÈÕÆÚ: Wed, 2 Jan 1991 16:14:27 PST
·¢ÐÅÈË: Ken Harrenstien <
klh@nisc.sri.com>
Ö÷Ìâ: Why find doesn't find anything (ΪʲôfindʲôҲÕÒ²»µ½£¿)
ÊÕÐÅÈË: UNIX-HATERS
ÎÒ¸Õ¸Õ·¢ÏÖΪʲô"find"²»ÔÙ¹¤×÷ÁË¡£
¾¡¹Ü"find"µÄÓï·¨·Ç³£¶ñÐĹÖÒ죬ÎÒ»¹ÔÚÃãÇ¿ÓÃËü£¬ÒÔÃ⼸СʱÅÝÔÚÔÚÃÔ¹¬ËƵÄÎļþĿ¼ÖÐȥѰÕÒÎļþ¡£
ÔÚÕâ¸öÓÐNFSºÍ·ûºÅÁ´½Ó´æÔÚµÄÓ¸ÒÐÂÊÀ½çÀ"find"ûÓÃÁË¡£ÎÒÃÇÕâÀïµÄËùνÎļþϵͳÊÇÓÉÖÚ¶àÎļþ·þÎñÆ÷ºÍ·ûºÅÁ´½Ó×é³ÉµÄÒ»ÍÅÂÒÂ飬"find"ÄĸöÒ²²»ÏëÈ¥´¦Àí£¬ÉõÖÁÁ¬Ñ¡ÏîÒ²²»Ìṩ... ½á¹ûÊÇ´óÁ¿µÄËÑË÷·¾¶±»ÎÞÉùÎÞÏ¢µØºöÂÔÁË¡£ÎÒ×¢Òâµ½ÁËÕâ¸ö£¬ÊÇÔÚÒ»¸öºÜ´óµÄĿ¼ÏÂËÑË÷ʱ½á¹ûÒ»ÎÞËù»ñ£¬×îºó·¢ÏÖÊÇÒòΪÄǸöĿ¼ÊǸö·ûºÅÁ´½Ó¡£
ÎÒ²»Ïë×Ô¼ºÈ¥¼ì²éÿһ¸ö½»¸øfindµÄËÑË÷Ŀ¼¡ª¡ªÕâËûÂèÓ¦¸ÃÊÇfindµÄ¹¤×÷¡£ÎÒ²»Ïëȥÿ´ÎÕâÀàÇé¿ö·¢Éúʱ¶¼ÒªÈ¥µ÷²éÒ»ÏÂϵͳÈí¼þ¡£ÎÒ²»ÏëÀË·Ñʱ¼äÀ´ºÍSUN»òÕßÕû¸öUnixµ³Í½ÃÇ×ö¶·Õù¡£ÎÒ²»ÏëÓÃUnix¡£ºÞ£¬ºÞ£¬ºÞ£¬ºÞ£¬ºÞ£¬ºÞ£¬ºÞ£¬ºÞ¡£
¡ª¡ªKen (¸Ð¾õºÃЩÁË£¬¿É»¹ÊÇÓеãÄÕ)
Èç¹ûÏëд¸ö¸´ÔÓÒ»µãµÄshell½Å±¾¶ÔÕÒµ½µÄÎļþ½øÐд¦Àí£¬½á¹ûÍùÍù»áºÜÆæ¹Ö¡£ÕâÊÇshell´«µÝ²ÎÊý·½Ê½Ëù²úÉúµÄ±¯²Òºó¹û¡£
ÈÕÆÚ: Sat, 12 Dec 92 01:15:52 PST
·¢ÐÅÈË: Jamie Zawinski <
jwz@lucid.com>
Ö÷Ìâ: Q: what's the opposite of 'find?' A: 'lose'
(ÎÊÌ⣺'find'µÄ·´Òå´ÊÊÇʲô£¿ ´ð°¸£º¶ªÊ§)
ÊÕÐÅÈË: UNIX-HATERS
ÎÒÏëÕÒ³öÒ»¸öĿ¼ÏµÄËùÓеÄûÓжÔÓ¦.elcÎļþ´æÔÚµÄ.elÎļþ¡£ÕâÓ¦¸Ã²»Ì«ÄÑ£¬ÎÒÓõÄÊÇfind.
²»¹ýÎÒ´íÁË¡£
ÎÒÏÈÊÇÕâô¸ÉµÄ£º
% find . -name '*.el' -exec 'test -f {}c'
find: incomplete statement
àÞ£¬ÎÒ¼ÇÆðÀ´ÁË£¬ËüÐèÒª¸ö·ÖºÅ¡£
% find . -name '*.el' -exec 'test -f {}c';
find: Can't execute test -f {}c:
No such file or directory
ÕæÓÐÄãµÄ£¬¾¹È»Ã»È¥½âÎöÕâ¸öÃüÁî¡£
% find . -name '*.el' -exec test -f {}c ;
ß×£¬ËƺõʲôҲû×ö...
% find . -name '*.el' -exec echo test -f {}c ;
test -f c
test -f c
test -f c
test -f c
....
Ã÷°×ÁË¡£ÊÇshell°Ñ´óÀ¨ºÅ¸øÕ¹¿ªÁË¡£
% find . -name '*.el' -exec test -f '{}'c ;
test -f {}c
test -f {}c
test -f {}c
test -f {}c
àÅ£¿Ò²ÐíÎҼǴíÁË£¬{}²¢²»ÊÇfindʹÓõÄÄǸö¡°Ìæ»»³ÉÕâ¸öÎļþÃû¡±µÄ·ûºÅ¡£ÕæµÄô£¿...
% find . -name '*.el'
-exec test -f '{}' c ;
test -f ./bytecomp/bytecomp-runtime.el c
test -f ./bytecomp/disass.el c
test -f ./bytecomp/bytecomp.el c
test -f ./bytecomp/byte-optimize.el c
....
ร¬ÔÀ´Èç´Ë¡£ÏÂÃæ¸ÃÔõô°ìÄØ£¿ÎÒÏ룬ÎÒËÆºõ¿ÉÒÔÊÔÊÔ"sed..."
¿ÉÎÒÍü¼ÇÁËÒ»¸öÉî¿ÌµÄÕÜÀí£º¡°µ±Óöµ½Ò»¸öUnixÎÊÌâµÄʱºò£¬ÓеÄÈË»áÏë¡®ÎÒ¶®£¬ÎÒ¿ÉÒÔÊÔÊÔsed.¡¯ÕâÏÂËûÃÇÓÐÁ½¸öÎÊÌâÈ¥¶Ô¸¶ÁË¡£¡±
ÊÔÑéÁËÎå´Î£¬ÔĶÁÁËsedÊÖ²áÁ½±é£¬Îҵõ½ÁËÕâ¸ö£º
% echo foo.el | sed 's/$/c/'
ÓÚÊÇ£º
% find . -name '*.el'
-exec echo test -f `echo '{}'
| sed 's/$/c'` ;
test -f c
test -f c
test -f c
....
OK, ¿´À´Ö»ÄÜÈ¥ÊÔÊÔËùÓÐshellÒýÓõÄÅÅÁÐ×éºÏÁË£¬×Ü»áÓÐÒ»¿îºÍÎÒÒâ°É£¿
% find . -name '*.el'
-exec echo test -f "`echo '{}'
| sed 's/$/c'`" ;
Variable syntax.
% find . -name '*.el'
-exec echo test -f '`echo "{}"
| sed "s/$/c"`' ;
test -f `echo "{}" | sed "s/$/c"`
test -f `echo "{}" | sed "s/$/c"`
test -f `echo "{}" | sed "s/$/c"`
....
àË£¬×îºóÒ»¸öËÆºõÓÐÏ·¡£ÎÒÖ»ÐèÒªÕâô¸Éһϣº
% find . -name '*.el'
-exec echo test -f '`echo {}
| sed "s/$/c"`' ;
test -f `echo {} | sed "s/$/c"`
test -f `echo {} | sed "s/$/c"`
test -f `echo {} | sed "s/$/c"`
....
±ð¼±£¬ÕâÊÇÎÒÏëÒªµÄ£¬¿ÉÊÇÄãΪʲô²»°Ñ{}Ìæ»»³ÉÎļþÃûÄØ£¿ÄãÔÙ×Ðϸ³ò³ò£¬{}Á½±ß²»ÊÇÓпոñô£¿Ä㾿¾¹ÏëҪʲô£¿
Ŷ£¬µÈµÈ¡£ÄǸö·´µ¥ÒýºÅ¼äµÄÒýÓñ»µ±³ÉÁËÒ»¸öÔªËØ¡£
»òÐíÎÒÄÜÓÃsed°ÑÕâ¸ö·´µ¥ÒýºÅ¹ýÂ˵ô¡£àÅ£¬Ã»Ï·¡£
ÓÚÊÇÎÒÓÃÁ˰ë·ÖÖÓÈ¥ÏëÈçºÎÄÜÔËÐÐ"-exec sh -c..."Ö®ÀàµÄ¶«Î÷£¬ÖÕÓÚ³öÏÖÁËÊï¹â£¬Ð´ÁËÒ»¶Îemcas-lisp´úÂëÈ¥×öÕâ¼þÊ¡£Õâ²»À§ÄÑ£¬Í¦¿ìµÄ£¬¶øÇÒ¹¤×÷ÁË¡£
ÎÒÕæ¸ßÐË¡£ÎÒÒÔΪһÇж¼¹ýÈ¥ÁË¡£
½ñÌìÔçÉÏÎÒÏ´ÔèµÄʱºòͻȻÏëµ½ÁËÁíÒ»ÖÖ×ö·¨¡£ÎÒÊÔÁËÒ»´ÎÓÖÒ»´Î£¬ÉîÉî×¹ÈëÁËËýµÄÇéÍø£¬ÒâÂÒÇéÃÔ£¬ÎÞ·¨×԰Ρ£×íÁË¡£Ö»Óк±ÅµËþµÄScribeʵÏÖÔø¸ø¹ýÎÒÕâÑùµÄ¿ì¸Ð¡£ÎÒ½öÊÔÁË12´Î¾ÍÕÒµ½Á˽ⷨ¡£¶ÔÓÚÿ¸ö±éÀúµ½µÄÎļþËüÖ»²úÉúÁ½¸ö½ø³Ì¡£Õâ²ÅÊÇUnixÖ®µÀ£¡
% find . -name '*.el' -print
| sed 's/^/FOO-/'|
sed 's/$/; if [ ! -f ${FOO}c]; then
echo $FOO; fi/' | sh
BWAAAAAHH HAAAAHH HAAAAHH HAAAAHH HAAAAHH HAAAAHH HAAAAHH HAAAAHH!!!!
¡ªJamie
OK, ÔÚÏÂË®µÀÀïÍæ×½ÃÔ²ØÍ¦ÓÐÒâ˼µÄ°É£¿µÚ8Õ¾ÍÔÚ»¶ÉùЦÓïÖÐÕâô½áÊøÁË¡£Ï»ØÊéÎÒÃǾÍÒª¿ªÊ¼±à³ÌÁË£¬»¹¼ÇµÃСʱºòÄǸö¿É°®ÃÔÈ˵Ļ¤Ê¿°¢ÒÌÊÇÔõô¶ÔÄã˵µÄô£¿
¡°Å£Å£±ðÅ£¬²»Ì۵ġ£¡±