ما از مسیرهای مطلق و نسبی در کنسول استفاده می کنیم. مبانی لینوکس: مقدمه ای بر bash inodes چیست

پس از خواندن این مقاله، متوجه خواهید شد که چیست ضربه شدید(پوسته استاندارد لینوکس)، یاد بگیرید که چگونه دستورات استاندارد را مدیریت کنید: ls, cp, mv... هدف اینودها، پیوندهای سخت و نمادین و موارد دیگر را درک کنید.

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

مقدمه ای بر bash

پوسته

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

\$

اگر یک پوسته گرافیکی پس از ورود بارگیری شد، برای رسیدن به مفسر فرمان باید یک شبیه ساز ترمینال (gnome-terminal، xfce4-terminal، konsole، xterm، rxvt ...) راه اندازی کنید یا با فشار دادن به یکی از پایانه های مجازی بروید. ctrlaltF1یا ctrlaltF2و غیره.

ممکن است درخواست پوسته در رایانه شما با آنچه در مثال نشان داده شده است متفاوت باشد. ممکن است شامل نام کاربری، نام کامپیوتر و نام دایرکتوری فعلی باشد. اما با وجود تمام این تفاوت ها، برنامه ای که این دستور را چاپ می کند، نام دارد. پوسته” (پوسته)، و به احتمال زیاد پوسته شما برنامه ای به نام است ضربه شدید.

آیا در حال دویدن هستید؟

با دستور زیر می توانید بررسی کنید که bash در حال اجرا است:

\$ echo \$SHELL/bin/bash

اگر در نتیجه اجرای این دستور با خطایی مواجه شدید یا خروجی آن با مثالی متفاوت باشد، ممکن است از bash به عنوان پوسته فرمان در سیستم شما استفاده نشود. با وجود این، بیشتر مطالب مرتبط خواهند بود، اما ما همچنان توصیه می کنیم که به bash بروید. این کار را می توان (در صورت نصب bash روی سیستم) با دستور زیر انجام داد:

\$ ضربه شدید

بش چیه

Bash (مخفف " بما - آکسب کردن SH ell") مفسر فرمان استاندارد در اکثر سیستم های لینوکس است. مسئولیت های او شامل پردازش و اجرای دستوراتی است که کاربر با آن کامپیوتر را کنترل می کند. بعد از اینکه کار خود را کامل کردید، می توانید فرآیند پوسته را پایان دهید. پس از فشار دادن کلیدها ctrlD، دستورات خروجیا خروجفرآیند پوسته خاتمه می یابد و صفحه دوباره از شما یک نام کاربری و رمز عبور می خواهد.

با استفاده از "cd"

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

$ سی دی /

با این دستور به bash گفتیم که میخواهیم به دایرکتوری ریشه برویم - / . تمام دایرکتوری ها در سیستم در یک ساختار درختی و / این آغاز (یا ریشه) آن است. تیم سی دیبرای تغییر دایرکتوری کاری فعلی استفاده می شود.

راه ها

برای پیدا کردن کجای فایل سیستم این لحظهشما در (دایرکتوری کاری فعلی) هستید:

\$ pwd /

در مثال بالا / - استدلال فرمان سی دی- زنگ زد مسیر. این محل فایل سیستمی است که می خواهیم در آن جابجا شویم. در این مورد / - مسیر مطلق، به این معنی که مسیر نسبت به دایرکتوری ریشه است.

مسیرهای مطلق

در اینجا چند نمونه از مسیرهای مطلق آورده شده است

/dev /usr /usr/bin /usr/local/bin

همانطور که ممکن است متوجه شده باشید، همه این مسیرها با این واقعیت که با آن شروع می شوند متحد می شوند / . تعیین مسیر /usr/local/bin به عنوان آرگومان برای دستور سی دیبه آن می گوییم که به دایرکتوری root برود / ، سپس به پوشه usr، سپس به local و bin. مسیرهای مطلق همیشه با /

مسیرهای نسبی

