SHELL - ¨Ï³B²zµ{§Çªº¼u©Ê§ó¤j

echo

¡i¥\¯à¡j

²£¥Í°T®§¨ì¼Ð·Ç¿é¥X

¡i»yªk¡j

echo [arg] ...
echo -n [arg]

¡i»¡©ú¡jecho «ü¥O·|±N¨C­Ó arg ªº¤º®e¥HªÅ¥Õ¦r¤¸¤À¹j¡A¨Ã¥[¤W´«¦æ¦r¤¸¡]new-line¡^«á°e¨ì¼Ð·Ç¿é¥X¡C

±`¥Î¨ÓÀˬdÀô¹ÒÅܼƪº¤º®e¡A©Î¬O²£¥Í°T®§«á­«·s¾É¦Vµ¹§Oªº©R¥O¡C¥t¥~¦b arg ¤¤¥i¨Ï¥Î¤U­±ªº¯S®í²Å¸¹¨Ó²£¥Í«ü©wªº¦r¤¸¡G

\b °h®æ²Å¸¹¡]backspace¡^
\c ¦b¿é¥X®É¡A¤£¥[¤W´«¦æ¦r¤¸
\f ´«­¶¦r¤¸¡]form-feed¡^
\n ´«¦æ¦r¤¸¡]new-line¡^
\r Âk¦ì¦r¤¸¡]carriage return¡^
\t ¸õ®æ¦r¤¸¡]tab¡^
\v ¤ô¥­¸õ®æ¦r¤¸¡]vertical tab¡^
\\ ­Ë±×½u¡]backslash¡^
\0n n ¬O1¨ì3­Ó8¶i¦ì¼Æ¡A¥NªíASCII½Xªº¦r¤¸

¡i¿ï¶µ¡j

¿ï ¶µ

»¡ ©ú

-n

¿é¥X®É¤£¥[¤W´«¦æ¦r¤¸¡C

¡¹µù¡G©Ò¦³ªº¿ï¶µ¬O¦b SVR4 ª©¥»®É¤~¶}©l´£¨Ñ¡C

¡i½d¨Ò¡j

1. ¦L¥X°T®§¡G

$ echo test data
test data
$ echo 'test data'
test data

²Ä¤@­Ó echo «ü¥O¤¤ªº¤Þ¼Æ¥Ñ©ó¨S¦³¨Ï¥Î¤Þ¸¹±N¦r¦ê¥]§t¡A©Ò¥H¦b¦L¥X®É·|±N¤G­Ó¤Þ¼Æ test¡Bdata ¥u¥H¤@­ÓªÅ¥Õ¦r¤¸¤À¹j¡F²Ä¤G­Ó echo «ü¥O«h¨Ï¥Î¤Þ¸¹¡A©Ò¥H¥uµø¬°¤@­Ó¤Þ¼Æ¦L¥X¡C

2. ¦L¥XÀô¹ÒÅܼơG

$ echo $HOME
/etc/eric

¦L¥Xªºµ²ªG¬°¨Ï¥ÎªÌ©Ò³]©wªºÀô¹ÒÅÜ¼Æ $HOME¡A·|¦]¨Ï¥ÎªÌªº¤£¦P¦Ó¨Ïµ²ªG¬Û²§¡C

3. ¦L¥X°T®§¡G

$ echo "\tComputer\n\tSystem"
Computer
System

¦b¤Þ¼Æ¤¤¨Ï¥Î¤F '\t' ¤Î '\n' ¯S®í²Å¸¹¡A¤À§O¥Nªí¸õ®æ¦r¤¸¤Î´«¦æ¦r¤¸¡C

shl¡]shell layer manager¡^

¡i¥\¯à¡j

¥i¦b¤@­Ó²×ºÝ¾÷¤W°õ¦æ¦h­Ó¥æ½Í¦¡ªºµ{¦¡

¡i»yªk¡j

shl

¡i»¡©ú¡j

shl ´£¨Ñ¤F¤@­Ó«K§Qªº¥\¯à¡AÅý¦h­Ó¥æ½Í¦¡µ{¦¡¥i¦b¦P¤@­Ó²×ºÝ¾÷¤W°õ¦æ¡C·íµM¡A¨C¦¸¨Ï¥ÎªÌ¥u¯à»P¨ä¤¤¤§¤@¶i¦æ¥æ½Í¡A³B²zÁä½LªºÅª¨ú¤Î¿Ã¹õªº¿é¥X¡A¦Ó¨ä¥Lªºµ{¦¡«h¥ý¼È°±¿é¥X¤Jªº³B²z¡A¨Ò¦p¥i°õ¦æ¦h­Ó vi¡]¿Ã¹õ½s¿èµ{¦¡¡^«ü¥O¡A¨Ï¥ÎªÌ¥i«ü©w³B²z¨ä¤¤ªº¤@­Ó¡C

¦b¶i¤J shl «ü¥O«á¡A´£¥Ü²Å¸¹¬° '>>>'¡A§Ú­ÌºÙ¤§¬°°õ¦æ°ÏºÞ²z¼Ò¦¡¡A¦b¦¹¼Ò¦¡¤U¥i¨Ï¥Î create¡Bdelete µ¥©R¥O¨ÓºÞ²z¦U°Ïªºª¬ºA¡C¨C­Ó°õ¦æ°Ï·|¨Ï¥Î¤@­Ó¬Û¹ïÀ³ªºµêÀÀ²×ºÝ¾÷¡]/dev/sxt???¡^¡A¶i¤J°õ¦æ°Ï«á­Y­n¦^¨ì°õ¦æ°ÏºÞ²z¼Ò¦¡¡A«h¥i«ö¤U <Ctrl-Z> Áä¡C

¡i©R¥O¡j

©R ¥O

»¡ ©ú

create [name]

«Ø¥ß¤@­Ó¦WºÙ¬° name ªº°õ¦æ°Ï¡A­YµL¤Þ¼Æ®É¡A«h¥H¹w³]ªº (1)¡B(2)¡B...¡B(7) °µ¬°¦WºÙ¡A³Ì¦h¥i¦P®É¦s¦b 7 ­Ó°õ¦æ°Ï¡C¶i¤J°õ¦æ°Ï«á¥i¬Ý¨ì´£¥Ü²Å¸¹¬°¸Ó°õ¦æ°Ïªº¦WºÙ¡A±µµÛ¥i¨Ï¥Î¤@¯ë UNIX ¨t²Îªº«ü¥O¡C

block name

[name...]

¼È°±¦WºÙ¬° name °õ¦æ°Ï¤¤µ{¦¡°õ¦æªºµ²ªG¿é¥X¡C

delete name

[name...]

§R°£¦WºÙ¬°name ªº°õ¦æ°Ï¤Î°±¤î¸Ó°Ï¤º°õ¦æªºµ{¦¡¡]¨C­Óµ{¦¡³£·|¦¬¨ì SIGHUP ªº°T¸¹¡^¡C

help¡]©Î ?¡^

¦L¥X°õ¦æ°ÏºÞ²z¼Ò¦¡¤U¥i¨Ï¥Îªº©R¥O¥H¤Î»yªk¡C

layers [-l]

[name]

¦C¥X¦U°õ¦æ°Ïªºª¬ºA©Î¥u¦C¥X«ü©wªº name°õ¦æ°Ïªºª¬ºA¡C

­Y¬O¥[¤W¿ï¶µ -l¡A«h·|¥H ps -f «ü¥Oªº¿é¥X¡A¦L¥X¬ÛÃöªº¸ê®Æ¡C

resume [name]

¶i¤J«ü©wªº name °õ¦æ°Ï¡C

toggle

¶i¤J¤W¤W¦¸Â÷¶}ªº°õ¦æ°Ï¡C

unblock name

[name...]

¨Ï³Q¼È°±¿é¥Xªº°õ¦æ°Ï«ì´_¿é¥X¡C

quit

µ²§ô shl «ü¥Oªº°õ¦æ¡C

¨C­Ó°õ¦æ°Ï¤ºªºµ{¦¡·|¦¬¨ì SIGHUP ªº°T¸¹¡C

name

¶i¤Jname °õ¦æ°Ï¡AÄ~Äò³B²z¨ä°õ¦æªºµ{¦¡¡C

¡i½d¨Ò¡j

1. ¨Ï¥Î½d¨Ò¡G

¡@

$ shl
>>> create OR
OR sort <x >x.new
<Ctrl-Z>
>>> create
¡]2¡^¡]sleep 600; echo 'testing'¡^&
235
¡]2¡^<Ctrl-Z>
>>> layers
OR¡]232¡^executing or awaiting input
¡]2¡^¡]234¡^executing or awaiting input
>>> toggle
resuming OR
OR ps
PID TTY TIME COMD
232 sxt/001 0 : 00 sh
234 sxt/001 0 : 00 ps
OR <Ctrl-Z>
>>> help
block name [name ...]
create [name]
delete name [name ...]
help or ?
layers [-l] [name ...]
quit
toggle
resume [name]
unblock name [name ...]
>>> quit

¶i¤J shl «ü¥O«á¡A­º¥ý¥Î create ©R¥O«Ø¥ß OR °õ¦æ°Ï¡A±µµÛ¥i¦b OR °õ¦æ°Ï¤U sort ©R¥O¡A«ö   <Ctrl-Z> Áä¤S¦^¨ì°õ¦æ°ÏºÞ²z¼Ò¦¡¡]´£¥Ü²Å¸¹¬° '>>>'¡^¡C

layers©R¥O¬O±N¦U°õ¦æ°Ï¦C¥X¡A¨Ã±N¦U°õ¦æ°Ï¤º³B²zµ{§ÇÃѧO½X©M°õ¦æªºª¬ºA¦L¥X¡C

toggle ©R¥O¬O¶i¤J¤W¤W¦¸ªº°õ¦æ°Ï¡A¦b³oùؤW¦¸ªº°õ¦æ°Ï¬O«ü¡]2¡^°õ¦æ°Ï¡A¤W¤W¦¸ªº°õ¦æ°Ï¬O«ü OR °õ¦æ°Ï¡C¦b¶i¤J«á¨Ï¥Î ps «ü¥O¬d¸ß¥Ø«e¦b¸Ó°õ¦æ°Ï¦³¨º¨Ç³B²zµ{§Ç¡A¥i¬Ý¨ì°£¤F sh «ü¥O¥~¥u¦³ ps «ü¥O¥»¨­¡C³o¤G­Ó«ü¥O©ÒÄݪº²×ºÝ¾÷¬O sxt/001¡A¬O¬°µêÀÀªº²×ºÝ¾÷¡A¬G¤£·|ª½±µ±N¿é¥X°e¨ì¨Ï¥ÎªÌªº¿Ã¹õ¤W¡C

sleep

¡i¥\¯à¡j

°±¤î°õ¦æ¤@¬q®É¶¡

¡i»yªk¡j

sleep time

¡i»¡©ú¡j

sleep «ü¥O·|¼È°±°õ¦æ time ¬í¡A±`¥Î¨Ó©µ¿ð¥t¤@¥ó¤u§@ªº°õ¦æ

¡i½d¨Ò¡j

1. ©µ¿ð¤@¥ó¤u§@ªº°õ¦æ¡G

¡]sleep 120;echo 2 minutes¡^&

