وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیم

0 7
زمان لازم برای مطالعه: 2 دقیقه


هنگام کار با اسکریپت های bash، دانستن محل اسکریپت مفید است. این می تواند به ویژه هنگام کار با مسیرهای فایل نسبی یا زمانی که سعی می کنید اسکریپت ها یا دستورات دیگری را از داخل اسکریپت اجرا کنید مفید باشد. در این مقاله، ما نگاهی به چند روش مختلف برای تعیین دایرکتوری یک اسکریپت bash از درون خود اسکریپت خواهیم داشت.

چگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیم

در حین برنامه نویسی bash، ممکن است به مکان اسکریپت برای خودکارسازی وظایف مختلف نیاز داشته باشید. دو نوع مسیر در لینوکس وجود دارد:

  • مسیر اقوام: نسبی دایرکتوری کاری فعلی است.
  • مسیر مطلق: این مسیر کامل دایرکتوری و فایل ها است.

یکی از رایج ترین راه ها برای تعیین مکان اسکریپت bash استفاده از آن است pwd فرمان این pwd فرمان (چاپ فهرست کار) دایرکتوری فعلی را نشان می دهد.

بنابراین، در بسیاری از شرایط به سادگی با استفاده از pwd دستور کار نمی کند زیرا فقط مسیر دایرکتوری در حال کار را می دهد.

به عنوان مثال، اگر اسکریپت در دانلودها دایرکتوری و در حال اجرا از دسکتاپ سپس خروجی شامل /home/usr/Desktop نه محل فایل اسکریپت bash که هست /home/usr/دانلودها.

این آموزش در مورد دریافت مسیر دایرکتوری که فایل اسکریپت bash در آن قرار دارد از داخل اسکریپت است.

پیشنهاد می‌کنیم بخوانید:  روش خواندن داده های ستونی از یک فایل متنی در اسکریپت Bash Shell

روش دریافت مسیر دایرکتوری که فایل اسکریپت Bash در آن قرار دارد

راه دیگر برای تعیین دایرکتوری اسکریپت Bash استفاده از آن است dirname فرمان این dirname دستور یک مسیر فایل را به عنوان آرگومان می گیرد و بخش دایرکتوری مسیر را برمی گرداند.

برای استفاده dirname دستور برای تعیین دایرکتوری یک اسکریپت، باید دستوری را با مسیر تا آخرین اجزای غیر اسلش به اسکریپت به عنوان آرگومان فراخوانی کنید.

برای جزئیات بیشتر در مورد dirname دستورات زیر را در terminal:

$ مرد dirname

فقط dirname کار نخواهد کرد، ما به دستور دیگری نیاز داریم لینک خواندن. این لینک خواندن دستور چاپ پیوند نمادین را حل کرد. با اجرای دستور زیر اطلاعات بیشتری در مورد این دستور بدست آورید:

$ مرد لینک خواندن

اکنون، یک اسکریپت ایجاد کنید:

$ سودو نانو myScript.sh

و تایپ کنید:

#!/bin/bash

اکو «مسیر اسکریپت bash است $(dirname — “$(readlink -f – “$0”);)“؛

برای اجرای اسکریپت از:

$ ضربه شدید myScript.sh

چگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیم

بیایید دایرکتوری را تغییر دهیم و ببینیم خروجی چیست:

چگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیمچگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیم

توجه داشته باشید: در یک مورد، اسکریپت بالا کار نخواهد کرد اگر فایل به جای اجرا منبع شود، همانطور که در خروجی زیر مشاهده می شود:

چگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیمچگونه فهرستی را که یک اسکریپت Bash در آن قرار دارد از داخل اسکریپت پیدا کنیم

خروجی است /home/sam/Desktop در حالی که فایل اسکریپت در موجود است /خانه/سام فهرست راهنما.

نتیجه

در نتیجه، راه‌های متعددی برای تعیین دایرکتوری یک اسکریپت bash از درون خود اسکریپت وجود دارد. این dirname همراه با لینک خواندن ابزار می تواند برای تعیین دایرکتوری یک اسکریپت استفاده شود. با این حال، به سادگی با استفاده از pwd دستور کار نمی کند زیرا فقط دایرکتوری در حال کار را ارائه می دهد.

پیشنهاد می‌کنیم بخوانید:  روش شبیه سازی آرایه ای از آرایه ها در Bash

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-29 07:44:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید