PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : یه سری دستور لینوکس



Vahid
October 15th, 2009, 16:21
ls -l > lsoutput.txt$


این دستور، خروجی دستور ls را داخل فایلی به نام lsoutput.txt می ریزد. با عملگر> تقریبا همه خروجی ها را می توان منتقل کرد. و اگر فایل مقصد از قبل وجود داشته باشد، در این صورت فایل جدید جایگزین آن خواهد شد. برای این که خروجی را به انتهای فایل اضافه کنیم، اما فایل قبلی پاک نشود، از عملگر> استفاده کنید:


$ls << lsoutput.txt


این دستور، نتیجه را به انتهای فایل قبلی اضافه خواهد کرد.

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


more > lsoutput.txt$


البته این مثال، بسیار جزیی و اندک بود و انتقال جریان ورودی و خروجی نسبت به ویندوز، ابعاد بسیار گسترده تری دارد.

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


ps < psout.txt$
<$sort psout.txt pssort.out


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


ps1 sort < pssort.out$


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


$ps1 sort 1 more


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


$ps-xo comm1 sort 1 uniq
grep -v sh1 more


این دستور چه کار می کند؟

خروجیps را می گیرد، به ترتیب الفبا مرتب می کند، پروسس ها را با استفاده ازuniq استخراج می کند، با استفاده از grep -v sh پروسسی که اسمش sh است را حذف می کند و دست آخر به صورت صفحه بندی شده به خروجی (نمایشگر) می فرستد. این روش، همان طور که شما هم می بینید، عجب روش تر و تمیزی است برای پیوندانیدن چند دستور به همدیگر! تازه بدون این که به دردسر بیافتیم و فایل های موقت ایجاد بکنیم! هرچند، حسابی مراقب یک چیز باشید: اگر رشته ای از دستورها داشتید و قرار بود خروجی را به یک فایل بفرستید، هیچ وقت از یک نام فایل دوبار در رشته دستوری استفاده نکنید. برای مثال اگر چنین دستوری بنویسید:


cat mydata.txt 1 sort 1 uniq < mydata.txt$


در این صورت با یک فایل خالی مواجه خواهید شد، چون پیش از این که بخواهید فایلmydata.txt را بخوانید، آن را بازنویسی کرده اید.

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

برنامه های تعاملی
(Interactive Programs)نوشتن و اجرا کردن دستورها، یکی از راه های سریع و آسان آزمایش تکه های کوچک کد است، برای یادگرفتن مناسب. فرض بگیرید تعداد زیادی فایلC دارید و می خواهید فایل هایی که شامل رشتهPOSIX هستند را شناسایی کنید، به جای این که تک تک و از طریق دستور grep بخواهیم این کار را انجام دهیم، می توانیم همه این کارها را داخل اسکریپتی تعاملی بنویسیم، این پایین را نگاه کنید:


for file in *$
do <
if grep -l POSIX $file<
then<
more $file<
fi<
done<


