تهدف بعض البرامج التعليمية أحيانًا إلى شرح أوامر أكثر غرابة وغرابة إلى حد ما ، من ناحية أخرى ، هناك بعض البرامج التي تتضمن توزيعات متسلسلة وليست شائعة مثل cd و ls و cat وما إلى ذلك ، ولكنها عملية بنفس القدر. سأوضح لك في هذا البرنامج التعليمي ما يمكن فعله باثنين من هذه الأوامر: basename وأخبرني.
ربما بداهة أنها تبدو سخيفة بالنسبة لك ولا فائدة لها ، لكن لها فائدة تطبيقات عملية جدا في بعض الحالات ، على سبيل المثال ، في البرامج النصية حيث تحتاج إلى استخراج جزء من المسار ، مثل اسم الملف أو الدليل بحيث يعمل أمر آخر على هذا ...
لماذا هم
هذه الأوامر أساسية للغاية ، و وظائفها هي:
- basename: يستخدم لاستخراج اسم الملف من مسار.
- اسم: يستخدم لاستخراج اسم الدليل من المسار.
أمثلة الاستخدام
هنا يمكنك رؤية البعض Ejemplos كيفية استخدامها:
- على سبيل المثال ، لاستخدام basename مع / etc / passwd ، ويعيد اسم الملف في مخرجاته ، في هذه الحالة passwd:
basename /etc/passwd
- يمكنك أيضا تحديد امتداد بحيث يعطيك اسم الملف بدون الامتداد. على سبيل المثال ، لنفترض أنك تريد استخراج اسم صورة /home/media/test.jpg بدون امتداد jpg (سيعود prueba):
basename -s .jpg /home/media/prueba.jpg
- يمكنك حتى معالجة طرق متعددة في وقت واحد بشكل منفصل ، لهذا عليك استخدام الخيار -a:
basename -a /etc/passwd /var/log/boot.log
- للقيام بالعكس ، وإعطائك اسم الدليل ، بدون اسم الملف ، ثم عليك استخدام اسم. على سبيل المثال ، إذا كنت تريد استخدامه في المسار /var/spool/mail/test.txt وإعادته / var / spool / mail ، فاستخدم:
dirname /var/spool/mail/prueba.txt
أما بالنسبة ل فائدة في البرنامج النصي، هنا لديك مثال آخر. تخيل أن لديك نصًا بسيطًا ، وأن فيه مسارًا متغيرًا. لكنك تريد أن يظهر الدليل الذي يحتوي على ملف ، بغض النظر عن الملف ، في هذه الحالة يمكن أن يكون لديك شيء مثل:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
من الواضح ، في هذا النص ، سيكون "اسم المسار" دائمًا هو نفسه الثابت الذي أعلنه الثابت في البداية ، ولكن قد تكون هناك حالات لا تكون كذلك ، وهذا هو المكان يصبح عمليًا. على سبيل المثال:
/*script para convertir una imagen gif en png*/ #!/bin/sh for file in *.gif;do #Salir si no hay ficheros if [! -f $file];then exit fi b='basename $file .gif' echo NOW $b.gif is $b.png giftopnm $b.gif | pnmtopng >$b.png done
مثال جيد على تلك الأشياء التي تراها عديمة الفائدة عندما تتعلم ، ولكن عندما تصل إلى الموضوع ترى مدى كونها عملية.