دستور Basename در لینوکس

دستور Basename در لینوکس

علی مرادی

دستور basename یک ابزار خط فرمان است که پسوند دایرکتوری و فایل های داده شده را جدا می کند.

در ادامه با ما در شتابان هاست همراه باشید.

دستور 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 هر دایرکتوری اصلی و پسوند دنباله ای را از نام جدا می کند.

امیدوارم این مقاله براتون مفید بوده باشه.

ما رو تو شتابان هاست دنبال کنید

برچسب ها: دستورات لینوکس