آموزش‌های خط فرمانی

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

آموزش‌های خط فرمانی

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

استاندارد POSIX

روزهای اولیه یونیکس بسیار مشابه غرب وحشی بود. شرکت‌های بدعت‌گذار سیستم عامل در حالیکه به مشتریان خود اطمینان می‌دادند، سیستم عامل آن‌ها مشابه و سازگار با سایر یونیکس‌ها می‌باشد، در جهت‌های کاملاً متفاوت، عمل می‌کردند.

مؤسسه مهندسی الکتریک و الکترونیک(IEEE) یا Institute of Electrical and Electronics Enginers که اجتماعی از مهندسین و متخصصین حرفه‌ای الکترونیک و مهندسی کامپیوتر در آمریکا می‌باشد، پیشگام شده و با مقدار چشم‌گیری تلاش وکوشش فروشندگان عمده یونیکس، یک نسخه استانداردی برای یونیکس که POSIX نامیده شد ایجاد نمودند، این نام، کوته‌نوشتی از …Portable Operating System Interface for Unix می‌باشد.

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

وفای به عهد

یکی از معتبرترین راهنماهای Bash که در (The Linux Documentation Project) یا پروژه مستندسازی لینوکس- tldp - نیز قرار گرفته است Bash Guide for Beginners نوشته Machtelt Garrels می‌باشد که نسبت به ترجمه آن برای علاقمندان کار با خط فرمان و اسکریپت‌نویسی Bash اقدام نمودهام و علاقمندان می‌توانند آن را در اینجا ملاحظه نمایند.همچنین تجمیع شده آن در یک فایل را در اینجا با حجم یک MB قرار داده‌ام که پس از دریافت و استخراج آن با دستور tar -xvf bbg.gz یک دایرکتوری با نام Bash-Beginners-Guide شامل کلیه فایلها و دایرکتوریهای مربوط ایجاد می‌گردد. کافیست فایل Bash_beginners.html را ترجیحاً در مرورگر فایرفاکس باز کنید. برای زیبا‌تر دیدن متن، پیشنهاد می‌گردد فونت زیبای XB Zar را در سیستم خود نصب نموده و آن را با اندازه۱۸ فونت پیش‌فرض مرورگر فایرفاکس قرار بدهید.

نام‌گذاری فایلها

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

بسیار معقول است که نام فایلها به طریقی انتخاب شوند که بیانگر محتوای آن‌ها باشد. به عنوان نمونه اگر بخواهید دو فایل متنی از نام مشتریان متقاضی cd اوبونتو و opensuse تهیه کنید، نام ordersforcdubuntu و ordersforcdopensuse چندان جالب نیستند. شاید بخواهید برای تشخیص آن‌ها از یکدیگر به صورت orders/for-cd-ubuntu و orders/for-cd-opensuse نام‌گذاری نمایید. اما این کاراکتر / برای جداسازی نام فایلها و دایرکتوریها می‌باشد و استفاده از آن به این صورت، اشکال ایجاد می‌کند.

زیرا موقعی که می‌خواهید به آن در آدرس home/mah/orders/for-cd-ubunru/ رجوع کنید دستور شما صحیح عمل نخواهد کرد. چون شل گمان می‌کند که orders یک دایرکتوری داخل دایرکتوری mah می‌باشد. به همین علت کاربرد / در نام فایل مجاز نیست. اما کاراکتر خط تیره یا منها( minus ) در صورتی که در ابتدای نام فایل نباشد و در اطراف آن فاصله موجود نباشد، مجاز خواهد بود. اگر در ابتدای نام از علامت منها استفاده شود، وقتی نام فایل با فرمان‌های bash به کار برود، با پیغام خطا مواجه می‌گردد. زیرا پوسته آن را به عنوان یک گزینه تلقی می‌نماید، و گمان می‌کند می‌خواهید با آن گزینه فرمان را اجرا کنید. در نتیجه پیغام خطایی در ارتباط با عدم وجود آن گزینه صادر می‌کند.

چنانچه مایل باشید، می‌توانید از کاراکترفاصله در نام فایل استفاده کنید، اما باید به شل بگویید که این کاراکتر بخشی از نام فایل است. در غیر آن‌صورت با مشکل مواجه می‌شوید. چون شل کاراکتر فاصله را به عنوان جداکننده شناسه‌ها از یکدیگر در نظر می‌گیرد و اگر شما بخواهید فایل orders for cd ubuntu را با استفاده از فرمانی به کار بگیرید پوسته گمان می‌کند، از او می‌خواهید فرمان را با هر یک از شناسه‌های orders و for و cd و ubuntu به کار ببرد. و بنابراین حداقل آن خواهد بود که مقصود شما برآورده نمی‌شود. برای پرهیز از این امر، باید کاراکترهای ویژه‌، که معنی خاصی برای پوسته دارند را با کاراکتر گریز ( \ ) پوشش بدهیم. یا نام فایل را در نقل‌قول قرار دهیم که به این ترتیب کار خواهد کرد. اما همواره یک زحمت اضافه برای نقل‌قولی کردن نام فایل به همراه خواهد داشت. با کاراکترهای خاص وکاراکتر گریز و سایر مقولاتی که در این یادداشت به کار رفت به طور گسترده‌تر در راهنماهایی که در دست ترجمه است و به زودی لینک آن‌ها را به نوبت در اینجا قرار خواهم داد، آشنا خواهید شد.

استفاده عاقلانه از آزادی

کاربرانی که DOS را به یاد دارند، می‌دانند که در آن سیستم نام فایلها حداکثر ۸ کاراکتر به علاوه سه کاراکتر برای پسوند تعیین کننده نوع فایل می‌توانست باشد. در یونیکس و همچنین گنو-لینوکس طول نام یک فایل می‌تواند تا ۲۵۵ کاراکتر باشد. استفاده از ۲۵۵ کاراکتر برای نامیدن یک فایل می‌تواند توصیف دقیق و کامل و مناسبی از فایل را در خود داشته باشد. اما شیفته آن نشوید. در‌واقع ایده خوبی خواهد بود که نام فایل را کمتر از ۸۰ کاراکتر در نظر بگیریم. زیرا این معادل عرض معمول یک ترمینال است و نام یک فایل بهتر است بتواند در یک سطر قرار گیرد. البته این یک نظر مشورتی است، نه التزام. آزادی توصیف فایل با بیش از ۲۰۰ کاراکتر از آنِ شماست، اما عاقلانه از آن استفاده کنید.

التزام و انعطاف

سیستم‌های مبتنی بر یونیکس، و از جمله لینوکس، نسبت به حالت حروف( کوچک و بزرگ ) حساس هستند. یعنی فایلهای myfile و Myfile و myFile می‌توانند در یک دایرکتوری وجود داشته باشند، چون که از نظر لینوکس نامهای متفاوتی هستند.

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

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

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