نگاه کنید که چقدر طبیعی $ برنامه پوسته به < تبدیل می شود و پوسته منتظر اطلاعات بعدی است. می توانید تایپ کردن را بس کنید و به پوسته اجازه بدهید خودش تصمیم بگیرد که شما کارتان تمام شده است و بعد اسکریپت فورا اجرا می شود. پوسته همچنین ازWildcard expansion ها نیز پشتیبانی می کند. دیگر قریب به یقین شما می دانید که * یعنیWildcard برای همه کاراکترها. ممکن است این را ندانید که برای یک حرف نیزWildcard به نام داریم، همچنین]set[ مجموعه ای از کاراکترها را در خود می گیرد که قرار است چک شوند. برعکس آن اگر 8 بیاید، مثل]set[ در این صورت، هر چیزی را شامل می شود جز آن هایی که داخل براکت اند. نشان آکولاد ت ت هم به شما اجازه می دهد تا چند رشته را در مجموعه ای کنار هم قرار دهید تا کار خاصی انجام بدهید:


ls my- تfinger, toeتs$


این دستور فایل های myfingers و mytoes را لیست می کند. این دستور از پوسته استفاده می کند تا هر فایلی که داخل دایرکتوری فعلی است را بررسی کند.

ساختن یک اسکریپت با هر ویرایشگر متنی که میلتان می کشد، می توانید فایلی شامل دستورات بسازید، فایلی بسازید به نام first که شبیه مثال زیر باشد:


/bin/shَ#
firstَ#
This file looks throughَ#
all the files in the current
directory for the string POSIX,َ#
and then prints the names of
those files to the standard output.َ#
for file in *
do
file$if grep -q POSIX
then
file$echo
fi
done
0exit


توضیحات (comment) ها با نماد آغاز می شوند و تا پایان خط به عنوان توضیح به حساب می آیند؛ هر چند عرف است که در ستون اول همیشه بگذارند. حال در خط بعدی به دستور َbin/sh/! بر می خوریم که فرم خاصی از توضیح است. کاراکترهای َ به سیستم می گویند که آرگومان هایی که در ادامه می آیند، برنامه ای است که برای اجرای این فایل باید دنبال شودbin/sh/ . برنامه پوسته پیش فرض است.

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

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

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


/bin/sh first $


این دستور باید عمل کند، اما چقدر خوب می شود که اسکریپت را فقط با صدا کردن نامش استفاده کنیم و از اینbin/sh/ خلاص شویم. این کار را با تغییر حالت فایل (chmod) به سادگی می توان انجام داد:


$chmod+xfirst


این دستور، فایل first را با +x اجرایی می کند. و پس از این، تنها کافی است با دستور زیر اسکریپت را اجرا کنید:

$first

اگر پیغامی گرفتید که "چنین دستوری یافت نشد!" متغیر محیطی PATH احتمالا به مسیر فایل های اسکریپت شما اشاره نمی کند. برای رفع این مشکل، یا تایپ کنیدPATH=$PATH: یا فایل bash-profile را ویرایش کنید و این دستور را به انتهای آن بیفزایید. سپس یک بارlog out کنید و دوباره به سیستم برگردید. این هم نشد،first/. را در دایرکتوری ای که اسکریپت داخلش است، بنویسید تا مسیر کامل نسبی به اسکریپت را به فایل بدهید.
استفاده از ./ یک سود دیگر هم دارد، آن این است که شما تصادفا دستور دیگری با این نام را اجرا نخواهید کرد. اگر دیدید که اسکریپت شما با موفقیت اجرا شد، می توانید به جای مطمئنی منتقلش کنید، اگر از این دستور فقط خودتان استفاده می کنید، می توانید یک دایرکتوری bin در فولدر home خود بسازید و مسیرش را بهPATH اضافه کنید. اگر می خواهید بقیه کاربران هم از آن استفاده کنند، آن را داخل فولدرusr/local/bin/ قرار دهید. اگر دسترسیRoot ندارید، باید از سرپرست سیستم درخواست کنید این کار را برای شما انجام دهد. اگر هم مایل نیستید که کسی آن را تغییر دهد، می توانید دسترسی نوشتن در آن فایل را بردارید. دستوراتی که سرپرست سیستم طی آن مالکیت و دسترسی های نرم افزار را مشخص می کند، چیزی شبیه این خواهد بود:


cp first /usr/local/binَ#
chown root /usr/local/bin/firstَ#
chgrp root /usr/local/bin/firstَ#
َchmod557 /usr/local/bin/first #

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


َ chmod u=rwx,go=rx /usr/local/bin/first #


برای اطلاعات بیشتر از راهنمای دستور chmod استفاده کنیدman chmod.

Vahid
October 15th, 2009, 16:32
کافی است در داخل Shell دستورات زیر را وارد نمایید

Ls » این دستور را می‌توان کاربردیترین و اساسی‌ترین دستور پایه نام برد. ls به منظور نمایش فایلهای موجود در دایرکتوری که در آن هستید به کار می‌رود.

who » از این دستور برای نمایش افرادی که هم اکنون داخل سیستم Login کرده‌اند استفاده می‌شود.

cd » دستور cd شما را به مسیر اصلی دایرکتوری که هم اکنون در آن هستید هدایت می‌کند.

ifconfig » این دستور امکان مشاهده کلیه قسمت‌های مربوط به شبکه همانند آدرس IP شما ، Netword Device های فعال و ... را به شما میدهد.

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

tar » دستور tar به منظور خارج کردن فایلها و دایرکتوری‌ها از حالت فشرده به کار میرود. به فرض مثال شما ممکن است یک فایل rar را دانلود کرده باشید. با استفاده از این دستور می‌توانید این فایل‌ها را به فایل‌ها و فولدرهای معمولی تبدیل کنید.

gzip » با استفاده از دستور gzip شما ابزاری مناسب برای فشرده‌سازی و خارج سازی فایلهای فشرده خواهید داشت.

echo » این دستور جالب باعث می‌شود هر دستوری که پس از echo تایپ نمایید در یک خط جدید از Command Prompt نمایش پیدا کند. این دستور همچنین برای گرفتن خروجی از اسکریپتهای Shell بسیار مورد استفاده است.

df -h » این دستور مقدار فضای خالی شما در داخل درایو مورد نظر را برای شما نمایش میدهد.

apt-get, yum, emerge, etc » این دستورات هر کدام بر روی یکی از توزیع‌های لینوکس قابل اجراست. apt-get در ubuntu یا emerge برای gentoo. با این دستورات شما امکان فراخوانی هر یک بسته‌های مدیریتی از اینترنت و دانلود آنها برای کار بهتر در لینوکس را خواهید داشت.