¨Ï echo ³o­Ó«ü¥O¦b 120 ¬í¤§«á¤~·|°õ¦æ¡C

test

¡i¥\¯à¡j

´ú¸ÕÀɮתº«¬ºA©Î¬OÀˬd¦r¦ê¡B¼Æ­Èªº¤j¤p

¡i»yªk¡j

test expr [ expr ]

¡i»¡©ú¡j

test «ü¥O·|¥h´ú¸Õ expr ¤¤ªºµ²ªG¡A­Y expr ¤¤ªº¹Bºâ¦¡¦¨¥ß¡A«h¶Ç¦^­È¬O 0¡]true¡^¡A§_«h¶Ç¦^­È¬°«D 0 ªº­È¡]false¡^¡F­Ytest «ü¥O«á¨S±µ expr ¹Bºâ¦¡¡A«h¶Ç¦^­È¬O 0¡]true¡^¡Ctest ¸û±`¦b shell ªº script ¤¤¨Ï¥Î¡A»P if¡Bwhile µ¥©R¥O°t¦X¡A¥t¥~¥i¥H¥u¥Î¤è¬A¸¹¦b expr «e«á¬A¦í¡A¦Ó¬Ù²¤ test ¦r¦ê¡C

¡i¿ï¶µ¡j

¿ï ¶µ

»¡ ©ú

-r file (readable)

­YÀÉ®× file ¦s¦b¥B¥i¥HŪ¨ú¸ê®Æ«h¦¨¥ß¡C

-w file (writable)

­YÀÉ®× file ¦s¦b¥B¥i¥H¼g¤J¸ê®Æ«h¦¨¥ß¡C

-x file (executable)

­YÀÉ®× file ¦s¦b¥B¬°°õ¦æÀÉ«h¦¨¥ß¡C

-f file (file)

­YÀÉ®× file¦s¦b¥B¬°¤@¯ëªºÀɮ׫h¦¨¥ß¡C

-d file (directory)

­YÀÉ®× file ¦s¦b¥B¬°¥Ø¿ý«h¦¨¥ß¡C

-h file

­YÀÉ®× file ¦s¦b¥B¬°²Å¸¹³s±µÀÉ«h¦¨¥ß¡C¦¹¿ï¶µ¥i»P¨ä¥L¿ï¶µ°t¦X¨Ï¥Î¡A°£¤F-L ¿ï¶µ¥~¡C

-c (character)

­YÀÉ®× file ¦s¦b¥B¬°¦r¤¸¯S®íÀÉ«h¦¨¥ß¡C

-b (block) ­YÀÉ®× file ¦s¦b¥B¬°°Ï¶ô¯S®íÀÉ«h¦¨¥ß¡C
-p (pipe) ­YÀÉ®× file ¦s¦b¥B¬°¤@©R¦Wªº pipe ÀÉ¡]fifo¡^¡C
-u (UID) ­YÀÉ®× file ¦s¦b¥B³]©w¨Ï¥ÎªÌÃѧO½X¦ì¤¸¦³±Ò°Ê«h¦¨¥ß¡C
-g (GID) ­YÀÉ®× file ¦s¦b¥B³]©w¸sÃѧO½X¦ì¤¸¦³±Ò°Ê«h¦¨¥ß¡C
-k (sticky) ­YÀÉ®× file ¦s¦b¥B sticky ¦ì¤¸¦³³]©w«h¦¨¥ß¡C
-s (size)

­YÀÉ®× file ¦s¦b¥BÀɮתº¤j¤p¤£¬° 0 «h¦¨¥ß¡C

-t [fildes] (terminal)

­YÀÉ®×´y­z½s¸¹ fildes ¬O»P²×ºÝ¾÷¬ÛÃöÁp«h¦¨¥ß¡C

-z s1 (zero)

­Y¦r¦ê s1 ªºªø«×¬° 0 «h¦¨¥ß¡C

-n s1 (non-zero)

­Y¦r¦ê s1 ªºªø«×¤£¬° 0 «h¦¨¥ß¡C

s1=s2

­Y¦r¦ê s1¡Bs2 ªø«×¬Û¦P«h¦¨¥ß¡C

s1!= s2

­Y¦r¦ê s1¡Bs2 ªø«×¤£¬Û¦P«h¦¨¥ß¡C

s1

­Y¦r¦ê s1 ¤£¬OªÅ¦r¦ê«h¦¨¥ß¡C

n1 -eq n2

­Y¾ã¼Æ n1¡Bn2 ªº¼Æ­È¬Û¦P«h¦¨¥ß¡C

n1 -ne n2

­Y¾ã¼Æ n1 ªº¼Æ­È»P n2 ªº¼Æ­È¤£¬Û¦P«h¦¨¥ß¡C

n1 -gt n2

­Y¾ã¼Æ n1 ªº¼Æ­È¤j©ó n2 ªº¼Æ­È«h¦¨¥ß¡C

n1 -ge n2

­Y¾ã¼Æ n1 ªº¼Æ­È¤j©ó©Îµ¥©ó n2 ªº¼Æ­È«h¦¨¥ß¡C

n1 -lt n2

­Y¾ã¼Æ n1 ªº¼Æ­È¤p©ó n2 ªº¼Æ­È«h¦¨¥ß¡C

n1 -le n2

­Y¾ã¼Æ n1 ªº¼Æ­È¤p©ó©Îµ¥©ó n2 ªº¼Æ­È«h¦¨¥ß¡C

-L file

­YÀÉ®× file ¦s¦b¥B¬°²Å¸¹³s±µÀÉ«h¦¨¥ß¡C¦¹¿ï¶µ¥i»P¨ä¥L¿ï¶µ°t¦X¨Ï¥Î¡A°£¤F -h ¿ï¶µ¨Ò¥~¡C

¡¹µù¡G¿ï¶µ -k ¬O¦b SVR3 ª©¥»®É¤~¶}©l´£¨Ñ¡C

¿ï¶µ -h¡B-s¡B-L ¬O¦b SVR4 ª©¥»®É¤~¶}©l´£¨Ñ¡C

¤W­±¦U­Ó¿ï¶µ¥iµ²¦XÅÞ¿è¹Bºâ¨Ó¹F¦¨©Ò»Ý­nªº¥\¯à¡G

!

ªí not ¹Bºâ¡A±N¿ï¶µ¤¤©Ò²£¥Íªºµ²ªG¬Û¤Ï¡C

¨Ò¦p¡G!-r data ¬Oªí¥ÜÀɮצs¦b¥B¥iŪ¨ú®É«h¤£¦¨¥ß¡C

-a

ªí and ¹Bºâ¡A±N«e«á 2 ­Ó¿ï¶µªºµ²ªG¥H and ¹Bºâµ²¦X¡C

¨Ò¦p¡G-x sun -a -x moon ¬Oªí¥ÜÀÉ®×sun ¤Î moon ³£¦s¦b¥B¬°¥i°õ¦æÀɮɤ~¦¨¥ß¡C

-o

ªí or ¹Bºâ¡A±N«e«á 2 ­Ó¿ï¶µµ²ªG¥H or ¹Bºâµ²¦X¡C

¨Ò¦p¡G-x sun -o -x moon ¬Oªí¥ÜÀÉ®× sun ¤Î moon ¥u­n¦³¤@­ÓÀɮצs¦b¥B¬°¥i°õ¦æÀÉ´N¦¨¥ß¡C

(expr) ¥Î¥H§ïÅܤW­± 3 ­Ó¹Bºâªº³B²z¶¶§Ç¡A¹w³]ªº³B²z¶¶§Ç¬°¡]¡^¡B!¡B-a¡B-o¡C

¡i¶Ç¦^­È¡j

0 ¡Ð ´ú¸Õ±ø¥ó¦¨¥ß
«D0 ¡Ð ´ú¸Õ±ø¥ó¤£¦¨¥ß

¡i½d¨Ò¡j

1. ÀˬdÀɮ׬O§_¦s¦b¡G

if [ -f numerical ]; then echo file exists; fi

-f ¿ï¶µ¬O¥Î¨ÓÀˬd file ¬O§_¬°¤@¯ëÀɮסA­Y¬O¦¨¥ß«h¶Ç¦^­È¬O 0¡A¦]¦¹·|Ä~Äò°õ¦æ echo «ü¥O¡A¦L¥X 'file exists' ¦r¦ê¡C

2. ÀˬdÀô¹ÒÅܼƪº­È¡G

$ DIR='pwd'
$ if [ $DIR=$HOME ]
> then
> echo HOME DIRECTORY
> fi
HOME DIRECTORY

$DIR ©Ò¶Ç¦^ªº­È¬O pwd «ü¥Oªº¿é¥Xµ²ªG¡A´N¬O¥Ø«eªº¤u§@¥Ø¿ý¡A¦Ó $HOME «h¬O¨ú¥XÀô¹ÒÅܼƪº­È¡A­Y¦¹¤GªÌªº¤º®e¬Û¦P¡A«h·|¦L¥X 'HOME DIRECTORY' ªº¦r¦ê¡C

wait

¡i¥\¯à¡j

µ¥«Ý¥þ³¡©Î«ü©wªº³B²zµ{§Ç°õ¦æµ²§ô

¡i»yªk¡j

wait [n]

¡i»¡©ú¡j

wait «ü¥O¥i¨Ï shell ¼È°±°õ¦æ¡Aª½¨ì«ü©wÃѧO½X¬° n ªº³B²zµ{§Ç°õ¦æ§¹²¦©Î¬O©Ò¦³ªº¹õ«á³B²zµ{§Ç°õ¦æ§¹²¦«á¤~Ä~Äò shell ªº³B²z¤u§@¡Cshell ·|¥h°õ¦æ wait «ü¥O¦Ó¤£·|²£¥Í¥t¤@­Ó·sªº³B²zµ{§Ç¡C

¡i½d¨Ò¡j

1. µ¥«Ý«ü©wªº³B²zµ{§Ç°õ¦æµ²§ô¡G

$ sort <math >research &
357
$ wait 357