نوع دوم مسیرها را نسبی می نامند. ضربه شدید، تیم سی دیو دستورات دیگر این مسیرها را نسبت به دایرکتوری فعلی شمارش می کنند. مسیرهای نسبی هرگز با شروع نمی شوند / . به عنوان مثال، اگر در /usr هستیم

\$ cd /usr

سپس می توانیم با استفاده از یک مسیر نسبی به /usr/local/bin برویم

\$ cd local/bin \$ pwd/usr/local/bin

استفاده از ".."

مسیرهای نسبی می توانند شامل یک یا چند دایرکتوری باشند «..» . ".." نشان دهنده دایرکتوری والد دایرکتوری کاری ما است. مثال:

\$ pwd/usr/local/bin\$ سی دی.. \$ pwd/usr/local

همانطور که می توانید تیم را ببینید سی دی.."ما را به سطح بالاتری می برد".

می توانید اضافه کنید .. به مسیر نسبی این به دایرکتوری منتقل می شود که در همان سطحی است که ما در آن هستیم. مثال:

\$ pwd/usr/local\$ سی دی ../اشتراک گذاری \$ pwd/usr/share

مثال هایی با استفاده از مسیرهای نسبی

مسیرهای نسبی می توانند بسیار مشکل باشند. در اینجا چند نمونه آورده شده است. نتیجه اجرای دستورات نشان داده نمی شود، سعی کنید تعیین کنید که در کدام دایرکتوری با استفاده از bash خواهید دید.

\$ سی دی /bin \$ سی دی ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ سی دی ../lib/X11 \$ cd /usr/bin \$ سی دی ../bin/../bin

دایرکتوری کاری "."

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

\$ ./myprog

که در آخرین نمونه myprog فایل اجرایی در دایرکتوری فعلی است که اجرا خواهد شد.

سی دی و فهرست اصلی کاربر

برای تغییر به فهرست اصلی خود، تایپ کنید

\$ سی دی

بدون استدلال، cd شما را به دایرکتوری اصلی منتقل می کند. برای ابرکاربر، دایرکتوری خانه معمولاً /root و for است کاربران عادی- /home/username/. اما اگر بخواهیم یک فایل خاص را که در دایرکتوری خانه قرار دارد مشخص کنیم چه می شود. به عنوان مثال، به عنوان یک استدلال برای برنامه "myprog"? می توانید بنویسید:

\$ ./myprog /home/user/myfile.txt

با این حال، استفاده از مسیرهای فایل مطلق همیشه راحت نیست. همین عملیات را می توان با ~ – تایلدها:

\$ ./myprog ~/myfile.txt

~ نام خاصی است که به دایرکتوری اصلی کاربر در bash اشاره می کند.

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

اما اگر بخواهیم به فایلی در فهرست اصلی کاربر دیگری اشاره کنیم، چه؟ برای این کار پس از tilde باید نام این کاربر را مشخص کنید. به عنوان مثال، برای اشاره به فایل fredsfile.txt که در فهرست اصلی کاربر fred قرار دارد:

\$ ./myprog ~fred/fredsfile.txt

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

مقدمه ای بر ls

احتمالاً از قبل تیم را می شناسید ls، که بدون آرگومان فراخوانی می شود، لیستی از فایل های ذخیره شده در دایرکتوری کاری را نمایش می دهد:

\$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 شامل libexec portage share tmp distfiles i686-linux local portage.old src

اگر گزینه را مشخص کنید ، می توانید همه فایل ها، از جمله فایل های مخفی (که نام آنها با نقطه شروع می شود) را ببینید.

\$ ls-a. bin gentoo-x86 شامل libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

لیست دقیق دایرکتوری ها

بعد از دستور lsیک یا چند فایل یا دایرکتوری را می توان به عنوان آرگومان آن مشخص کرد. اگر نام فایل را مشخص کنید، دستور lsفقط اطلاعات مربوط به آن فایل را نمایش می دهد. و اگر نام دایرکتوری را مشخص کنید، lsتمام محتویات آن را نشان خواهد داد. گزینه "-ل"دستورات lsاگر بخواهید علاوه بر نام فایل ها، اطلاعات دقیق تری در مورد آنها (مجوزهای فایل، نام مالک، زمان) پیدا کنید، می تواند بسیار مفید باشد. آخرین تغییرفایل و اندازه آن).

