| | mp3 de dàng 'àn cún qǔ dàng 'àn cún qǔ zhǐ mp3 běn shēn chú liǎo cún chǔ mp3 yīnyuè zhī wài, shì fǒu hái kě yǐ zuò wéi yí dòng cún( u pán) shǐ yòng, zhè yàng kě yǐ jìn xíng gè zhǒng gé shì wén jiàn de xià zài、 shàng chuán, yě kě yǐ zài yìng dié lǐ cún fàng jiǎn bào、 zhào piàn、 wén jiàn yǐ jí shù mǎ yǐngpiān děng děng。
cún chǔ: fēn chéng wú qū hé yòu qū xíng liǎng zhǒng。 dà bù fēn mp3 chū yú bǎn quán bǎo hù de kǎo lǜ, yào qiú shǐ yòng zì dài de guǎn lǐ chéng xù shí xiàn mp3 jī hé diàn nǎo jiān de wén jiàn shàng chuán、 xià zài。 xiàn zài chū de mp3 yī bān duì fēi yīnyuè gé shì de wén jiàn dū zhī chí dàng 'àn guǎn lǐ, jiù shì kě yǐ shí xiàn zhè xiē wén jiàn de shàng chuán、 xià zài。 ér shì fǒu xū yào 'ān zhuāng qū dòng, zhǐ yǐng xiǎng jù tǐ shǐ yòng huán jìng héng héng rú guǒ shì gù dìng diàn nǎo, jí biàn yòu qū de yě wú suǒ wèi; rú guǒ shì jīng cháng zài bù tóng diàn nǎo jiān zhuǎn yí wén jiàn de, dāng rán tuī jiàn wú qū xíng de liǎo, bì jìng miǎn chú liǎo 'ān zhuāng guǎn lǐ chéng xù de fán nǎo( zhè lǐ de wú qū yě shì xiāng duì win98 hòu de cāo zuò xì tǒng 'ér yán)。
duì yú mp3 de dàng 'àn cún qǔ gōng néng lái shuō, windows98 jí 98 yǐ xià de cāo zuò xì tǒng xū yào 'ān zhuāng suí jī de qū dòng chéng xù; ér windows2000、 xp、 me děng xì tǒng bù xū yào 'ān zhuāng qū dòng chéng xù, xì tǒng jiù huì zì dòng shí bié。 perl de dàng 'àn cún qǔ
dàng 'àn xì tǒng zài xiě chéng shì shí shì fēi cháng zhòng yào de yī gè bù fèn, yóu qí duì yú perl de shǐ yòng zhě lái shuō, yīn wéi perl néng gòu chǔlǐ dà liàng 'ér qiě fù zá de zī liào, suǒ yǐ jīng cháng bèi ná lái zuò wéi unix zuò yè xì tǒng de guǎn lǐ gōng jù, yóu qí duì yú unix-like xì tǒng guǎn lǐ yuán 'ér yán, zài jìn xíng xì tǒng rì zhì de guǎn lǐ shí, cún qǔ dàng 'àn, dú qǔ dàng 'àn nèi róng bìng jiā yǐ fēn xī jiù shì zuì jī běn de bù fèn。 dāng rán, nǐ hái kě néng jìn xíng mù lù de xiū gǎi, dàng 'àn quán xiàn de wéi hù děng děng gēn xì tǒng yòu mìqiè guān xì de cāo zuò。
10.1 dàng 'àn dài hào (filehandle)
dāng nǐ de perl xiǎng yào tòu guò zuò yè xì tǒng jìn xíng dàng 'àn cún qǔ shí, kě yǐ lì yòng dàng 'àn dài hào qǔ dé hé dàng 'àn jiān de jìjié, jiē xià lái de cāo zuò jiù shì tòu guò zhè gè dàng 'àn dài hào hé shí tǐ de dàng 'àn jiànjìn xíng gōu tōng。 yě jiù shì shuō, wǒ men yào jìn xíng dàng 'àn cāo zuò shí, kě yǐ xiān dìng yì xiāng duì yìng shí tǐ dàng 'àn de dài hào, yǐ biàn wǒ men yòng gèng jiǎn biàn de fāng shì duì dàng 'àn jìn xíng cún qǔ。
ér suǒ wèi de dàng 'àn dài hào qí shí jiù shì yóu shǐ yòng zhě zì xíng mìng míng, bìng qiě yòng lái gēn shí tǐ dàng 'àn jìn xíng lián jié de míng chēng, tā de mìng míng guī zé hái shì yǐ xún perl de mìng míng guī zé, dà jiā duì yú zhè gè guī zé yīnggāi xiāng dāng shú xī liǎo, bù guò wǒ men hái shì zài cì tí xǐng yī xià: kě yǐ shù zì, zì mǔ jí dǐ xiàn zǔ chéng, dàn shì bù néng yǐ shù zì zuò wéi kāi shǐ。 ér qiě yī bān lái shuō, wǒ men jīhū dū xí guàn yǐ quán bù dà xiě lái zuò wéi dàng 'àn dài hào, yīn wéi dàng 'àn dài hào bìng bù xiàng qí tā biàn shù, huì shǐ yòng mǒu xiē fú hào zuò wéi shí bié, suǒ yǐ jīhū yuē dìng chéng sú de quán bù dà xiě xí guàn yě shì yòu cún zài de dào lǐ。
dāng rán, nǐ yě kě yǐ yǐ zhào zì jǐ de xí guàn lái wéi dàng 'àn dài hào mìng míng ( zhù yī ), zhè biǎo shì suǒ wèi de quán bù dà xiě jué duì bù shì yī zhǒng tiě lǜ, jiù xiàng perl chéng shì yǔ yán běn shēn, xī wàng yǐ zuì shǎo de xiàn zhì lái jìn xíng chéng shì shè jì de gōng zuò。
10.2 yù shè de dàng 'àn dài hào
duì yú dàng 'àn de shū chū, shū rù 'ér yán, qí shí jiù gēn píng cháng shí hòu, nǐ lì yòng perl zài jìn xíng qí tā de cāo zuò fēi cháng jiē jìn, yòu shí hòu zhǐ shì shū chū dào bù tóng de méi jiè shàng。 suǒ yǐ perl qí shí yǐ jīng yù dìng liǎo jǐ zhǒng dàng 'àn dài hào, ràng nǐ bù xū yào měi cì xiě perl de chéng shì jiù bì xū qù chóngxīn dìng yì zhè xiē dài hào, hěn xiǎn rán de, jīhū dà bù fèn de chéng shì dū huì xū yào zhè xiē dàng 'àn dài hào。
zhè liù gè yù shè de dàng 'àn dài hào fēn bié shì: stdin, stdout, stderr, data, argv, argout, kàn qǐ lái xiāng dāng shú xī bā? méi cuò, yīn wéi hěn duō shí hòu, wǒ men qí shí jiù shì kào zhè xiē yù shè de dàng 'àn dài hào zài jìn xíng chéng shì de shū chū, shū rù。 zhǐ shì wǒ men hái méi yòu liǎo jiě zhè xiē qí shí jiù shì dàng 'àn dài hào。 huàn gè jiǎo dù lái kàn, qí shí jí shǐ wǒ mendōu bù zhī dào tā men shì yù shè de dàng 'àn dài hào, wǒ men jiù néng yùn zuò zì rú, nà me duì yú dàng 'àn dài hào de shǐ yòng xiǎn rán jiù bù shì tài nán。 bù guò, wǒ men hái shì yào zài lái kàn kàn zhè liù gè perl yù shè de dàng 'àn dài hào。 qí zhōng yòu xiē wǒ men yǐ jīng shǐ yòng guò liǎo, wǒ men jiù xiān duì qí zhōng jǐ gè yù shè de dàng 'àn dài hào lái jìn xíng jiè shào:
stdin: zhè yě jiù shì wǒ men cháng kàn dào de “ biāo zhǔn shū rù zhuāng zhì ”, dāng perl kāi shǐ zhí xíng shí, tā yù shè jiē shòu de wài bù zī xùn jiù shì cóng zhè lǐ 'ér lái。 jiù xiàng wǒ men zhī qián céng jīng kàn guò de xiě fǎ:
my$input=<stdin>;# cóng biāo zhǔn shū rù zhuāng zhì qǔ dé zī liào
print$input;
zhè shí hòu, dāng wǒ men cóng jiàn pán shū rù shí, perl jiù kě yǐ zhèng què de qǔ dé zī xùn, bìng qiě tòu guò stdin qǔ dé shǐ yòng zhě yòng jiàn pán dǎ rù de yīháng zì chuàn。 yīn cǐ tā de yùn zuò fāng shì jiù shì yǐ yī gè dàng 'àn dài hào lái jìn xíng。 dāng rán, nǐ kě yǐ tòu guò xì tǒng hán shì kù de pèi hé, ràng nǐ de biāo zhǔn shū rù zhuǎn wéi qí tā shè bèi zhī hòu nǐ jiù jìn xíng qí tā yùn yòng, bù guò zhè xiǎn rán bù shì zhè lǐ de zhù tí, hái shì ràng wǒ men yán guī zhèng chuán。 duì yú perl lái shuō, tā cóng dàng 'àn xì tǒng dú rù zī liào shì yǐ xíng wéi dān wèi, yīn cǐ jí shǐ shì lì yòng stdin, perl hái shì huì děng dào shǐ yòng zhě jiàn rù huàn xíng jiàn shí cái huì yòu suǒ dòng zuò。
stdout: xiāng duì yú biāo zhǔn shū rù, zhè jiù shì suǒ wèi de biāo zhǔn shū chū, yě jiù shì zài zhèng cháng zhuàng kuàng xià, nǐ xī wàng perl shū chū de jiēguǒ jiù shì tòu guò stdout lái jìn xíng shū chū de。 ér yī bān lái shuō, wǒ men suǒ shǐ yòng de jiù shì yíng mù shū chū。 nǐ kě yǐ kàn kàn zhè gè chéng shì lǐ de xiě fǎ:
my$output=" biāo zhǔn shū chū ";
print"$output ";
printstdout"$output ";
méi cuò, jiù xiàng wǒ men suǒ yù qī de, perl tòu guò yíng mù yìn chū liǎo liǎng xíng yī mó yī yàng de jiēguǒ, yě jiù shì yìn liǎo liǎng xíng“ biāo zhǔn shū chū”。 yuán yīn fēi cháng jiǎn dān, yīn wéi dāng wǒ men shǐ yòng print de zhǐ lìng shí, perl huì shǐ yòng stdout dāng zuò yù shè de dàng 'àn dài hào, suǒ yǐ yī bān zhuàng kuàng xià, rú guǒ wǒ men méi yòu zhǐ dìng dàng 'àn dài hào shí, perl jiù huì zì dòng shū chū dào stdout。 suǒ yǐ shì shí shàng, wǒ men zǎo jiù kāi shǐ shǐ yòng dàng 'àn dài hào liǎo, zhǐ shì wǒ men zì jǐ bìng méi yòu fā jué。 huò shuō, perl yuán lái de qī wàng jiù shì xī wàng shǐ yòng zhě dōukě yǐ zài zuì méi yòu fù dān de zhuàng kuàng xià rèn yì shū chū dào yíng mù, huò cóng jiàn pán shū rù, bì jìng perl chéng shì shè jì shī nà me de pà má fán, yī bān de jiàn pán shū rù, yíng mù shū chū yòu shì shǐ yòng de nà me pín fán, dāng rán yào ràng chéng shì shè jì shī yǐ zuì jiǎn dān de fāng shì dá chéng。 ér qiě fēi cháng xiǎn rán, zhè gè mùdì yě suàn dá dào liǎo。
stderr: biāo zhǔn de cuò wù chuàn liú, yě jiù shì chéng shì cuò wù de biāo zhǔn shū chū。 zhèng cháng 'ér yán, dāng chéng shì fā shēng cuò wù shí, chéng shì kě yǐ fā chū cuò wù xùn xī lái tōng zhī shǐ yòng zhě, zhè shí hòu zhè xiē cuò wù xùn xī yě néng tòu guò dàng 'àn dài hào chǔlǐ, bǎ zhè xiē xùn xī diū jìn cuò wù xùn xī chuàn liú。 bù guò zhè yàng shuō shí zài bù tài róng yì lǐ jiě, nà wǒ men lái wán gè yóu xì bā:
my$output=" biāo zhǔn shū chū ";
print"$output ";
printstderr"$output ";
wǒ men yī kāi shǐ dìng yì liǎo yī gè zì chuàn $output, yī kāi shǐ wǒ men xiān zhí jiē cóng biāo zhǔn shū chū yìn chū zhè gè zì chuàn, jiē xià lái wǒ men biàn yào qiú perl bǎ zhè gè zì chuàn sòng chū dào cuò wù chuàn liú zhōng。 zhè yàng huì fā shēng shèn me yòu qù de shì ní? ràng wǒ men lái kàn kàn:
[hcchien@apple]%perlstderr.pl
biāo zhǔn shū chū
biāo zhǔn shū chū
[hcchien@apple]%perlstderr.pl>error.txt
biāo zhǔn shū chū
dì yī cì, wǒ men zhí jiē zhí xíng liǎo stderr.pl zhè zhī chéng shì, ér jiēguǒ xiǎn rán yòu diǎn píng dàn wú qí。 yú shì wǒ men dì 'èr cì zhí xíng shí, jiù zài hòu miàn jiā shàng liǎo ">error.txt", duì yú shú xī unix cāo zuò de rén dà gài zhī dào, zhè yàng de fāng shì qí shí shì bǎ chéng shì zhí xíng shí de cuò wù xùn xī dǎo xiàng dàng 'àn "error.txt" liǎo。 suǒ yǐ stdout zhǐ shū chū liǎo dì yī xíng de print jiēguǒ, ér xì tǒng yě chǎn shēng liǎo lìng wài de error.txt de dàng 'àn, yīn wéi wǒ men bǎ biāo zhǔn cuò wù chuàn liú sòng dào liǎo zhè gè dàng 'àn lǐ, suǒ yǐ wǒ men kě yǐ fā xiàn dàng 'àn lǐ zhèng hǎo yòu wǒ men shū chū dào biāo zhǔn cuò wù chuàn liú de zì chuàn。 zhè yàng de zuò fǎ duì yú kě néng bǎ perl ná lái jìn xíng xì tǒng guǎn lǐ de jiǎo běn chéng shì shí, jiù kě yǐ fā huī hěn dà de gōng néng。 yīn wéi wǒ men yě xǔ xī wàng mǒu gè chéng shì kě yǐ bāng wǒ men jìn xíng yī xiē rì cháng de suǒ shì, ér zài chǔlǐ zhè xiē suǒ shì de tóng shí, rú guǒ fā shēng shèn me yì cháng zhuàng kuàng, kě yǐ bǎ cuò wù xùn xī cún zài mǒu gè dàng 'àn zhōng, zhè yàng yī lái wǒ men jiù kě yǐ zhǐ jiǎn chá zhè gè rì zhì dàng 'àn。
argv: wǒ men kě yǐ zhí jiē lì yòng cān shù lái dú qǔ mǒu xiē dàng 'àn de nèi róng, shǐ yòng zhě zhǐ xū yào zài zhí xíng chéng shì shí, zài chéng shì hòu jiā shàng dàng 'àn míng chēng zuò wéi cān shù, rán hòu zài chéng shì zhōng wǒ men jiù kě yǐ zhí jiē dú dào dàng 'àn de nèi róng liǎo。 hái shì yòng gè lì zǐ bǐ jiào róng yì lǐ jiě:
my$input=<argv>;
print"$input ";
yú shì wǒ men shì zhe zhí xíng tā, bìng qiě jiā shàng cān shù "error.txt"
[hcchien@apple]%perlargv.pl>error.txt
biāo zhǔn shū chū
méi cuò, dāng wǒ men yòng liǎo gāng gāng dé dào de error.txt dāng cān shù shí, chéng shì lǐ miàn zhí jiē shǐ yòng yù shè dàng 'àn dài hào argv lái dú qǔ dàng 'àn nèi róng, suǒ yǐ dāng wǒ men yìn chū lái shí, jiù kě yǐ kàn dào gāng gāng xiě rù dàng 'àn de nèi róng liǎo。 bù guò yóu yú perl dú dàng 'àn de xìng zhì, qí shí wǒ men zhǐ yìn chū liǎo dàng 'àn nèi de dì yīháng, bù guò zhè bù fèn wǒ men shāo hòu huì zài tí dào, zhè lǐ zàn qiě lüè guò bù tán。
bù guò perl de argv qí shí fēi cháng hǎo yòng, ràng wǒ men lái kàn kàn shǐ yòng zhèn liè xíng shì de @argv。 yě jiù shì chéng shì de cān shù, gēn wǒ men céng jīng tí guò de fù cháng shì cān shù yòu jǐ fēn xiāng sì。 tā yě shì bǎ qǔ dé de cān shù fàng rù zhèn liè zhōng, rán hòu zài chéng shì lǐ, jiù kě yǐ zhí jiē jiào yòng zhèn liè, qǔ chū cān shù, jiù xiàng zhè yàng:
my$input=shift@argv;
print"$input ";
wǒ men yòng tóng yàng de fāng shì zhí xíng, kě yǐ kàn dào zhè yàng de jiēguǒ:
[hcchien@apple]%perlargv.plerror.txt
error.txt
lìng wài, wǒ men yě kě yǐ duì argv jìn xíng yī bān dàng 'àn dài hào de cāo zuò fāng shì, bù guò zhè xiē jiāng zài shāo hòu tí dào dàng 'àn cāo zuò shí zài lái tǎo lùn。
10.3 dàng 'àn de jī běn cāo zuò
wǒ men gāng gāng tí dào liǎo yī xiē perl yù shè de dàng 'àn dài hào, zhè xiē dàng 'àn dài hào dōushì yóu perl zì dòng chǎn shēng de。 yīn cǐ dāng wǒ men kāi shǐ zhí xíng perl de chéng shì shí, jiù kě yǐ zhí jiē shǐ yòng zhè xiē dàng 'àn dài hào。 kě shì chú cǐ zhī wài, dāng wǒ men xī wàng zì jǐ lái duì mǒu xiē dàng 'àn jìn xíng cún qǔ shí, jiù bì xū shǒu dòng kòng zhì mǒu xiē chéng xù。 suǒ yǐ xiàn zài yīnggāi lái guān xīn yī xià, dāng wǒ men yào shǒu dòng jìn xíng zhè xiē dàng 'àn de kòng guǎn shí, yīnggāi zěn me zuò ní?
10.3.1 kāi dàng / guān dàng
zuì jī běn de, wǒ men yào xiān kāi qǐ yī gè dàng 'àn, yě jiù shì wǒ men bì xū jiāng dàng 'àn dài hào hé wǒ men xiǎng yào cún qǔ de dàng 'àn jiē shàng xiàn。 shǒu xiān, wǒ men kě yǐ shǐ yòng open zhè gè zhǐ lìng lái kāi qǐ dàng 'àn dài hào, bìng qiě zhǐ dìng zhè gè dàng 'àn dài hào suǒ duì yìng de dàng 'àn míng chēng, suǒ yǐ wǒ men shǐ yòng de zhǐ lìng yīnggāi huì huì zhè yàng:
openfile,"file.txt";
openoutput,"<output.txt";# cóng dàng 'àn shū chū
openinput,">input.txt";# shū rù dào dàng 'àn
openappend,">>append.txt";# fù jiā zài xiàn yòu dàng 'àn jié wěi
qí shí yào kāi qǐ yī gè dàng 'àn dài hào fēi cháng de róng yì, zhì shǎo cóng shàng miàn de lì zǐ lái kàn, yīnggāi hái suàn shì fēi cháng de píng yì jìn rén。 nà me wǒ men zhǐ xū yào shāo wēi de jiě shì yī xiē tè shū de bù fèn, dà bù fèn de rén yīnggāi jiù kě yǐ qīng sōng de kāi shǐ shǐ yòng dàng 'àn dài hào liǎo。
shǒu xiān, zuì jī běn de yǔ fǎ yě jiù shì lì yòng open zhè gè zhǐ lìng lái jié hé dàng 'àn dài hào gēn xì tǒng shàng shí jì de dàng 'àn。 suǒ yǐ wǒ men kàn dào liǎo suǒ yòu de xù shù dōushì yǐ open jiē xià dàng 'àn dài hào, jiē zhe shì dàng 'àn de míng chēng。 zhè yàng yī lái, wǒ men jiù bǎ dàng 'àn dài hào gēn dàng 'àn míng chēng lián jiē qǐ lái, dāng rán, qián tí shì méi yòu cuò wù fā shēng。 bù guò bù guǎn rú hé, zhè kàn qǐ lái yīnggāi fēi cháng róng yì liǎo。 jiē xià lái, kàn kàn zài dàng 'àn míng chēng qián miàn yòu yī xiē dà, xiǎo yú fú hào, zhè xiē yòu shì shèn me yì sī ní? zhè xiē fú hào zhù yào zài yú duì yú dàng 'àn cāo zuò xū qiú bù tóng 'ér chǎn shēng bù tóng de xíng shì。 shǒu xiān wǒ men kàn dào de shì yī gè xiǎo yú (<) fú hào, zhè gè fú hào dài biǎo wǒ men huì cóng zhè gè dàng 'àn shū chū zī liào, qí shí rú guǒ nǐ duì unix xì tǒng yòu yī diǎn shú xī, nǐ huì fā xiàn zhè xiē biǎo shì fāng shì gēn zài yī bān shǐ yòng zhuànxiàng de fāng shì jiē jìn。 suǒ yǐ dāng nǐ shǐ yòng xiǎo yú fú hào shí, jiù xiàng bǎ dàng 'àn de zī liào zhuànxiàng dào dàng 'àn dài hào zhōng。 rú guǒ nǐ kě yǐ xiǎng xiàng xiǎo yú fú hào de fāng xiàng xìng, nà me dà yú fú hào yě jiù shì tóng yàng dào lǐ liǎo。 dà yú fú hào yě jiù shì bǎ zī liào cóng dàng 'àn dài hào zhōng zhuǎn rù shí jì de dàng 'àn xì tǒng lǐ, yě jiù shì xiě rù dào mǒu gè dàng 'àn zhōng。 ér rú guǒ xì tǒng zhōng méi yòu zhè gè dàng 'àn, perl huì xì xīn de bāng nǐ jiàn lì zhè gè dàng 'àn, rán hòu nǐ tòu guò dàng 'àn dài hào sòng chū de zī liào jiù huì yóu perl bāng nǐ xiě rù dàng 'àn zhōng。 bù guò yòu yī gè bù fèn bì xū yào tè bié zhù yì de dì fāng, yě jiù shì rú guǒ nǐ tòu guò dà yú fú hào jiàn lì de dàng 'àn jìjié, perl huì bǎ nǐ zhǐ dìng de dàng 'àn shì wéi quán xīn de dàng 'àn, jiù rú wǒ men suǒ shuō de, rú guǒ nǐ de xì tǒng zhōng méi yòu zhè gè dàng 'àn, perl huì xiān bāng nǐ jiàn lì yī gè xīn de dàng 'àn。 bù guò rú guǒ nǐ de xì tǒng běn lái jiù yǐ jīng cún zài tóng yàng de dàng míng, nà me perl huì bǎ yuán lái de dàng míng qīng kōng, rán hòu zài bǎ zī liào xiě rù。 dāng rán, zhè yàng jiù yù dào wèn tí liǎo, yīn wéi rú guǒ nǐ de chéng shì zhèng zài jiān shì wǎng zhàn sì fú qì, ér nǐ xī wàng zhǐ yào sì fú qì yòu zhuàng kuàng fā shēng jiù bǎ fā shēng de zhuàng kuàng xiě rù rì zhì dàng。 zhè shí hòu nǐ dà duō huì xī wàng bǎo liú jiù de rì zhì, nà me rú guǒ perl měi cì dū qīng kōng jiù de rì zhì nèi róng jiù huì ràng wǒ men zào chéng kùn rǎo。 zhè shí hòu wǒ men zǒng huì xī wàng perl néng bǎ xīn de zhuàng kuàng fù jiā zài yuán lái de dàng 'àn zuì hòu miàn de wèi zhì, nà me wǒ men jiù yīnggāi shǐ yòng liǎng gè dà yú (>>) de fú hào, zhè yě jiù shì ">>" gēn ">" de bù tóng zhī chù。
jì rán nǐ kāi qǐ liǎo yī gè dàng 'àn dài hào, zuì hǎo de fāng shì jiù shì zài nǐ shǐ yòng wán hòu yào guī huí yuán chù ( cóng xiǎo mā mā jiù zhè me gào jiè wǒ men )。 yīn cǐ rú guǒ nǐ bù zài shǐ yòng mǒu gè dàng 'àn dài hào shí, nǐ zuì hǎo yǎng chéng guān bì zhè xiē dàng 'àn dài hào de xí guàn, duì liǎo, yīnggāi hái yào tí xǐng de shì“ shì shí” guān bì bù xū yào de dàng 'àn dài hào。 suī rán perl huì zài chéng shì jié shù shí zì dòng bāng nǐ guān bì suǒ yòu hái kāi zhe de dàng 'àn dài hào, bù guò yòu xiē shí hòu, nǐ rú guǒ méi yòu zài dàng 'àn chǔlǐ wán zhī hòu jiù jìn kuài chǔlǐ de huà, kǒng pà huì yòu ràng xì tǒng zī yuán de fù dān zēng jiā。
zhì yú guān bì dàng 'àn dài hào de fāng shì yě shì fēi cháng jiǎn dān, nǐ zhǐ yào shǐ yòng close zhè gè guān jiàn zì, rán hòu gào sù perl nǐ suǒ yào guān bì de dàng 'àn dài hào, zhè yàng jiù méi wèn tí liǎo。 yīn cǐ nǐ rú guǒ xū yào guān bì dàng 'àn dài hào, nǐ zhǐ xū yào zhè me zuò:
closefile;
méi cuò, jiù shì zhè me róng yì。 bù guò què yě xiāng dāng zhòng yào, zhì shǎo nǐ yīnggāi kǎo lǜ hǎo nǐ zì jǐ de xì tǒng zī yuán guǎn lǐ。 fǒu zé děng dào děng dào chí xù tuō lěi xì tǒng zī yuán shí cái yào guài zuì perl shí kě jiù yòu shī gōng yǔn liǎo。 lìng wài, perl yě huì zài nǐ guān bì dàng 'àn dài hào shí jiǎn chá huǎn chōng qū shì fǒu hái cún yòu zī liào, rú guǒ yòu de huà, perl yě huì xiān bǎ zī liào xiě rù dàng 'àn, rán hòu guān bì dàng 'àn。 lìng wài, dàng 'àn yě kě néng yīn wéi nǐ de kāi qǐ 'ér dǎo zhì qí tā rén wú fǎ duì tā zhèng cháng de cāo zuò, yīn cǐ jìn kě néng zài wán chéng dàng 'àn cāo zuò hòu mǎ shàng guān bì dàng 'àn dài hào shì zhòng yào de xí guàn。
10.3.2 yì wài chǔlǐ
yòu xiē shí hòu, dāng wǒ men xiǎng yào kāi qǐ dàng 'àn shí què huì fā xiàn yī xiē zhuàng kuàng。 lì rú wǒ men xiǎng yào cóng mǒu gè yǐ jīng cún zài de dàng 'àn zhōng dú rù mǒu xiē zī liào, kě shì què fā shēng dàng 'àn bù cún zài, huò shì quán xiàn bù zú, ér wú fǎ dú rù de zhuàng kuàng。 wǒ men xiān kàn kàn yǐ xià de lì zǐ:
#!/usr/local/bin/perl
usestrict;
openfile,"<foo.txt";
while(<file>){
print$_;
}
zài zhè lǐ, wǒ men xī wàng kāi qǐ yī gè dàng 'àn "foo.txt", bìng qiě cóng dàng 'àn zhōng dú qǔ zī liào, jiē zhe zài bǎ dàng 'àn nèi róng zhú xíng yìn chū。 bù guò fēi cháng kě xī, wǒ men de xì tǒng zhōng bìng méi yòu zhè gè dàng 'àn。 bù guò perl yù shè bìng bù huì tí xǐng nǐ zhè yàng de zhuàng kuàng, ér qiě rú guǒ nǐ méi yòu shǐ yòng rèn hé de jǐng gào huò zhōng duàn, perl yě néng 'ān wěn de zhí xíng wán zhè gè chéng shì, dāng rán jiēguǒ shì“ méi yòu jiēguǒ”。 kě shì dāng wǒ men zài xiě chéng shì, huò shì shǐ yòng zhě zài gēn chéng shì jìn xíng hù dòng shí, shí zài nán bǎo zhè xiē shí hòu dōubù huì shèn me cuò wù huì fā shēng, yě xǔ zhǐ yào bǎ dàng 'àn míng chēng dǎ cuò, kě shì perl què bù huì zì dòng de jǐng gào nǐ。 yú shì wǒ men yīnggāi kǎo lǜ fā chū yī xiē jǐng gào, ràng fā shēng cuò wù de rén kě yǐ jí shí xiū zhèng cuò wù。 dāng rán, nǐ kě yǐ shǐ yòng warnings lái ràng perl duì yú rén wéi de cuò wù fā shēng yī xiē jǐng gào, bù guò wǒ men hái yòu lìng wài yī zhǒng fāng fǎ kě yǐ ràng nǐ gèng qīng yì de zhǎng wò cuò wù fā shēng de zhuàng kuàng, yě jiù shì ràng chéng shì“ sǐ qù (die)”。
die hán shì jiù xiàng tā de zì miàn yì sī, tā kě yǐ ràng chéng shì tíng zhǐ zhí xíng, yě jiù shì ràng chéng shì“ sǐ qù”。 yīn cǐ dāng wǒ men xī wàng chéng shì zài mǒu xiē zhuàng kuàng xià yìng gāi tíng zhǐ zhí xíng shí, wǒ men jiù kě yǐ shǐ yòng die hán shì lái dá chéng。 ér dàng 'àn fā shēng wèn tí de zhuàng kuàng zé shì die hán shì jīng cháng bèi shǐ yòng de dì fāng。 yīn wéi hěn duō shí hòu wǒ men yī dàn kāi qǐ liǎo mǒu gè dàng 'àn, dà duō jiù huì bǎ cāo zuò nèi róng wéi rào zhe zhè gè bèi kāi qǐ de dàng 'àn, kě shì rú guǒ dàng 'àn qí shí méi yòu bèi zhèng què de kāi qǐ, jiù hěn róng yì chǎn shēng yī xiē nán yǐ yù liào de wèn tí, yīn cǐ wǒ men kě yǐ zài dàng 'àn kāi qǐ shī bài shí jiù ràng chéng shì tíng zhǐ zhí xíng。 yǐ gāng gāng de chéng shì zuò wéi lì zǐ, wǒ men jiù kě yǐ bǎ kāi qǐ dàng 'àn de bù fèn xiě chéng:
openfile,"foo.txt"ordie" kāi qǐ dàng 'àn shī bài :$!";
zài zhè lǐ, yòu jǐ gè dì fāng xū yào jiě shì de, shǒu xiān zì rán jiù shì die de yòng fǎ。 wǒ men xiān cháng shì kāi qǐ foo.txt zhè gè dàng 'àn, jiē zhe yòng liǎo yī gè luó ji yùn suàn yuán 'or', hòu miàn jiē zhe shǐ yòng die zhè gè xù shù。 gēn jù wǒ men duì or yùn suàn fú de liǎo jiě, chéng shì huì xiān cháng shì kāi qǐ dàng 'àn "foo.txt", rú guǒ chéng gōng kāi qǐ, jiù huì chuán huí 1, yīn cǐ or hòu miàn de xù shù jiù huì bèi shěng lüè。 xiāng fǎn de, rú guǒ kāi qǐ dàng 'àn shī bài, open xù shù huì chuán huí 0。 rú cǐ yī lái, perl jiù huì qù zhí xíng or hòu miàn de xù shù, yīn cǐ tā jiù huì die liǎo, yě jiù shì zhǐ zhí xíng dào zhè lǐ wéi zhǐ。
lì yòng die jié shù chéng shì de zhí xíng shí, wǒ men huì xī wàng zhī dào chéng shì wèishèn me jìn rù die de zhuàng kuàng, yīn cǐ wǒ men biàn lì yòng die yìn chū mù qián de qíng kuàng。 zhè tīng qǐ lái jiù xiàng chéng shì shuō wán yí yán zhī hòu jiù bù dòng liǎo。 ér die de liè yìn jiù gēn wǒ men yī bān shǐ yòng print méi shèn me bù tóng, yīn cǐ wǒ men kě yǐ jiā shàng kě yǐ tí xǐng chéng shì xiě zuò zhě huò shǐ yòng zhě de zì chuàn。 bù guò zài gāng gāng de lì zǐ, wǒ men kàn dào liǎo yī gè bù xún cháng de biàn shù: "$!"。 zhè shì perl yù shè de yī gè biàn shù, tā huì chǔ cún xì tǒng chǎn shēng chū lái de cuò wù xùn xī。 yīn wéi dāng wǒ men tòu guò perl yào jìn xíng dàng 'àn de cún qǔ shí, qí shí zhǐ shì tòu guò perl hé zuò yè xì tǒng jìn xíng gōu tōng, yīn cǐ yī dàn perl duì zuò yè xì tǒng de yào qiú chǎn shēng shī bài de zhuàng kuàng, tā biàn huì cóng zuò yè xì tǒng dé dào xiāng guān de cuò wù xùn xī, ér zhè gè xùn xī yě huì bèi cún rù $! zhè gè biàn shù zhōng。
suǒ yǐ rú guǒ wǒ men zhí xíng gāng gāng gǎi guò de nà gè chéng shì, jiù kě yǐ dé dào xiàng zhè yàng de jiēguǒ:
[hcchien@apple]%perlch3.pl
kāi qǐ dàng 'àn shī bài :nosuchfileordirectoryatch3.plline5.
yīn wéi dàng 'àn bù cún zài de yuán yīn, dǎo zhì zhè yī zhī perl chéng shì wú fǎ jì xù zhí xíng 'ér zài zhí xíng wán die zhī hòu jiù tíng zhǐ liǎo。 ér qiě die zhè gè zhǐ lìng yě zài wǒ men de yào qiú xià, chuán dá liǎo xì tǒng de cuò wù xùn xī gěi wǒ men, wèn tí fā shēng zài nǐ yào kāi qǐ dàng 'àn shí què méi yòu fā xiàn zhè gè dàng 'àn huò zī liào jiā。 suǒ yǐ lì yòng die zhè gè zhǐ lìng, nǐ jiù kě yǐ zài chéng shì wú fǎ zhèng què kāi qǐ dàng 'àn shí, jiù mǎ shàng zhōng duàn chéng shì, yǐ bì miǎn bù kě yù zhī de wèn tí chǎn shēng。
jì rán tí dào die, wǒ men jiù shùn biàn lái tán yī xià die de qīn qī, "warn" bā! dāng nǐ fā shēng yī xiē zhuàng kuàng, kě néng dǎo zhì chéng shì fā shēng wú fǎ zhèng cháng yùn zuò shí, nǐ huì xī wàng shǐ yòng die lái qiáng zhì zhōng duàn chéng shì de zhí xíng。 kě shì yòu xiē shí hòu, cuò wù yě xǔ bìng méi yòu zhè me yán zhòng, nà me nǐ jiù zhǐ xū yào fā chū yī xiē jǐng gào, ràng zhí xíng zhě zhī dào chéng shì chū liǎo yī diǎn wèn tí, ràng tā men jué dìng shì fǒu yīnggāi zhōng duàn chéng shì bā! wǒ mén bǎ gāng gāng de chéng shì gǎi chéng zhè yàng:
#!/usr/local/bin/perl
usestrict;
openfile,"<foo.txt"orwarn"openfailed:$!";
while(<file>){
print$_;
}
print" chéng shì zài zhè lǐ jié shù liǎo ";
nǐ yīnggāi fā xiàn liǎo, wǒ men bǎ die gǎi chéng liǎo warn, rán hòu zuì hòu jiā liǎo yīháng liè yìn de zhǐ lìng, gào sù wǒ men chéng shì de jié wěi zài nà lǐ。 jiē xià lái wǒ men lái shì zhe zhí xíng zhè zhī xiū gǎi guò de chéng shì, nǐ huì kàn dào zhè yàng de jiēguǒ:
[hcchien@apple]%perlch3.pl
openfailed:nosuchfileordirectoryatch3.plline5.
theendofthescript
10.3.3 dú chū yǔ xiě rù
zài wǒ men kě yǐ zhèng què de kāi qǐ dàng 'àn dài hào zhī hòu, jiē xià lái wǒ men jiù kě yǐ kāi shǐ cún qǔ dàng 'àn zhōng de zī liào, dāng rán zuì zhù yào de jiù shì dú qǔ, yǐ jí xiě rù dàng 'àn。
tòu guò dàng 'àn dài hào lái dú qǔ dàng 'àn nèi róng dǎo shì bù tài yòu shèn me kùn nán。 wǒ men dà duō shǐ yòng zuàn shí fú hào (<>) lái jìn xíng dàng 'àn nèi róng de dú qǔ。 suǒ yǐ wǒ men kě yǐ xiàng zhè yàng jìn xíng dàng 'àn cāo zuò:
#!/usr/local/bin/perl-w
usestrict;
openlog,"/var/log/messages";# dǎ kāi zhè gè rì zhì dàng
while(<log>){# lì yòng zuàn shí fú hào dú rù zī liào
printif(/sudo/);# fú hé bǐ duì de zī liào jiù liè yìn chū lái
}
kàn qǐ lái fēi cháng róng yì, bù shì má?
wǒ men xiān yòng gāng gāng liǎo jiě de fāng shì kāi qǐ liǎo yī gè dàng 'àn dài hào, bìng qiě lì yòng zhè gè dàng 'àn dài hào lián xì dào dàng 'àn "/var/log/messages"。 zài yī xiē unix xì tǒng zhōng yě xǔ huì kàn dào zhè gè dàng 'àn, tā huì jì lù yī xiē shǐ yòng zhě dēng rù huò shì shǐ yòng root quán xiàn de xiāo xī。 ér zài zhè gè dàng 'àn zhōng, rú guǒ yòu shǐ yòng zhě lì yòng sudo zhè gè zhǐ lìng jìn xíng mǒu xiē cāo zuò shí yě huì bèi jì lù xià lái。 yīn cǐ wǒ men jiù kě yǐ tòu guò zhè gè dàng 'àn zhī dào sì fú qì shàng yòu xiē shèn me zhuàng kuàng zhèng zài fā shēng。
jiē xià lái wǒ men tòu guò zuàn shí fú hào kāi shǐ zhú xíng dú qǔ rì zhì dàng 'àn zhōng de zī liào, tòu guò huí juàn while dú qǔ dàng 'àn zhōng de zī liào shí, while huì bǎ suǒ dú dào de zī liào nèi róng fàng jìn perl de yù shè biàn shù $_ zhōng, yī zhí dào dàng 'àn jié shù, chuán huí eof shí, huí juàn biàn huì jié shù。 yīn cǐ wǒ men jiù jiāng suǒ dú qǔ de zī liào jìn xíng bǐ duì, yǐ sudo zhè gè guān jiàn zì zuò wéi bǐ duì yàng shì, bǎ fú hé de jiēguǒ yìn chū lái。
zhè yàng yī lái, zhǐ yào xì tǒng zhōng yòu rén shǐ yòng sudo jìn xíng xì tǒng cāo zuò shí, wǒ men jiù kě yǐ jiǎn chá chū lái, ér qiě yìn chū lái de jiēguǒ huì xiàng shì zhè yàng:
tty=ttyp0;pwd=/var/log;user=root;command=/bin/rm-rfhttpd-error.log
tty=ttyp0;pwd=/var/log;user=root;command=/bin/rm-rfhttpd-access.log
tty=ttyp0;pwd=/var/log;user=root;command=/bin/rm-rf192.168.1.1_access_log
192.168.1.1_error_log
tty=ttyp0;pwd=/usr/home;user=root;command=/bin/rm-rfinterchange/
tty=ttyp0;pwd=/usr/home;user=root;command=/bin/rm-rfgugod/
tty=ttyp0;pwd=/usr/home;user=root;command=/bin/rm-rfmysql/
tty=ttyp0;pwd=/;user=root;command=/bin/rmkernel.old
tty=ttyp0;pwd=/;user=root;command=/bin/rm-rfmodules.old/
tty=ttyp0;pwd=/;user=root;command=/bin/rm-rfopt/
rú guǒ nǐ shì fù zé guǎn lǐ yī xiē unix de sì fú qì, lì yòng zhè yàng jiǎn dān de fāng shì, què shí kě yǐ bāng máng nǐ wán chéng bù shǎo gōng zuò。 hěn xiǎn rán, lì yòng dàng 'àn de cāo zuò, nǐ hái kě yǐ jìn xíng gèng duō duì rì zhì dàng 'àn de fēn xī。 lì rú nǐ kě yǐ fēn xī wǎng zhàn sì fú qì de gè xiàng zī liào, suī rán qí shí yǐ jīng yòu hěn duō rén yòng perl bāng nǐ wán chéng zhè yàng de gōng zuò liǎo。 ( zhù 'èr )
jī běn shàng, cóng dàng 'àn nèi dú qǔ nèi róng de fāng shì jiù shì zhè me róng yì, yīn cǐ nǐ kě yǐ jiǎn dān de yùn yòng dàng 'àn de nèi róng jìn xíng suǒ xū yào de gōng zuò。 hái jì dé wǒ men zài jiè shào open shí de shuō míng má? wǒ men yòu jǐ gè kāi qǐ dàng 'àn de fāng shì bāo kuò liǎo jǐ zhǒng miáo shù zǐ, lì rú dà yú (>), xiǎo yú (<), yǐ jí liǎng gè dà yú (>>)。 ér qiě wǒ men yědōu jiǎn dān de miáo shù guò tā men de chā yì, xiàn zài yě xǔ jiù shì cè shì zhè xiē miáo shù zǐ de hǎo shí jī, wǒ men xiān lái kàn kàn xiǎo yú fú hào yòng yú kāi dàng de shí hòu, huì yòu shèn me yǐng xiǎng。
wǒ men zhī qián yě tí guò xiǎo yú fú hào yòng zài kāi dàng zuò wéi miáo shù de huà, shì yòng lái biǎo shì cóng dàng 'àn nèi dú qǔ zī liào。 nà wǒ men shì bù shì jiù zhǐ néng yǔn xǔ shǐ yòng zhě dú qǔ zī liào ní? xiān lái kàn kàn zhè gè xiǎo xiǎo de chéng shì bā:
openlog,"<log.txt"ordie$!;
while(<log>){
print$_;
}
printlog"writetolog"ordie$!;
jiǎ shè wǒ men yǐ jīng yòu liǎo "log.txt" zhè gè dàng 'àn, fǒu zé chéng shì jiù huì guà zài zhōng jiān, méi bàn fǎ jì xù zhí xíng。 nà me wǒ men lái kàn kàn zhí xíng jiēguǒ bā:
fileforlog
badfiledescriptoratch3.plline9,<log>line1.
dì yīháng jiù shì yuán lái log.txt lǐ miàn de nèi róng, wǒ men kě yǐ hěn qīng sōng de dú chū qí zhōng de zī liào, bìng qiě yìn chū lái, kě shì dāng wǒ men yào jiāng zī liào xiě rù shí, què chū xiàn liǎo cuò wù xùn xī。 méi cuò, dāng chū wǒ men zài kāi qǐ zhè gè dàng 'àn shí, zhǐ yào qiú perl gěi wǒ men yī gè kě yǐ dú chū zī liào de dàng 'àn, rú jīn yào qiú xiě rù, guǒ rán jiù zāo dào jù jué。
kàn lái yī dàn wǒ men shǐ yòng liǎo xiǎo yú fú hào zuò wéi kāi qǐ dàng 'àn dài hào de miáo shù zǐ, nà me wǒ men jiù bù néng qīng yì de bǎ zī liào xiě rù suǒ kāi qǐ de dàng 'àn zhōng。 xiǎng dāng rán 'ěr, perl yīnggāi yě bù huì ràng wǒ men zài kāi qǐ yī gè lì yòng dà yú fú hào zhǐ dìng wéi xiě rù de dàng 'àn zhōng bǎ zī liào dú chū bā? yào xiǎng cè shì zhè yàng de jié lùn, wǒ men zhǐ xū yào bǎ gāng gāng de chéng shì xiū gǎi yī gè zì yuán, yě jiù shì bǎ xiǎo yú fú hào gǎi chéng dà yú, nà me jiù ràng wǒ men lái kàn kàn zhí xíng hòu de jiēguǒ bā:
wǒ men cháng shì zhe zhí xíng bèi wǒ men xiū gǎi liǎo yī gè zì yuán de chéng shì, jiēguǒ fā shēng liǎo shèn me shì ní? dàng 'àn méi yòu shū chū rèn hé jiēguǒ。 hǎo xiàng hěn chū hū yì liào? qí shí yī diǎn yě bù, ér qiě zhèng rú perl suǒ yào qiú wǒ men de, wǒ men shǐ yòng liǎo dà yú fú hào biǎo míng wǒ men xiǎng yào bǎ zī liào xiě rù dàng 'àn log.txt, yīn cǐ dāng wǒ men xiǎng yào cóng dàng 'àn dú qǔ zī liào bìng qiě zhú xíng yìn chū jiēguǒ shí jiù wú fǎ chéng zhēn。 bù guò wǒ men jiē xià lái qù kàn kàn log.txt de nèi róng。 zhèng rú wǒ men suǒ yù liào de, chéng shì yǐ jīng zhèng què de bǎ zì chuàn "writetolog" xiě dào dàng 'àn log.txt lǐ miàn liǎo。
jì rán shǐ yòng dà yú fú hào gēn xiǎo yú fú hào dū fú hé wǒ men de qī dài, nà me rú guǒ wǒ men shèn me miáo shù zǐ dū méi yòu shǐ yòng, huì shì shèn me yàng de qíng kuàng ní? wǒ men zhǐ xū yào shǐ yòng gāng gāng de cè shì chéng shì, bìng qiě bǎ miáo shù zǐ quán bù qǔ xiāo, zài lái shì shì jiēguǒ rú hé bā!
jiēguǒ wǒ men fā xiàn, perl hái shì kě yǐ dú chū dàng 'àn de nèi róng, kě shì què wú fǎ xiě rù。 yě jiù shì gēn wǒ men shǐ yòng xiǎo yú fú hào shí shì yī yàng de zhuàng kuàng, zhè diǎn qí shí duì yú jīng cháng bì xū shǐ yòng dàng 'àn de rén lái shuō qí shí shì fēi cháng zhòng yào de。 suǒ yǐ rú guǒ nǐ yòu jī huì shǐ yòng dàng 'àn de cún qǔ shí, kě bié wàng liǎo zhè yī diǎn。
lìng wài, dà yú fú hào yǔ liǎng gè dà yú de chā bié wǒ men yě céng jīng tí guò, zhè bù fèn duì yú kě néng shǐ yòng perl lái jìn xíng rì cháng guǎn lǐ gōng zuò de rén gèng shì bì xū láo jì。 wǒ men zhī qián tí guò, yī yàng shì kāi qǐ yī gè kě yǐ xiě rù de dàng 'àn, shǐ yòng yī gè dà yú fú hào (>) de shí hòu, perl huì pàn duàn nǐ shì fǒu yǐ jīng yòu cún zài zhè gè dàng míng de dàng 'àn, rú guǒ dàng 'àn yǐ jīng cún zài, nà me perl jiāng huì qīng kōng dàng 'àn nèi róng, bǎ tā shì zuò yī gè xīn de dàng 'àn lái jìn xíng cāo zuò。 rú guǒ zài xì tǒng zhōng dàng 'àn bìng bù cún zài, nà me perl jiù huì gēn xì tǒng yào qiú kāi qǐ yī gè xīn de dàng 'àn。 dāng rán, zài nǐ shǐ yòng liǎng gè dà yú fú hào de shí hòu, perl huì bǎ nǐ yào xiě rù dàng 'àn de nèi róng yǐ fù jiā de fāng shì cún rù。 dāng rán, rú guǒ nǐ de xì tǒng zhōng bìng méi yòu zhè gè dàng 'àn, nà me perl yě huì xiān kāi qǐ yī gè xīn dàng, bìng qiě bǎ nǐ suǒ yào qiú de nèi róng xiě rù dàng 'àn zhōng。 zhè duì yú xiǎng yào jiàn lì lèi sì rì zhì dàng de xū qiú yòu zhe jué duì de bāng zhù, lì rú nǐ kě néng huì xū yào perl lái zuò wéi jiān kòng wǎng lù de zhuàng kuàng, zhè shí hòu nǐ huì xū yào měi cì yòu xīn zhuàng kuàng shí jiù bǎ tā jì lù xià lái, ér qiě xū yào bǎo liú yuán lái de jì lù。 nà me rú guǒ nǐ hái shì shǐ yòng dà yú fú hào de huà, nǐ kě jiù yào xiǎo xīn yuán lái de zī liào nèi róng yí shī liǎo。
dāng rán, wǒ men zhī dào kāi qǐ dàng 'àn shí kě yǐ lì yòng sān zhǒng miáo shù zǐ qù zhǐ dìng suǒ yào kāi qǐ dàng 'àn dài hào de zhuàng tài, bù guò rú guǒ nǐ shèn me dōuméi jiā de zhuàng kuàng xià, perl yòu huì zuò zěn me yàng de chǔlǐ ní? wǒ men jì xù yòng gāng gāng de lì zǐ lái jìn xíng shí yàn bā。 wǒ men bǎ kāi qǐ dàng 'àn de miáo shù zǐ ná diào, qí tā de bù fèn yī qiē zhào jiù。 suǒ yǐ nǐ de chéng shì jiù xiàng zhè yàng:
openlog,"log.txt"ordie$!;
printlog"writetolog "ordie$!;
jiē zhe wǒ men fā xiàn, zhè yàng de jiēguǒ jiù gēn wǒ men shǐ yòng xiǎo yú fú hào de xiào guǒ shì xiāng tóng de, yě jiù shì perl zhǐ huì cóng dàng 'àn zhōng dú chū zī liào, què wú fǎ xiě rù。
yòu liǎo jī běn dú xiě dàng 'àn de néng lì zhī hòu, wǒ men hái bì xū liǎo jiě gāi zěn me yàng tòu guò perl qù kòng zhì xì tǒng de dàng 'àn yǐ jí zī liào jiā。 zhè yàng cái néng què shí zhǎng wò xì tǒng de dàng 'àn guǎn lǐ, yóu qí dāng nǐ xī wàng shǐ yòng perl lái jìn xíng xì tǒng guǎn lǐ shí, yě jiù huì gèng xū yào zhè yàng de néng lì, suǒ yǐ wǒ men jiē xià lái jiù yào tǎo lùn lì yòng perl duì dàng 'àn xì tǒng de cāo zuò。
zhù yī: bù guò dāng nǐ dǎ suàn zhè me zuò de shí hòu, yě xǔ yào kǎo lǜ zhè zhī chéng shì wèi lái zhǐ yòu nǐ zài wéi hù, fǒu zé nǐ zhè yàng de dòng zuò hěn kě néng huì yīn wéi jiē xià lái wéi hù de rén xū yào huā gèng duō de shí jiān lái kàn dǒng chéng shì 'ér tí gāo bù shǎo wéi hù chéng běn。
zhù 'èr: qí shí gēn zhè zhāng zhù tí bù tài yòu guān, bù guò lì rú awstats jiù shì zhè lèi xíng de gōng jù。
linux/unix de dàng 'àn cún qǔ quán xiàn
shǐ yòng quán xiàn : suǒ yòu shǐ yòng zhě
shǐ yòng fāng shì :chmod[-cfvr][--help][--version]modefile...
shuō míng :linux/unix de dàng 'àn cún qǔ quán xiàn fēn wéi sān jí : dàng 'àn yōng yòu zhě、 qún zǔ、 qí tā。 lì yòng chmod kě yǐ jiè yǐ kòng zhì dàng 'àn rú hé bèi tā rén suǒ cún qǔ。
bǎ jì :
mode: quán xiàn shè dìng zì chuàn, gé shì rú xià :[ugoa...][[+-=][rwxx]...][,...], qí zhōng u biǎo shì gāi dàng 'àn de yōng yòu zhě, g biǎo shì yǔ gāi dàng 'àn de yōng yòu zhě shǔ yú tóng yī gè qún tǐ (group) zhě, o biǎo shì qí tā yǐ wài de rén, a biǎo shì zhè sān zhě jiē shì。
+ biǎo shì zēng jiā quán xiàn、 - biǎo shì qǔ xiāo quán xiàn、 = biǎo shì wéi yī shè dìng quán xiàn。
r biǎo shì kě dú qǔ, w biǎo shì kě xiě rù, x biǎo shì kě zhí xíng, x biǎo shì zhǐ yòu dāng gāi dàng 'àn shì gè zǐ mù lù huò zhě gāi dàng 'àn yǐ jīng bèi shè dìng guò wéi kě zhí xíng。
-c: ruò gāi dàng 'àn quán xiàn què shí yǐ jīng gēnggǎi, cái xiǎn shì qí gēnggǎi dòng zuò
-f: ruò gāi dàng 'àn quán xiàn wú fǎ bèi gēnggǎi yě bù yào xiǎn shì cuò wù xùn xī
-v: xiǎn shì quán xiàn biàngēng de xiáng xì zī liào
-r: duì mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jìn xíng xiāng tóng de quán xiàn biàngēng ( jí yǐ dì huí de fāng shì zhú gè biàngēng )
--help: xiǎn shì fǔ zhù shuō míng
--version: xiǎn shì bǎn běn
fàn lì : jiāng dàng 'àn file1.txt shè wéi suǒ yòu rén jiē kě dú qǔ :
chmodugo+rfile1.txt
jiāng dàng 'àn file1.txt shè wéi suǒ yòu rén jiē kě dú qǔ :
chmoda+rfile1.txt
jiāng dàng 'àn file1.txt yǔ file2.txt shè wéi gāi dàng 'àn yōng yòu zhě, yǔ qí suǒ shǔ tóng yī gè qún tǐ zhě kě xiě rù, dàn qí tā yǐ wài de rén zé bù kě xiě rù :
chmodug+w,o-wfile1.txtfile2.txt
jiāng ex1.py shè dìng wéi zhǐ yòu gāi dàng 'àn yōng yòu zhě kě yǐ zhí xíng :
chmodu+xex1.py
jiāng mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jiē shè wéi rèn hé rén kě dú qǔ :
chmod-ra+r*
cǐ wài chmod yě kě yǐ yòng shù zì lái biǎo shì quán xiàn rú chmod777file
yǔ fǎ wéi: chmodabcfile
qí zhōng a,b,c gè wéi yī gè shù zì, fēn bié biǎo shì user、 group、 jí other de quán xiàn。
r=4, w=2, x=1
ruò yào rwx shǔ xìng zé 4+2+1=7;
ruò yào rw- shǔ xìng zé 4+2=6;
ruò yào r-x shǔ xìng zé 4+1=7。
fàn lì:
chmoda=rwxfile
hé
chmod777file
xiào guǒ xiāng tóng
chmodug=rwx,o=xfile
hé
chmod771file
xiào guǒ xiāng tóng
ruò yòng chmod4755filename kě shǐ cǐ chéng shì jù yòu root de quán xiàn
zhǐ lìng míng chēng :chown
shǐ yòng quán xiàn :root
shǐ yòng fāng shì :chmod[-cfhvr][--help][--version]user[:group]file...
shuō míng :linux/unix shì duō rén duō gōng zuò yè xì tǒng, suǒ yòu de dàng 'àn jiē yòu yōng yòu zhě。 lì yòng chown kě yǐ jiāng dàng 'àn de yōng yòu zhě jiā yǐ gǎi biàn。 yī bān lái shuō, zhè gè zhǐ lìng zhǐ yòu shì yóu xì tǒng guǎn lǐ zhě (root) suǒ shǐ yòng, yī bān shǐ yòng zhě méi yòu quán xiàn kě yǐ gǎi biàn bié rén de dàng 'àn yōng yòu zhě, yě méi yòu quán xiàn kě yǐ zì jǐ de dàng 'àn yōng yòu zhě gǎi shè wéi bié rén。 zhǐ yòu xì tǒng guǎn lǐ zhě (root) cái yòu zhè yàng de quán xiàn。
bǎ jì :
user: xīn de dàng 'àn yōng yòu zhě de shǐ yòng zhě idgroup: xīn de dàng 'àn yōng yòu zhě de shǐ yòng zhě qún tǐ (group)-c: ruò gāi dàng 'àn yōng yòu zhě què shí yǐ jīng gēnggǎi, cái xiǎn shì qí gēnggǎi dòng zuò -f: ruò gāi dàng 'àn yōng yòu zhě wú fǎ bèi gēnggǎi yě bù yào xiǎn shì cuò wù xùn xī -h: zhǐ duì yú lián jié (link) jìn xíng biàngēng, ér fēi gāi link zhēn zhèng zhǐ xiàng de dàng 'àn -v: xiǎn shì yōng yòu zhě biàngēng de xiáng xì zī liào -r: duì mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jìn xíng xiāng tóng de yōng yòu zhě biàngēng ( jí yǐ dì huí de fāng shì zhú gè biàngēng )--help: xiǎn shì fǔ zhù shuō míng --version: xiǎn shì bǎn běn
fàn lì :
jiāng dàng 'àn file1.txt de yōng yòu zhě shè wéi users qún tǐ de shǐ yòng zhě jessie:
chownjessie:usersfile1.txt
jiāng mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù de yōng yòu zhě jiē shè wéi users qún tǐ de shǐ yòng zhě lamport:
chmod-rlamport:users*
-rw-------(600)-- zhǐ yòu shǔ zhù yòu dú xiě quán xiàn。
-rw-r--r--(644)-- zhǐ yòu shǔ zhù yòu dú xiě quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu dú quán xiàn。
-rwx------(700)-- zhǐ yòu shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn。
-rwxr-xr-x(755)-- shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu dú、 zhí xíng quán xiàn。
-rwx--x--x(711)-- shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu zhí xíng quán xiàn。
-rw-rw-rw-(666)-- suǒ yòu yòng hù dōuyòu wén jiàn dú、 xiě quán xiàn。 zhè zhǒng zuò fǎ bù kě qǔ。
-rwxrwxrwx(777)-- suǒ yòu yòng hù dōuyòu dú、 xiě、 zhí xíng quán xiàn。 gèng bù kě qǔ de zuò fǎ。
yǐ xià shì duì mù lù de liǎng gè pǔ tōng shè dìng :
drwx------(700)- zhǐ yòu shǔ zhù kě zài mù lù zhōng dú、 xiě。
drwxr-xr-x(755)- suǒ yòu yòng hù kě dú gāi mù lù, dàn zhǐ yòu shǔ zhù cái néng gǎi biàn mù lù zhōng de nèi róng
suid de dài biǎo shù zì shì 4, bǐ rú 4755 de jiēguǒ shì -rwsr-xr-x
sgid de dài biǎo shù zì shì 2, bǐ rú 6755 de jiēguǒ shì -rwsr-sr-x
sticky wèi dài biǎo shù zì shì 1, bǐ rú 7755 de jiēguǒ shì -rwsr-sr-t | | dàng 'àn cún qǔ zhǐ MP3 běn shēn chú liǎo cún chǔ MP3 yīnyuè zhī wài, shì fǒu hái kě yǐ zuò wéi yí dòng cún( U pán) shǐ yòng, zhè yàng kě yǐ jìn xíng gè zhǒng gé shì wén jiàn de xià zài、 shàng chuán, yě kě yǐ zài yìng dié lǐ cún fàng jiǎn bào、 zhào piàn、 wén jiàn yǐ jí shù mǎ yǐngpiān děng děng。
cún chǔ: fēn chéng wú qū hé yòu qū xíng liǎng zhǒng。 dà bù fēn MP3 chū yú bǎn quán bǎo hù de kǎo lǜ, yào qiú shǐ yòng zì dài de guǎn lǐ chéng xù shí xiàn MP3 jī hé diàn nǎo jiān de wén jiàn shàng chuán、 xià zài。 xiàn zài chū de MP3 yī bān duì fēi yīnyuè gé shì de wén jiàn dū zhī chí dàng 'àn guǎn lǐ, jiù shì kě yǐ shí xiàn zhè xiē wén jiàn de shàng chuán、 xià zài。 ér shì fǒu xū yào 'ān zhuāng qū dòng, zhǐ yǐng xiǎng jù tǐ shǐ yòng huán jìng héng héng rú guǒ shì gù dìng diàn nǎo, jí biàn yòu qū de yě wú suǒ wèi; rú guǒ shì jīng cháng zài bù tóng diàn nǎo jiān zhuǎn yí wén jiàn de, dāng rán tuī jiàn wú qū xíng de liǎo, bì jìng miǎn chú liǎo 'ān zhuāng guǎn lǐ chéng xù de fán nǎo( zhè lǐ de wú qū yě shì xiāng duì WIN98 hòu de cāo zuò xì tǒng 'ér yán)。
duì yú MP3 de dàng 'àn cún qǔ gōng néng lái shuō, Windows98 jí 98 yǐ xià de cāo zuò xì tǒng xū yào 'ān zhuāng suí jī de qū dòng chéng xù; ér Windows2000、 XP、 ME děng xì tǒng bù xū yào 'ān zhuāng qū dòng chéng xù, xì tǒng jiù huì zì dòng shí bié。 | | dàng 'àn xì tǒng zài xiě chéng shì shí shì fēi cháng zhòng yào de yī gè bù fèn, yóu qí duì yú Perl de shǐ yòng zhě lái shuō, yīn wéi Perl néng gòu chǔlǐ dà liàng 'ér qiě fù zá de zī liào, suǒ yǐ jīng cháng bèi ná lái zuò wéi Unix zuò yè xì tǒng de guǎn lǐ gōng jù, yóu qí duì yú Unix-like xì tǒng guǎn lǐ yuán 'ér yán, zài jìn xíng xì tǒng rì zhì de guǎn lǐ shí, cún qǔ dàng 'àn, dú qǔ dàng 'àn nèi róng bìng jiā yǐ fēn xī jiù shì zuì jī běn de bù fèn。 dāng rán, nǐ hái kě néng jìn xíng mù lù de xiū gǎi, dàng 'àn quán xiàn de wéi hù děng děng gēn xì tǒng yòu mìqiè guān xì de cāo zuò。
10.1 dàng 'àn dài hào (FileHandle)
dāng nǐ de Perl xiǎng yào tòu guò zuò yè xì tǒng jìn xíng dàng 'àn cún qǔ shí, kě yǐ lì yòng dàng 'àn dài hào qǔ dé hé dàng 'àn jiān de jìjié, jiē xià lái de cāo zuò jiù shì tòu guò zhè gè dàng 'àn dài hào hé shí tǐ de dàng 'àn jiànjìn xíng gōu tōng。 yě jiù shì shuō, wǒ men yào jìn xíng dàng 'àn cāo zuò shí, kě yǐ xiān dìng yì xiāng duì yìng shí tǐ dàng 'àn de dài hào, yǐ biàn wǒ men yòng gèng jiǎn biàn de fāng shì duì dàng 'àn jìn xíng cún qǔ。
ér suǒ wèi de dàng 'àn dài hào qí shí jiù shì yóu shǐ yòng zhě zì xíng mìng míng, bìng qiě yòng lái gēn shí tǐ dàng 'àn jìn xíng lián jié de míng chēng, tā de mìng míng guī zé hái shì yǐ xún Perl de mìng míng guī zé, dà jiā duì yú zhè gè guī zé yīnggāi xiāng dāng shú xī liǎo, bù guò wǒ men hái shì zài cì tí xǐng yī xià: kě yǐ shù zì, zì mǔ jí dǐ xiàn zǔ chéng, dàn shì bù néng yǐ shù zì zuò wéi kāi shǐ。 ér qiě yī bān lái shuō, wǒ men jīhū dū xí guàn yǐ quán bù dà xiě lái zuò wéi dàng 'àn dài hào, yīn wéi dàng 'àn dài hào bìng bù xiàng qí tā biàn shù, huì shǐ yòng mǒu xiē fú hào zuò wéi shí bié, suǒ yǐ jīhū yuē dìng chéng sú de quán bù dà xiě xí guàn yě shì yòu cún zài de dào lǐ。
dāng rán, nǐ yě kě yǐ yǐ zhào zì jǐ de xí guàn lái wéi dàng 'àn dài hào mìng míng ( zhù yī ), zhè biǎo shì suǒ wèi de quán bù dà xiě jué duì bù shì yī zhǒng tiě lǜ, jiù xiàng Perl chéng shì yǔ yán běn shēn, xī wàng yǐ zuì shǎo de xiàn zhì lái jìn xíng chéng shì shè jì de gōng zuò。
10.2 yù shè de dàng 'àn dài hào
duì yú dàng 'àn de shū chū, shū rù 'ér yán, qí shí jiù gēn píng cháng shí hòu, nǐ lì yòng Perl zài jìn xíng qí tā de cāo zuò fēi cháng jiē jìn, yòu shí hòu zhǐ shì shū chū dào bù tóng de méi jiè shàng。 suǒ yǐ Perl qí shí yǐ jīng yù dìng liǎo jǐ zhǒng dàng 'àn dài hào, ràng nǐ bù xū yào měi cì xiě Perl de chéng shì jiù bì xū qù chóngxīn dìng yì zhè xiē dài hào, hěn xiǎn rán de, jīhū dà bù fèn de chéng shì dū huì xū yào zhè xiē dàng 'àn dài hào。
zhè liù gè yù shè de dàng 'àn dài hào fēn bié shì: STDIN, STDOUT, STDERR, DATA, ARGV, ARGOUT, kàn qǐ lái xiāng dāng shú xī bā? méi cuò, yīn wéi hěn duō shí hòu, wǒ men qí shí jiù shì kào zhè xiē yù shè de dàng 'àn dài hào zài jìn xíng chéng shì de shū chū, shū rù。 zhǐ shì wǒ men hái méi yòu liǎo jiě zhè xiē qí shí jiù shì dàng 'àn dài hào。 huàn gè jiǎo dù lái kàn, qí shí jí shǐ wǒ mendōu bù zhī dào tā men shì yù shè de dàng 'àn dài hào, wǒ men jiù néng yùn zuò zì rú, nà me duì yú dàng 'àn dài hào de shǐ yòng xiǎn rán jiù bù shì tài nán。 bù guò, wǒ men hái shì yào zài lái kàn kàn zhè liù gè Perl yù shè de dàng 'àn dài hào。 qí zhōng yòu xiē wǒ men yǐ jīng shǐ yòng guò liǎo, wǒ men jiù xiān duì qí zhōng jǐ gè yù shè de dàng 'àn dài hào lái jìn xíng jiè shào:
STDIN: zhè yě jiù shì wǒ men cháng kàn dào de“ biāo zhǔn shū rù zhuāng zhì”, dāng Perl kāi shǐ zhí xíng shí, tā yù shè jiē shòu de wài bù zī xùn jiù shì cóng zhè lǐ 'ér lái。 jiù xiàng wǒ men zhī qián céng jīng kàn guò de xiě fǎ:
my$input=<STDIN>;# cóng biāo zhǔn shū rù zhuāng zhì qǔ dé zī liào
print$input;
zhè shí hòu, dāng wǒ men cóng jiàn pán shū rù shí, Perl jiù kě yǐ zhèng què de qǔ dé zī xùn, bìng qiě tòu guò STDIN qǔ dé shǐ yòng zhě yòng jiàn pán dǎ rù de yīháng zì chuàn。 yīn cǐ tā de yùn zuò fāng shì jiù shì yǐ yī gè dàng 'àn dài hào lái jìn xíng。 dāng rán, nǐ kě yǐ tòu guò xì tǒng hán shì kù de pèi hé, ràng nǐ de biāo zhǔn shū rù zhuǎn wéi qí tā shè bèi zhī hòu nǐ jiù jìn xíng qí tā yùn yòng, bù guò zhè xiǎn rán bù shì zhè lǐ de zhù tí, hái shì ràng wǒ men yán guī zhèng chuán。 duì yú Perl lái shuō, tā cóng dàng 'àn xì tǒng dú rù zī liào shì yǐ xíng wéi dān wèi, yīn cǐ jí shǐ shì lì yòng STDIN, Perl hái shì huì děng dào shǐ yòng zhě jiàn rù huàn xíng jiàn shí cái huì yòu suǒ dòng zuò。
STDOUT: xiāng duì yú biāo zhǔn shū rù, zhè jiù shì suǒ wèi de biāo zhǔn shū chū, yě jiù shì zài zhèng cháng zhuàng kuàng xià, nǐ xī wàng Perl shū chū de jiēguǒ jiù shì tòu guò STDOUT lái jìn xíng shū chū de。 ér yī bān lái shuō, wǒ men suǒ shǐ yòng de jiù shì yíng mù shū chū。 nǐ kě yǐ kàn kàn zhè gè chéng shì lǐ de xiě fǎ:
my$output=" biāo zhǔn shū chū ";
print"$outputn";
printSTDOUT"$outputn";
méi cuò, jiù xiàng wǒ men suǒ yù qī de, Perl tòu guò yíng mù yìn chū liǎo liǎng xíng yī mó yī yàng de jiēguǒ, yě jiù shì yìn liǎo liǎng xíng“ biāo zhǔn shū chū”。 yuán yīn fēi cháng jiǎn dān, yīn wéi dāng wǒ men shǐ yòng print de zhǐ lìng shí, Perl huì shǐ yòng STDOUT dāng zuò yù shè de dàng 'àn dài hào, suǒ yǐ yī bān zhuàng kuàng xià, rú guǒ wǒ men méi yòu zhǐ dìng dàng 'àn dài hào shí, Perl jiù huì zì dòng shū chū dào STDOUT。 suǒ yǐ shì shí shàng, wǒ men zǎo jiù kāi shǐ shǐ yòng dàng 'àn dài hào liǎo, zhǐ shì wǒ men zì jǐ bìng méi yòu fā jué。 huò shuō, Perl yuán lái de qī wàng jiù shì xī wàng shǐ yòng zhě dōukě yǐ zài zuì méi yòu fù dān de zhuàng kuàng xià rèn yì shū chū dào yíng mù, huò cóng jiàn pán shū rù, bì jìng Perl chéng shì shè jì shī nà me de pà má fán, yī bān de jiàn pán shū rù, yíng mù shū chū yòu shì shǐ yòng de nà me pín fán, dāng rán yào ràng chéng shì shè jì shī yǐ zuì jiǎn dān de fāng shì dá chéng。 ér qiě fēi cháng xiǎn rán, zhè gè mùdì yě suàn dá dào liǎo。
STDERR: biāo zhǔn de cuò wù chuàn liú, yě jiù shì chéng shì cuò wù de biāo zhǔn shū chū。 zhèng cháng 'ér yán, dāng chéng shì fā shēng cuò wù shí, chéng shì kě yǐ fā chū cuò wù xùn xī lái tōng zhī shǐ yòng zhě, zhè shí hòu zhè xiē cuò wù xùn xī yě néng tòu guò dàng 'àn dài hào chǔlǐ, bǎ zhè xiē xùn xī diū jìn cuò wù xùn xī chuàn liú。 bù guò zhè yàng shuō shí zài bù tài róng yì lǐ jiě, nà wǒ men lái wán gè yóu xì bā:
my$output=" biāo zhǔn shū chū ";
print"$outputn";
printSTDERR"$outputn";
wǒ men yī kāi shǐ dìng yì liǎo yī gè zì chuàn $output, yī kāi shǐ wǒ men xiān zhí jiē cóng biāo zhǔn shū chū yìn chū zhè gè zì chuàn, jiē xià lái wǒ men biàn yào qiú Perl bǎ zhè gè zì chuàn sòng chū dào cuò wù chuàn liú zhōng。 zhè yàng huì fā shēng shèn me yòu qù de shì ní? ràng wǒ men lái kàn kàn:
[hcchien@Apple]%perlstderr.pl
biāo zhǔn shū chū
biāo zhǔn shū chū
[hcchien@Apple]%perlstderr.pl>error.txt
biāo zhǔn shū chū
dì yī cì, wǒ men zhí jiē zhí xíng liǎo stderr.pl zhè zhī chéng shì, ér jiēguǒ xiǎn rán yòu diǎn píng dàn wú qí。 yú shì wǒ men dì 'èr cì zhí xíng shí, jiù zài hòu miàn jiā shàng liǎo ">error.txt", duì yú shú xī Unix cāo zuò de rén dà gài zhī dào, zhè yàng de fāng shì qí shí shì bǎ chéng shì zhí xíng shí de cuò wù xùn xī dǎo xiàng dàng 'àn "error.txt" liǎo。 suǒ yǐ STDOUT zhǐ shū chū liǎo dì yī xíng de print jiēguǒ, ér xì tǒng yě chǎn shēng liǎo lìng wài de error.txt de dàng 'àn, yīn wéi wǒ men bǎ biāo zhǔn cuò wù chuàn liú sòng dào liǎo zhè gè dàng 'àn lǐ, suǒ yǐ wǒ men kě yǐ fā xiàn dàng 'àn lǐ zhèng hǎo yòu wǒ men shū chū dào biāo zhǔn cuò wù chuàn liú de zì chuàn。 zhè yàng de zuò fǎ duì yú kě néng bǎ Perl ná lái jìn xíng xì tǒng guǎn lǐ de jiǎo běn chéng shì shí, jiù kě yǐ fā huī hěn dà de gōng néng。 yīn wéi wǒ men yě xǔ xī wàng mǒu gè chéng shì kě yǐ bāng wǒ men jìn xíng yī xiē rì cháng de suǒ shì, ér zài chǔlǐ zhè xiē suǒ shì de tóng shí, rú guǒ fā shēng shèn me yì cháng zhuàng kuàng, kě yǐ bǎ cuò wù xùn xī cún zài mǒu gè dàng 'àn zhōng, zhè yàng yī lái wǒ men jiù kě yǐ zhǐ jiǎn chá zhè gè rì zhì dàng 'àn。
ARGV: wǒ men kě yǐ zhí jiē lì yòng cān shù lái dú qǔ mǒu xiē dàng 'àn de nèi róng, shǐ yòng zhě zhǐ xū yào zài zhí xíng chéng shì shí, zài chéng shì hòu jiā shàng dàng 'àn míng chēng zuò wéi cān shù, rán hòu zài chéng shì zhōng wǒ men jiù kě yǐ zhí jiē dú dào dàng 'àn de nèi róng liǎo。 hái shì yòng gè lì zǐ bǐ jiào róng yì lǐ jiě:
my$input=<ARGV>;
print"$inputn";
yú shì wǒ men shì zhe zhí xíng tā, bìng qiě jiā shàng cān shù "error.txt"
[hcchien@Apple]%perlargv.pl>error.txt
biāo zhǔn shū chū
méi cuò, dāng wǒ men yòng liǎo gāng gāng dé dào de error.txt dāng cān shù shí, chéng shì lǐ miàn zhí jiē shǐ yòng yù shè dàng 'àn dài hào ARGV lái dú qǔ dàng 'àn nèi róng, suǒ yǐ dāng wǒ men yìn chū lái shí, jiù kě yǐ kàn dào gāng gāng xiě rù dàng 'àn de nèi róng liǎo。 bù guò yóu yú Perl dú dàng 'àn de xìng zhì, qí shí wǒ men zhǐ yìn chū liǎo dàng 'àn nèi de dì yīháng, bù guò zhè bù fèn wǒ men shāo hòu huì zài tí dào, zhè lǐ zàn qiě lüè guò bù tán。
bù guò Perl de ARGV qí shí fēi cháng hǎo yòng, ràng wǒ men lái kàn kàn shǐ yòng zhèn liè xíng shì de @ARGV。 yě jiù shì chéng shì de cān shù, gēn wǒ men céng jīng tí guò de fù cháng shì cān shù yòu jǐ fēn xiāng sì。 tā yě shì bǎ qǔ dé de cān shù fàng rù zhèn liè zhōng, rán hòu zài chéng shì lǐ, jiù kě yǐ zhí jiē jiào yòng zhèn liè, qǔ chū cān shù, jiù xiàng zhè yàng:
my$input=shift@ARGV;
print"$inputn";
wǒ men yòng tóng yàng de fāng shì zhí xíng, kě yǐ kàn dào zhè yàng de jiēguǒ:
[hcchien@Apple]%perlargv.plerror.txt
error.txt
lìng wài, wǒ men yě kě yǐ duì ARGV jìn xíng yī bān dàng 'àn dài hào de cāo zuò fāng shì, bù guò zhè xiē jiāng zài shāo hòu tí dào dàng 'àn cāo zuò shí zài lái tǎo lùn。
10.3 dàng 'àn de jī běn cāo zuò
wǒ men gāng gāng tí dào liǎo yī xiē Perl yù shè de dàng 'àn dài hào, zhè xiē dàng 'àn dài hào dōushì yóu Perl zì dòng chǎn shēng de。 yīn cǐ dāng wǒ men kāi shǐ zhí xíng Perl de chéng shì shí, jiù kě yǐ zhí jiē shǐ yòng zhè xiē dàng 'àn dài hào。 kě shì chú cǐ zhī wài, dāng wǒ men xī wàng zì jǐ lái duì mǒu xiē dàng 'àn jìn xíng cún qǔ shí, jiù bì xū shǒu dòng kòng zhì mǒu xiē chéng xù。 suǒ yǐ xiàn zài yīnggāi lái guān xīn yī xià, dāng wǒ men yào shǒu dòng jìn xíng zhè xiē dàng 'àn de kòng guǎn shí, yīnggāi zěn me zuò ní?
10.3.1 kāi dàng / guān dàng
zuì jī běn de, wǒ men yào xiān kāi qǐ yī gè dàng 'àn, yě jiù shì wǒ men bì xū jiāng dàng 'àn dài hào hé wǒ men xiǎng yào cún qǔ de dàng 'àn jiē shàng xiàn。 shǒu xiān, wǒ men kě yǐ shǐ yòng open zhè gè zhǐ lìng lái kāi qǐ dàng 'àn dài hào, bìng qiě zhǐ dìng zhè gè dàng 'àn dài hào suǒ duì yìng de dàng 'àn míng chēng, suǒ yǐ wǒ men shǐ yòng de zhǐ lìng yīnggāi huì huì zhè yàng:
openFILE,"file.txt";
openOUTPUT,"<output.txt";# cóng dàng 'àn shū chū
openINPUT,">input.txt";# shū rù dào dàng 'àn
openappend,">>append.txt";# fù jiā zài xiàn yòu dàng 'àn jié wěi
qí shí yào kāi qǐ yī gè dàng 'àn dài hào fēi cháng de róng yì, zhì shǎo cóng shàng miàn de lì zǐ lái kàn, yīnggāi hái suàn shì fēi cháng de píng yì jìn rén。 nà me wǒ men zhǐ xū yào shāo wēi de jiě shì yī xiē tè shū de bù fèn, dà bù fèn de rén yīnggāi jiù kě yǐ qīng sōng de kāi shǐ shǐ yòng dàng 'àn dài hào liǎo。
shǒu xiān, zuì jī běn de yǔ fǎ yě jiù shì lì yòng open zhè gè zhǐ lìng lái jié hé dàng 'àn dài hào gēn xì tǒng shàng shí jì de dàng 'àn。 suǒ yǐ wǒ men kàn dào liǎo suǒ yòu de xù shù dōushì yǐ open jiē xià dàng 'àn dài hào, jiē zhe shì dàng 'àn de míng chēng。 zhè yàng yī lái, wǒ men jiù bǎ dàng 'àn dài hào gēn dàng 'àn míng chēng lián jiē qǐ lái, dāng rán, qián tí shì méi yòu cuò wù fā shēng。 bù guò bù guǎn rú hé, zhè kàn qǐ lái yīnggāi fēi cháng róng yì liǎo。 jiē xià lái, kàn kàn zài dàng 'àn míng chēng qián miàn yòu yī xiē dà, xiǎo yú fú hào, zhè xiē yòu shì shèn me yì sī ní? zhè xiē fú hào zhù yào zài yú duì yú dàng 'àn cāo zuò xū qiú bù tóng 'ér chǎn shēng bù tóng de xíng shì。 shǒu xiān wǒ men kàn dào de shì yī gè xiǎo yú (<) fú hào, zhè gè fú hào dài biǎo wǒ men huì cóng zhè gè dàng 'àn shū chū zī liào, qí shí rú guǒ nǐ duì Unix xì tǒng yòu yī diǎn shú xī, nǐ huì fā xiàn zhè xiē biǎo shì fāng shì gēn zài yī bān shǐ yòng zhuànxiàng de fāng shì jiē jìn。 suǒ yǐ dāng nǐ shǐ yòng xiǎo yú fú hào shí, jiù xiàng bǎ dàng 'àn de zī liào zhuànxiàng dào dàng 'àn dài hào zhōng。 rú guǒ nǐ kě yǐ xiǎng xiàng xiǎo yú fú hào de fāng xiàng xìng, nà me dà yú fú hào yě jiù shì tóng yàng dào lǐ liǎo。 dà yú fú hào yě jiù shì bǎ zī liào cóng dàng 'àn dài hào zhōng zhuǎn rù shí jì de dàng 'àn xì tǒng lǐ, yě jiù shì xiě rù dào mǒu gè dàng 'àn zhōng。 ér rú guǒ xì tǒng zhōng méi yòu zhè gè dàng 'àn, Perl huì xì xīn de bāng nǐ jiàn lì zhè gè dàng 'àn, rán hòu nǐ tòu guò dàng 'àn dài hào sòng chū de zī liào jiù huì yóu Perl bāng nǐ xiě rù dàng 'àn zhōng。 bù guò yòu yī gè bù fèn bì xū yào tè bié zhù yì de dì fāng, yě jiù shì rú guǒ nǐ tòu guò dà yú fú hào jiàn lì de dàng 'àn jìjié, Perl huì bǎ nǐ zhǐ dìng de dàng 'àn shì wéi quán xīn de dàng 'àn, jiù rú wǒ men suǒ shuō de, rú guǒ nǐ de xì tǒng zhōng méi yòu zhè gè dàng 'àn, Perl huì xiān bāng nǐ jiàn lì yī gè xīn de dàng 'àn。 bù guò rú guǒ nǐ de xì tǒng běn lái jiù yǐ jīng cún zài tóng yàng de dàng míng, nà me Perl huì bǎ yuán lái de dàng míng qīng kōng, rán hòu zài bǎ zī liào xiě rù。 dāng rán, zhè yàng jiù yù dào wèn tí liǎo, yīn wéi rú guǒ nǐ de chéng shì zhèng zài jiān shì wǎng zhàn sì fú qì, ér nǐ xī wàng zhǐ yào sì fú qì yòu zhuàng kuàng fā shēng jiù bǎ fā shēng de zhuàng kuàng xiě rù rì zhì dàng。 zhè shí hòu nǐ dà duō huì xī wàng bǎo liú jiù de rì zhì, nà me rú guǒ Perl měi cì dū qīng kōng jiù de rì zhì nèi róng jiù huì ràng wǒ men zào chéng kùn rǎo。 zhè shí hòu wǒ men zǒng huì xī wàng Perl néng bǎ xīn de zhuàng kuàng fù jiā zài yuán lái de dàng 'àn zuì hòu miàn de wèi zhì, nà me wǒ men jiù yīnggāi shǐ yòng liǎng gè dà yú (>>) de fú hào, zhè yě jiù shì ">>" gēn ">" de bù tóng zhī chù。
jì rán nǐ kāi qǐ liǎo yī gè dàng 'àn dài hào, zuì hǎo de fāng shì jiù shì zài nǐ shǐ yòng wán hòu yào guī huí yuán chù ( cóng xiǎo mā mā jiù zhè me gào jiè wǒ men )。 yīn cǐ rú guǒ nǐ bù zài shǐ yòng mǒu gè dàng 'àn dài hào shí, nǐ zuì hǎo yǎng chéng guān bì zhè xiē dàng 'àn dài hào de xí guàn, duì liǎo, yīnggāi hái yào tí xǐng de shì“ shì shí” guān bì bù xū yào de dàng 'àn dài hào。 suī rán Perl huì zài chéng shì jié shù shí zì dòng bāng nǐ guān bì suǒ yòu hái kāi zhe de dàng 'àn dài hào, bù guò yòu xiē shí hòu, nǐ rú guǒ méi yòu zài dàng 'àn chǔlǐ wán zhī hòu jiù jìn kuài chǔlǐ de huà, kǒng pà huì yòu ràng xì tǒng zī yuán de fù dān zēng jiā。
zhì yú guān bì dàng 'àn dài hào de fāng shì yě shì fēi cháng jiǎn dān, nǐ zhǐ yào shǐ yòng close zhè gè guān jiàn zì, rán hòu gào sù Perl nǐ suǒ yào guān bì de dàng 'àn dài hào, zhè yàng jiù méi wèn tí liǎo。 yīn cǐ nǐ rú guǒ xū yào guān bì dàng 'àn dài hào, nǐ zhǐ xū yào zhè me zuò:
closeFILE;
méi cuò, jiù shì zhè me róng yì。 bù guò què yě xiāng dāng zhòng yào, zhì shǎo nǐ yīnggāi kǎo lǜ hǎo nǐ zì jǐ de xì tǒng zī yuán guǎn lǐ。 fǒu zé děng dào děng dào chí xù tuō lěi xì tǒng zī yuán shí cái yào guài zuì Perl shí kě jiù yòu shī gōng yǔn liǎo。 lìng wài, Perl yě huì zài nǐ guān bì dàng 'àn dài hào shí jiǎn chá huǎn chōng qū shì fǒu hái cún yòu zī liào, rú guǒ yòu de huà, Perl yě huì xiān bǎ zī liào xiě rù dàng 'àn, rán hòu guān bì dàng 'àn。 lìng wài, dàng 'àn yě kě néng yīn wéi nǐ de kāi qǐ 'ér dǎo zhì qí tā rén wú fǎ duì tā zhèng cháng de cāo zuò, yīn cǐ jìn kě néng zài wán chéng dàng 'àn cāo zuò hòu mǎ shàng guān bì dàng 'àn dài hào shì zhòng yào de xí guàn。
10.3.2 yì wài chǔlǐ
yòu xiē shí hòu, dāng wǒ men xiǎng yào kāi qǐ dàng 'àn shí què huì fā xiàn yī xiē zhuàng kuàng。 lì rú wǒ men xiǎng yào cóng mǒu gè yǐ jīng cún zài de dàng 'àn zhōng dú rù mǒu xiē zī liào, kě shì què fā shēng dàng 'àn bù cún zài, huò shì quán xiàn bù zú, ér wú fǎ dú rù de zhuàng kuàng。 wǒ men xiān kàn kàn yǐ xià de lì zǐ:
#!/usr/local/bin/perl
usestrict;
openFILE,"<foo.txt";
while(<FILE>){
print$_;
}
zài zhè lǐ, wǒ men xī wàng kāi qǐ yī gè dàng 'àn "foo.txt", bìng qiě cóng dàng 'àn zhōng dú qǔ zī liào, jiē zhe zài bǎ dàng 'àn nèi róng zhú xíng yìn chū。 bù guò fēi cháng kě xī, wǒ men de xì tǒng zhōng bìng méi yòu zhè gè dàng 'àn。 bù guò Perl yù shè bìng bù huì tí xǐng nǐ zhè yàng de zhuàng kuàng, ér qiě rú guǒ nǐ méi yòu shǐ yòng rèn hé de jǐng gào huò zhōng duàn, Perl yě néng 'ān wěn de zhí xíng wán zhè gè chéng shì, dāng rán jiēguǒ shì“ méi yòu jiēguǒ”。 kě shì dāng wǒ men zài xiě chéng shì, huò shì shǐ yòng zhě zài gēn chéng shì jìn xíng hù dòng shí, shí zài nán bǎo zhè xiē shí hòu dōubù huì shèn me cuò wù huì fā shēng, yě xǔ zhǐ yào bǎ dàng 'àn míng chēng dǎ cuò, kě shì Perl què bù huì zì dòng de jǐng gào nǐ。 yú shì wǒ men yīnggāi kǎo lǜ fā chū yī xiē jǐng gào, ràng fā shēng cuò wù de rén kě yǐ jí shí xiū zhèng cuò wù。 dāng rán, nǐ kě yǐ shǐ yòng warnings lái ràng Perl duì yú rén wéi de cuò wù fā shēng yī xiē jǐng gào, bù guò wǒ men hái yòu lìng wài yī zhǒng fāng fǎ kě yǐ ràng nǐ gèng qīng yì de zhǎng wò cuò wù fā shēng de zhuàng kuàng, yě jiù shì ràng chéng shì“ sǐ qù (die)”。
die hán shì jiù xiàng tā de zì miàn yì sī, tā kě yǐ ràng chéng shì tíng zhǐ zhí xíng, yě jiù shì ràng chéng shì“ sǐ qù”。 yīn cǐ dāng wǒ men xī wàng chéng shì zài mǒu xiē zhuàng kuàng xià yìng gāi tíng zhǐ zhí xíng shí, wǒ men jiù kě yǐ shǐ yòng die hán shì lái dá chéng。 ér dàng 'àn fā shēng wèn tí de zhuàng kuàng zé shì die hán shì jīng cháng bèi shǐ yòng de dì fāng。 yīn wéi hěn duō shí hòu wǒ men yī dàn kāi qǐ liǎo mǒu gè dàng 'àn, dà duō jiù huì bǎ cāo zuò nèi róng wéi rào zhe zhè gè bèi kāi qǐ de dàng 'àn, kě shì rú guǒ dàng 'àn qí shí méi yòu bèi zhèng què de kāi qǐ, jiù hěn róng yì chǎn shēng yī xiē nán yǐ yù liào de wèn tí, yīn cǐ wǒ men kě yǐ zài dàng 'àn kāi qǐ shī bài shí jiù ràng chéng shì tíng zhǐ zhí xíng。 yǐ gāng gāng de chéng shì zuò wéi lì zǐ, wǒ men jiù kě yǐ bǎ kāi qǐ dàng 'àn de bù fèn xiě chéng:
openFile,"foo.txt"ordie" kāi qǐ dàng 'àn shī bài :$!";
zài zhè lǐ, yòu jǐ gè dì fāng xū yào jiě shì de, shǒu xiān zì rán jiù shì die de yòng fǎ。 wǒ men xiān cháng shì kāi qǐ foo.txt zhè gè dàng 'àn, jiē zhe yòng liǎo yī gè luó ji yùn suàn yuán 'or', hòu miàn jiē zhe shǐ yòng die zhè gè xù shù。 gēn jù wǒ men duì or yùn suàn fú de liǎo jiě, chéng shì huì xiān cháng shì kāi qǐ dàng 'àn "foo.txt", rú guǒ chéng gōng kāi qǐ, jiù huì chuán huí 1, yīn cǐ or hòu miàn de xù shù jiù huì bèi shěng lüè。 xiāng fǎn de, rú guǒ kāi qǐ dàng 'àn shī bài, open xù shù huì chuán huí 0。 rú cǐ yī lái, Perl jiù huì qù zhí xíng or hòu miàn de xù shù, yīn cǐ tā jiù huì die liǎo, yě jiù shì zhǐ zhí xíng dào zhè lǐ wéi zhǐ。
lì yòng die jié shù chéng shì de zhí xíng shí, wǒ men huì xī wàng zhī dào chéng shì wèishèn me jìn rù die de zhuàng kuàng, yīn cǐ wǒ men biàn lì yòng die yìn chū mù qián de qíng kuàng。 zhè tīng qǐ lái jiù xiàng chéng shì shuō wán yí yán zhī hòu jiù bù dòng liǎo。 ér die de liè yìn jiù gēn wǒ men yī bān shǐ yòng print méi shèn me bù tóng, yīn cǐ wǒ men kě yǐ jiā shàng kě yǐ tí xǐng chéng shì xiě zuò zhě huò shǐ yòng zhě de zì chuàn。 bù guò zài gāng gāng de lì zǐ, wǒ men kàn dào liǎo yī gè bù xún cháng de biàn shù: "$!"。 zhè shì Perl yù shè de yī gè biàn shù, tā huì chǔ cún xì tǒng chǎn shēng chū lái de cuò wù xùn xī。 yīn wéi dāng wǒ men tòu guò Perl yào jìn xíng dàng 'àn de cún qǔ shí, qí shí zhǐ shì tòu guò Perl hé zuò yè xì tǒng jìn xíng gōu tōng, yīn cǐ yī dàn Perl duì zuò yè xì tǒng de yào qiú chǎn shēng shī bài de zhuàng kuàng, tā biàn huì cóng zuò yè xì tǒng dé dào xiāng guān de cuò wù xùn xī, ér zhè gè xùn xī yě huì bèi cún rù $! zhè gè biàn shù zhōng。
suǒ yǐ rú guǒ wǒ men zhí xíng gāng gāng gǎi guò de nà gè chéng shì, jiù kě yǐ dé dào xiàng zhè yàng de jiēguǒ:
[hcchien@Apple]%perlch3.pl
kāi qǐ dàng 'àn shī bài :Nosuchfileordirectoryatch3.plline5.
yīn wéi dàng 'àn bù cún zài de yuán yīn, dǎo zhì zhè yī zhī Perl chéng shì wú fǎ jì xù zhí xíng 'ér zài zhí xíng wán die zhī hòu jiù tíng zhǐ liǎo。 ér qiě die zhè gè zhǐ lìng yě zài wǒ men de yào qiú xià, chuán dá liǎo xì tǒng de cuò wù xùn xī gěi wǒ men, wèn tí fā shēng zài nǐ yào kāi qǐ dàng 'àn shí què méi yòu fā xiàn zhè gè dàng 'àn huò zī liào jiā。 suǒ yǐ lì yòng die zhè gè zhǐ lìng, nǐ jiù kě yǐ zài chéng shì wú fǎ zhèng què kāi qǐ dàng 'àn shí, jiù mǎ shàng zhōng duàn chéng shì, yǐ bì miǎn bù kě yù zhī de wèn tí chǎn shēng。
jì rán tí dào die, wǒ men jiù shùn biàn lái tán yī xià die de qīn qī, "warn" bā! dāng nǐ fā shēng yī xiē zhuàng kuàng, kě néng dǎo zhì chéng shì fā shēng wú fǎ zhèng cháng yùn zuò shí, nǐ huì xī wàng shǐ yòng die lái qiáng zhì zhōng duàn chéng shì de zhí xíng。 kě shì yòu xiē shí hòu, cuò wù yě xǔ bìng méi yòu zhè me yán zhòng, nà me nǐ jiù zhǐ xū yào fā chū yī xiē jǐng gào, ràng zhí xíng zhě zhī dào chéng shì chū liǎo yī diǎn wèn tí, ràng tā men jué dìng shì fǒu yīnggāi zhōng duàn chéng shì bā! wǒ mén bǎ gāng gāng de chéng shì gǎi chéng zhè yàng:
#!/usr/local/bin/perl
usestrict;
openFILE,"<foo.txt"orwarn"openfailed:$!";
while(<FILE>){
print$_;
}
print" chéng shì zài zhè lǐ jié shù liǎo n";
nǐ yīnggāi fā xiàn liǎo, wǒ men bǎ die gǎi chéng liǎo warn, rán hòu zuì hòu jiā liǎo yīháng liè yìn de zhǐ lìng, gào sù wǒ men chéng shì de jié wěi zài nà lǐ。 jiē xià lái wǒ men lái shì zhe zhí xíng zhè zhī xiū gǎi guò de chéng shì, nǐ huì kàn dào zhè yàng de jiēguǒ:
[hcchien@Apple]%perlch3.pl
openfailed:Nosuchfileordirectoryatch3.plline5.
theendofthescript
10.3.3 dú chū yǔ xiě rù
zài wǒ men kě yǐ zhèng què de kāi qǐ dàng 'àn dài hào zhī hòu, jiē xià lái wǒ men jiù kě yǐ kāi shǐ cún qǔ dàng 'àn zhōng de zī liào, dāng rán zuì zhù yào de jiù shì dú qǔ, yǐ jí xiě rù dàng 'àn。
tòu guò dàng 'àn dài hào lái dú qǔ dàng 'àn nèi róng dǎo shì bù tài yòu shèn me kùn nán。 wǒ men dà duō shǐ yòng zuàn shí fú hào (<>) lái jìn xíng dàng 'àn nèi róng de dú qǔ。 suǒ yǐ wǒ men kě yǐ xiàng zhè yàng jìn xíng dàng 'àn cāo zuò:
#!/usr/local/bin/perl-w
usestrict;
openLOG,"/var/log/messages";# dǎ kāi zhè gè rì zhì dàng
while(<LOG>){# lì yòng zuàn shí fú hào dú rù zī liào
printif(/sudo/);# fú hé bǐ duì de zī liào jiù liè yìn chū lái
}
kàn qǐ lái fēi cháng róng yì, bù shì má?
wǒ men xiān yòng gāng gāng liǎo jiě de fāng shì kāi qǐ liǎo yī gè dàng 'àn dài hào, bìng qiě lì yòng zhè gè dàng 'àn dài hào lián xì dào dàng 'àn "/var/log/messages"。 zài yī xiē Unix xì tǒng zhōng yě xǔ huì kàn dào zhè gè dàng 'àn, tā huì jì lù yī xiē shǐ yòng zhě dēng rù huò shì shǐ yòng root quán xiàn de xiāo xī。 ér zài zhè gè dàng 'àn zhōng, rú guǒ yòu shǐ yòng zhě lì yòng sudo zhè gè zhǐ lìng jìn xíng mǒu xiē cāo zuò shí yě huì bèi jì lù xià lái。 yīn cǐ wǒ men jiù kě yǐ tòu guò zhè gè dàng 'àn zhī dào sì fú qì shàng yòu xiē shèn me zhuàng kuàng zhèng zài fā shēng。
jiē xià lái wǒ men tòu guò zuàn shí fú hào kāi shǐ zhú xíng dú qǔ rì zhì dàng 'àn zhōng de zī liào, tòu guò huí juàn while dú qǔ dàng 'àn zhōng de zī liào shí, while huì bǎ suǒ dú dào de zī liào nèi róng fàng jìn Perl de yù shè biàn shù $_ zhōng, yī zhí dào dàng 'àn jié shù, chuán huí EOF shí, huí juàn biàn huì jié shù。 yīn cǐ wǒ men jiù jiāng suǒ dú qǔ de zī liào jìn xíng bǐ duì, yǐ sudo zhè gè guān jiàn zì zuò wéi bǐ duì yàng shì, bǎ fú hé de jiēguǒ yìn chū lái。
zhè yàng yī lái, zhǐ yào xì tǒng zhōng yòu rén shǐ yòng sudo jìn xíng xì tǒng cāo zuò shí, wǒ men jiù kě yǐ jiǎn chá chū lái, ér qiě yìn chū lái de jiēguǒ huì xiàng shì zhè yàng:
TTY=ttyp0;PWD=/var/log;USER=root;COMMAND=/bin/rm-rfhttpd-error.log
TTY=ttyp0;PWD=/var/log;USER=root;COMMAND=/bin/rm-rfhttpd-access.log
TTY=ttyp0;PWD=/var/log;USER=root;COMMAND=/bin/rm-rf192.168.1.1_access_log
192.168.1.1_error_log
TTY=ttyp0;PWD=/usr/home;USER=root;COMMAND=/bin/rm-rfinterchange/
TTY=ttyp0;PWD=/usr/home;USER=root;COMMAND=/bin/rm-rfgugod/
TTY=ttyp0;PWD=/usr/home;USER=root;COMMAND=/bin/rm-rfmysql/
TTY=ttyp0;PWD=/;USER=root;COMMAND=/bin/rmkernel.old
TTY=ttyp0;PWD=/;USER=root;COMMAND=/bin/rm-rfmodules.old/
TTY=ttyp0;PWD=/;USER=root;COMMAND=/bin/rm-rfopt/
rú guǒ nǐ shì fù zé guǎn lǐ yī xiē Unix de sì fú qì, lì yòng zhè yàng jiǎn dān de fāng shì, què shí kě yǐ bāng máng nǐ wán chéng bù shǎo gōng zuò。 hěn xiǎn rán, lì yòng dàng 'àn de cāo zuò, nǐ hái kě yǐ jìn xíng gèng duō duì rì zhì dàng 'àn de fēn xī。 lì rú nǐ kě yǐ fēn xī wǎng zhàn sì fú qì de gè xiàng zī liào, suī rán qí shí yǐ jīng yòu hěn duō rén yòng Perl bāng nǐ wán chéng zhè yàng de gōng zuò liǎo。 ( zhù 'èr )
jī běn shàng, cóng dàng 'àn nèi dú qǔ nèi róng de fāng shì jiù shì zhè me róng yì, yīn cǐ nǐ kě yǐ jiǎn dān de yùn yòng dàng 'àn de nèi róng jìn xíng suǒ xū yào de gōng zuò。 hái jì dé wǒ men zài jiè shào open shí de shuō míng má? wǒ men yòu jǐ gè kāi qǐ dàng 'àn de fāng shì bāo kuò liǎo jǐ zhǒng miáo shù zǐ, lì rú dà yú (>), xiǎo yú (<), yǐ jí liǎng gè dà yú (>>)。 ér qiě wǒ men yědōu jiǎn dān de miáo shù guò tā men de chā yì, xiàn zài yě xǔ jiù shì cè shì zhè xiē miáo shù zǐ de hǎo shí jī, wǒ men xiān lái kàn kàn xiǎo yú fú hào yòng yú kāi dàng de shí hòu, huì yòu shèn me yǐng xiǎng。
wǒ men zhī qián yě tí guò xiǎo yú fú hào yòng zài kāi dàng zuò wéi miáo shù de huà, shì yòng lái biǎo shì cóng dàng 'àn nèi dú qǔ zī liào。 nà wǒ men shì bù shì jiù zhǐ néng yǔn xǔ shǐ yòng zhě dú qǔ zī liào ní? xiān lái kàn kàn zhè gè xiǎo xiǎo de chéng shì bā:
openLOG,"<log.txt"ordie$!;
while(<LOG>){
print$_;
}
printLOG"writetolog"ordie$!;
jiǎ shè wǒ men yǐ jīng yòu liǎo "log.txt" zhè gè dàng 'àn, fǒu zé chéng shì jiù huì guà zài zhōng jiān, méi bàn fǎ jì xù zhí xíng。 nà me wǒ men lái kàn kàn zhí xíng jiēguǒ bā:
fileforlog
Badfiledescriptoratch3.plline9,<LOG>line1.
dì yīháng jiù shì yuán lái log.txt lǐ miàn de nèi róng, wǒ men kě yǐ hěn qīng sōng de dú chū qí zhōng de zī liào, bìng qiě yìn chū lái, kě shì dāng wǒ men yào jiāng zī liào xiě rù shí, què chū xiàn liǎo cuò wù xùn xī。 méi cuò, dāng chū wǒ men zài kāi qǐ zhè gè dàng 'àn shí, zhǐ yào qiú Perl gěi wǒ men yī gè kě yǐ dú chū zī liào de dàng 'àn, rú jīn yào qiú xiě rù, guǒ rán jiù zāo dào jù jué。
kàn lái yī dàn wǒ men shǐ yòng liǎo xiǎo yú fú hào zuò wéi kāi qǐ dàng 'àn dài hào de miáo shù zǐ, nà me wǒ men jiù bù néng qīng yì de bǎ zī liào xiě rù suǒ kāi qǐ de dàng 'àn zhōng。 xiǎng dāng rán 'ěr, Perl yīnggāi yě bù huì ràng wǒ men zài kāi qǐ yī gè lì yòng dà yú fú hào zhǐ dìng wéi xiě rù de dàng 'àn zhōng bǎ zī liào dú chū bā? yào xiǎng cè shì zhè yàng de jié lùn, wǒ men zhǐ xū yào bǎ gāng gāng de chéng shì xiū gǎi yī gè zì yuán, yě jiù shì bǎ xiǎo yú fú hào gǎi chéng dà yú, nà me jiù ràng wǒ men lái kàn kàn zhí xíng hòu de jiēguǒ bā:
wǒ men cháng shì zhe zhí xíng bèi wǒ men xiū gǎi liǎo yī gè zì yuán de chéng shì, jiēguǒ fā shēng liǎo shèn me shì ní? dàng 'àn méi yòu shū chū rèn hé jiēguǒ。 hǎo xiàng hěn chū hū yì liào? qí shí yī diǎn yě bù, ér qiě zhèng rú Perl suǒ yào qiú wǒ men de, wǒ men shǐ yòng liǎo dà yú fú hào biǎo míng wǒ men xiǎng yào bǎ zī liào xiě rù dàng 'àn log.txt, yīn cǐ dāng wǒ men xiǎng yào cóng dàng 'àn dú qǔ zī liào bìng qiě zhú xíng yìn chū jiēguǒ shí jiù wú fǎ chéng zhēn。 bù guò wǒ men jiē xià lái qù kàn kàn log.txt de nèi róng。 zhèng rú wǒ men suǒ yù liào de, chéng shì yǐ jīng zhèng què de bǎ zì chuàn "writetolog" xiě dào dàng 'àn log.txt lǐ miàn liǎo。
jì rán shǐ yòng dà yú fú hào gēn xiǎo yú fú hào dū fú hé wǒ men de qī dài, nà me rú guǒ wǒ men shèn me miáo shù zǐ dū méi yòu shǐ yòng, huì shì shèn me yàng de qíng kuàng ní? wǒ men zhǐ xū yào shǐ yòng gāng gāng de cè shì chéng shì, bìng qiě bǎ miáo shù zǐ quán bù qǔ xiāo, zài lái shì shì jiēguǒ rú hé bā!
jiēguǒ wǒ men fā xiàn, Perl hái shì kě yǐ dú chū dàng 'àn de nèi róng, kě shì què wú fǎ xiě rù。 yě jiù shì gēn wǒ men shǐ yòng xiǎo yú fú hào shí shì yī yàng de zhuàng kuàng, zhè diǎn qí shí duì yú jīng cháng bì xū shǐ yòng dàng 'àn de rén lái shuō qí shí shì fēi cháng zhòng yào de。 suǒ yǐ rú guǒ nǐ yòu jī huì shǐ yòng dàng 'àn de cún qǔ shí, kě bié wàng liǎo zhè yī diǎn。
lìng wài, dà yú fú hào yǔ liǎng gè dà yú de chā bié wǒ men yě céng jīng tí guò, zhè bù fèn duì yú kě néng shǐ yòng Perl lái jìn xíng rì cháng guǎn lǐ gōng zuò de rén gèng shì bì xū láo jì。 wǒ men zhī qián tí guò, yī yàng shì kāi qǐ yī gè kě yǐ xiě rù de dàng 'àn, shǐ yòng yī gè dà yú fú hào (>) de shí hòu, Perl huì pàn duàn nǐ shì fǒu yǐ jīng yòu cún zài zhè gè dàng míng de dàng 'àn, rú guǒ dàng 'àn yǐ jīng cún zài, nà me Perl jiāng huì qīng kōng dàng 'àn nèi róng, bǎ tā shì zuò yī gè xīn de dàng 'àn lái jìn xíng cāo zuò。 rú guǒ zài xì tǒng zhōng dàng 'àn bìng bù cún zài, nà me Perl jiù huì gēn xì tǒng yào qiú kāi qǐ yī gè xīn de dàng 'àn。 dāng rán, zài nǐ shǐ yòng liǎng gè dà yú fú hào de shí hòu, Perl huì bǎ nǐ yào xiě rù dàng 'àn de nèi róng yǐ fù jiā de fāng shì cún rù。 dāng rán, rú guǒ nǐ de xì tǒng zhōng bìng méi yòu zhè gè dàng 'àn, nà me Perl yě huì xiān kāi qǐ yī gè xīn dàng, bìng qiě bǎ nǐ suǒ yào qiú de nèi róng xiě rù dàng 'àn zhōng。 zhè duì yú xiǎng yào jiàn lì lèi sì rì zhì dàng de xū qiú yòu zhe jué duì de bāng zhù, lì rú nǐ kě néng huì xū yào Perl lái zuò wéi jiān kòng wǎng lù de zhuàng kuàng, zhè shí hòu nǐ huì xū yào měi cì yòu xīn zhuàng kuàng shí jiù bǎ tā jì lù xià lái, ér qiě xū yào bǎo liú yuán lái de jì lù。 nà me rú guǒ nǐ hái shì shǐ yòng dà yú fú hào de huà, nǐ kě jiù yào xiǎo xīn yuán lái de zī liào nèi róng yí shī liǎo。
dāng rán, wǒ men zhī dào kāi qǐ dàng 'àn shí kě yǐ lì yòng sān zhǒng miáo shù zǐ qù zhǐ dìng suǒ yào kāi qǐ dàng 'àn dài hào de zhuàng tài, bù guò rú guǒ nǐ shèn me dōuméi jiā de zhuàng kuàng xià, Perl yòu huì zuò zěn me yàng de chǔlǐ ní? wǒ men jì xù yòng gāng gāng de lì zǐ lái jìn xíng shí yàn bā。 wǒ men bǎ kāi qǐ dàng 'àn de miáo shù zǐ ná diào, qí tā de bù fèn yī qiē zhào jiù。 suǒ yǐ nǐ de chéng shì jiù xiàng zhè yàng:
openLOG,"log.txt"ordie$!;
printLOG"writetologn"ordie$!;
jiē zhe wǒ men fā xiàn, zhè yàng de jiēguǒ jiù gēn wǒ men shǐ yòng xiǎo yú fú hào de xiào guǒ shì xiāng tóng de, yě jiù shì Perl zhǐ huì cóng dàng 'àn zhōng dú chū zī liào, què wú fǎ xiě rù。
yòu liǎo jī běn dú xiě dàng 'àn de néng lì zhī hòu, wǒ men hái bì xū liǎo jiě gāi zěn me yàng tòu guò Perl qù kòng zhì xì tǒng de dàng 'àn yǐ jí zī liào jiā。 zhè yàng cái néng què shí zhǎng wò xì tǒng de dàng 'àn guǎn lǐ, yóu qí dāng nǐ xī wàng shǐ yòng Perl lái jìn xíng xì tǒng guǎn lǐ shí, yě jiù huì gèng xū yào zhè yàng de néng lì, suǒ yǐ wǒ men jiē xià lái jiù yào tǎo lùn lì yòng Perl duì dàng 'àn xì tǒng de cāo zuò。
zhù yī: bù guò dāng nǐ dǎ suàn zhè me zuò de shí hòu, yě xǔ yào kǎo lǜ zhè zhī chéng shì wèi lái zhǐ yòu nǐ zài wéi hù, fǒu zé nǐ zhè yàng de dòng zuò hěn kě néng huì yīn wéi jiē xià lái wéi hù de rén xū yào huā gèng duō de shí jiān lái kàn dǒng chéng shì 'ér tí gāo bù shǎo wéi hù chéng běn。
zhù 'èr: qí shí gēn zhè zhāng zhù tí bù tài yòu guān, bù guò lì rú awstats jiù shì zhè lèi xíng de gōng jù。 | Linux/Unix de dàng 'àn cún qǔ quán xiàn | shǐ yòng quán xiàn : suǒ yòu shǐ yòng zhě
shǐ yòng fāng shì :chmod[-cfvR][--help][--version]modefile...
shuō míng :Linux/Unix de dàng 'àn cún qǔ quán xiàn fēn wéi sān jí : dàng 'àn yōng yòu zhě、 qún zǔ、 qí tā。 lì yòng chmod kě yǐ jiè yǐ kòng zhì dàng 'àn rú hé bèi tā rén suǒ cún qǔ。
bǎ jì :
mode: quán xiàn shè dìng zì chuàn, gé shì rú xià :[ugoa...][[+-=][rwxX]...][,...], qí zhōng u biǎo shì gāi dàng 'àn de yōng yòu zhě, g biǎo shì yǔ gāi dàng 'àn de yōng yòu zhě shǔ yú tóng yī gè qún tǐ (group) zhě, o biǎo shì qí tā yǐ wài de rén, a biǎo shì zhè sān zhě jiē shì。
+ biǎo shì zēng jiā quán xiàn、 - biǎo shì qǔ xiāo quán xiàn、 = biǎo shì wéi yī shè dìng quán xiàn。
r biǎo shì kě dú qǔ, w biǎo shì kě xiě rù, x biǎo shì kě zhí xíng, X biǎo shì zhǐ yòu dāng gāi dàng 'àn shì gè zǐ mù lù huò zhě gāi dàng 'àn yǐ jīng bèi shè dìng guò wéi kě zhí xíng。
-c: ruò gāi dàng 'àn quán xiàn què shí yǐ jīng gēnggǎi, cái xiǎn shì qí gēnggǎi dòng zuò
-f: ruò gāi dàng 'àn quán xiàn wú fǎ bèi gēnggǎi yě bù yào xiǎn shì cuò wù xùn xī
-v: xiǎn shì quán xiàn biàngēng de xiáng xì zī liào
-R: duì mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jìn xíng xiāng tóng de quán xiàn biàngēng ( jí yǐ dì huí de fāng shì zhú gè biàngēng )
--help: xiǎn shì fǔ zhù shuō míng
--version: xiǎn shì bǎn běn
fàn lì : jiāng dàng 'àn file1.txt shè wéi suǒ yòu rén jiē kě dú qǔ :
chmodugo+rfile1.txt
jiāng dàng 'àn file1.txt shè wéi suǒ yòu rén jiē kě dú qǔ :
chmoda+rfile1.txt
jiāng dàng 'àn file1.txt yǔ file2.txt shè wéi gāi dàng 'àn yōng yòu zhě, yǔ qí suǒ shǔ tóng yī gè qún tǐ zhě kě xiě rù, dàn qí tā yǐ wài de rén zé bù kě xiě rù :
chmodug+w,o-wfile1.txtfile2.txt
jiāng ex1.py shè dìng wéi zhǐ yòu gāi dàng 'àn yōng yòu zhě kě yǐ zhí xíng :
chmodu+xex1.py
jiāng mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jiē shè wéi rèn hé rén kě dú qǔ :
chmod-Ra+r*
cǐ wài chmod yě kě yǐ yòng shù zì lái biǎo shì quán xiàn rú chmod777file
yǔ fǎ wéi: chmodabcfile
qí zhōng a,b,c gè wéi yī gè shù zì, fēn bié biǎo shì User、 Group、 jí Other de quán xiàn。
r=4, w=2, x=1
ruò yào rwx shǔ xìng zé 4+2+1=7;
ruò yào rw- shǔ xìng zé 4+2=6;
ruò yào r-x shǔ xìng zé 4+1=7。
fàn lì:
chmoda=rwxfile
hé
chmod777file
xiào guǒ xiāng tóng
chmodug=rwx,o=xfile
hé
chmod771file
xiào guǒ xiāng tóng
ruò yòng chmod4755filename kě shǐ cǐ chéng shì jù yòu root de quán xiàn
zhǐ lìng míng chēng :chown
shǐ yòng quán xiàn :root
shǐ yòng fāng shì :chmod[-cfhvR][--help][--version]user[:group]file...
shuō míng :Linux/Unix shì duō rén duō gōng zuò yè xì tǒng, suǒ yòu de dàng 'àn jiē yòu yōng yòu zhě。 lì yòng chown kě yǐ jiāng dàng 'àn de yōng yòu zhě jiā yǐ gǎi biàn。 yī bān lái shuō, zhè gè zhǐ lìng zhǐ yòu shì yóu xì tǒng guǎn lǐ zhě (root) suǒ shǐ yòng, yī bān shǐ yòng zhě méi yòu quán xiàn kě yǐ gǎi biàn bié rén de dàng 'àn yōng yòu zhě, yě méi yòu quán xiàn kě yǐ zì jǐ de dàng 'àn yōng yòu zhě gǎi shè wéi bié rén。 zhǐ yòu xì tǒng guǎn lǐ zhě (root) cái yòu zhè yàng de quán xiàn。
bǎ jì :
user: xīn de dàng 'àn yōng yòu zhě de shǐ yòng zhě IDgroup: xīn de dàng 'àn yōng yòu zhě de shǐ yòng zhě qún tǐ (group)-c: ruò gāi dàng 'àn yōng yòu zhě què shí yǐ jīng gēnggǎi, cái xiǎn shì qí gēnggǎi dòng zuò -f: ruò gāi dàng 'àn yōng yòu zhě wú fǎ bèi gēnggǎi yě bù yào xiǎn shì cuò wù xùn xī -h: zhǐ duì yú lián jié (link) jìn xíng biàngēng, ér fēi gāi link zhēn zhèng zhǐ xiàng de dàng 'àn -v: xiǎn shì yōng yòu zhě biàngēng de xiáng xì zī liào -R: duì mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù jìn xíng xiāng tóng de yōng yòu zhě biàngēng ( jí yǐ dì huí de fāng shì zhú gè biàngēng )--help: xiǎn shì fǔ zhù shuō míng --version: xiǎn shì bǎn běn
fàn lì :
jiāng dàng 'àn file1.txt de yōng yòu zhě shè wéi users qún tǐ de shǐ yòng zhě jessie:
chownjessie:usersfile1.txt
jiāng mù qián mù lù xià de suǒ yòu dàng 'àn yǔ zǐ mù lù de yōng yòu zhě jiē shè wéi users qún tǐ de shǐ yòng zhě lamport:
chmod-Rlamport:users*
-rw-------(600)-- zhǐ yòu shǔ zhù yòu dú xiě quán xiàn。
-rw-r--r--(644)-- zhǐ yòu shǔ zhù yòu dú xiě quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu dú quán xiàn。
-rwx------(700)-- zhǐ yòu shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn。
-rwxr-xr-x(755)-- shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu dú、 zhí xíng quán xiàn。
-rwx--x--x(711)-- shǔ zhù yòu dú、 xiě、 zhí xíng quán xiàn; ér shǔ zǔ yòng hù hé qí tā yòng hù zhǐ yòu zhí xíng quán xiàn。
-rw-rw-rw-(666)-- suǒ yòu yòng hù dōuyòu wén jiàn dú、 xiě quán xiàn。 zhè zhǒng zuò fǎ bù kě qǔ。
-rwxrwxrwx(777)-- suǒ yòu yòng hù dōuyòu dú、 xiě、 zhí xíng quán xiàn。 gèng bù kě qǔ de zuò fǎ。
yǐ xià shì duì mù lù de liǎng gè pǔ tōng shè dìng :
drwx------(700)- zhǐ yòu shǔ zhù kě zài mù lù zhōng dú、 xiě。
drwxr-xr-x(755)- suǒ yòu yòng hù kě dú gāi mù lù, dàn zhǐ yòu shǔ zhù cái néng gǎi biàn mù lù zhōng de nèi róng
suid de dài biǎo shù zì shì 4, bǐ rú 4755 de jiēguǒ shì -rwsr-xr-x
sgid de dài biǎo shù zì shì 2, bǐ rú 6755 de jiēguǒ shì -rwsr-sr-x
sticky wèi dài biǎo shù zì shì 1, bǐ rú 7755 de jiēguǒ shì -rwsr-sr-t |
|
|