دستور basename یک ابزار خط فرمان است که پسوند دایرکتوری و فایل های داده شده را جدا می کند.
در ادامه با ما در شتابان هاست همراه باشید.
دستور basename از دو قالب نحوی پشتیبانی می کند:
basename NAME [SUFFIX] basename OPTION... NAME...
basename یک نام پرونده را می گیرد و آخرین جز component نام پرونده را چاپ می کند. به صورت اختیاری ، همچنین می تواند هر پسوند دنباله دار را حذف کند. این یک دستور ساده است که فقط چند گزینه را می پذیرد.
ابتدایی ترین نمونه این است که نام فایل را با فهرست راهنمای اصلی حذف کنید:
basename /etc/passwd
خروجی شامل نام پرونده خواهد بود:
passwd
دستور basename هر گونه دنباله / نویسه را حذف می کند:
basename /usr/local/
basename /usr/local
هر دو دستور خروجی یکسانی را تولید می کنند:
local local
به طور پیش فرض ، هر خط خروجی به یک خط جدید منتهی می شود. برای پایان دادن به خطوط با NUL ، از گزینه -z (–zero) استفاده کنید.
دستور basename می تواند چندین نام را به عنوان آرگومان بپذیرد. برای انجام این کار ، دستور را با گزینه -a (–multiple) فراخوانی کنید و به دنبال آن لیست فایل های جدا شده با فاصله را دنبال کنید.
به عنوان مثال ، برای بدست آوردن نام پرونده های / etc / passwd و / etc / shadow شما اجرا می کنید:
basename -a /etc/passwd /etc/shadow
خروجی:
passwd shadow
برای حذف هر پسوند انتهایی از نام پرونده ، پسوند را به عنوان آرگومان دوم وارد کنید:
basename /etc/hostname name
خروجی:
name
به طور کلی ، این ویژگی برای سلب کردن پسوندهای پرونده استفاده می شود:
basename /etc/sysctl.conf .conf
خروجی:
sysctl
روش دیگر برای حذف پسوند انتهایی تعیین پسوند با گزینه -s (–suffix = SUFFIX):
basename -s .conf /etc/sysctl.conf
خروجی:
sysctl
این فرم نحوی به شما امکان می دهد هر پسوند دنباله دار را از چندین نام حذف کنید:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
خروجی:
sysctl sudo
مثال زیر نحوه استفاده از دستور basename را در داخل bash for loop نشان می دهد تا با جایگزینی پسوند پرونده از “.jpeg” به “.jpg” ، تمام پرونده های پایان یافته با “.jpeg” را در فهرست فعلی تغییر نام دهید:
for file in *.jpeg; do mv -- "$file" "$(basename $file .jpeg).jpg" done
اگر از bash به عنوان پوسته خود استفاده می کنید ، به جای فراخوانی نام اصلی ، می توانید از پسوند دنباله ای با استفاده از Shell Parameter Expansion استفاده کنید.
دستور basename هر دایرکتوری اصلی و پسوند دنباله ای را از نام جدا می کند.
امیدوارم این مقاله براتون مفید بوده باشه.
ما رو تو شتابان هاست دنبال کنید