مثال زیر استفاده از گزینه را نشان می دهد "-ل"برای نمایش اطلاعات مربوط به فایل های ذخیره شده در پوشه /usr

\$ ls -l /usr drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6 drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfi 26 Dec 12:47 distfi : 57 doc -> share/doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr-x 6 root 23:10 nu drwx r-xr-x 54 root root 5992 Dec 24 22:30 شامل lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/info drwxr-xr-x 28 root root 13552 Dec 23-26rwxrwx 00 00:34 libexec drwxr-xr-x 8 root root 240 Dec 22 20:57 local lrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/man lrwxrwxrwx 1 root 11 dec 22 - 5-6 portax 8 Dec 0 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root root 3096 Dec 22 20:57 sbin drwxr-xr-x 46 root 1144 دسامبر 24 15:32 اشتراک drwxr-xr-xrx 22:32 drwxr-xr-x r-x 6 root root 176 نوامبر 24 14:25 ssl lrwxrwxrwx 1 root root 10 دسامبر 22 20:57 tmp -> ../var/tmp

ستون اول اطلاعات مربوط به مجوزهای هر فایل در لیست را نشان می دهد. (کمی بعد توضیح خواهم داد که کدام حرف مخفف چه چیزی است.) ستون بعدی تعداد پیوندهای هر عنصر لیست را نشان می دهد. ستون سوم و چهارم به ترتیب مالک و گروه فایل هستند. ستون پنجم اندازه است. ششمین زمان آخرین ویرایش فایل است ('آخرین زمان اصلاح شده' یا mtime). آخرین ستون نام فایل یا دایرکتوری است (اگر این یک پیوند است، پس از " –> " نام شیئی است که به آن اشاره دارد).

نحوه مشاهده فقط دایرکتوری ها

گاهی اوقات نیاز به مشاهده اطلاعات فقط در مورد دایرکتوری ها و نه در مورد تمام محتوای آنها وجود دارد. این گزینه به این کار کمک می کند. "-d"، که به فرمان می گوید فقط اطلاعات دایرکتوری ها را نمایش دهد. مثال:

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr drwxr-xr-x 2 root 3192 دسامبر 26 12:512 drwxr-xr 6 576 دسامبر 27 08:56 /usr/bin

لیست بازگشتی و اطلاعات inode

اقدام گزینه "-R"عمل مخالف "-d". به شما امکان می دهد اطلاعات مربوط به فایل های موجود در فهرست را به صورت بازگشتی نمایش دهید. ابتدا محتویات دایرکتوری نشان داده می شود. سطح بالا، سپس به نوبه خود محتویات همه زیر شاخه ها و غیره. خروجی این دستور می تواند بسیار بزرگ باشد، بنابراین ما مثالی از آن نمی زنیم، اما می توانید خودتان با تایپ کردن آن را امتحان کنید. خط فرمانls -R' یا ' ls-RL‘.

و در نهایت گزینه '-من'برای خروجی inodeهای هر شی سیستم فایل استفاده می شود.

\$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 3892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5138 portage .

اینودها چیست؟

هر شیء از سیستم فایل (فایل، دایرکتوری ...) شماره منحصر به فرد خود را دارد که نامیده می شود inode(شماره ایند). این اطلاعات ممکن است ناچیز به نظر برسد، اما درک عملکرد inodes به شما در درک بسیاری از عملیات سیستم فایل کمک می کند. به عنوان مثال، بیایید نگاه کنیم «.» و «..» مانند پیوندهای موجود در هر دایرکتوری. برای درک اینکه دایرکتوری چیست «..» ، inode دایرکتوری /use/local را پیدا کنید

\$ ls -id /usr/local 5120 /usr/local

