خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش استفاده از دستور basename در لینوکس
basename یک ابزار خط فرمان است که دایرکتوری و پسوند انتهایی را از نام فایل های داده شده حذف می کند.
دستور basename یک ورودی که نام فایل است را می گیرد و آخرین کامپوننت یا بخش فایل را نمایش می دهد. به صورت کاملا اختیاری و Optional، می تواند پسوند را حذف کند. basename یک دستور ساده است که تنها چند گزینه را می پذیرد. ساده ترین مثال، پرینت نام فایل با حذف دایرکتوری است:
در خروجی فقط نام فایل را نمایش می دهد:
دستور basename هر کاراکتر یا چیزی که پس از نام فایل باشد را حذف می کند. به مثال زیر دقت کنید:
دستور basename حتی می تواند چندین فایل را به عنوان پارامتر بپذیرد. برای انجام این کار، دستور را با گزینه a- همراه کنید و سپس لیستی از فایلها را که با فاصله از هم جدا شدهاند، فراخوانی کنید. به عنوان مثال، برای دریافت نام فایل های etc/shadow و etc/passwd، دستور زیر را اجرا کنید:
برای حذف پسوند و یا هر چیزی که در انتهای نام وجود دارد، کافیست مورد حذفی را به عنوان پارامتر دوم به دستور basename پاس دهید. به مثال زیر دقت کنید:
به طور کلی، این ویژگی برای حذف پسوند فایل استفاده می شود:
راه دیگر برای حذف پسوند انتهایی این است که پسوند را با گزینه s- مشخص کنید.
همانطور که در ذیل مشاهده می کنید، دستور به ما این امکان را می دهد که هر پسوند انتهایی را از چندین نام حذف کنیم. به جای اینکه چندین بار دستور را برای چندین فایل اجرا کنیم، به یکبار می توانیم پسوند را از فایل ها حذف کنیم:
مثال زیر نشان می دهد که چگونه می توان از دستور basename در bash for loop برای تغییر نام همه فایل هایی که با ".jpeg" ختم می شوند. در دایرکتوری جاری می خواهیم پسوند فایل را از jpeg به jpg تغییر دهیم.
دستور فوق هر فایل یا عکسی که پسوند jpeg داشته باشد، پسوند را به jpg تغییر می دهد.
بکارگیری دستور basename در لینوکس
Syntax کلی دستور basename بصورت یر می باشد:basename NAME [SUFFIX]
basename OPTION... NAME...
دستور basename یک ورودی که نام فایل است را می گیرد و آخرین کامپوننت یا بخش فایل را نمایش می دهد. به صورت کاملا اختیاری و Optional، می تواند پسوند را حذف کند. basename یک دستور ساده است که تنها چند گزینه را می پذیرد. ساده ترین مثال، پرینت نام فایل با حذف دایرکتوری است:
basename /etc/passwd
در خروجی فقط نام فایل را نمایش می دهد:
passwd
دستور basename هر کاراکتر یا چیزی که پس از نام فایل باشد را حذف می کند. به مثال زیر دقت کنید:
basename /usr/local/
basename /usr/local
local
local
دستور basename حتی می تواند چندین فایل را به عنوان پارامتر بپذیرد. برای انجام این کار، دستور را با گزینه a- همراه کنید و سپس لیستی از فایلها را که با فاصله از هم جدا شدهاند، فراخوانی کنید. به عنوان مثال، برای دریافت نام فایل های etc/shadow و etc/passwd، دستور زیر را اجرا کنید:
basename -a /etc/passwd /etc/shadow
passwd
shadow
برای حذف پسوند و یا هر چیزی که در انتهای نام وجود دارد، کافیست مورد حذفی را به عنوان پارامتر دوم به دستور basename پاس دهید. به مثال زیر دقت کنید:
basename /etc/hostname name
host
به طور کلی، این ویژگی برای حذف پسوند فایل استفاده می شود:
basename /etc/sysctl.conf .conf
sysctl
راه دیگر برای حذف پسوند انتهایی این است که پسوند را با گزینه s- مشخص کنید.
basename -s .conf /etc/sysctl.conf
sysctl
همانطور که در ذیل مشاهده می کنید، دستور به ما این امکان را می دهد که هر پسوند انتهایی را از چندین نام حذف کنیم. به جای اینکه چندین بار دستور را برای چندین فایل اجرا کنیم، به یکبار می توانیم پسوند را از فایل ها حذف کنیم:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
مثال زیر نشان می دهد که چگونه می توان از دستور basename در bash for loop برای تغییر نام همه فایل هایی که با ".jpeg" ختم می شوند. در دایرکتوری جاری می خواهیم پسوند فایل را از jpeg به jpg تغییر دهیم.
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
دستور فوق هر فایل یا عکسی که پسوند jpeg داشته باشد، پسوند را به jpg تغییر می دهد.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: