• اصول برنامه نویسی شل پوسته فرمان در یونیکس

    پوسته زبان فرمان (در ترجمه - shell, shell) در واقع یک زبان برنامه نویسی سطح بسیار بالایی است. در این زبان کاربر کامپیوتر را کنترل می کند. معمولاً پس از ورود به سیستم، شروع به تعامل با یک پوسته می کنید. نشانه ای که پوسته (پوسته) آماده دریافت دستورات است، درخواست کننده ای است که توسط آن به صفحه نمایش داده می شود. در ساده ترین حالت، این یک دلار ("$") است. Shell یک زبان دستوری ضروری و تنها نیست (اگرچه این زبان است که در استاندارد POSIX استاندارد شده است سیستم های موبایل). به عنوان مثال، زبان cshell بسیار محبوب است، همچنین kshell، bashell و دیگران وجود دارد. علاوه بر این، هر کاربر می تواند زبان دستوری خود را ایجاد کند. این می تواند به طور همزمان با زبان های دستوری مختلف در یک نمونه از سیستم عامل کار کند. shell یکی از بسیاری از دستورات یونیکس است. یعنی مجموعه دستورات "شل" شامل دستور "sh" است - مفسر "شل" را فراخوانی می کند. اولین "پوسته" به طور خودکار هنگام ورود به سیستم فراخوانی می شود و درخواست کننده را نمایش می دهد. پس از آن، می توانید هر دستوری را برای اجرا فراخوانی کنید، از جمله دوباره خود "شل" که یک پوسته جدید در داخل پوسته قدیمی برای شما ایجاد می کند. به عنوان مثال، اگر فایل "file_1" را در ویرایشگر آماده کنید:

    اکو سلام!

    سپس یک فایل متنی معمولی حاوی دستور "echo" خواهد بود که پس از اجرا، هر آنچه را که در سمت راست آن نوشته شده است روی صفحه نمایش می دهد. می توانید فایل "file_1" را با دستور "chmod 755 file_1" قابل اجرا کنید. اما این کار را می توان با فراخوانی صریح دستور "sh" ("پوسته") انجام داد:

    فایل Sh_1

    ش< file1

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

    فایل_1

    از آنجا که یونیکس یک سیستم چند کاربره است، حتی می توانید کامپیوتر شخصیمثلاً روی 12 صفحه به صورت موازی کار کنید (انتقال از صفحه به صفحه نمایش ALT / کلید عملکرد)، داشتن یک کاربر جدید (یا همان) در هر صفحه با پوسته فرمان خاص خود. همچنین می توانید تعداد زیادی پنجره را در حالت گرافیکی X-Window باز کنید و هر پنجره می تواند کاربر خاص خود را با پوسته فرمان خود داشته باشد... عنصر اصلی زبان پوسته دستور است.

    ساختارهای فرماندهی:

    دستورات شل معمولا دارای فرمت زیر هستند:

    <имя команды> <флаги> <аргумент(ы)>

    مثلا:

    ls -ls /usr/bin

    در جایی که ls نام دستور برای صدور محتویات دایرکتوری است، -ls پرچم‌ها هستند ("-" نشانه پرچم است، l یک قالب طولانی است، s اندازه فایل‌ها در بلوک است)، /usr/bin. دایرکتوری است که دستور برای آن اجرا می شود.این دستور محتویات پوشه /usr/bin را با فرمت طولانی نمایش می دهد و در عین حال اطلاعات مربوط به اندازه هر فایل را در بلوک ها اضافه می کند.تنوع در ارائه آرگومان ها تعداد دستوراتی که دارای فرمت های عجیب و غریب هستند شامل دستورات "در حال اجرا" مانند cc - فراخوانی کامپایلر C، tar - کار با آرشیو، dd - کپی کردن یک فایل با تبدیل، یافتن - جستجوی فایل ها و تعدادی دیگر به عنوان یک قاعده ، اولین کلمه پوسته به عنوان یک دستور در نظر گرفته می شود، بنابراین در خط فرمان

    کلمه اول توسط پوسته به عنوان یک فرمان (الحاق) رمزگشایی می شود که فایلی به نام "cat" (کلمه دوم) را در فهرست فعلی نمایش می دهد. تغییر جهت فرمان ورودی استاندارد (ورودی) - "stdin" در سیستم عامل یونیکس از صفحه کلید ترمینال انجام می شود و خروجی استاندارد (خروجی) - "stdout" به صفحه ترمینال هدایت می شود. همچنین یک فایل پیام تشخیصی استاندارد - "stderr" وجود دارد که کمی بعداً مورد بحث قرار خواهد گرفت. تیمی که بتواند با آن کار کند ورودی استانداردو خروجی را FILTER می نامند. کاربر ابزار مناسبی برای هدایت ورودی و خروجی به سایر فایل ها (دستگاه ها) دارد. نمادهای ">" و ">>" نشان دهنده تغییر مسیر خروجی هستند. ls >file_1 دستور «ls» فایل‌های موجود در فهرست فعلی را فهرست می‌کند و آن را در فایل «file_1» قرار می‌دهد (به جای نمایش آن روی صفحه). اگر فایل "file_1" قبلا وجود داشته باشد، توسط فایل جدید بازنویسی می شود.

    Pwd >>file_1

    دستور pwd نام کاملاً واجد شرایط دایرکتوری فعلی را تشکیل می دهد و آن را در انتهای فایل "file_1" قرار می دهد. اگر فایل خالی نباشد، ">>" به آن اضافه می شود. نمادها "<" и "<<" обозначают перенаправление ввода.

    Wc-l

    تعداد خطوط فایل file_1 را می شمارد و نمایش می دهد.

    فایل اد_2<

    فایل "file_2" را با استفاده از ویرایشگر، مستقیماً از ترمینال ایجاد می کند. انتهای ورودی با کاراکتر سمت راست تعیین می شود.<<" (т. е. "!"). То есть ввод будет закончен, когда первым в очередной строке будет "!". Можно сочетать перенаправления. Так

    Wc-l file_4

    Wc -l >file_4

    به همین ترتیب انجام می شود: تعداد خطوط فایل "file_3" شمارش می شود و نتیجه در فایل "file_4" قرار می گیرد. تسهیلاتی که خروجی استاندارد یک دستور را با ورودی استاندارد فرمان دیگر ترکیب می کند، PIPELINE نامیده می شود و با نوار عمودی "|" نشان داده می شود.

    Ls | wc -l

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

    Cat file_1 | grep -hresult | مرتب کردن | cat -b > file_2

    این خط لوله از فایل "file_1" ("cat") تمام خطوط حاوی کلمه "نتیجه" ("grep") را انتخاب می کند، خطوط حاصل را مرتب می کند ("مرتب سازی") و سپس شماره ("cat -b") و خروجی نتیجه به فایل "file_2". از آنجایی که دستگاه های یونیکس با فایل های خاصی نمایش داده می شوند، می توان از آنها در تغییر مسیرها استفاده کرد. فایل های ویژه در دایرکتوری "/dev" قرار دارند. به عنوان مثال، "lp" - چاپ؛ "کنسول" - کنسول؛ "ttyi" - i-امین ترمینال؛ "تهی" - فایل ساختگی (خالی) (دستگاه). سپس، برای مثال،

    Ls > /dev/lp

    محتویات دایرکتوری فعلی و file_1 را چاپ می کند< /dev/null обнулит файл "file_1".

    مرتب سازی فایل_1 | tee /dev/lp | دم-20

    در این صورت فایل "file_1" مرتب و چاپ می شود و 20 خط آخر نیز روی صفحه نمایش داده می شود. بیایید به تغییر مسیر خروج برگردیم. فایل های استاندارد شماره گذاری می شوند:

    0 - stdin، 1 - stdout 2 - stderr. اگر نمی‌خواهید پیام خطا روی صفحه نمایش داده شود، می‌توانید آن را از صفحه به فایلی که مشخص کرده‌اید هدایت کنید (یا با هدایت آن به فایل «دستگاه خالی» - /dev/null، آن را به طور کلی «پرتاب» کنید. به عنوان مثال هنگام اجرای دستور

    Cat file_1 file_2

    که باید محتویات فایل های "file_1" و "file_2" را به ترتیب روی صفحه نمایش دهد، به عنوان مثال موارد زیر را در اختیار شما قرار می دهد.

    111111 222222 cat: f2: چنین فایل یا دایرکتوری وجود ندارد

    جایی که 111111 222222 محتویات فایل "file_1" است و فایل "file_2" وجود ندارد، همانطور که توسط دستور "cat" در فایل تشخیصی استاندارد گزارش شده است، به طور پیش فرض، و همچنین خروجی استاندارد نشان داده شده توسط صفحه نمایش. اگر نمی خواهید چنین پیامی روی صفحه نمایش داده شود، می توانید آن را به فایلی که مشخص کرده اید هدایت کنید:

    Cat file_1 file_2 2>f-err

    پیام های خطا (همانطور که با تغییر مسیر "2>" نشان داده شده است) به فایل "f-err" ارسال می شود. به هر حال، می توانید با استفاده از ساختار، تمام اطلاعات را به یک فایل "ff" ارسال کنید

    Cat file_1 file_2 >>ff 2>ff

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

    Cat file_1 file_2 2>>ff 1>&2

    در اینجا ابتدا "stderr" (در حالت ضمیمه) به فایل "ff" هدایت می شود و سپس خروجی استاندارد به "stderr" هدایت می شود که در حال حاضر فایل "ff" است. یعنی نتیجه مشابه قبلی خواهد بود. ساخت "1>&2" - به این معنی است که علاوه بر تعداد فایل استانداردی که به آن تغییر مسیر دهید، باید "&" را در جلو قرار دهید. کل ساختار بدون فاصله نوشته شده است.<- закрывает стандартный ввод. >- خروجی استاندارد را می بندد. فایل های فرمان برای اینکه یک فایل متنی به عنوان دستور استفاده شود، چندین احتمال وجود دارد. اجازه دهید ویرایشگر فایلی به نام "cmd" ایجاد کند که حاوی یک خط از فرم زیر است:

    تاریخ؛ pwd; ls

    می‌توانید پوسته را به‌عنوان یک فرمان فراخوانی کنید که با «sh» مشخص می‌شود، و آن را به عنوان فایل «cmd» ارسال کنید، چه به‌عنوان آرگومان یا به‌عنوان ورودی هدایت‌شده، یعنی.

    $ sh cmd

    $sh

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

    Chmod 711cmd

    کد امنیتی "rwx__x__x" را ایجاد می کند. سپس یک تماس ساده

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

    تاریخ؛ pwd; ls

    به این صورت نمایش داده می شود: date pwd ls زیرا یک خط شکن نیز یک جداکننده در یک دنباله دستوری است. بنابراین، فایل های اجرایی می توانند نه تنها فایل هایی باشند که در نتیجه کامپایل و اسمبلی به دست آمده اند، بلکه فایل هایی هستند که به زبان پوسته نوشته شده اند. آنها در حالت تفسیر با استفاده از مفسر پوسته اجرا می شوند.

    اشکال زدایی فایل های دسته ای

    SHELL از دو مکانیسم برای اشکال زدایی فایل های دسته ای استفاده می کند. اولین مورد: set -v خطوط فایل دسته ای را هنگام خواندن چاپ می کند. این حالت هنگام جستجوی خطاهای نحوی استفاده می شود. برای استفاده از آن، نیازی به تغییر فایل دسته ای ندارید، به عنوان مثال: sh -v proc... که در آن proc نام فایل دسته ای است. سوئیچ -v را می توان همراه با سوئیچ -n استفاده کرد که از اجرای دستورات زیر جلوگیری می کند (دستور set -n ترمینال را تا زمانی که علامت EOF وارد شود مسدود می کند). دستور set -x دستورات را هنگام اجرا چاپ می‌کند و خطوط برنامه در ترمینال چاپ می‌شوند و مقادیر آن‌ها جایگزین متغیرها می‌شوند. برای غیرفعال کردن سوئیچ‌های -x و -v، می‌توانید از دستور set استفاده کنید - و برای تنظیم - مقدار مناسب را به متغیر ماکرو اختصاص دهید. محیط پوسته (متغیرها و پارامترها) می توانید فایل های دسته ای را به زبان پوسته بنویسید و با استفاده از دستور "chmod" آنها را قابل اجرا کنید. پس از آن، آنها هیچ تفاوتی با سایر دستورات سیستم عامل یونیکس ندارند.

    متغیرهای پوسته

    نام متغیر پوسته یک دنباله شروع حروف از حروف، اعداد و زیرخط است. مقدار متغیر پوسته یک رشته کاراکتری است. این واقعیت که تنها دو نوع داده در پوسته وجود دارد: یک رشته کاراکتر و یک فایل متنی، از یک سو، مشارکت کاربران نهایی را که قبلاً هرگز برنامه نویسی نکرده اند، آسان می کند و از سوی دیگر، باعث ایجاد برخی موارد می شود. اعتراض درونی در میان بسیاری از برنامه نویسانی که به تنوع بیشتر و انعطاف بیشتر ابزارهای زبانی عادت دارند. با این حال، جالب است که مشاهده کنید که چگونه برنامه نویسان کلاس بالا با تسلط بر "قوانین بازی" پوسته، برنامه ها را چندین برابر سریعتر از C در آن می نویسند، اما آنچه به ویژه جالب است، در برخی موارد این برنامه ها کار می کنند. حتی سریعتر از موارد اجرا شده در C. نام متغیر شبیه مفهوم سنتی یک شناسه است، یعنی. نام می تواند دنباله ای از حروف، اعداد و زیرخط باشد که با یک حرف یا زیرخط شروع می شود. عملگر انتساب "=" می تواند برای تخصیص مقادیر به متغیرها استفاده شود.

    Var_1=13 - "13" یک عدد نیست، بلکه یک رشته دو رقمی است. var_2="UNIX OS" - در اینجا به دو گیومه (" ") نیاز است زیرا در رشته فاصله وجود دارد.

    روش های دیگری نیز برای تخصیص مقادیر به متغیرهای پوسته وجود دارد. بنابراین، برای مثال، ورودی

    DAT=`تاریخ

    باعث می شود دستور "date" ابتدا اجرا شود (نقل به عقب نشان می دهد که دستور محصور شده ابتدا باید اجرا شود) و نتیجه اجرای آن به جای چاپ شدن در خروجی استاندارد، به عنوان مقدار یک متغیر در نظر گرفته می شود. این مورد "DAT". همچنین می‌توانید با استفاده از دستور «خواندن»، مقداری را به یک متغیر اختصاص دهید، که اجازه می‌دهد مقدار متغیر را از صفحه نمایش (صفحه‌کلید) در حالت گفتگو دریافت کنید. معمولاً دستور "خواندن" در یک فایل دسته ای با دستور "echo" قبل از آن قرار می گیرد که به شما امکان می دهد نوعی پیام را از قبل روی صفحه چاپ کنید. مثلا:

    echo -n "یک عدد سه رقمی وارد کنید:" x را بخوانید

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

    یک عدد سه رقمی وارد کنید:

    مفسر متوقف می شود و منتظر می ماند تا مقداری از صفحه کلید وارد شود. اگر مثلاً "753" را وارد کنید، این مقدار به مقدار متغیر "x" تبدیل می شود. یک دستور "خواندن" می تواند مقادیر چندین متغیر را به طور همزمان بخواند (تخصیص). اگر تعداد متغیرها در "خواندن" بیشتر از مقدار وارد شده باشد (با فاصله از هم جدا شده اند)، به بقیه یک رشته خالی اختصاص داده می شود. اگر مقادیر ارسال شده بیشتر از متغیرها در دستور "خواندن" وجود داشته باشد، مقادیر اضافی نادیده گرفته می شوند. هنگام دسترسی به یک متغیر پوسته، باید قبل از نام علامت "$" قرار دهید. بنابراین دستور echo $var_2 echo var_2 روی صفحه نمایش داده می شود

    سیستم عامل یونیکس var_2 در حال فرار

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

    X=22 y=33 z=$x A="$x" B="$x" C=\$x D="$x + $y + $z" E="$x + $y + $z "F=$x\ +\ $y\ +\ $z

    (تخصیص G=$x+$y به دلیل فاصله ها اجرا نمی شد) سپس

    پژواک A = $A B = $B C = $C اکو D = $D E = $E F = $F ارزیابی پژواک eval A = $A ارزیابی پژواک eval B = $B ارزیابی اکو ارزش C = $C

    روی صفحه نمایش داده می شود

    A = 22 B = $x C = $x D = 22 + 33 + 22 E = $x + $y + $z F = 22 + 33 + 22 ارزیابی شده A = 22 ارزیابی شده B = 22 ارزیابی شده C = 22

    بیایید چند مثال بیشتر در رابطه با فرار از شکست خط بیاوریم. اجازه دهید به متغیر "string" مقدار "array" 2x3 اختصاص داده شود: abc def توجه داشته باشید که برای جلوگیری از اختصاص فاصله های اضافی، خط دوم آرایه از موقعیت اول خط بعدی شروع می شود: string="abc def" سپس وجود دارد. سه روش برای نوشتن متغیر در دستور "echo" وجود دارد. file_1 echo "str_1 str_2" > file_2 cat file_1 file_2 به ترتیب خروجی می دهد فایل های یکسان file_1 and file_2: str_1 str_2 str_1 str_2 همچنین توجه داشته باشید که بک اسلش (\) نه تنها از کاراکتری که به دنبال آن است فرار می کند، که به کاراکترهای خاص اجازه می دهد تا به سادگی به عنوان کاراکترهایی که خودشان را نشان می دهند استفاده شوند (همچنین می تواند از خود فرار کند - \\)، بلکه در یک فایل دسته ای، یک بک اسلش به شما این امکان را می دهد که خطوط را در یک خط ترکیب کنید (از انتهای خط فرار می کند). به عنوان مثال، مثال خط فرمان که قبلا ذکر شد:

    Cat file_1 | grep -hresult | مرتب کردن | cat -b > file_2

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

    Cat file_1 | grep -h \result | مرتب کردن | cat -b > file_2

    به هر حال، نماد خط لوله نیز اثر ادامه خط فرمان را ارائه می دهد. در این مورد، ممکن است نتیجه زیباتری به دست آورد، به عنوان مثال:

    Cat file_1 | grep -hresult | مرتب کردن | cat -b > file_2

    دستکاری با متغیرهای پوسته اگرچه معمولاً متغیرهای پوسته به عنوان رشته در نظر گرفته می‌شوند، یعنی «35» یک عدد نیست، بلکه رشته‌ای از دو کاراکتر «3» و «5» است، در برخی موارد می‌توان آن‌ها را متفاوت تفسیر کرد، مثلاً به‌عنوان اعداد صحیح. دستور "expr" امکانات مختلفی دارد. بیایید برخی از آنها را با مثال هایی توضیح دهیم: اجرای یک فایل دسته ای:

    X=7 y=2 a=`expr $x + $y` ; echo a=$a a=`expr $a + 1` ; echo a=$a b=`expr $y - $x` ; echo b=$b c=`expr $x "*" $y` ; echo c=$c d=`expr $x / $y` ; echo d=$d e=`expr $x % $y` ; echo e=$e

    روی صفحه نمایش داده خواهد شد

    A=9 a=10 b=-5 c=14 d=3 e=1

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

    A=`expr "cocktail" : "cock"` ; echo $A B=`expr "cocktail" : "tail"` ; echo $B C=`expr "cocktail" : "cook"` ; echo $C D=`expr "cock" : "cocktail"` ; پژواک $D

    اعداد روی صفحه نمایش داده می شوند که تعداد کاراکترهای منطبق در رشته ها (از ابتدا) را نشان می دهد. خط دوم نمی تواند طولانی تر از خط اول باشد:

    4 0 0 0

    صادرات متغیرها یونیکس مفهوم فرآیند را دارد. یک فرآیند زمانی رخ می دهد که یک دستور برای اجرا اجرا شود. به عنوان مثال، هنگام تایپ "r" روی صفحه کلید فرآیند "p" ایجاد می شود. به نوبه خود، "p" می تواند فرآیندهای دیگر را ایجاد کند. فرض کنید که "p" "p1" و "p2" را فراخوانی می کند، که به طور متوالی فرآیندهای مربوطه را ایجاد می کنند. هر فرآیند دارای محیط خاص خود است - یک مجموعه. از متغیرهای موجود برای آن به عنوان مثال، قبل از اجرای "p" قبلاً محیطی وجود داشت که در آن برخی از متغیرها قبلاً تعریف شده بودند. اجرای "p" یک محیط جدید ایجاد می کند که در آن "p1" و "p2" ایجاد می شوند. محلی در فرآیندی که در آن اعلان می شوند، یعنی جایی که مقادیر به آنها اختصاص داده شده است. برای اینکه آنها در دسترس سایر فرآیندهای ایجاد شده باشند، باید به طور صریح ارسال شوند. برای این، از دستور داخلی "export" استفاده می شود.

    گزینه ها

    پارامترها را می توان به فایل دسته ای منتقل کرد. پوسته از پارامترهای موقعیتی استفاده می کند (به عنوان مثال، ترتیب ظاهر شدن آنها مهم است). در یک فایل دسته‌ای، متغیرهای مربوط به پارامترها (مشابه متغیرهای پوسته) با کاراکتر "$" شروع می‌شوند و به دنبال آن یکی از ارقام از 0 تا 9 می‌آید: اجازه دهید "examp-1" با "cock" فراخوانی شود و پارامترهای "دم". این پارامترها با نام های استاندارد «1» و «2» وارد محیط جدید می شوند. متغیر (استاندارد) با نام "0" نام محاسبه فراخوانده شده را نگه می دارد. هنگام دسترسی به پارامترها، علامت دلار "$" قبل از رقم قرار می گیرد (مانند هنگام دسترسی به متغیرها): $0 مربوط به نام فایل دسته ای داده شده است. پارامتر اول $1. $2 پارامتر دوم است و به همین ترتیب. از آنجایی که تعداد متغیرهایی که می توان پارامترها را به آنها منتقل کرد به یک رقم محدود می شود، یعنی. 9 ("0"، همانطور که قبلا ذکر شد معنای خاصی دارد)، سپس برای انتقال بیشترپارامترها، یک فرمان "shift" ویژه استفاده می شود. دستور "set" رویکردی عجیب به پارامترها می دهد. به عنوان مثال، قطعه

    b را با اکو اول=$1 ثانیه=$2 سوم=3$ تنظیم کنید

    روی صفحه نمایش داده خواهد شد

    اول=آ دوم=ب سوم=ج

    آن ها دستور "set" مقادیر پارامترها را تنظیم می کند. اتفاقاً این بسیار راحت است. به عنوان مثال، دستور "date" تاریخ فعلی را نشان می دهد، بگویید "Mon May 01 12:15:10 2000"، متشکل از پنج کلمه، سپس

    تنظیم «تاریخ» echo $1 $3 $5

    روی صفحه نمایش داده خواهد شد

    دوشنبه 01 2000

    دستور "set" همچنین به شما اجازه می دهد تا اجرای برنامه را کنترل کنید، به عنوان مثال: set -v خطوط قابل خواندن توسط پوسته را به ترمینال خروجی می دهد. set +v حالت قبلی را لغو می کند. set -x دستورات را قبل از اجرا در ترمینال چاپ می کند. set +x حالت قبلی را لغو می کند. دستور "set" بدون پارامتر وضعیت محیط نرم افزار را در ترمینال چاپ می کند.

    جایگزینی مترجم پوسته

    قبل از تفسیر و اجرای مستقیم دستورات موجود در فایل های دسته ای، پوسته اجرا می کند انواع مختلفتعویض: 1. جایگزینی نتایج. تمام دستورات محصور شده در بک نقل قول اجرا شده و نتیجه در جای خود جایگزین می شود. 2. جایگزینی مقادیر پارامترها و متغیرها. یعنی کلماتی که با "$" شروع می شوند با مقادیر متناظر متغیرها و پارامترها جایگزین می شوند. 3. تفسیر شکاف ها. فضاهای فرار نادیده گرفته می شوند. 4. نسل نام فایل. کلمات برای وجود کاراکترهای خاص ("*"، "?"، "") در آنها بررسی می شوند و نسل های مربوطه انجام می شود. محیط نرم افزار هر فرآیند دارای محیطی است که در آن اجرا می شود. شل از تعدادی متغیر محیطی استفاده می کند. اگر دستور "set" را بدون پارامتر تایپ کنید، صفحه اطلاعاتی در مورد تعدادی از متغیرهای استاندارد ایجاد شده در هنگام ورود به سیستم (و به تمام فرآیندهای جدید شما "از طریق ارث بری" منتقل می شود) و همچنین متغیرهایی که توسط فرآیندهای شما ایجاد و صادر شده اند را نمایش می دهد. . نوع و محتوای خاص اطلاعات نمایش داده شده تا حد زیادی به این بستگی دارد که کدام نسخه از یونیکس مورد استفاده قرار می گیرد و سیستم چگونه نصب می شود.

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

    HOME=/root PATH=/usr/local/bin:/usr/bin:/bin:.:/usr/bin/X11: IFS= LOGNAME=sae MAIL=/var/spool/mail/sae PWD=/home/ sae/STUDY/SHELL PS1=$(PWD):" "PS2=> SHELL=/bin/bash

    اجازه دهید در مورد مقادیر متغیرها نظر بدهیم. HOME=/root نام دایرکتوری اصلی است که کاربر پس از ورود به سیستم در آن به پایان می رسد. یعنی با تایپ صحیح نام کاربری و رمز عبور در دایرکتوری "/root" قرار می گیرم. PATH=/bin:/usr/bin:.:/usr/local/bin:/usr/bin/X11 - این متغیر دنباله فایل هایی را تنظیم می کند که "پوسته" یک فرمان را جستجو می کند. نام فایل ها در اینجا با دو نقطه از هم جدا می شوند. دنباله مرور با ترتیب نام ها در مسیر مطابقت دارد. اما در ابتدا جستجو در میان دستورات به اصطلاح داخلی انجام می شود. دستورات داخلی شامل دستورات پرکاربرد مانند «echo»، «cd»، «pwd»، «date» می‌شود. پس از آن، سیستم در دایرکتوری "/bin" نگاه می کند، که ممکن است حاوی دستورات "sh"، "cp"، "mv"، "ls" و غیره باشد. سپس دایرکتوری "/usr/bin" با دستورات "cat"، "cc"، "expr"، "nroff"، "man" و بسیاری دیگر. علاوه بر این، جستجو در دایرکتوری فعلی ("".، یا نام دیگری "خالی"، یعنی "") رخ می دهد، جایی که دستوراتی که نوشته اید به احتمال زیاد در آن قرار دارند. پس از تایپ خط فرمان و فشار دادن "شل" (پس از انجام تعویض های لازم) نام مربوط به دستور را می شناسد و آن را در فهرست های فهرست شده در PATH جستجو می کند. اگر دستور خارج از این دایرکتوری ها قرار گیرد، یافت نمی شود. اگر چندین دستور با یک نام وجود داشته باشد، دستوری که ابتدا در دایرکتوری مشاهده شده قرار دارد فراخوانی می شود. PATH مانند سایر متغیرها را می توان به راحتی با افزودن، تنظیم مجدد یا حذف دایرکتوری ها تغییر داد. IFS= (Internal Field Separator) کاراکترهایی را که برای جداسازی کلمات (فیلدها) استفاده می شوند، فهرست می کند. اینها "فضا"، "تب" و "فید خط" هستند، بنابراین در اینجا چیزی در سمت چپ انتساب قابل مشاهده نیست و دو خط اشغال شده است. LOGNAME = ریشه - نام ورود ("نام کاربری"). MAIL=/var/spool/mail/root نام فایلی است که نامه (ایمیل) را دریافت می کند. PWD=/root - نام دایرکتوری فعلی PS1=$(PWD):" " - نوع promter. در این حالت، درخواست کننده نام دایرکتوری فعلی، یک دونقطه و یک فاصله را نمایش می دهد. یعنی "/root:" اینجا خواهد بود. PS2=> - این پرومتر (در اینجا ">") به عنوان دعوتی برای ادامه تایپ کردن (در خط بعدی) یک دستور ناتمام استفاده می شود. به عنوان مثال، براکت باز را تایپ کنید "(" و پس از فشار دادن در خط بعدی این پرومتر را خواهید دید. اگر هنوز نمی دانید چه کاری باید انجام دهید، براکت بسته شدن ")" را تایپ کنید و ناپدید می شود. SHELL=/bin/sh - این متغیر پوسته ای را که کاربر استفاده می کند را مشخص می کند. در این مورد از پوسته استاندارد ("sh") استفاده می شود. محیط اولیه به طور خودکار در هنگام ورود با استفاده از فایل هایی مانند "/etc/rc" و "/etc/.profile" تنظیم می شود. یکی از راه‌های تغییر ساده محیط (مانند مسیر جستجوی فرمان، نمای درخواست‌کننده، نمای پوسته، رنگ صفحه، و غیره) قرار دادن این اطلاعات در فهرست اصلی خود در یک فایل تخصصی ".profile" (نمایه $(HOME)/. است. ) با اختصاص مقادیر مورد نظر به متغیرهای محیطی. یعنی این فایل را در ویرایشگر فراخوانی کنید و هر چه می خواهید بنویسید). سپس با هر بار ورود، این فایل به صورت خودکار اجرا شده و یک محیط جدید راه اندازی می شود. این فایل باید در دایرکتوری HOME شما (دایرکتوری ورود به سیستم) قرار گیرد. توجه داشته باشید که نام فایل هایی که با نقطه شروع می شوند معمولاً وضعیت خاصی دارند. بنابراین، آنها با یک دستور ساده "ls" روی صفحه نمایش داده نمی شوند - باید این دستور را با پرچم "-a" فراخوانی کنید. ضمناً با دستور "rm *" بی رویه از بین نمی روند. خود مفسر پوسته به طور خودکار مقادیری را به متغیرها (پارامترهای) زیر اختصاص می دهد: ? مقدار بازگشتی توسط آخرین دستور؛ شماره فرآیند $؛ ! شماره فرآیند پس زمینه؛

    1. تعداد پارامترهای موقعیتی ارسال شده به پوسته؛
    • لیست پارامترها به عنوان یک خط.

    @ لیست گزینه ها به عنوان مجموعه ای از کلمات. - پرچم ها به پوسته منتقل شدند. هنگام دسترسی به این متغیرها (یعنی هنگام استفاده از آنها در یک فایل دسته ای - یک برنامه پوسته)، باید "$" را در جلو قرار دهید. نقش مهمهنگام ایجاد فایل های منحصر به فرد، متغیر ویژه "$$" پخش می شود که مقدار آن مربوط به تعداد فرآیندی است که این محاسبه را انجام می دهد. هر محاسبه جدیدی که توسط کامپیوتر انجام می شود، یک یا چند فرآیند را آغاز می کند که به طور خودکار اعداد را به ترتیب دریافت می کنند. بنابراین، با استفاده از شماره فرآیند به عنوان نام فایل، می توانید مطمئن باشید که هر فایل جدید یک نام جدید خواهد داشت (نه بازنویسی یک نام موجود). مزیت آن نیز عیب اصلی این روش نام گذاری فایل ها است. معلوم نیست چه نام هایی به پرونده ها اختصاص داده خواهد شد. و اگر در چارچوب این فرآیند امکان یافتن یک فایل "بدون جستجو" وجود داشته باشد، یعنی با مراجعه به آن با استفاده از $$، آنگاه می توان چنین فایل هایی را به راحتی از دست داد. ایجاد می کند مشکلات اضافیهنگام اشکال زدایی برنامه ها فراخوانی مترجم پس از ورود کاربر به سیستم (با استفاده از دستور ورود)، مترجم زبان SHELL فراخوانی می شود. اگر دایرکتوری ورود کاربر حاوی یک فایل .profile باشد، قبل از اینکه حتی یک فرمان از ترمینال دریافت شود، مفسر این فایل را اجرا می کند (فرض می شود که فایل .profile حاوی دستوراتی است). سوئیچ های زیر را می توان در طول تماس مشخص کرد: -c string دستورات از رشته مشخص شده خوانده می شوند. دستورات -s از ورودی استاندارد خوانده می شوند. پیام های مترجم در فایل تشخیصی استاندارد نوشته می شوند. -i حالت تعاملی. اگر اولین کاراکتر پارامتر "0" - باشد، دستورات از فایل .profile خوانده می شوند.

    ساختارهای برنامه===

    مانند هر زبان برنامه نویسی، ممکن است نظراتی در متن زبان پوسته وجود داشته باشد. برای این کار از کاراکتر "#" استفاده می شود. هر چیزی که در خط (در فایل دسته ای) در سمت چپ این نماد است توسط مفسر به عنوان یک نظر درک می شود. مثلا،

    # این یک نظر است.

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

    دستور test(").

    دستور تست بررسی می کند که آیا یک شرط خاص برآورده شده است یا خیر. با استفاده از این دستور (inbuilt-in) دستور انتخاب زبان پوسته و حلقه تشکیل می شود. دو فرمت فرمان ممکن:

    شرایط آزمایشی

    [ وضعیت ]

    ما از گزینه دوم استفاده خواهیم کرد. به جای نوشتن کلمه "test" قبل از شرط، شرط را در پرانتز قرار می دهیم که برای برنامه نویسان بیشتر آشناست. در واقع، پوسته این دستور را از براکت باز "[" به عنوان کلمه مربوط به دستور "test" تشخیص خواهد داد. بین براکت ها و شرایط موجود در آنها باید فاصله وجود داشته باشد. همچنین باید بین مقادیر و کاراکتر مقایسه یا عملیات فاصله وجود داشته باشد. پوسته از شرایط مختلف "انواع" استفاده می کند. شرایط بررسی فایل: -f فایل "file" یک فایل معمولی است. فایل -d "فایل" - دایرکتوری. -c فایل "file" یک فایل خاص است. فایل -r اجازه خواندن فایل "فایل" را دارد. فایل -w مجوز نوشتن در فایل "فایل" را دارد. فایل -s "فایل" خالی نیست.

    شرایط بررسی رشته: str1 = str2 رشته های "str1" و "str2" مطابقت دارند. str1 != str2 رشته های "str1" و "str2" مطابقت ندارند. -n رشته str1 "str1" وجود دارد (غیر خالی). -z str1 رشته "str1" وجود ندارد (خالی). مثال ها.

    x="چه کسی کیست"; صادرات x; [ "who is who" = "$x" ]; اکو $؟ 0 x=abc ; صادرات x ; [ abc = "$x" ] ; اکو $؟ 0 x=abc ; صادرات x ; [ -n "$x" ] ; اکو $؟ 0x="" ; صادرات x ; [ -n "$x" ] ; اکو $؟ 1

    علاوه بر این، دو مقدار شرط استاندارد وجود دارد که می توان به جای شرط از آن استفاده کرد (بدون نیاز به پرانتز). شرایط مقایسه اعداد صحیح: x -eq y "x" برابر با "y" است، x -ne y "x" برابر با "y" نیست، x -gt y "x" بزرگتر از "y" است، x -ge y "x" بزرگتر یا مساوی "y" است، x -lt y "x" کمتر از "y" است، x -le y "x" کمتر یا مساوی "y" است. شرایط پیچیده: با استفاده از عملیات منطقی معمولی اجرا شد: ! (نه) مقدار کد خروج را معکوس می کند. -o (یا) با "OR" منطقی مطابقت دارد. -a (و) با AND منطقی مطابقت دارد.

    عبارت "اگر" مشروط

    به طور کلی، عبارت «اگر» ساختار دارد

    اگر شرط است، لیست کنید

    در اینجا «الف» مخفف «اگر دیگر» است و می‌تواند همراه با کامل، یعنی. تودرتوی تعداد دلخواه عبارات «اگر» (و همچنین سایر عبارات) مجاز است. یقیناً «فهرست» در هر مورد باید در زمینه معین معنادار و قابل پذیرش باشد. کوتاه ترین ساختار این اپراتور

    اگر شرط است، fi را لیست کنید

    اگر شرط برآورده شود (به عنوان یک قاعده، این کسی است که کد تکمیل "0" را دریافت کرده است، سپس "لیست" اجرا می شود، در غیر این صورت از آن صرف نظر می شود. مثال ها. اجازه دهید "if-1" نوشته شود

    اگر [ $1 -gt $2 ]

    سپس pwd else echo $0: سلام!

    سپس با تماس با if-1 12 11 /home/sae/STUDY/SHELL و if-1 12 13 if-1 می دهد: سلام!

    بیانیه تماس ("مورد")

    دستور انتخاب "مورد" ساختار زیر را دارد:

    رشته مورد در

    الگو) فهرست دستورات؛; الگو) فهرست دستورات؛; ... الگو) لیست دستورات;;

    در اینجا "case"، "in" و "esac" کلمات کمکی هستند. یک "رشته" (می تواند یک کاراکتر باشد) با یک "الگو" مقایسه می شود. سپس "لیست فرمان" ردیف انتخاب شده اجرا می شود. به طور غیرمعمول به انتهای خطوط انتخاب ";;" نگاه کنید، اما در اینجا بنویسید ";" این یک اشتباه خواهد بود. برای هر جایگزین، چندین دستور را می توان اجرا کرد. اگر این دستورات در یک خط نوشته شوند، کاراکتر ";" به عنوان جداکننده دستور استفاده خواهد شد. به طور معمول، آخرین خط انتخاب دارای الگوی "*" است که به معنای "هر مقدار" در ساختار "مورد" است. این رشته در صورتی انتخاب می شود که مقدار متغیر (در اینجا $z) با هیچ یک از الگوهای نوشته شده قبلی که توسط براکت ")" محدود شده اند مطابقت نداشته باشد. مقادیر به ترتیبی که نوشته شده اند جستجو می شوند.

    بیانیه حلقه شمارش ("برای")

    عملگر حلقه "for" ساختار زیر را دارد:

    برای نام

    لیست do از دستورات انجام شده در جایی که "for" یک کلمه تابعی است که نوع چرخه را تعریف می کند، "do" و "done" کلمات خدماتی هستند که بدنه چرخه را برجسته می کنند. اجازه دهید دستور "lsort" با یک فایل دسته ای نمایش داده شود

    برای i در file_1 file_2 file_3 proc_sort $i done را انجام دهید

    در این مثال، نام "i" نقش یک پارامتر حلقه را بازی می کند. این نام را می توان به عنوان یک متغیر پوسته در نظر گرفت که مقادیر فهرست شده (i=file_1، i=file_2، i=file_3) را به ترتیب به آن اختصاص می دهد و دستور "proc_sort" در یک حلقه اجرا می شود. فرم "برای i در *" اغلب استفاده می شود، به معنای "برای همه فایل های موجود در فهرست فعلی". اجازه دهید "proc_sort" به نوبه خود توسط یک فایل دسته ای نمایش داده شود

    گربه 1 دلار | مرتب کردن | tee /dev/lp > $(1)_sorted

    آن ها فایل های مشخص شده به ترتیب مرتب می شوند، نتایج مرتب سازی چاپ می شوند ("/dev/lp") و به فایل های file_1_sorted file_2_sorted و file_3_sorted ارسال می شوند.

    عبارت حلقه با شرط true ("while")

    ساختار "while" که محاسبات را نیز ارائه می دهد، زمانی ترجیح داده می شود که لیست دقیق مقادیر پارامترها از قبل مشخص نباشد یا این لیست باید در نتیجه محاسبات در یک حلقه به دست آید. دستور حلقه "while" ساختار زیر را دارد:

    در حالی که شرط

    لیستی از دستورات انجام شده در جایی که "while" یک کلمه تابعی است که نوع حلقه را با یک شرط واقعی تعریف می کند. لیست دستورات در بدنه حلقه (بین «do» و «انجام شد») تکرار می شود تا زمانی که شرط درست باشد (یعنی کد خروج آخرین فرمان در بدنه حلقه «0» باشد) یا حلقه از قسمت قطع شود. در داخل با دستورات ویژه ("شکستن"، "ادامه"، یا "خروج"). اولین باری که وارد حلقه می شوید، شرط باید درست باشد. دستور "break [n]" به شما امکان می دهد از حلقه خارج شوید. اگر "n" وجود نداشته باشد، معادل "شکستن 1" است. "n" تعداد حلقه های تو در تو را برای خروج از آنها نشان می دهد، به عنوان مثال، "break 3" - خروج از سه حلقه تو در تو. بر خلاف دستور "break"، دستور "continue [n]" تنها اجرای حلقه فعلی را خاتمه می دهد و به START حلقه باز می گردد. همچنین می تواند با یک پارامتر باشد. برای مثال، "continue 2" به معنای خروج به ابتدای دومین حلقه تودرتو (اگر از عمق شمارش شود) است. دستور "exit [n]" به شما اجازه می دهد تا با یک کد بازگشتی "0" یا "n" (اگر پارامتر "n" مشخص شده باشد، از رویه به طور کلی خارج شوید. این دستور نه تنها در حلقه ها قابل استفاده است. حتی در یک توالی خطی از دستورالعمل ها، می تواند در اشکال زدایی برای توقف اجرای محاسبه (جاری) در یک نقطه معین مفید باشد.

    عبارت حلقه با شرط نادرست ("تا")

    عملگر حلقه "تا" ساختار زیر را دارد:

    تا شرط

    do لیستی از دستورات انجام شده در جایی که "تا" یک کلمه تابعی است که نوع حلقه را با یک شرط نادرست تعریف می کند. لیست دستورات موجود در بدنه حلقه (بین «do» و «انجام شد») تا زمانی که شرط نادرست باشد یا حلقه از داخل با دستورات خاصی قطع شود («شکستن»، «ادامه» یا «خروج») تکرار می شود. . اولین باری که وارد حلقه می شوید، شرط نباید درست باشد. تفاوت با عملگر "while" در این است که شرط حلقه برای نادرستی بررسی می شود (برای کد خروج غیر صفر آخرین فرمان بدنه حلقه) پس از هر اجرا (از جمله اولین!) از دستورات، بررسی می شود. بدنه حلقه مثال.

    تا انجام غلط

    x را بخوانید اگر [$x = 5] سپس به اندازه کافی اکو انجام دهید. break else پژواک برخی دیگر fi

    در اینجا برنامه در یک حلقه بی نهایت برای ورودی کلمات (با تکرار عبارت "some more" روی صفحه) منتظر می ماند تا "5" وارد شود. پس از آن، "به اندازه کافی" صادر می شود و دستور "break" اجرای حلقه را خاتمه می دهد.

    بیانیه خالی

    عبارت خالی دارای قالب است

    :

    هیچ کاری نکردن مقدار "0" را برمی گرداند.

    توابع پوسته

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

    Name() (لیست فرمان)

    پس از آن فراخوانی تابع با نام انجام می شود. هنگامی که تابع اجرا می شود، هیچ فرآیند جدیدی ایجاد نمی شود. در محیط فرآیند مربوطه اجرا می شود. آرگومان های تابع به پارامترهای موقعیتی آن تبدیل می شوند. نام تابع پارامتر null آن است. شما می توانید اجرای یک تابع را با عبارت "return [n]" قطع کنید، جایی که (اختیاری) "n" کد بازگشتی است.

    مدیریت وقفه ("تله")

    گاهی اوقات لازم است از اجرای برنامه در برابر وقفه محافظت شود. متداول ترین وقفه ها به شرح زیر است که مربوط به سیگنال ها است: 0 خروج از مترجم، 1 رهاسازی (قطع اتصال از راه دور)، 2 وقفه از ، 9 کشتن (رهگیری نشد) ، 15 اعدام پایان. برای محافظت در برابر وقفه ها، یک دستور "trap" وجود دارد که دارای فرمت:

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

    اگر وقفه‌هایی در سیستم رخ دهد که سیگنال‌های آن با فاصله در "سیگنال‌ها" فهرست شده‌اند، "فهرست دستورات" اجرا می‌شود و پس از آن (اگر دستور "خروج" در لیست دستورات اجرا نشد، کنترل کنید. به نقطه شکست باز می گردد و اجرای فایل دسته ای ادامه می یابد. به عنوان مثال، اگر می خواهید قبل از قطع اجرای برخی از فایل های دسته ای، فایل های موجود در "/tmp" را حذف کنید، این کار را می توان با دستور "trap" انجام داد:

    تله "rm /tmp/* ؛ خروج 1" 1 2 15

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

    =====================================================

    کار آزمایشگاهی شماره 1 (زمان برای تکمیل - 3 ساعت)

    موضوع: مقدمه ای برپوسته

    1. مقدمه ای بر پوسته

    شل یک مفسر دستور (پردازنده فرمان) است که به عنوان رابط بین کاربر و هسته یونیکس عمل می کند. سولاریس سه پوسته اصلی را ارائه می دهد:

      پوسته پیش فرض Bourne /sbin/sh است

      پوسته C -- /bin/csh

      پردازنده فرمان Korn--./bin/ksh

    علاوه بر موارد ذکر شده، Solaris پوسته های اضافی را نیز ارائه می دهد:

      پوسته J -- /sbin/jsh

      محدود شده Korn l -- / usr/ bin/rsh

      T-shell -- /usr/bin/tcsh

      گنو بورن دوباره -- /usr/bin/bash

      پوسته Z - usr/bin/zsh

    انتخاب پوسته یک موضوع ترجیحی شخصی است.

    2. دستورات را اجرا کنید

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

    مثال

    $ /bin/ping –t 10 192.168.2.13

    بحث و جدل

    اعلان پوسته

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

    ! به دلایل امنیتی، به یک مدیر توصیه می شود که دایرکتوری فعلی کاربر و دایرکتوری های خانگی (شخصی) کاربر را به متغیر PATH اضافه نکند.

    مثال ها

    راه اندازی برنامه با مسیر کامل

    $ / usr/ محلی/ صندوقچه/ من_ برنامه

    راه اندازی یک برنامه از دایرکتوری بالاتر (والد).

    $ ../ محلی/ صندوقچه/ من_ برنامه

    راه اندازی برنامه از دایرکتوری فعلی

    $ ./ من_ برنامه

    3. شخصیت های خاص در پوسته

    برخی از کاراکترها در پوسته معانی خاصی دارند.

    3.1. الگوهای تولید نام فایل

    ? (علامت سوال)با هر کاراکتری به جز اولین نقطه مطابقت دارد.

    (پرانتز مربع)گروهی از نمادها را تعریف کنید (یک نماد از گروه انتخاب می شود).

    - (علامت منهای")محدوده کاراکترهای معتبر را تعریف می کند.

    ! (علامت تعجب)گروهی از شخصیت های زیر را رد می کند.

    * (نماد ستاره)با هر تعداد کاراکتر به جز نقطه اول مطابقت دارد.

    3.2. نمادهای تغییر مسیر I/O

    < - تغییر مسیر ورودی؛

    >, >> - تغییر مسیر خروجی؛

    2>, 2>> - تغییر مسیر پیام های خطا؛

    | - نوار نقاله

    3.3. نمادهای عام

    $variable_nameq - جایگزینی متغیر؛

    $(فرمان)یا "فرمان" -تعویض فرمان؛

    ~ - جایگزینی تایلد.

    4. جستجو کنید

    برای جستجوی سریعفایل‌ها و دایرکتوری‌ها، دستور Whereis، برای عمیق‌تر از دستور find (جستجوی فایل‌هایی که شرایط مشخص شده را دارند؛) استفاده می‌شود.

    5. ویرایشگر متن vi

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

    ویرایشگر vi 3 حالت کار دارد (شکل را ببینید).

    ورود به ویرایشگر vi

    خروج از vi

    علامت "~" (تیلد) در موقعیت اول، خطوط خالی (غیر موجود) فایل را مشخص می کند.

    حالت اصلی فرمان است که در آن دستورات با فشار دادن یک سری کلیدها وارد می شوند (به هیچ وجه روی صفحه نمایش داده نمی شوند).

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

    برخی از دستورات vi در جدول ذکر شده است.

    خط فعلی را حذف کنید

    خط فعلی را در کلیپ بورد کپی کنید

    حرکت مکان نما

    قرار دادن کاراکترهای مشخص شده با مکان نما در بافر

    درج کنید خط جدیددر ذیل

    یک خط جدید در بالا وارد کنید

    بعد از مکان نما اضافه کنید

    بعد از خط فعلی اضافه شود

    چسباندن قبل از مکان نما

    درج قبل از خط فعلی

    جایگزینی یک کاراکتر با یک کاراکتر وارد شده از صفحه کلید

    چسباندن متن از کلیپ بورد

    . (نقطه)

    آخرین دستور اجرا شده را دوباره انجام دهید

    لغو آخرین فرمان

    تمام تغییرات در خط فعلی را لغو کنید

    کاراکتر بالای مکان نما را حذف کنید

    در حالت ورودی، تمام کاراکترهای تایپ شده روی صفحه کلید در متن درج می شوند.

    در حالت آخرین خط فرمانی که تایپ می کنید در آخرین خط صفحه نمایش داده می شود.

    6. کمک کنید

    یونیکس دارای یک کتابچه راهنمای الکترونیکی است که حاوی توضیحاتی در مورد هدف دستورات، نحو آنها، نمونه هایی از استفاده و غیره است. این کتابچه راهنمای کاربر با دستور man فراخوانی می شود:

    7. دستورات اصلی پوسته

    سازمان بهداشت جهانی- نمایش اطلاعات در مورد کاربران فعال

    اکو- خروجی پیام ها به ترمینال؛

    بنر- خروجی پیام ها به ترمینال با حروف بزرگ؛

    مرد- تماس با سیستم کمک آنلاین؛

    تاریخ - خروجی تاریخ جاری؛

    نوشتن- انتقال پیام ها به ترمینال کاربر دیگر؛

    پیام– اجازه/ممنوعیت نمایش پیام از سایر کاربران؛

    پست- ارسال/دریافت نامه؛

    اخبار- آشنایی با اخبار سامانه؛

    pwd- نمایش نام مسیر مطلق دایرکتوری کاری فعلی؛

    سی دی- تغییر دایرکتوری کاری؛

    ls- نمایش اطلاعات در مورد محتویات دایرکتوری؛

    mkdir- ایجاد یک فهرست؛

    rmdir- حذف یک فهرست؛

    دست زدن به– به روز رسانی مهر زمانی فایل؛

    cp- کپی کردن فایل ها

    گربه- ادغام و نمایش محتویات فایل ها.

    بیشتر- صفحه بندی محتوای فایل

    mv - انتقال یا تغییر نام یک فایل؛

    rm- حذف یک فایل؛

    نام مستعار- ایجاد نام مستعار؛

    tr- تبدیل شخصیت؛

    خروج- تکمیل جریان پوسته-آ؛

    سه راهی- رهگیری نتایج خط لوله؛

    برش - انتخاب فیلدها از یک رشته؛

    grep- جستجو بر اساس الگو؛

    pr– خروجی فایل به خروجی استاندارد در فرمت مشخص شده؛

    مرتب سازی- مرتب سازی؛

    سر– خروجی خطوط اول فایل

    دم- خروجی آخرین خطوط فایل.

    دستشویی- شمارش تعداد کاراکترها، کلمات و خطوط.

    خواندن, اکو - خواندن و نمایش مقادیر متغیر؛

    تست- ارزیابی ارزش عبارت؛

    expr, اجازه دهید- محاسبه عبارات حسابی؛

    8. پوسته-برنامه ها

    شل به شما اجازه می دهد تا دنباله ای از دستورات را در یک فایل ذخیره کنید و سپس آن را اجرا کنید. برای اجرای یک فایل با یک برنامه پوسته برای اجرا، باید حق اجرا را به حقوق دسترسی اضافه کنید:

    $ chmod +x program_file_name

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

    اگر-پس-دیگر

    عبارات حلقه:

    تمرینات

    1. کدام یک از دستورات زیر باعث نمایش پیام خوشامدگویی بر روی صفحه می شود؟ چه چیزی نیستند؟ چرا؟

    $ پژواک سلام

    $ پژواک سلام

    $ پژواک سلام، جهان

    $ بنر سلام

    $ بنر سلام، جهان

    2. یک پیام را از چند خط با استفاده از دستورات چاپ کنید اکوو بنر

    3. تاریخ را در دو خط چاپ کنید: در خط اول  روز، ماه، سال، در دوم زمان فعلی، خروجی را با یک نظر ارائه دهید.

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

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

    6. نام خود را نام ببرید HOME-کاتالوگ

    7. زیردرخت دایرکتوری ها را با استفاده از دستورات از فهرست /export/home شروع کنید. سی دی، lsو pwd.

    8. در خود ایجاد کنید HOME-دایرکتوری های فرعی فرم:

    گل های میوه

    انگور گلابی سیب رز قاصدک بنفش

    سبز تیره

    9. بودن در شما HOME-directory، زیر شاخه های زیر را با استفاده از یک خط فرمان ایجاد کنید:

    آ ب پ ت

    10. بودن در شما HOME-directory، تمام زیر شاخه های دایرکتوری را حذف کنید آ.

    11. بودن در HOMEدایرکتوری، یک فایل ایجاد کنید مکینتاش در کاتالوگ موجود سیبو چندین فایل در دایرکتوری ها تاریکو سبز. وارد کاتالوگ شوید fپایین می آورد. بودن در دایرکتوری fپایین می آورد, همه زیر شاخه ها را کپی کنید fخرابه هاهمراه با فایل هایی که در آنها وجود دارد به یک دایرکتوری خاص ایجاد شده است سبد.

    12. بودن در کاتالوگ fپایین می آورد، دایرکتوری را حذف کنید fخرابه ها.

    13. فایل را بخوانید .مشخصاتبا استفاده از دستورات گربهو بیشتر.

    14. ایجاد در HOME- فایل متنی دایرکتوری myfileاز چند خط با دستور گربهیک فایل متنی ایجاد کنید مyافایل،با نوشتن همان خطوط در آن. چندتا فایل گرفتی؟ چرا؟

    15. محتویات فایل ایجاد شده در وظیفه 2.2 را مشاهده کنید myfile. فایل را کپی کنید myfileبرای تشکیل پرونده مایکپیمشاهده محتویات هر دو فایل

    16. فایل را جابجا کنید مایکپیبرای کاتالوگ کردن گل ها.

    17. بودن در HOMEدایرکتوری، یک پیوند ایجاد کنید مترyارتباط دادندر هر فایل مایکپیواقع در دایرکتوری گل ها. مشاهده فایل لینک

    18. یک خط به فایل اضافه کنید منارتباط دادن. کدام یک از فایل ها منارتباط دادن، منکپی 🀄، منفایل تغییر کرد؟ چرا؟

    19. برای تعیین تعداد لینک ها از چه دستوری می توان استفاده کرد؟ تعداد لینک های فایل ها را تعیین کنید منارتباط دادن، منکپی 🀄، منفایل.

    حذف فایل مایکپی. چه اتفاقی برای فایل لینک افتاد؟ تعداد لینک های فایل ها را تعیین کنید منارتباط دادن، منفایل.

    20. نام مستعار ایجاد کنید کارگردانکه محتویات دایرکتوری فعلی را در قالب توسعه یافته چاپ می کند.

    21. از سیستم خارج شوید و دوباره وارد شوید. آیا نام مستعار کار می کند؟ کارگردان? چه باید کرد تا نام مستعار بین جلسات "از بین نرود"؟

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

    23. استفاده از دستور دست زدن به، فایل هایی را در یک فهرست جدید با نام هایی ایجاد کنید که همزمان:

    قالب آ* مطابقت 5 فایل;

    قالب * آهمسان 4 فایل;

    قالب ??.? همسان 3 فایل;

    قالب * aa* همسان 2 فایل;

    قالب؟؟؟ مطابق با 1 فایل.

    24. برای انجام موارد زیر چه دستوری باید وارد شود:

    الف) نمایش نام همه فایل ها که با نقطه شروع می شوند.

    ب) نمایش نام تمام فایل هایی که به آن ختم می شوند «.txt»;

    ج) نام تمام فایل های حاوی کلمه را چاپ کنید "من";

    25. همه حروف کوچک را در یک فایل داده شده به بزرگ و در فایل دیگر همه حروف بزرگ را به کوچک تغییر دهید. تمام فضاهای تکراری را از فایل حذف کنید.

    26. فایلی به نام ایجاد کنید * . فقط این فایل را حذف کنید هنگام استفاده از کاراکترهای تولید نام فایل مراقب باشید!

    27. یک فایل با علامت فاصله در نام آن ایجاد کنید. چگونه چنین فایلی را حذف کنیم؟

    28. استفاده از دستور گربهبا اضافه کردن محتوای اصلی به انتهای همان فایل، محتوای فایل را دو برابر کنید. به دایرکتوری بروید گل ها. به فایل اضافه کنید فهرستفهرست محتویات دایرکتوری گل ها.مشاهده محتویات یک فایل

    29. سعی کنید با دستور بخوانید گربهفایل موجود نیست واکنش سیستم چیست؟ همین کار را با هدایت پیام های خطا به یک فایل انجام دهید من اشتباه. چه چیزی را روی صفحه می بینید؟ مشاهده فایل من اشتباه.

    30. یک خط لوله ایجاد کنید تا فقط نام ها و مجوزهای فایل هایی را که در حال حاضر در دایرکتوری کاری شما هستند فهرست کند.

    31. خط لوله ساخته شده را تغییر دهید تا لیست در یک فایل ذخیره شود فهرستمال تو HOMEدایرکتوری، و فقط تعداد فایل های موجود در لیست نمایش داده شد.

    32. محتویات یک فایل را نمایش دهید /etc/passwd، بر اساس قسمت نام کاربری مرتب شده است.

    33. یک نام مستعار ایجاد کنید وارد شده استبر، که لیستی از اسامی کاربرانی که در حال حاضر وارد سیستم شده اند را به ترتیب حروف الفبا نمایش می دهد.

    33. با استفاده از دستورات، تاریخ جاری را با حروف بزرگ نمایش دهید تاریخو بنر

    34. به یک متغیر اختصاص دهید من هستمنام ثبت نام شما یکی دیگر را اجرا کنید پوسته. آیا این متغیر را می بینید؟ برای دیدن آن در تولید شده چه باید کرد پوسته? مقدار یک متغیر را تغییر دهید من هستمدر تولید شده است پوسته. خروج تخم ریزی شد پوسته. به مقدار این متغیر در نسخه اصلی نگاه کنید پوسته. نتیجه را توضیح دهید.

    35. بنویسید پوسته-برنامه اطلاعاتکه از کاربر می خواهد نام، آدرس، روز، ماه و سال تولد را وارد کرده و این اطلاعات را به ترتیب معکوس نمایش دهد.

    36. بنویسید پوسته- برنامه ای که یک دعوت نامه برای وارد کردن یک عدد نمایش می دهد، عدد وارد شده را در یک متغیر ذخیره می کند Y، و یک پیام چاپ کنید "Y بزرگتر از 7 است"اگر ارزش Yبزرگتر از 7 و "Y استنه بزرگتر نسبت به. تا 7” در غیر این صورت.

    37. یک برنامه پوسته بنویسید که آمار زیر را نمایش دهد:

    الف) نام شما؛

    ب) تعداد آرگومان هایی که با آنها راه اندازی شده است.

    ج) هر یک از آرگومان های خود و طول آرگومان را به کاراکتر چاپ می کند.

    38. بنویسید پوسته-برنامه ای که تعداد آرگومان های خط فرمان را تعیین می کند و اگر تعداد آرگومان ها برابر با سه نباشد، پیغام خطا صادر می کند یا اگر تعداد آنها برابر با سه باشد، خود آرگومان ها را صادر می کند.

    39. بنویسید پوسته- برنامه ای که دستور وارد کردن شناسه کاربری را صادر می کند، شناسه را برای مطابقت با موارد استفاده شده در سیستم بررسی می کند و نام کامل را نمایش می دهد. HOMEدایرکتوری یا در مورد شناسه نامعتبر، پیام خطا صادر کنید.

    40. یک برنامه پوسته بنویسید سلام، پاسخ زیر را به آرگومان های خط فرمان ارائه می دهد:

    بحث و جدل "-d"- برنامه دستور را اجرا خواهد کرد تاریخ;

    بحث و جدل "-l"- برنامه محتویات دایرکتوری فعلی را نمایش می دهد.

      اگر هیچ آرگومان یا آرگومان نامعتبری در خط فرمان وجود نداشته باشد، برنامه راهنمای گزینه های خود را نمایش می دهد.

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

    42. اعلان سیستم را طوری تغییر دهید که نام مسیر کامل دایرکتوری کاری فعلی را شامل شود .

    43. یک برنامه بنویسید ویروس، که یک کپی اجرایی از خود با نام دیگری ایجاد می کند و سپس خود را حذف می کند.

    44. یک برنامه بنویسید ویروس2 ، که در فهرست فعلی برنامه به نظر می رسد زبان فرمانو به متن آنها دستوری برای نمایش کلمه اضافه می کند مبتلا شده!”.

    45. یک برنامه بنویسید ویروس3 ، که کد خود را به برنامه های زبان دستوری که پیدا می کند اضافه می کند تا برنامه های دیگر را آلوده کند.

    46. ​​یک برنامه بنویسید ویروس4 با تغییر ویروس خود به طوری که در صورت آلوده شدن، کد آلوده کننده از برنامه آلوده کننده حذف شود.

    47. یک برنامه بنویسید آنتی ویروس، که تمام برنامه های پوسته آلوده به ویروس شما را پیدا می کند.

    48. برنامه توسعه یافته را طوری تغییر دهید که نه تنها برنامه های آلوده را در دایرکتوری مشخص شده پیدا کند، بلکه با ذخیره نسخه آلوده در یک فایل جدید با انتهای آن، آنها را "درمان" کند. . vir، و حذف ویژگی execute از چنین فایلی.

    49. یک برنامه بنویسید ویروس5 ، که:

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

    ب) مانند یک تیم رفتار کنید ls، بدون ارائه چیزی در ترمینال کارشان.

    50. برنامه virus6 را بر اساس برنامه ها بنویسید ویروس2 -ویروس5 ، کد آلوده کننده آن توسط برنامه توسعه یافته توسط شما قابل شناسایی نبود آنتی ویروس، و آلودگی در هر مقدار از متغیر رخ می دهد مسیر.

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

    52. یک برنامه بنویسید سوپر آنتی ویروسکه تمامی فایل های دایرکتوری مشخص شده و زیرشاخه های آن را از تمامی ویروس های توسعه یافته شناسایی و کاملاً «درمان» می کند (در صورت مشخص شدن گزینه مربوطه).

    حاشیه نویسی: مفهوم پوسته فرمان نمای کلی پوسته های فرمان پوسته فرمان bash. ویژگی های کار (سابقه فرمان، اپراتور "!"، اقدامات هنگام فشار دادن یک کلید ). انجام چند کار در کنسول وظایف مدیریت کارها. متغیرهای محیطی فرمانده نیمه شب

    پیشرفت درس

    1. در دنیای لینوکس و یونیکس، کار بر روی کامپیوتر به طور جدایی ناپذیری با این مفهوم مرتبط است پوسته فرمان- برنامه ای که به کاربر اجازه می دهد با وارد کردن و اجرای دستورات با سیستم تعامل داشته باشد. با این اوصاف، پوسته فرماناست برنامه منظم. شما می توانید این را با تنظیم به عنوان پوسته پیش فرض در فایل ثابت کنید passwdبرای کاربر برنامه دیگری اما برای اینکه سیستم آن را به عنوان یک پوسته بداند، باید نام فایل مطلق را به آن اضافه کنید /etc/shells.

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

    Bourne Shell (sh) - قدیمی ترین و رایج ترین پوسته فرمانبرای سیستم های یونیکس یک سیستم یونیکس وجود ندارد که در آن مورد استفاده قرار نگیرد.

    Bourne Again Shell (باش) - Bourne Shell توسعه یافته. مزایای دلپذیر زیادی دارد، به همین دلیل است که در آن بسیار محبوب شده است اخیرا. این پوسته «پیش‌فرض» تقریباً برای تمام توزیع‌های لینوکس است.

    همچنین پوسته های محبوب عبارتند از:

    csh- پوسته ای که سیستم فرمان آن به زبان برنامه نویسی C نزدیک است

    tcsh پوسته ای است که سیستم فرمان آن به زبان برنامه نویسی Tcl نزدیک است.

    zsh احتمالا قوی ترین پوسته است. این پسوند sh (پوسته بورن) است.

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

    2. پوسته فرمان bash در ابتدا یک جایگزین رایگان برای Bourne Shell بود. بعدها، زمانی که قابلیت های آن افزایش یافت، به عنوان یک محصول مستقل در نظر گرفته شد. ویژگی های اصلی bash عبارتند از:

    جدول 1.1.
    فرصت یک نظر
    1 ویرایش خط امکان ویرایش دستور وارد شده به جای بازنویسی مجدد
    2 سازمان کانال فرصت I/O تغییر مسیرها، سازماندهی کانال ها بین وظایف
    3 راحتی در استفاده استفاده از نام مستعار دستورات، تاریخچه فرمان، تکمیل خودکار
    4 مدیریت شغل امکان ایجاد و مدیریت مشاغل پس زمینه
    5 انعطاف پذیری استفاده از فایل های لاگین اسکریپت برای هر کاربر به طور جداگانه، متغیرهای محیطی

    تغییر مسیر I/O و لوله ها بعداً در درس 8 پوشش داده خواهد شد. بنابراین از این نکته صرف نظر می کنیم. اما اجازه دهید در مورد ویژگی های کار در bash صحبت کنیم، در مورد مزایای آن.

    Bash به طور خودکار تمام دستورات تایپ شده توسط کاربر را در یک فایل می نویسد ~/.bash_history. برای مدیریت این فایل از دستور history استفاده می شود. تاریخ است دستور داخلیضربه شدید. یعنی هیچ فایل اجرایی متناظر با این دستور وجود ندارد. خودش پوسته فرمانتمام اعمال را انجام می دهد. بدون گزینه وارد شده است، به سادگی تمام دستورات ذخیره شده در این فایل را فهرست می کند و با cat ~/.bash_history یکسان است.

    تاریخچه فرمان برای ساده کردن مجموعه دستورات پرکاربرد وجود دارد. تاریخچه دستورات را می توان از طریق لیست با کلیدها مرتب کرد <вверх>و<вниз> .

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

    $ !/usr /usr/bin/perl ./ptest.pl خوب $ !xfonts bash: !xfonts: رویداد پیدا نشد $

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

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

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

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

    - یک کلید ترکیبی که یک سیگنال غیرقابل جذب به فرآیند ارسال می کند sigstop. به شما امکان می دهد اجرای فرآیند را برای انتقال کنترل به خط فرمان متوقف کنید.

    فرمان & - نماد & بعد از دستور به شما اجازه می دهد آن را اجرا کنید زمینه.

    jobs - لیست مشاغل فعلی مترجم فرمان.

    bg<#j>– job #j را در پس زمینه قرار می دهد. قبل از این، کار باید توسط ترکیب کلید متوقف شود . اگر در حال حاضر مترجم فقط یک وظیفه داشته باشد، می توان شماره را حذف کرد.

    fg<#j>- job #j را در حالت اجرای پیش زمینه قرار می دهد. کار باید با ترکیب کلید متوقف شود یا در پس زمینه باشد. اگر در حال حاضر مترجم فقط یک وظیفه داشته باشد، می توان شماره را حذف کرد.

    $ man bash ^Z + Stopped man bash $ vim ^Z vim + Stopped vim $ bg 1 + man bash & $ jobs + stop man bash + stoped vim $ fg 2 + vim $ fg + man bash $

    4. متغیرهای محیطی- اطلاعات سیستمی که ترجیحات شما را نشان می دهد، مانند ویرایشگر متن به طور پیش فرض، مسیرهای جستجو برای فایل های اجرایی و غیره، و همچنین هویت های کاربر، سیستم و پوسته مانند نام کاربری, نسخه لینوکسو غیره، توسط مفسر فرمان و سایر برنامه ها استفاده می شود.

    متغیرهایی که معمولا توسط کاربر استفاده می شود عبارتند از:

    PATH - متغیر شامل مسیرهایی است که در آن سیستم باید به دنبال فایل های اجرایی در صورت کامل بودن یا باشد مسیر نسبیبه آنها.

    PWD - متغیر شامل نام کامل دایرکتوری فعلی است.

    HOME - متغیر شامل مسیر کامل است فهرست اصلی کاربر.

    HOSTNAME - متغیر حاوی نام رایانه است.

    LOGNAME - شامل نام کاربری

    SHELL - حاوی نام پوسته دستوری است که در جلسه جاری اجرا می شود.

    کاربر - شامل نام کاربریجلسه ای که در حال حاضر باز است.

    لیست متغیرهای نصب شده در سیستم را می توان با دستور صادرات بدون پارامتر وارد کرد.

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

    $ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="en_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin: /usr/bin:/usr/local/bin:/home/gserg/bin" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" declare -x USER="gserg" $ EDITOR=/bin/vim $ export EDITOR $ export declare -x EDITOR="/bin/vim" declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="ru_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" اعلام - x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM="Eterm" declare -x USER="gserg" $

    تیم تنظیم نشدهیک متغیر سیستمی را حذف می کند. مثلا:

    $ unset EDITOR $ export declare -x HOME="/home/gserg" declare -x HOSTNAME="WebMedia" declare -x LANG="en_RU.KOI8-R" declare -x LOGNAME="gserg" declare -x PATH=" /bin:/usr/bin:/usr/local/bin:/home/gserg/bin:" declare -x PWD="/home/gserg" declare -x SHELL="/bin/bash" declare -x TERM= "Eterm" -x USER="gserg" $ را اعلام می کند

    5. در درس امروز شما را با یک پوسته فرمان دیگر کمی غیر استاندارد آشنا می کنیم فرمانده نیمه شب. نیست پوسته فرمانبه معنای معمول این یک مدیر فایل متنی - آنالوگ است فرمانده نورتونیا دور. فرمانده نیمه شببا دستور mc اجرا کنید. در مورد قابلیت های آن صحبت خواهیم کرد.

    صفحه نمایش فرمانده نیمه شب"به دو قسمت تقسیم شده است. تقریباً کل فضای صفحه توسط دو پنل با فهرستی از فهرست ها و فایل ها اشغال شده است. به طور پیش فرض، خط دوم از پایین صفحه یک خط فرمان است که در آن می توانید دستورات پوسته معمولی را اجرا کنید و خط پایین اعلان هایی برای کلیدهای عملکرد (F1-F10). خط بالای نمادها شامل منویی است که با آن می توان بسیاری از عملکردها را انجام داد. برای استفاده از منو می توانید روی مورد مورد نظر کلیک کرده یا کلید را فشار دهید F9و با استفاده از کلیدها کنترل مکان نمامورد مورد نظر را انتخاب کنید

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

    حالا بیایید در مورد میانبرهای اصلی صفحه کلید که به شما کمک می کند با آنها کار کنید صحبت کنیم فرمانده نیمه شب "اهم.

    از کلیدها برای تغییر پانل فعال استفاده می شود یا +

    برای علامت گذاری یک فایل، را فشار دهید یا +

    کلیک برای کمک

    نمایشگر فایل را نمایش می دهد

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

    به شما امکان کپی کردن فایل را می دهد.

    انتقال یا تغییر نام فایل

    ایجاد دایرکتوری

    کلید یک فایل و/یا دایرکتوری را حذف می کند

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

    - به شما اجازه خروج را می دهد فرمانده نیمه شب.

    نشانگر را به ابتدای لیست فایل ها منتقل می کند،

    - برعکس - به انتهای لیست.

    و موقعیت نشانگر را در هر صفحه به ترتیب به بالا و پایین تغییر می دهد.

    کلید <*> بر صفحه کلید اضافیانتخاب فایل ها را معکوس می کند (بر دایرکتوری ها تأثیر نمی گذارد)

    کلید <+> در صفحه کلید اضافی به شما امکان می دهد فایل ها را با ماسک علامت گذاری کنید و <-> تیک فایل های ماسک را بردارید.

    + - به روز رسانی محتویات دایرکتوری (با خواندن مجدد از دیسک یا از شبکه)

    + - تعویض پنل راست و چپ

    + - حذف/بازگرداندن پانل ها

    اگرچه ترکیبات میانبرهای صفحه کلیدبهترین ابزار برای انجام کار هستند فرمانده نیمه شب "اهمتا حد امکان سریع و راحت، یادگیری همه آنها به یکباره برای مبتدیان بسیار دشوار است. برای پر کردن این شکاف و افزودن ویژگی های دیگر که میانبر صفحه کلید ندارند، فرمانده نیمه شبدارای یک منو (به نام F9).

    منو شامل موارد زیر است: "پانل چپ"، "فایل"، "فرمان"، "تنظیمات"، "پانل راست".

    "پانل چپ / راست"- این آیتم های منو دقیقاً یکسان هستند. تفاوت بین آنها فقط این است که اقدامات انجام شده به پنل چپ یا راست نشان داده می شود.

    "فرمت لیست"- کادر محاوره ای را باز می کند که در آن می توانید نمای را انتخاب کنید که در آن لیست فایل ها / دایرکتوری ها نمایش داده می شود. شما می توانید از بین فرمت های استاندارد، کوتاه و توسعه یافته انتخاب کنید. البته کاربر در این پنجره می تواند ظاهر پنل را نیز به گونه ای تعریف کند که با انتخاب دکمه رادیویی «User-defined» راضی باشد.

    "مشاهده سریع"- پانل را به حالت مشاهده خودکار فایل های انتخاب شده در پانل مجاور تغییر می دهد. فوکوس به طور خودکار به پانل مقابل تغییر می کند.

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

    "درخت"- ترجمه می کند فرمانده نیمه شببه حالتی مشابه حالت Explorer از OC Windows. در پنلی که دستور روی آن اعمال می شود "درخت"، یک درخت دایرکتوری ساخته می شود که با استفاده از فلش ها می توان آن را پیمایش کرد کنترل مکان نما، کلیدها PageUp، PageDown، Home، End. پانل بعدی محتویات دایرکتوری برجسته شده در درخت را نمایش می دهد.

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

    "فیلتر"- به شما امکان می دهد نام فایل هایی که در پنل نمایش داده می شوند را با استفاده از عبارت منظم وارد شده در کادر محاوره ای انتخاب کنید.

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

    ftp:username:password@server_address:port/directory_on_server

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

    "اتصال پوسته"- به شما امکان می دهد یک اتصال شبکه را با پروتکل باز کنید ماهی (انتقال فایل از طریق SHell– انتقال فایل از طریق پوسته). ماهیاز پروتکل ها استفاده می کند RSH (Remote SHell– پوسته از راه دور ) یا SSH (پوسته ایمن)- پوسته محافظت شده، آنالوگ RSH، اما با پشتیبانی از رمزگذاری داده های ارسال شده). رشته کاملی که کاربر می تواند با آن هاست راه دور را مشخص کند عبارت است از:

    sh:username@server_address:options/server_dir

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

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

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

    "منوی کاربر"- به شما اجازه می دهد تا منوی را که توسط خود کاربر تنظیم شده است تماس بگیرید. همچنین توسط کلید فراخوانی می شود .

    "مشاهده فایل"- آنالوگ عملکرد انجام شده در فشار دادن . به شما امکان می دهد فایل هایلایت شده را مشاهده کنید (یا یک فهرست را وارد کنید). پشتیبانی از بسیاری از فرمت ها مانند فرمت های متنی، آرشیو، Winword DOC، باینری لینوکس و غیره.

    "مشاهده فایل..."- مانند پاراگراف قبلی است، اما روی فایل هایلایت شده تأثیر نمی گذارد، بلکه فایلی که نام و مسیر آن در کادر محاوره ای وارد می شود.

    "نمای تیم"- به شما امکان می دهد یک دستور را اجرا کرده و آن را مشاهده کنید خروجی استاندارددر حالت مشاهده فایل

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

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

    "مجوزها"- به شما امکان می دهد مجوزهای یک فایل (یا گروهی از فایل ها) را در یک کادر محاوره ای تغییر دهید.

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

    "مالک/گروه"- مالک و/یا گروهی که یک فایل/دایرکتوری به آن تعلق دارد را تغییر می دهد.

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

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

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

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

    "تغییر دایرکتوری"- دایرکتوری فعلی را تغییر می دهد. مشابه دستور cd در پوسته Bash. دایرکتوری مورد نیاز در کادر محاوره ای وارد می شود.

    "گروه علامت گذاری"- گروهی از فایل ها را با ماسک در دایرکتوری باز شده در پنل فعال علامت گذاری می کند. آنالوگ یک تابع فراخوانی شده با <+> روی صفحه کلید اختیاری

        سیستم‌های عامل خانواده لینوکس و همچنین هر سیستم‌عامل دیگری به یک رابط برای تعامل بین اجزای سیستم کامپیوتری و کاربر نهایی نیاز دارند، یعنی وجود یک لایه نرم‌افزاری که ورودی دستورات و پارامترها را برای به دست آوردن نتایج مورد نظر این لایه نرم افزار نامیده می شود "پوسته"یا در زبان انگلیسی - پوسته.

    پوسته چیست؟

    پوسته فرمان ( پوسته) تعامل بین کاربر و محیط سیستم عامل لینوکس را فراهم می کند. او متخصص است محصول نرم افزاریکه اجرای دستورات و به دست آوردن نتایج اجرای آنها را فراهم می کند و یا اگر بسیار ساده شده باشد، پوسته برنامه ای است که برای اطمینان از اجرای برنامه های دیگر بنا به درخواست کاربر طراحی شده است. یک نمونه از پوسته، برای مثال، یک مفسر فرمان خواهد بود command.comسیستم عامل MS DOS یا پوسته ضربه شدیدسیستم عامل های یونیکس/لینوکس

    همه پوسته ها مطابق با هدف اصلی خود عملکردها و ویژگی های مشابهی دارند - اجرای دستورات کاربر و نمایش نتایج اجرای آنها:

    تفسیر خط فرمان

    دسترسی به دستورات و نتایج آنها

    پشتیبانی از متغیرها، کاراکترهای خاص و کلمات رزرو شده

    پردازش فایل ها، عملیات ورودی و خروجی استاندارد.

    پیاده سازی زبان برنامه نویسی پوسته خاص.

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

    ش- پوسته بورن، پوسته کلاسیک یونیکس

    ضربه شدیدپوسته دوباره بورن(GNU Bourne-Again Shell). شاید رایج ترین در حال حاضر، پوسته در محیط خانواده سیستم عامل های لینوکس باشد.

    ksh- پوسته کورن، به عنوان توسعه پوسته طراحی شده است بورنبا تاریخچه خط فرمان و امکان ویرایش دستورات.

    csh- پوسته سی، با استفاده از نحو یک زبان برنامه نویسی محبوب سی

    tcsh- نسخه پوسته سیبا ویرایش خط فرمان تعاملی

    چندین پوسته مختلف را می توان بر روی سیستم نصب کرد و این امکان وجود دارد که هر کاربر از پوسته پیش فرض خود استفاده کند. همه اینها البته به صورت خودکار در طی مراحل دانلود و ثبت نام کاربر انجام می شود.

        در حین بارگذاری سیستم عامل های خانواده لینوکس، پس از بارگیری هسته سیستم، انتقال به حالت تعاملی انجام می شود - حالت تعامل بین کاربر و سیستم عامل. در لینوکس، اولین فرآیندی که در هنگام بوت شروع می شود، برنامه مقداردهی اولیه است. init، که محتویات فایل پیکربندی را می خواند /etc/inittab، لیست و ویژگی های پایانه های موجود در سیستم را تعیین می کند و برنامه ورود تعاملی را فراخوانی می کند. گرفتن A که اعلان نام کاربری را نمایش می دهد. پس از وارد کردن نام کاربری و رمز عبور، برنامه گرفتنبرنامه را فرا می خواند وارد شدن، که حساب را تأیید می کند، به فهرست اصلی کاربر هدایت می شود، و کنترل را به برنامه راه اندازی اولیه جلسه، که معمولاً برنامه پوسته کاربر است، منتقل می کند، که نوع خاص آن توسط محتویات فایل تعیین می شود. /etc/passwdبرای این حساب. مثلا:

    user1:x:508:511::/home/user1:/bin/sh
    interbase:x:510:511::/home/interbase:/bin/csh
    apb:x:511:513:apb:/home/apb:/bin/bash

    همانطور که از محتویات فایل مشاهده می کنید /etc/passwd، برای کاربر کاربر 1شل راه اندازی خواهد شد ش(پوسته بورن)، به ازای هر کاربر بین پایه- پوسته csh(پوسته C) و برای کاربر apb- پوسته ضربه شدید(دوباره بورن). پس از شروع پوسته، یک خط فرمان روی صفحه نمایش داده می شود (معمولاً به شکل علامت دلار $ اگر کار در چارچوب یک حساب کاربری استاندارد انجام شود، یا پوند # اگر پوسته تحت یک حساب کاربری ممتاز استفاده می شود ( ریشه).

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

    از طریق تیم خروجتوسط کاربر انجام می شود

    هنگامی که فرآیند پوسته یک سیگنال دریافت می کند کشتنارسال شده توسط هسته، مانند زمانی که سیستم راه اندازی مجدد می شود.

    تفسیر خط فرمان

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

    ls -l file01 file02

    شامل دستور ls، گزینه -l و دو نام فایل file01 file02 است.

    هنگام استفاده از چندین گزینه، می توان آنها را ترکیب کرد. به عنوان مثال، انواع دستورات زیر یکسان هستند:

    Ls-l-d
    ls-ld

    دستوراتی که بخشی از پوسته هستند نامیده می شوند ساخته شده است. چنین دستوراتی شامل، برای مثال، cd، if، case و غیره است. طبیعتاً، دستورات داخلی ممکن است برای انواع مختلف پوسته متفاوت باشند. علاوه بر دستورات داخلی، می توان از ماژول های برنامه که فایل ها یا فایل های اجرایی جداگانه هستند استفاده کرد. اسکریپت هایا سناریوها- فایل های متنی معمولی حاوی خطوطی که به صورت متوالی اجرا می شوند با دستورات پوسته. برخی از اسکریپت ها (اسکریپت ها) را می توان توسط فرآیندهای لینوکس اجرا کرد، مانند زمانبندی کار کرون. Task Scheduler، به عنوان یک قاعده، برای انجام خودکار وظایف مدیریت سیستم برنامه ریزی شده طراحی شده است. وظایف کروندستورات یا اسکریپت هایی هستند و به صورت خودکار و بدون دخالت انسانی اجرا می شوند و می توانند در زمینه حساب های کاربری مختلف اجرا شوند. در موردی که وظیفه زمانبندی شامل اجرای برخی از اسکریپت ها می شود، مشکل انتخاب پوسته ای وجود دارد که باید به عنوان فرآیند فرزند راه اندازی شود. کرونبرای پردازش دستورات از فایل اسکریپت - پس از همه، پوسته می تواند هر باشد، و نحو اسکریپت، به عنوان یک قاعده، شامل استفاده از پوسته خاصی است که برای آن نوشته شده است. برای رفع این مشکل، در خانواده سیستم عامل های لینوکس، مرسوم است که در خط اول اسکریپت، نوع پوسته مورد نیاز برای اجرای آن را به شکل زیر مشخص می کنند:

    #!/bin/bash- برای پوسته ضربه شدید

    #!/bin/sh- برای پوسته ش

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

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

    /etc/profile- متغیرها را فقط برای پوسته ها تنظیم می کند. می تواند هر اسکریپتی را در پوسته های سازگار با پوسته Bourne اجرا کند.

    /etc/bash.bashrc- متغیرها را فقط برای پوسته های تعاملی تنظیم می کند. همچنین اسکریپت های bash را اجرا می کند.

    /etc/محیط- توسط ماژول PAM-env استفاده می شود. فقط جفت ها را می توان در این فایل مشخص کرد. نام = ارزش.

    هر کدام از این فایل ها کاربرد خاص خود را دارند، بنابراین باید با دقت یکی را انتخاب کنید که با اهداف شما مطابقت دارد. به عنوان مثال، اگر می خواهید یک فهرست سفارشی اضافه کنید ~/binبه یک متغیر مسیربرای همه کاربران، کد زیر را در یکی از فایل های اولیه سازی محیط سیستم (/etc/profile یا /etc/bash.bashrc) قرار دهید:

    # اگر شناسه کاربری بزرگتر یا مساوی 1000 باشد و دایرکتوری ~/bin وجود داشته باشد و

    #قبلاً به متغیر PATH اضافه نشده بود،

    # صادرات ~/bin به $PATH.

    اگر [[ $UID -ge 1000 && -d $HOME/bin && -z $(echo $PATH | grep -o $HOME/bin)

    صادرات PATH=$HOME/bin:$(PATH)

    به طور معمول، در سیستم عامل های لینوکس، شناسه کاربری کمتر از 1000 یا کمتر از 500 برای حساب های سرویس استفاده می شود. در این مثال، متغیر محیطی برای همه تنظیم می شود کاربران محلیسیستم هایی با شناسه 1000 یا بیشتر.

    اگر نیاز به تغییر محیط برای یک کاربر خاص دارید، محتویات محیط کاربر را تغییر دهید:

    - ~/.bash_profile, ~/.bash_loginو غیره - فایل های اولیه سازی پوسته از فهرست اصلی کاربر.

    - ~/.پروفایل- فایل اولیه سازی پروفایل کاربر. توسط بسیاری از پوسته ها برای تعریف متغیرهای محیطی استفاده می شود.

    ~/.pam_environment- معادل سفارشی فایل /etc/environment که توسط ماژول PAM-env استفاده می شود.

    به عنوان مثال، برای افزودن دایرکتوری ~/bin کاربر به مسیر جستجوی فایل های اجرایی مشخص شده توسط متغیر مسیربرای مثال در یک فایل ~/.پروفایلخط را بگذارید:

    صادرات PATH="$(PATH):/home/user/bin"

    برای تنظیم متغیرهای محیطی برای برنامه های گرافیکی، از محتویات فایل های تنظیمات محیط گرافیکی کاربر استفاده می شود ~/.xinitrc

    بسیار رایج تر است که متغیرهای محیطی برای جلسه کاربر فعلی تنظیم شوند. به عنوان مثال، برای اضافه کردن یک فهرست سفارشی ~/binدر مسیر جستجوی اجرایی:

    صادرات PATH=~/bin:$PATH

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

    برای مشاهده مقدار یک متغیر می توانید از دستور استفاده کنید متغیر echo $، مثلا:

    پژواک $PATH

    در حال حاضر، رایج ترین پوسته، همانطور که در بالا ذکر شد، است ضربه شدید. این در درجه اول به دلیل این واقعیت است که پوسته ضربه شدیداست ش- یک پوسته فرمان سازگار که اضافه شده است ویژگی های مفیداز پوسته های کورن ( ksh) و پوسته C ( csh). پوسته ضربه شدیدمی تواند اکثر اسکریپت های پوسته را بدون هیچ تغییری اجرا کند شو سعی می کند تا حد امکان به استاندارد نزدیک شود POSIX، که منجر به پیشرفت های زیادی هم برای برنامه نویسی و هم برای استفاده تعاملی می شود. در اجرای مدرن ضربه شدیدحالت ویرایش خط فرمان، اندازه نامحدود تاریخچه فرمان، ابزارهای مدیریت کار، امکان استفاده از نام مستعار، فهرست گسترده ای از دستورات داخلی، توابع پوسته و غیره وجود دارد. بطور کلی، ضربه شدیدبه بهترین وجه نیازهای یک کاربر معمولی را برآورده می کند، که باعث می شود بیشترین استفاده را در محیط لینوکس داشته باشد.

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

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

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

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

    شکل 3.1. رابط خط فرمان

    دسترسی همزمان به سیستم

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

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

    که در سیستم عاملجابجایی لینوکس بین کنسول های مجازیدر حالت متن با استفاده از میانبر صفحه کلید انجام می شود alt-F1,alt-F2و غیره در این مورد، هر کنسول مجازی با یک نام خاص مشخص می شود: "tty1"، "tty2"، و غیره. هر ترکیب دارای یک کنسول مجازی شماره گذاری شده مربوط به آن است. هر کدام از این کنسول ها با کنسول های خود مرتبط هستند پایانه، که با یک فایل دستگاه با نام مناسب مشخص می شود (به عنوان مثال /dev/tty1).

    نسخه های مدرن یونیکس رابط های گرافیکی کاربر را در اختیار کاربران قرار می دهد که گزینه های خط فرمان را نیز ارائه می دهد. این قابلیت با استفاده از پایانه های گرافیکی- برنامه های ویژه ای که ترمینال متنی را در یک پنجره گرافیکی شبیه سازی می کنند.

    همچنین می توان چندین زیرسیستم گرافیکی را راه اندازی کرد، سپس جابجایی بین آنها مانند جابجایی بین کنسول های مجازی - یک ترکیب کلید انجام می شود. ctrl-alt-F1.

    شکل 3.2. کنسول های مجازی و گرافیکی

    هر دستگاه ترمینال خود را دارد ممکن هاورودی و خروجی اطلاعات نمونه هایی از این قابلیت ها عبارتند از: تعداد رنگ های نمایشگر، قابلیت حرکت مکان نما و تغییر اندازه صفحه نمایش، مجموعه کاراکترهای کنترلی و غیره. پایانه ها بر اساس تقسیم می شوند. انواع: مجموعه ای از ویژگی های تنظیم شده در یک فایل پیکربندی خاص. نمونه هایی از انواع عبارتند از: tty (تله تایپ) یا xterm (ترمینال گرافیکی). نوع ترمینال به صراحت در نام دستگاه ترمینال مشخص شده است (به عنوان مثال /dev/tty1). تمام تنظیمات نوع ترمینال در پوشه /etc/termcap قرار دارند.