همانطور که می بینیم، inode دایرکتوری /usr/local 5120 است. حال بیایید ببینیم فهرست /usr/local/bin/.. چه inode دارد:

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

معلوم شد که inode دایرکتوری های /usr/local و /usr/local/bin/.. یکسان است! این بدان معناست که دو نام به inode 5120 اشاره دارد: /usr/local و /usr/local/bin/.. یعنی این دو نام متفاوت برای یک فهرست هستند. هر inode به مکان خاصی روی دیسک اشاره می کند.

هر inode می تواند چندین نام شیء سیستم فایل مرتبط با خود داشته باشد. تعداد فایل "مترادف" (اشیاء سیستم فایل که به یک ایند اشاره می کنند) عدد را در ستون دوم خروجی فرمان نشان می دهد. ls-l‘.

\$ ls -dl /usr/local drwxr-xr-x 8 root root 240 دسامبر 22 20:57 /usr/local

در این مثال، می توانید (ستون دوم) ببینید که دایرکتوری /usr/local توسط 8 شیء سیستم فایل مختلف ارجاع داده می شود. در اینجا نام آنها آمده است:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/src/..

mkdir

بیایید نگاهی به دستور بیاندازیم mkdir. برای ایجاد دایرکتوری های جدید استفاده می شود. مثال زیر ایجاد سه دایرکتوری جدید (tic, tac, toe) در پوشه /tmp را نشان می دهد

\$ سی دی / tmp $ mkdir تیک تاک پا

دستور پیش فرض mkdirنمی تواند یک ساختار دایرکتوری تودرتو ایجاد کند. بنابراین، اگر شما نیاز به ایجاد چندین دایرکتوری تودرتو دارید ( برنده/در/پول، سپس باید این دستور را سه بار به نوبت فراخوانی کنید:

\$ mkdir won/der/ful mkdir: نمی تواند دایرکتوری "won/der/ful" ایجاد کند: چنین فایل یا دایرکتوری \$ وجود ندارد mkdir برنده شد \$ mkdir won/der \$ mkdir won/der/ful

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

\$ mkdir -p easy/as/pie

برای آشنایی بیشتر با قابلیت های این ابزار، راهنمای فراخوانی شده توسط دستور را مطالعه کنید مرد mkdir. تقریباً برای تمام دستورات این کتابچه راهنما راهنما در دسترس است (به عنوان مثال، مرد ls)، بجز سی دی، زیرا در bash تعبیه شده است (برای چنین دستوراتی، کمک به این شکل نامیده می شود: سی دی کمک)

دست زدن به

بیایید به یادگیری دستورات برویم cpو mv، برای کپی، تغییر نام و انتقال فایل ها و دایرکتوری ها استفاده می شود. اما قبل از آن، اجازه دهید با استفاده از دستور یک فایل خالی در پوشه /tmp ایجاد کنیم دست زدن به:

\$ سی دی / tmp \$ کپی را لمس کنید

تیم دست زدن بهزمان آخرین دسترسی به فایل را به روز می کند (ستون ششم خروجی دستور ls-l) اگر از قبل وجود داشته باشد، یا اگر از قبل وجود نداشته باشد، یک فایل خالی جدید ایجاد می کند. بعد از این عملیات باید یک فایل خالی داشته باشیم /tmp/copyme.

اکو

حالا که یک فایل خالی داریم، بیایید با استفاده از دستور، یک رشته متن روی آن بنویسیم اکو، که آرگومان ارسال شده به آن را به خروجی می دهد دستگاه استانداردخروجی (ترمینال متنی در مورد ما).

\$ echo "firstfile"اولین فایل

برای نوشتن یک رشته در فایل خود، خروجی دستور را به آن هدایت می کنیم اکو:

\$ echo "firstfile" > copyme

امضا کردن > (بزرگتر) به پوسته می گوید که خروجی فرمان سمت چپ را به نام فایل سمت راست هدایت کند. اگر فایلی با همین نام وجود نداشته باشد، به صورت خودکار ایجاد می شود. و اگر چنین فایلی از قبل وجود داشته باشد، بازنویسی می شود (تمام محتویات آن قبل از نوشتن خط ما پاک می شود). تیم 'ls -l'نشان خواهد داد که اندازه فایل ما اکنون 10 بایت است - نه بایت توسط کلمه "firstfile" و یک بایت کاراکتر تغذیه خط است.

\$ ls -l کپی کنید-rw-r--r-- 1 روت 10 دسامبر 28 14:13 کپی

گربه و cp

برای نمایش محتویات یک فایل در ترمینال از دستور استفاده کنید گربه:

\$ کپی گربهاولین فایل

اکنون می‌توانیم عملکرد اصلی دستور را تجزیه کنیم cp. این دستور دو آرگومان می گیرد. اولی نام یک فایل از قبل موجود ('copyme')، دومی نام کپی جدیدی است که می خواهیم ایجاد کنیم ('copyme').

\$ cp copyme copiedme

ما می‌توانیم مطمئن شویم که کپی جدید فایل دارای یک شماره ایند متفاوت است (این بدان معناست که ما یک فایل مجزا واقعاً جدید دریافت کرده‌ایم، نه فقط یک پیوند به فایل قدیمی)

\$ ls -i copyeme copiedme 648284 کپی

mv

حالا بیایید دستور را اعمال کنیم mvبرای تغییر نام فایل ("copiedme" -> "movedme"). شماره inode بعد از این عمل تغییر نمی کند، بلکه فقط نام فایل تغییر می کند.

\$ mv copied-me-moved-me \$ ls -i من را حرکت داد 648284 movedme

شماره inode تغییر نمی کند مگر اینکه فایل تغییر نام یافته در همان فایل سیستم فایل اصلی باقی بماند. در بخش بعدی این آموزش نگاهی دقیق تر به نحوه چیدمان فایل سیستم ها خواهیم داشت.

تیم mvبه شما این امکان را می دهد که نه تنها نام فایل ها را تغییر دهید، بلکه آنها را نیز منتقل کنید. به عنوان مثال، برای انتقال یک فایل /var/tmp/myfile.txtبه دایرکتوری /home/userشما باید دستور را بدهید:

\$ mv /var/tmp/myfile.txt /home/user

فایل به فهرست اصلی کاربر منتقل می شود کاربرحتی اگر در یک سیستم فایل متفاوت باشد (در این صورت فایل در یک مکان جدید کپی می شود و فایل اصلی حذف می شود). همانطور که ممکن است تا به حال حدس زده باشید، انتقال یک فایل به یک فایل سیستم دیگر، ایند آن را تغییر می دهد. این به این دلیل است که هر فایل سیستم مجموعه ای از inode های خاص خود را دارد.

لازم به ذکر است که این احتمال وجود دارد که شماره inode اختصاص داده شده جدید با شماره قبلی یکی باشد، اما بسیار کم است.

برای انتقال چندین فایل به طور همزمان در یک فهرست، باید بنویسید:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user \$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

اگر گزینه را اضافه کنید "-v"، گزارشی از عملیات انجام شده روی صفحه نمایش داده می شود:

\$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt"/var/tmp/myfile1.txt" -> "/home/user/myfile1.txt" "/var/tmp/myfile2.txt" -> "/home/user/myfile2.txt"

همه فایل ها در لینوکس دارای یک آدرس خاص در سیستم فایل هستند که با استفاده از برنامه مدیریت فایل یا کنسول می توانیم به آنها دسترسی داشته باشیم. این یک موضوع نسبتاً ساده است، اما بسیاری از مبتدیان با آن مشکل دارند.

در یادداشت کوتاه امروز، به این خواهیم پرداخت که مسیر فایل لینوکس چیست، چه چیزی می تواند باشد، چگونه آن را به درستی بنویسیم، و بسیاری موارد دیگر. اگر قبلاً در این مورد مشکل داشتید ، پس از خواندن مقاله همه چیز کاملاً روشن می شود.

مسیرهای فایل در لینوکس

سیستم فایل لینوکس با ویندوز بسیار متفاوت است. ما ساختار آن را در نظر نخواهیم گرفت، این قبلا انجام شد. ما روی کار با فایل ها تمرکز خواهیم کرد.

مهم ترین تفاوت این است که آدرس فایل از یک درایو شروع نمی شود، به عنوان مثال، C:\ یا D:\، همانطور که در ویندوز اتفاق می افتد، بلکه از ریشه، دایرکتوری سیستم ریشه که بقیه به آن متصل هستند شروع می شود. آدرس او - /. و در اینجا لازم است در مورد آدرس ها صحبت شود. مسیرهای فایل لینوکس از یک اسلش رو به جلو "/" برای جدا کردن دایرکتوری‌ها در آدرس استفاده می‌کنند، و این با چیزی که شما به دیدن آن در ویندوز عادت دارید - \ متفاوت است.

به عنوان مثال، اگر در ویندوز پرمسیر فایل روی دسکتاپ شبیه C:\Users\Sergiy\Desktop\ بود، سپس مسیر فایل در لینوکس به سادگی /home/sergiy/desktop/ خواهد بود. با این، همه چیز ساده و واضح است. اما مشکلات همچنان به وجود می آیند.

در اتاق عمل سیستم لینوکسچندین نوع مسیر فایل می تواند وجود داشته باشد. بیایید ببینیم چه مسیرهایی در لینوکس وجود دارد:

  • مسیر کامل و مطلق لینوکس از ریشه سیستم فایل- شما قبلاً این مسیر را در مثال بالا مشاهده کرده اید، از ریشه "/" شروع می شود و کل مسیر فایل را توصیف می کند.
  • مسیر نسبی لینوکسمسیر فایل نسبت به پوشه فعلی است، چنین مسیرهایی اغلب گیج کننده هستند.
  • مسیر نسبت به پوشه اصلی کاربر فعلی.- مسیر در سیستم فایل، اما نه از ریشه، بلکه از پوشه کاربر فعلی.

حال بیایید نگاهی دقیق تر به نحوه ظاهر این مسیرها در لینوکس بیندازیم و همچنین چند مثال را برای روشن شدن کامل آن تحلیل کنیم. برای نشان دادن، از ابزار ls استفاده می کنیم که برای مشاهده محتویات دایرکتوری ها طراحی شده است.

به عنوان مثال، ما یک دایرکتوری مانند این در پوشه اصلی خود داریم که چهار فایل در آن وجود دارد:

مسیر کامل لینوکس یکی از فایل ها به این صورت خواهد بود:

ls /home/sergiy/tmp/file1

این یک مسیر نسبی لینوکس است که از پوشه اصلی شروع می شود و با ~/ نشان داده می شود. توجه داشته باشید که نه ~، بلکه ~/. سپس می توانید زیر پوشه ها را در مورد ما tmp مشخص کنید:

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

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

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

چنین ساختارهایی را می توان اغلب در هنگام کامپایل برنامه ها مشاهده کرد. شما می توانید از تمام این نمادها و مسیرهای فایل لینوکس نه تنها در ترمینال، بلکه در هر کدام استفاده کنید مدیر فایلکه می تواند بسیار راحت باشد.

اما ترمینال لینوکس گزینه های بیشتری را ارائه می دهد. می توانید از کاراکترهای جایگزین ساده به طور مستقیم در آدرس های فایل یا دایرکتوری استفاده کنید. برای مثال، می‌توانید تمام فایل‌هایی را که با f شروع می‌شوند فهرست کنید:

یا حتی می توانید نه تنها در پوشه tmp، بلکه در هر زیر پوشه پوشه اصلی خود جستجو کنید:

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

نتیجه گیری

همین. اکنون همه چیزهایی را که نه تنها برای نوشتن صحیح مسیر به آن نیاز دارید، می دانید فایل لینوکس، بلکه اقدامات پیچیده تری را نیز انجام دهید، مانند جستجوی فایل ها یا پیمایش دایرکتوری ها با استفاده از دستور cd. اگر سوالی دارید، در نظرات بپرسید!

پست های مرتبط:


اخیراً دستوراتی را برای حرکت از طریق دایرکتوری ها در ترمینال شرح دادم لینوکس. بنابراین تصمیم گرفتم داستان دستورات موجود در کنسول را ادامه دهم. بنابراین به نظر می رسد که حرکات مرتب شده اند. اکنون می‌خواهم با جزئیات بیشتری در نظر بگیرم که چه مسیرهایی به دایرکتوری‌ها در کنسول وجود دارد.

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


:~$ pwd
/خانه/دانته


همانطور که می بینید، این دستور کنسول مسیر کامل را که از دایرکتوری ریشه شروع می شود را خروجی می دهد. من اخیراً چنین حرکتی را از طریق دایرکتوری ها توصیف کردم، این حرکت با استفاده از یک مسیر مطلق. اما اینها همه امکانات برای حرکت در دسته های سیستم عامل ما نیستند. که در سیستم عامل لینوکس، هنوز امکان استفاده از مسیرهای نسبی وجود دارد.

تعداد مسیرهای نسبی در کنسول نسبت به دسته ای که در آن قرار دارید، دسته بندی می شود. می توان از آنها استفاده کرد ".." دو نقطه قبل از پوشه ای که می خواهیم به آن برویم. بیایید به جایی در سیستم عامل خود برویم. به عنوان مثال در یک پوشه usrو محتویات آن را با دستور بررسی کنید ls.

[ایمیل محافظت شده]:~$ سی دی /usr
[ایمیل محافظت شده]:/usr$ls

[ایمیل محافظت شده]:/usr$

در اینجا لیستی از دایرکتوری های موجود را می بینیم. اکنون به دایرکتوری می رویم " اشتراک گذاری».

[ایمیل محافظت شده]:~$ سی دی /usr/share


بنابراین، اکنون ما در دسته هستیم /usr/shareهمانطور که می بینیم. بیایید اکنون به مقوله ای برویم که هم سطح با دسته ای است که ما در آن قرار داریم. به عنوان مثال، در دسته بندی محلی". این را می توان با یک مسیر مطلق مانند این انجام داد.

[ایمیل محافظت شده]:~$ سی دی /usr/local

[ایمیل محافظت شده]:/usr/share$pwd
/usr/share
[ایمیل محافظت شده]:/usr/share$


همانطور که می بینید، من برای شما در کنسول، مسیر کامل را به جایی که در آن هستید نمایش داده ام. ما می دانیم که دایرکتوری " محلی'در همان سطح دایرکتوری است' اشتراک گذاری” و می توانیم از دستوری مانند این استفاده کنیم.

[ایمیل محافظت شده]:/usr/share$ سی دی ../local
[ایمیل محافظت شده]:/usr/local$


همانطور که می بینید، دستور query بسیار ساده تر شده است. اما این فقط در صورتی است که دایرکتوری هایی را به خاطر بسپارید که در همان سطح دایرکتوری کاری شما هستند و من همیشه دایرکتوری های دیگر را در کنسول به خاطر نمی آورم.

برای رفتن به دایرکتوری بعدی کافی است دستوری را در کنسول نسبت به دایرکتوری کاری خود وارد کنید. برای این منظور به جای آن استفاده کنید ".." دو نقطه "." یک نقطه و شما نسبت به دایرکتوری موجود در کنسولی که در آن لحظه هستید حرکت خواهید کرد. بیایید به دایرکتوری برگردیم /usrو نگاهی دیگر به آنچه در آنجا است بیندازید.

[ایمیل محافظت شده]:/usr/local$ cd /usr
[ایمیل محافظت شده]:/usr$ls
بازی های bin شامل lib محلی sbin share src می باشد
[ایمیل محافظت شده]:/usr$


اکنون به دایرکتوری می رویم " اشتراک گذاری» نسبت به دایرکتوری که اکنون در آن هستیم. برای این کار وارد کنسول شوید

[ایمیل محافظت شده]:/usr$ cd ./local
[ایمیل محافظت شده]:/usr/local$


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