# سیستم عامل ها > سیستم عامل های آزاد > توسعه‌ی لینوکس و نرم افزارهای آزاد > آموزش: اموزش دستورات لینوکس به فارسی

## alieblice

اما چند نکته:
1. بهتر است که این صفحه را محلی برای سوال و جواب و رفع اشکالاتمان قرار ندهیم؟! برای طرح سوال می‌توانید یک تاپیک جدید ایجاد کنید و یا شاید تاپیک گسترش نیافته ی زیر را بتوان به این کار اختصاص داد:
http://www.forum.persianadmins.com/s...88%DA%A9%D8%B3
http://forum.ubuntu.ir/index.php/topic,14715.0.html
2. حتی‌المقدور یک دستور را جامع و کامل (و مطمئن  از صحت) شرح دهیم، آن‌گونه که برای تازه کارها و حتی آن‌ها که جز محیط‌های  گرافیکی تجربه‌ی دیگری ندارند، قابل استفاده باشد.
3. لطفاْ از تاپیک‌هایی مثل "آره، فکر خوبیه - چه عالی، موافقم - نه، بی‌نتیجه است و ..." جداْ خودداری کنید و فقط آن چه را که از ترمینال می دانید، با نگاه آموزشی، برای این صفحه ارسال کنید. تشکر و یا هر نظر دیگری را با پیغام خصوصی برای آن کاربری که مطلب را منتشر کرده، ارسال کنید.
4. نام دستوری که قصد شرح آن را دارید، عنوان مطلب  ارسالی انتخاب کنید. و تا آن جا که ممکن است از زبان رسمی در نوشته‌هایتان  استفاده کنید.
5. اگر مطلب ارسالی دارای منبعی است و یا ترجمه شده است، آن منبع ذکر شود.
6. چنان چه در مطالب ارسال شده، ایرادی را مشاهده می‌کنید، اصلاحیه یا  پیشنهاد خود را به صورت پیغام خصوصی برای کاربر ارسال کننده‌ی مطلب مورد  نظر بفرستید تا ایشان به تصحیح و یا گسترش آن بپردازند. هم چنین اگر به  نظرتان مطلبی می‌تواند کامل‌تر باشد، بهتر است به جای ارسال جدید باز همین  روش را اتخاذ کنید که به این ترتیب از عنوان‌های مشابه جلوگیری می‌شود. اما  اگر مایل بودید که خودتان ارسالی مرتبط داشته باشید، برای ارسال خود یکی  از این دو مورد را مد نظر قرار دهید: یا در متن ارسالی خود به وجود ارسال  مشابه دیگری با ارجاع به شماره‌ی پاسخ و شماره‌ی صفحه‌ی آن اشاره کنید و یا  عنوان همان ارسال را برای ارسال خود برگزینید و به انتهای آن شماره ترتیبی  اضافه کنید که رعایت هر دو با هم جالب‌تر است.7
8. http://wiki.ubuntu.ir/BashCommands

منبع : http://forum.ubuntu.ir/index.php/topic,17561.0.html

----------


## alieblice

فراخواندن ترمینال
محیط متنی لینوکس که همان محیط سنتی یونیکس(Unix) است،  یک رابط خط  فرمان(Command Line Interface, CLI) است که در آن با تایپ  دستور به  کامپیوتر می گویید که چه انجام دهد. برای دسترسی به این محیط متنی  که  اصطلاحاً Shell نامیده می شود، کافی است یک ترمینال جدید باز کنید.  برای  باز کردن ترمینال مسیر زیر را ـ که در توزیع های مختلف محل آن اندکی  فرق  می کند ـ دنبال کنید یا از کلیدهای ترکیبی Ctrl + Alt + T برای  فراخواندن  آن بهره بگیرید.

در محیط گنوم و یونیتی (مانند اوبونتو)
Applications menu > Accessories > Terminalدر محیط Xfce (مانند زوبونتو)
Applications menu > System > Terminalدر محیط KDE (مانند کوبونتو)
KMenu > System > Terminal Program (Konsole)در محیط LXDE (مانند لوبونتو)
Menu > Accessories > LXTerminal






منبع : http://forum.ubuntu.ir/index.php/topic,17561.0.html

----------


## alieblice

دستورهایی که به پیکربندی سیستم مربوط می شوند یا سطح دسترسی بالا(مدیر   سیستم) را نیاز دارند، بایستی با sudo شروع شوند. این دستور، هم چنین مجوز   دسترسی به مسیرها و فایل هایی را که شما با یک اکانت ممکن است نداشته   باشید، را به طور موقت تا سطح اجرایی کاربر ریشه(root user) بالا می برد.   وقتی دستور sudo را به کار می برید، بی درنگ از شما پسورد ریشه ی سیستم یا   همان پسورد اکانت مدیر سیستم پرسیده می شود. پسورد را تایپ کنید که عموماً   در صفحه ی ترمینال چیزی تایپ نمی شود. اما شما پسورد را به درستی تایپ  کرده  و اینتر کنید. تنها کاربران با سطح دسترسی root می نوانند از این  دستور  استفاده کنند.
توضیح بیشتر:

دراوبونتو اکانت ریشه یامدیر سیستم به دلایل امنیتی به  طورپیش فرض قفل است.  شمابرای نصب نرم افزار واساساْ هردستور پیکربندی  بایدکاربرریشه  باشید.دستور sudo برای شناسایی شمابه عنوان کاربرصاحب اکانت  دراوبونتو  استفاده میشود. توجه داشته باشیدکه sudo، پسورداکانت شمارا می  طلبد نه root  را، مگراینکه شما تنهاکاربری باشیدکه همان مدیر سیستم هستید  وهردو  پسوردتان یکی است و تغییراتی راهم دراین زمینه اعمال نکرده اید.  دستور  سودو، ناپایداراست وارتقامدیریت سیستم رافقط تاحد زمانی مشخصی که  تعریف  شده(20دقیقه، بیشتر یا کم تر)نگه خواهد داشت و پس از این زمان و یا  با بستن  ترمینال انقضا خواهد شد. با ویرایش فایل etc/sudoers/ می توانید  این مقدار  و نیز موارد دیگری را تغییردهید. اما توصیه اکید می شود که  مقادیر را دستی  تغییرندهید. به جای آن از visudo editor با اجرای دستور  زیر استفاده کنید:

      sudo visudo 
دستور زیر را برای راهنمایی بیش تر به کار گیرید:

      man sudoers 
راهنمای مناسبی در این مورد را می‌توانید در آدرس زیر بیابید:
http://www.go2linux.org/sudoers-how-to


سودو دارای یک فرم گرافیکی هم می باشد که با اجرای دستور gksu یا gksudo در   ترمینال محیط گنوم و kdesu در محیط KDE، باکس دیالوگ آن به نمایش در می   آید.
می توانید با دستور sudo -i خود را کاربر ریشه نگه دارید. دستور  sudo -i  را اجرا کنید و پسورد کاربری خود را پس از این که در خواست کرد  بدهید.  خواهید دید که شناسه ی شما تغییر می کند.:
quark@HADRON:~$ => root@HADRON


باقی ماندن به عنوان کاربر root:
عبارت sudo su -l ویا sudo su  راتایپ واجراکنید. همچنین دستورهای sudo -s و  sudo -i معادل آن هستند.  البته از لحاظ امنیتی توصیه نمی شود.



منبع: http://forum.ubuntu.ir/index.php/topic,17561.0.html

----------


## alieblice

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

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


$ tree
.
|-- backup
|   `-- bookmarks 2011 10 07.json
|-- Link to water.avi -> /home/alieblice/Desktop/water.avi
|-- LPIC 1 In Nutshell  Edition3.pdf
|-- lpic_2_linux_professional.pdf
|-- pic
|   |-- HD Wallpapers Wide Pack.jpg
|   `-- Scotland_29.jpg
|-- pic1.jpg
`-- vmware-1.log

2 directories, 8 files


*شکل کلی دستور * 
  ls [OPTION]... [FILE]... 
به داخل دایرکتوری که ساختین برین و دستور ls  رو بزنین 
اگر دستور ls  رو بدون هیچ اپشنی بزنین فقط محتویات داخل اون دایرکتوری که هم اکنون داخلش هستین رو نمایش میدهد 
$ ls
'backup             LPIC 1 In Nutshell  Edition3.pdf  pic1.jpg
Link to water.avi  lpic_2_linux_professional.pdf     vmware-1.log
logo.jpg           pic

اگر میخاهید محتویات دایرکتوری خاصی رو ببینین اول دستور ls  و سپس ادرس دایرکتوری رو بنویسین 
$ ls /home/alieblice/Desktop/LS
backup             LPIC 1 In Nutshell  Edition3.pdf  pic1.jpg
Link to water.avi  lpc_2_linux_professional.pdf     vmware-1.log
logo.jpg           pic
*جدا کردن فایل ها با  کاما به وسیله ی –m*
$ ls -m
backup, Link to water.avi, LPIC 1 In Nutshell  Edition3.pdf, lpic_2_linux_professional.pdf,
pic, pic1.jpg, vmware-1.log


*دیدن هر فایل در یک خط به وسیله -1*

$ ls -1
backup
Link to water.avi
logo.jpg
LPIC 1 In Nutshell  Edition3.pdf
lpic_2_linux_professional.pdf
pic
pic1.jpg
vmware-1.log


*دیدن اطلاعات کامل هر فایل به وسیله l-*
به وسیله اپشن –l  ((ال کوچک)) میتونین اطلاعاتی از قبیل نوع فایل ، پرمیشن فایل ... 
$ ls -l
total 10500
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:04 backup
lrwxrwxrwx 1 alieblice alieblice      33 2011-11-08 09:10 Link to water.avi -> /home/alieblice/Desktop/water.avi
-rw-r--r-- 1 alieblice alieblice   93671 2011-10-07 20:47 logo.jpg
-rw-r--r-- 1 alieblice alieblice 3918360 2010-07-20 23:16 LPIC 1 In Nutshell  Edition3.pdf
-rw-r--r-- 1 alieblice alieblice 6565740 2011-06-06 09:02 lpic_2_linux_professional.pdf
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:03 pic
-rw-r--r-- 1 alieblice alieblice   74110 2011-10-07 20:47 pic1.jpg
-rw-r--r-- 1 alieblice alieblice   82279 2011-07-31 07:33 vmware-1.log

*توضیح خروجی دستور*
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:04 backup
 d : نوع فایل رو نشون میدهد که در این جا از نوع دایرکتوری هستش  که میتونه یکی از نماد هایه زیر باشد :
    d  : برایه دایرکتوری  مثل backup  و pic  در با لا 
-    : برایه فایل هایه معمولی مثلا عکس  
    l: برایه لینک ها مثل فایل water.avi  در خروجی بالا 
    s : socket file
2 : تعداد لینک هارو نشون میده 
alieblice : نام صاحب فایل رو نشون میدهد 
alieblice  : نام گروه فایل رو نشون میدهد
4096 : سایز فایل رو نشون میدهد (برایه این که راحت تر بشه خوندش بهتره از –h هم در کنار –l استفاده کنید پایینتر توضیح دادم )
2011-11-08 09:04 : اخرین زمان تغییرات رویه این فایل رو نشون میدهد
Backup : اسم فایل رو نشون میدهد 

*نمایش فایل هایه مخفی  به وسیله  -a  یا –A * 
در لینوکس اگر  اول اسم فایل ها یا دایرکتوری ها نقطه باشد اون فایل به صورت مخفی در میاد 
 یک فایل با اسم .logo.jpg  ایجاد میکنیم  . اگر الان دستور ls رو بزنین میبینین که در خروجی فایل ظاهر نمیشود .
به مثال زیر توجه کنین 
$ ls -a
.       Link to water.avi                 lpic_2_linux_professional.pdf  vmware-1.log
..      .logo.jpg                         pic
backup  LPIC 1 In Nutshell  Edition3.pdf  pic1.jpg
همون طور که میبینین  فایل نشون داده میشود البته یک فرق کوچک بین a و A هست که در مثال بالا همون طور که میبینین . و .. دیده میشود ولی در –A دیده نمیشود.
    . = نشان دهنده دایرکتوری که هم اکنون در ان هستیم
    .. = نشان دهنده دایرکتوری قبلی است 
استفاده  .. بیشتر در دستور  cd هستش . دستور  cd برایه جابه جایی بین چند دایرکتوری است   

*مشخص کردن سایز فایل به وسیله –k  یا –h * 
نکته : 2 اپشن بالا حتما باید به همراه –l  باشن 
برایه این که اعداد مربوط به سایز فایل رو بر اساس کیلو بایت در یافت کنین از –k  ((کی کوچک)) استفاده کنین
$ ls -lk
total 10500
-rw-r--r-- 1 alieblice alieblice   92 2011-10-07 20:47 logo.jpg
-rw-r--r-- 1 alieblice alieblice 3827 2010-07-20 23:16 LPIC 1 In Nutshell  Edition3.pdf
برایه این که خود ls  به صورت اوتومات اعداد رو به مگابایت و یا گیگابایت تبدیل کند از –h  استفاده کنین  که بهش میگن  Human Readable Format
نکته : در این حالت اعداد کمی گرد میشوند 

*لیست کردن بر اساس سایز فایل به وسیله –S (( اس بزرگ ))* 
به مثال زیر توجه کنین
$ ls -lhS
total 11M
-rw-r--r-- 1 alieblice alieblice 6.3M 2011-06-06 09:02 lpic_2_linux_professional.pdf
-rw-r--r-- 1 alieblice alieblice 3.8M 2010-07-20 23:16 LPIC 1 In Nutshell  Edition3.pdf
-rw-r--r-- 1 alieblice alieblice  81K 2011-07-31 07:33 vmware-1.log
-rw-r--r-- 1 alieblice alieblice  73K 2011-10-07 20:47 pic1.jpg
drwxr-xr-x 2 alieblice alieblice 4.0K 2011-11-08 09:04 backup
drwxr-xr-x 2 alieblice alieblice 4.0K 2011-11-08 09:03 pic
lrwxrwxrwx 1 alieblice alieblice   33 2011-11-08 09:10 Link to water.avi -> /home/alieblice/Desktop/water.avi


*نشون دادن بر اساس اخرین اصلاحات ((تغییرات)) به وسیله –t * 
به وسیله این اپشن میتونین فایل ها رو براساس اخرین تغییرات دسته بندی کنین به این صورت که جدید ترین فایل تغییر یافته در بالا قرار میگیرد 
بیشتر اوقات با –l کاربردی تر هستش  
$ ls -lt
total 10408
lrwxrwxrwx 1 alieblice alieblice      33 2011-11-08 09:10 Link to water.avi -> /home/alieblice/Desktop/water.avi
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:04 backup
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:03 pic
-rw-r--r-- 1 alieblice alieblice   74110 2011-10-07 20:47 pic1.jpg
-rw-r--r-- 1 alieblice alieblice   82279 2011-07-31 07:33 vmware-1.log
-rw-r--r-- 1 alieblice alieblice 6565740 2011-06-06 09:02 lpic_2_linux_professional.pdf
-rw-r--r-- 1 alieblice alieblice 3918360 2010-07-20 23:16 LPIC 1 In Nutshell  Edition3.pdf
اگر خاستین لیست رو بر عکس کنین یعنی جدید ترین فایل تغییر یافته در پایین قرار گیرد از –r استفاده کنین . کلا –r  برایه عکس کردن لیست هست با -1  یا –l  یا ... میشه استفاده کرد

*نشون دادن  بر اساس نوع فرمت به وسیله –X*
نکته : در این حالت نوع فرمت بر اساس حروف الفبا ترتیب میشود .
$ ls -1X
backup
pic
Link to water.avi
pic1.jpg
vmware-1.log
LPIC 1 In Nutshell  Edition3.pdf
lpic_2_linux_professional.pdf


*نشون دادن نوع فایل از طریق اشکال به وسیله –F*
$ ls -1F
backup/
Link to water.avi@
LPIC 1 In Nutshell  Edition3.pdf
lpic_2_linux_professional.pdf
pic/
pic1.jpg
vmware-1.log
    *=  قابل اجرا ((executable ))
    /= دایرکتوری
    @= symbolic link
    |= fifo
    = = socket
فایل هایی که هیچی ندارن یعنی فایل هایه معمولی هستن



*نشون دادن نام ترمینالیه اسامیه فاصله دار به وسیله –b*
بعضی اوقات پیش میاد که در نام فایلامون فاصله وجود دارد . اگر بخایم نام اون فایلا رو بر اساس نوع ترمینالی ببینین از –b  استفاده کنین   در –X  چون دایرکتوری ها فرمت ندارند همیشه اول قرار میگیرند
$ ls -1b
backup
Link\ to\ water.avi
LPIC\ 1\ In\ Nutshell\ \ Edition3.pdf
lpic_2_linux_professional.pdf
pic
pic1.jpg
vmware-1.log

همون طور که میبینین به اضایه هر فاصله یک \ قرار گرفته 

*دیدن تمام فایل ها و فولدر ها به همراه همه ی ساب دایرکتوری ها و فایل هایه داخل انها تا اخرین ساب دایرکتوری به وسیله –R*
فرض میکنیم یک فایل یه صورت شکل درختی که اول اموزش بود داریم 
حالا اگر دستورو بزنیم خروجی این جوری میشه 
$ ls -Rl
.:
total 10408
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:04 backup
lrwxrwxrwx 1 alieblice alieblice      33 2011-11-08 09:10 Link to water.avi -> /home/alieblice/Desktop/water.avi
-rw-r--r-- 1 alieblice alieblice 3918360 2010-07-20 23:16 LPIC 1 In Nutshell  Edition3.pdf
-rw-r--r-- 1 alieblice alieblice 6565740 2011-06-06 09:02 lpic_2_linux_professional.pdf
drwxr-xr-x 2 alieblice alieblice    4096 2011-11-08 09:03 pic
-rw-r--r-- 1 alieblice alieblice   74110 2011-10-07 20:47 pic1.jpg
-rw-r--r-- 1 alieblice alieblice   82279 2011-07-31 07:33 vmware-1.log

./backup:
total 172
-rw-r--r-- 1 alieblice alieblice 172258 2011-10-07 03:47 bookmarks 2011 10 07.json

./pic:
total 10996
-rw-r--r-- 1 alieblice alieblice 6428039 2009-09-06 22:02 HD Wallpapers Wide Pack.jpg
-rw-r--r-- 1 alieblice alieblice 4827095 2009-05-07 03:55 Scotland_29.jpg


*رنگی کردن خروجی به وسیله -–color*
معمولا این امکان به صورت پیش فرض وجود دارد اگر برایه شما فعال نیست به وسیله اپشن  –color میتونین فعالش کنین 
پیشنهاد میدم این امکان رو به صورت دستور الیاس دربیارین که هر بار دستور ls  رو میزنین انگار ls –color رو زدین



معنی رنگ ها :
رنگ پیش فرض ترمینال =  فایل هایه معمولی (( در عکس بالا رنگ سفید رنگ پیش فرض ست ))
سبز= فایل هایه قابل اجرا ((executable))
ابی = دایرکتوری
زرد =fifo
سرخابی= socket  و عکس ها ((,tiff jpg, gif ,png ))  صوت ها ((mp3 ,ogg ,wav))
قرمز= فایل هایه فشرده ((tar, zip, rpm, deb,))

*توضیح بعضی اپشن ها* 
*-n = خروجی شبیه –l  هست ولی uig و gid رو به صورت عدد نمایش میدهد*
-G = به همراه –l کاربردی هست وباعث میشه group-name یا gid پرینت گرفته نشود 

*دستورات ترکیبی پیشنهادی* 
vi `ls -t | head -1`
باز کردن اخرین فایلی که ویرایش کردید 
ls  -1 *.pdf
فقط فایل هایه pdf  رو پرینت میگیره  به صورت یکی در یک خط
Ls -ltrbh

دستورات الیاس پیشنهادی
alias ls='ls --color=auto'
alias la='ls -a'
alias lf='ls -alF'
alias ll='ls -ltrhb'
alias ls=’ls –lrshb’

*مىابع:*
Unix LS Command: 15 Practical Examples
Linux: Phrasebook
Ls man page 

*برابه دانلود اخرین نسخه pdf به این ادرس بروید * 
http://community.fsforums.ir/Thread-...C?pid=55#pid55

----------


## alieblice

*دستور du* 

دستور du برای دیدن فضاهای اشغال شده توسط فایل ها و دیگر اجزای داخل دایرکتوری ممورد نظر است
شکل کلی دستو ر به این شکل هستش 

      du [OPTION]... [FILE 
چند مثال:

1-اگه دستور du رو به صورت هیچ اپشنی بزنین فقط حجم دایرکتوری های داخل اون فایل و ساب دایرکتوری هاشون رو نشون میده
root@192.168.1.43:/var/log# du
756     ./account
2140    ./apache2
320     ./installer/cdebconf
684     ./installer
12      ./fsck
36      ./apt
اگه اعداد قابل فهم نیستن میتونین از اپشن -h استفاده کنین 

root@192.168.1.43:/var/log# du -h
760K    ./account
2.1M    ./apache2
320K    ./installer/cdebconf
684K    ./installer
12K     ./fsck
36K     ./apt


2- اگه میخاین که فقط حجم فایلای داخل فولدر مورد نظر رو ببینین بدون هیچ ساب دایرکتوری این دستورو بزنین 
root@192.168.1.43:/var# du -sh *
2.9M    backups
103M    cache
109M    lib
4.0K    local
8.0K    lock
11M     log
4.0K    mail
4.0K    opt
84K     run
12K     spool
4.0K    tmp
12G     www


3-اگه فقط  حجم یک دایرکتوری خاصی رو می خاین ببینین از اپشن -s استفاده کنین

root@192.168.1.43:/# du -s /var/log
10404   /var/log
root@95-168-161-82:/#
4-اگه  میخاین حجم یک سری فایل با فرمت خاص و به همراه حجمشون ببینین دستورو این جوری بزنین 
root@192.168.1.43:/var/www//files# du -h *.rar
416M    backtrack4.r2.www.vatandownload.com.part3.rar
382M    backtracktutorials.www.vatandownload.com.part1.rar
382M    backtracktutorials.www.vatandownload.com.part2.rar] 
منبع : LPIC-1_In_Nutshell_Oreilly_Edition3.pdf

----------


## alieblice

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

برای پاک کردن یک فایل 

      rm file name 
با دستور بالا فایل مورد نظر پاک می شود.(با فرم دستور بالا نمی توانید پوشه ها را پاک کنید)


      rm -r File/Directory name rm -rf File/Directory name 
با یکی ازفرم های بالا، دایرکتوری(پوشه) تعیین شده را با تمامی فایل ها و زیرشاخه های موجود در آن می توانید پاک کیند.


      rmdir Directory name 
با این دستور می توانید فقط پوشه های خالی(Empty) راحذف کنید.

+ *توضیح بیش تر*:


وقتی ترمینال را باز می کنید، به طور پیش فرض در دسکتاپ لوکالیزه است.   بنابراین تا زمانی که تغییر مکان نداده اید و در دسکتاپ هستید، با دستوری   به فرم rm Practice تنها در صورتی که فایل Practice روی دسکتاپ باشد ریموو خواهد شد.
آیا فایلتان روی دسکتاپ است؟! آیا باید با ذستور cd تغییر مکان بدهید!؟
هم  چنین نام فایل را باید کامل به همراه پسوند آن تایپ کرد. مثلاْ اگر نام   فایلی A.ogg است، دستور rm A عمل نخواهد کرد. ضمناْ با فرم دستوری rm نمی   توان پوشه ها را پاک کرد و اگر با خطای Is a directory روبرو شدید بیانگر   همین موضوع خواهد بود.

* دستور rmdir
با این دستور می توانید یک یا چندین پوشه ی خالی(empty)  را خذف کنید. برای  پوشه هایی که خالی نباشند عمل نخواهد کرد. مثلاْ پاک  کردن پوشه هایی با  نام های F1, F2,F3 که همگی خالی اند:

      rmdir F1 F2 F3 
* دستور rm -r
برای پاک کردن پوشه ها - که دایرکتوری محسوب می شوند - کاربرد دارد. خالی و غیرخالی هم نمی شناسد.
شما هم چنین می توانید به صورت ترکیبی پوشه و فایل ها را حذف کنید:


      rm -r A.ogg B C 
که B و C پوشه هستند.

منبع : http://forum.ubuntu.ir/index.php/topic,17561.15.html

----------


## alieblice

ستور mkdir برای ساختن دایرکتوری ((پوشه , فلدر )) استفاده میشه 

برای ساختن یک  دایرکتوری

      mkdir FILE1 
برای ساختن چند دایرکتوری

      mkdir FILE1 FILE2 FILE3 
رای ساختن دایرکتوری و گذاشتن پرمیشن به طور هم زمان برای اون دایرکتوری از m-  استفاده کنین 
در زیر برای پوشه پرمیشن 777 رو میزاریم 

      mkdir -m 777 FILE 
حالا اگه ls -l بگیرین میبنین که پرمیشنش به این شکله  drwxrwxrwx

      ls -l total 12 drwxrwxrwx 2 root root 4096 2011-05-21 07:37 FILE 
برای اینکه بعد از ساخته شدن هر دایرکتوری دستور mkdir به ما بگه که چه دایرکتوری ساخته از v- استفاده کنین 
poy:/home# mkdir -v FILE1 FILE2 FILE3
mkdir: cannot create directory `FILE1': File exists
mkdir: cannot create directory `FILE2': File exists
mkdir: cannot create directory `FILE3': File exists
poy:/home#


اگه زمانی خاستین که یک دایرکتوری بسازین که داخل چند دایرکتوری دیگر بود و اون چند دایرکتوری وجود نداشن از p- استفاده کنین  
مثلا در زیر میخایم دایرکتوری dada که داخل 3 دایرکتوری FILE//pic/2010 هستشو بسازیم ولی 3 دایرکتوری  FILE//pic/2010  وجود ندارن. 
هم زمان پرمیشن 777 رو هم میزاریم از V- استفاده میکنیم

poy:/home# mkdir -m 777 -p -v FILE//pic/2010/dada
mkdir: created directory `FILE'
mkdir: created directory `FILE//pic'
mkdir: created directory `FILE//pic/2010'
mkdir: created directory `FILE//pic/2010/dada'

اینم tree ش ((اگه اینجا درست نشون نمیده به این جا مراجعه کنین      http://forum.ubuntu.ir/index.php/top...html#msg135162))
poy:/home# tree FILE
FILE
`-- pic
    `-- 2010
        `-- dada

3 directories, 0 files
اینو از توی wikipedia پیدا کردم 
(اگه اینجا درست نشون نمیده به این جا مراجعه کنین      http://forum.ubuntu.ir/index.php/top...html#msg135162))
      mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags} 
که اینو میسازه 
tmpdir
    ________|______
   |        |      |
branches   tags  trunk
                   |
                 sources
               ____|_____
              |          |
          includes     docs] 
منبابع : LPIC-1_In_Nutshell_Oreilly_Edition3.pdf         
http://en.wikipedia.org/wiki/Mkdir
http://publib.boulder.ibm.com/infoce...mds3/mkdir.htm

----------


## alieblice

دستور mv برای انتقال یا تغییر اسم یک فلدر استفاده میشه 

برای تغییر نام‌دادن یک پرونده از filename  به newfilename


      $ mv filename newfilename 
*نکته :* اگه در دستور بالا فلدر newfilename از قبل وجود داشته باشه کار انتقال فایل انجام میشه ولی اگر نباشه کار تغییر اسم انجام میشه 

برای جابه‌جا کردن یک پرونده به یک پوشهٔ خاص


      $ mv afile /home/nickname/newfile 
دستور زیر تمام فایلای file1 FILE2 FILE3 به tmpdir انتقال میده 
v- هم فایلای انتقال یافته رو نشون میده [CODE]'     
poy:/home# mv -v  file1  FILE2  FILE3 tmpdir
`file1' -> `tmpdir/file1'
`FILE2' -> `tmpdir/FILE2'
`FILE3' -> `tmpdir/FILE3'


توضیح چندتا از سوئیچ‌ها  
-u(برگرفته از update) : اگر تاریخ آخرین تغییر پرونده یا پوشه‌ای که   می‌خواهیم انتقال دهیم از پوشه‌ای که قبلا وجود داشت به‌روزتر باشد، آن را   بر روی پوشه یا پروندهٔ قدیمی انتقال می‌دهد.

-f (برگرفته از force): در صورتی که پرونده یا پوشهٔ موجود باشد بدون اخطار دادن، انتقال را انجام می‌دهد.

----------


## alieblice

*د*ستور  locate اطلاعات رو از روی دیتابیسی که با updatedb اماده سازی میشه  میخواند و بعد با توجه به کلمه ای که شما به اون داده اید گزینه های سازگار  رو در خروجی خود  مینویسد 

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


sudo updatedb

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



locate Screenshot

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

اگه خاستین دنبال یک چیزی محدود به یک دایرکتوری بگردین میتونین به این صورت دستورو بزنین  
مثلا من در اینجا دنبال یک فایل در داخل /home/alieblice/Documents میگردم :

alieblice@alieblice-desktop:/$ locate firefox |grep /home/alieblice/Documents
/home/alieblice/Documents/firefox-4.0.tar.bz2
alieblice@alieblice-desktop:/$ 
 

اگه دستور locate -i firefox رو بزنین میبینین که چه همه firefox دارین 

توضیح دستور بالا :
i- برای case-insensitive یعنی حساس نبودن به بزرگی و کوچکی استفاده میشه 
| ((\+shift)) : میگه که خروجی دستور قبلی بشه ورودی دستور جدید که دستور بلافاصله بعد از | میاد ((پایپ pipe یا لوله میخوننش ))
grep : تمام خطهایی که کلمه ی ورودی رو داره برای ما جدا میکنه که کلمه ی ورودی در اینجا /home/alieblice/Documents بود .

*جستوجو بر اساس اسم دقیق  داده شده* 
برای ای کار دستور به شکل زیر میشه 


locate -b '\NAME' 

اینجوری فقط دایرکتوری یا فلدر هایی که اسمشون دقیقا NAME هست نشون داده میشه


alieblice@alieblice-desktop:/$ locate -b '\Oggy'
/home/alieblice/Videos/Oggy
alieblice@alieblice-desktop:/$ 
alieblice@alieblice-desktop:/$ 
alieblice@alieblice-desktop:/$ locate Oggy
/home/alieblice/Documents/Oggy.003.htm
/home/alieblice/Downloads/Oggy.003.htm
/home/alieblice/Videos/Oggy
/home/alieblice/Videos/Oggy.002.avi
/home/alieblice/Videos/Oggy.003.avi
alieblice@alieblice-desktop:/$ 
 

*لیست کردن تمام دایرکتوری ها و ساب دایرکتوری* 
برای این کار بعد از دستور locate ادرس دایرکتوری رو بدین 


alieblice@alieblice-desktop:/$ locate /home/alieblice/Videos
/home/alieblice/Videos
/home/alieblice/Videos/Oggy.001.avi
/home/alieblice/Videos/Oggy.002.avi
/home/alieblice/Videos/Oggy.003.avi
/home/alieblice/Videos/test
/home/alieblice/Videos/test/test2
alieblice@alieblice-desktop:/$ 


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


    locate "*.png" -q
-q برای نشون ندادن ارور هست 
اگر خاستین تعداد خاصی یعنی مثلا 3 تا خروجی بیشتر نداشته یاشه از n- استفاده کنین 


alieblice@alieblice-desktop:/$ locate -n 3 "*.png" 
/etc/alternatives/start-here-16.png
/etc/alternatives/start-here-22.png
/etc/alternatives/start-here-24.png
alieblice@alieblice-desktop:/$ 


اگه مقدار خروجی خیلی زیاد بود میتونین از less یا more استفاده کنین 


locate *.png |less
locate *.png |more

*نکته* : 
دیتابیس locate در ادرس زیر هست


/var/lib/mlocate/mlocate.db
که برای دیدن محتویات داخلش از این دستور میتونین استفاده کنین 


sudo strings /var/lib/mlocate/mlocate.db |less

----------


## alieblice

((( اگه روش هایی به غیر از روش های زیر دوستان میدونستین به صورت پیقام خصوصی یا زیر همین پست بگین تا اموزشو کامل کنم  - ممنون )))

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


1- shutdown
2- init 0 یا telinit 0
3-  halt 
4- poweroff




1- shutdown


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


shutdown [-akrhPHfFnc] [-t sec] time [warning message
]
[/s]
چند مثال

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


shutdown -h  23:539

خاموش کردن در همین لحظه 


shutdown -h now

خاموش کردن در 25 دقیقه اینده 


shutdown -h +25

در دستورای بالا به جای -h که همون دستور halt رو صدا میزنه اگه از -r استفاده کنین کار ریستارت کردنو میکنه 



init 0

دستور init یا telinit مربوط به تغییر runlevel ها میشه که 0 برای خاموش کردن و 6 برای ریستازت کردن هستش 

برای خاموش کردن 


init 0
یا


telinit 0

برای ریستارت کردن عدد صفر در دستورای بالا رو به عدد 6 نغییر بدین 




halt 


دستور halt  اسم دیگه runlevel 0 هستش که همون کار خاموش کردنو میکنه 

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


halt

خطر


اگه  دستور halt رو با -f و -p بزنین مثل کشیدن کابل برق عمل میکنه !                                                                                                                 خطر



halt -fp
دستور بالا تو سیستم های مجازی مثل freez کردن عمل میکنه  سیستمو خاموش نمیکنه  تو vmware player که این جوری بود .



poweroff


اگه خروجی help--  دو دستور  halt و poweroff  رو بگیرین می بینین که هردوشون مثل همن 

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


poweroff

دستور  
خطر

بالا هم برای poweroff صدق میکنه

منبع : http://forum.ubuntu.ir/index.php/top...html#msg134448

----------


## alieblice

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

شکل کلی خروجی دستور top  به این شکل هستش 




دستور  top به صورت پیش فرض بر اساس مقدار مصرف cpu  پروسس هارو نشون میده  اگه  میخاین که بر اساس مقدار مصرف مموری نشون بده M  ((ام بزرگ )) در حالتی که  top در حال اجرا هست رو بزنین


*kill کردن یک پروسس*

برای  این که یک پروسس رو از بین ببرین در حالتی که top در حال اجرا هست دکمه k  رو بزنین ((k کوچک)) و عدد pid مربوط به اون پروسس رو بنویسین 


PID to kill: 1309
Kill PID 1309 with signal [15]: 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1309 geek   23   0 2483m 1.7g  27m S    0 21.8  45:31.32 gagent
 1882 geek   25   0 2485m 1.7g  26m S    0 21.7  22:38.97 gagent
 5136 root    16   0 38040  14m 9836 S    0  0.2   0:00.39 nautilus



*نشون دادن پروسس های مربوط به یک user*

اگه میخاین که top فقط پروسس های مربوط به یک user خاص رو نشون بده از u- استفاده کنین 
مثلا در اینجا پروسس مربوط به کاربر geek 


$ top -u geek

Which user (blank for all): geek
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1309 geek   23   0 2483m 1.7g  27m S    0 21.8  45:31.32 gagent
 1882 geek   25   0 2485m 1.7g  26m S    0 21.7  22:38.97 gagent



*نشون دادن تمام cpu ها و هسته های cpu* 

خروجی دستور top به صورت پیش فرض اطلاعات cpu رو در ترکیب باهم به صورت زیر نشون میده 


top - 20:10:39 up 40 days, 23:02,  1 user,  load average: 4.97, 2.01, 1.25
Tasks: 310 total,   1 running, 309 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5%us,  0.7%sy,  0.0%ni, 92.3%id,  6.4%wa,  0.0%hi,  0.0%si,  0.0%st

اگه میخاین که اطلاعات رو به صورت کامل و به اضای هر هسته cpu ببینین در موقعی که top  در حال اجرا هست عدد  1 رو بزنین 


top - 20:10:07 up 40 days, 23:03,  1 user,  load average: 5.32, 2.38, 1.39
Tasks: 341 total,   3 running, 337 sleeping,   0 stopped,   1 zombie
Cpu0  :  7.7%us,  1.7%sy,  0.0%ni, 79.5%id, 11.1%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.3%us,  0.0%sy,  0.0%ni, 94.9%id,  4.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2 :  3.3%us,  0.7%sy,  0.0%ni, 55.7%id, 40.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3 :  5.0%us,  1.0%sy,  0.0%ni, 86.2%id,  7.4%wa,  0.0%hi,  0.3%si,  0.0%st
Cpu4  : 38.5%us,  5.4%sy,  0.3%ni,  0.0%id, 54.8%wa,  0.0%hi,  1.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.3%us,  0.7%sy,  0.0%ni, 97.3%id,  1.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  5.4%us,  4.4%sy,  0.0%ni, 82.6%id,  7.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8 :  1.7%us,  1.7%sy,  0.0%ni, 72.8%id, 23.8%wa,  0.0%hi,  0.0%si,  0.0%st



*بروز شدن خروجی top* 

خروجی  دستور top  به صورت پیشفرض هر 3 ثانیه بروز میشه که اگه میخاین این مدت رو  مثلا به یک ثانیه تغییر بدین در موقعی که دستور top در حال اجرا هست دکمه d  رو بزنین         


Change delay from 3.0 to: 1
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
    1 root      20   0  2032  704  612 S    0  0.3   0:01.78 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd           
    3 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0


بسته شدن top بعد از نشون دادن تعداد خاصی خروجی 

برای این کار از  n- استفاده کنین 
در زیر top بعد از 2 بار بروز شدن بسته میشه 
کد:
$ top -n 2



*نشون دادن دستور کامل هر پروسس*

هر  پروسسی که ایجاد میشه قبلش یک دستور زده شده مثلا همین top که بعد از زدن  دستورش پروسسش ایجاد میشه در داخل خروجی خودش دستورشو به اینشکل  نشون میده  
به زیر COMMAND توجه کنین



     
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
1100 root      20   0  2332 1140  900 R    0  0.4   0:00.06 top 


مثال دیگه 


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1309 geek   23   0 2483m 1.7g  27m S    0 21.8  45:31.32 /usr/sbin/gagent
 1882 geek   25   0 2485m 1.7g  26m S    0 21.7  22:38.97 /usr/sbin/gagent -l 0 -u pre



*دستور top  در حالت Batch Mode*

فرق این حالت با حالت معمولی top اینه که هر بار top به روز میشه اطلاعات جدید زیر اطلاعات قبلی مینویسه 
مثلا در زیر top بعد از 3 بار به روز شدن در حالت batch mode بسته میشه


root@debian:/# top -b -n 3 -u tia
top - 13:55:26 up 58 min,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    254672k total,    67884k used,   186788k free,     9432k buffers
Swap:   308216k total,        0k used,   308216k free,    34232k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
 1118 tia       20   0  8476 1492  860 S    0  0.6   0:00.01 sshd             
 1119 tia       20   0  4484 1728 1404 S    0  0.7   0:00.00 bash             
 1128 tia       20   0  8052 3608 2568 S    0  1.4   0:00.02 w3m              


top - 13:55:29 up 58 min,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    254672k total,    67884k used,   186788k free,     9432k buffers
Swap:   308216k total,        0k used,   308216k free,    34232k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
 1118 tia       20   0  8476 1492  860 S    0  0.6   0:00.01 sshd             
 1119 tia       20   0  4484 1728 1404 S    0  0.7   0:00.00 bash             
 1128 tia       20   0  8052 3608 2568 S    0  1.4   0:00.02 w3m              


top - 13:55:32 up 58 min,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    254672k total,    67884k used,   186788k free,     9436k buffers
Swap:   308216k total,        0k used,   308216k free,    34232k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
 1118 tia       20   0  8476 1492  860 S    0  0.6   0:00.01 sshd             
 1119 tia       20   0  4484 1728 1404 S    0  0.7   0:00.00 bash             
 1128 tia       20   0  8052 3608 2568 S    0  1.4   0:00.02 w3m              

root@debian:/# 


روش بالا بیشتر برای ذخیره کردن خروجی دستور top در یک فایل متنی استفاده میشه با برای grep کردنش 



*هدر top*

در موقعی که top در حال اجرا هست اگه 

l ((ال کوچک )) بزنین  خط اول هدر مربوط به load average ناپدید میشه 
t بزنین خط 2م و 3م هدر مربوط به Tasks: و Cpu(s) ناپدید میشه
m بزنین 2 خط اخر هدر مربوط به مموری ناپدید میشه 


*کاهش دادن تعداد پروسس در  خروجی  top*

در حالتی که top در حال اجرا هست n رو بزنین بعد از شما تعداد پروسس رو میپرسه 


Maximum tasks = 0, change to (0 is unlimited): 2
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1309 geek   23   0 2483m 1.7g  27m S    0 21.8  45:31.32 gagent
 1882 geek   25   0 2485m 1.7g  26m S    0 21.7  22:38.97 gagent



در اخر هم برای بستن top در حالت اجرا از دکمه   q  ((کیو کوچک)) استفاده کنین 

منبع: http://www.thegeekstuff.com/2010/01/...mand-examples/
چند مثال دیگه تو منبع هست که نگفتم 


نرم افزار دیگه ای هم هست که همین کار top رو انجام میده ولی یک مقدار فرق داره 
اسم نرم افزار: htop 
http://fa.wikipedia.org/wiki/Htop



منبع : http://www.thegeekstuff.com/2010/01/15-practical-unix-linux-top-command-examples

----------


## alieblice

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

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

مثلا قسمتی از history سیستم من 


root@debian:/# history
    3  echo "4+10" | bc
    4  echo "obase=15;5+9" | bc
    5  sudo 
    6  halt
    7  cd /
    8  ls /etc
    9  nano pam.conf
   10  cd pam.conf
   11  nano pam.conf
   12  cd pam.d
   13  cd pam.d
   14  nano pam.d
   15  nano /etc/pam.conf
   16  cd /etc/pam.d
   17  ls
   18  man pam
   19  PAM
   20  man PAM
   21  ls
   22  nano su
   23  ls
   24  cp su /etc/pam.d/su.save
   25  ls
   26  nano su
   27  login
   28  ls
   29  mkdir test
   30  cd /
   31  nano /etc/passwd
   32  login
   33  nano /etc/passwd
   34  nano /etc/passwd
   35  sudo 
   36  login
   37  cd /
   38  ls
   39  nano /etc/passwd
   40  login
   41  ls
   42  login
   43  nano /etc/passwd
   44  login
   45  cd /
   46  mkdir /home/khodam
   47  login
   48  cd /
   49  groupadd
   50  groupadd 
   51  gropadd limit
   52  gruopadd limit
   53  groupadd
   54  groupadd limit
   55  useradd -g  {limit} khodam 
   56  useradd -g  limit khodam 
   57  passwd khodam]
   58  passwd khodam
   59  usermod khodam
   60  chage
   61  chage khodam
   62  usermod --help
   63  ls 
   64  ls  /home
   65  login
   66  nano /etc/security/limits.conf
   67  nano /etc/security/limits.conf
   68  cd /etc/sudoers
   69  cd /etc/sudoers
   70  cd /etc
   71  ls
   72  cd sudoers
   73  cd sudoers
   74  ls sudoers
   75  nano sudoers
   76  visudo 
   77  nano /etc/security/limits.conf
   78  visudo 
   79  apt-get install squid
   80  squid
   81  nano /etc/squid.conf
   82  cd /etc/squid
   83  nano squid.conf
   84  nano squid.conf
   85  /etc/init.d/squid restart
   86  cd /
   87  nano /etc/squid/squid.conf
   88  /etc/init.d/squid restart
   89  nano /etc/squid/squid.conf
   90  /etc/init.d/squid restart
   91  /etc/init.d/squid restart
   92  nano /etc/shels
   93  ls /etc/shels
   94  cd etc
   95  ls
   96  cd /
   97  cd etc
   98  ls
   99  cd shells
  100  nano shells
  101  chsh
  102  chsh khodam
  103  nano shells
  104  chsh khodam
  105  nano shells
  106  apt-get install lshel
  107  apt-get install lshell
  108  ch
  109  cd security
  110  ls
  111  nano access.conf
  112  visudo
  113  visudo 
  114  visudo 
  115  visudo 
  116  cd /
  117  upime
  118  uptime
  119  apt­get install sudo debianutils coreutils 
  120  apt-get install  debianutils coreutils 
  121  apt-get install  coreutils 
  122  cd /usr/local/sbin 
  123  wget http://www.fuschlberger.net/programs/ssh­scp­sftp­chroot­jail/make_chroot_jail.sh 
  124  wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
  125  chmod 700
  126  chmod 700 make_chroot_jail.sh
  127  nano make_chroot_jail.sh
  128  useradd
  129  useradd ansary
  130  passwd ansary
  131  cd /home
  132  ls
  133  ln ­s . home 
  134  ln ­s . home 
  135  ls
  136  ln ­s . home
  137  ls
  138  mkidir gailed




*جستوجو در history* 

برای  جستو جو در history کلید ترکیبی  Control+R بزنید بعد کلمهی کلیدی مورد  نظر رو وارد کنین این جوری دستور قبلی که توش اون کلمه کلیدی بوده رو میاره  وشما بازدن enter میتونین اونو اجرا کنین 
مثلا در زیر با دادن کلمه کلیدی red دستور قبلی که توش کلمهی red بوده رو میاره ((cat /etc/redhat-release)))


# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur

اگه  وقتی که کلمه کلیدی خودتونو دادین و دستور مورد نظرتون امد و خاستین توش  تغییری ایجاد کنین قبل از اجرا قبل از اینکه enter رو بزنین کلید چب یا  راستو از روی کیبوردتون بزنین ((left arrow or right arrow))

مثلا در زیر stop رو به start  تغییر میدیم 


# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start



*تکرار کردن دستور قبلی به 4 روش*

1-با زدن دکمه بالا ((up arrow)) دستور قبلی نشون داده میشه . برای اجرا enter را بزنین 

2- بنویسین !! اینجوری دستور قبلی بدون اینکه نشون داده بشه و احتیاج به زدن enter باشه خودش اجرا میشه 

3-بنویسین  !-1 اینجوری دستور قبلی بدون اینکه نشون داده بشه و احتیاج به زدن enter  باشه خودش اجرا میشه ((اگر بنویسین 2-! 2 دستوری که قبل از دستور قبلی  نوشتینو اجرا میکنه یعنی دستور قبل از 1-! اجرا میکنه ))

4- Control+P دستور قبلب رو نشون میده برای اجرا کردنش enter رو بزنین 


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

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


517! 

مثلا 


501  cd /
  502  history
  503  history --help
  504  ls -a
  505  ls -a
  506  ls -a
  507  history |more
  508  history
  509  history
  510  history
  511  top
  512  ls -l
  513  top
  514  ls-1
  515  ls-1
  516  history
  517  last |grep ppp |grep still
  518  sudo netstat -na 
  519  history
  520  ls -a /var/log
  521  nano /etc/pam.d
  522  halt --help
  523  history


root@debian:/# !517
last |grep ppp |grep still
root@debian:/# 

چون دستورش خروجی نداشت چیزی نشون نداد 


*اجرا کردن دستوری که با کلمه ی خاصی شروع میشه* 

مثلا  در بالا میخایم دستور 518 رو اجرا کنیم ولی شمارشو نمیدو نیم ولی اولشو می  دونیم دستورو اینجوری می زنیم  ((علامت تعجب وبدون فاصله در ادامه علامت  تعجب قسمتی از دستور مورد نظر ))


sudo netstat -na!

*
تغییر تعداد دستورات قابل ذخیره شدن 
*

برای این کار فلدر bash_profile. که در دایرکتوری خانگیتون هست رو با یک ادیتور باز کنین و مقادیر رو مثل پایین تغییر بدین 


# vi ~/.bash_profile
HISTSIZE=100
HISTFILESIZE=100



*ذخیره نکردن بعضی دستورات* 

برای این که history بعضی دستوراتو ذخیره نکنه فلدر  bash_profile. باز کنین و این خطو اضافه کنین 


HISTCONTROL=ignorespace

حالا دستوراتی که اولشون یک space داشته باشه ذخیره نمیشه 

مثلا 


# ls -ltr
# pwd
# service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67 ls -ltr
68 pwd
69 history | tail -3



*برای پاک  کردن history این دستورو بزنین*


history -c

منبع : http://www.thegeekstuff.com/2008/08/...-line-history/

چند مثال دیگه تو منبع هست که نگفتم

----------


## alieblice

دستور man  برای دیدن راهنمای دستورات و بعضی فایل ها استفاده میشه 

یک دستور میتونه چندین تا راهنمای مجزا  ((  چندین صفحه man  )) داشته یاشه که به صورت استاندارد به بخش های زیر تقسیم میشن 

Section Description
  1    User programs
2      System calls
3      Library calls
4      Special files (usually found in /dev)
5      File formats
6      Games
7      Miscellaneous
8      System administration


*شکل کلی دستور* 

man [options] [section] name

مثلا دستور 
man mkdir 
اگه بزنین راهنمای mkdirرو میاره 

man mkdir
MKDIR(1)                         User Commands                        MKDIR(1)

NAME
       mkdir - make directories

SYNOPSIS
       mkdir [OPTION]... DIRECTORY...

DESCRIPTION
       Create the DIRECTORY(ies), if they do not already exist.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -m, --mode=MODE
              set file mode (as in chmod), not a=rwx - umask

       -p, --parents
              no error if existing, make parent directories as needed

       -v, --verbose
              print a message for each created directory

       -Z, --context=CTX
              set the SELinux security context of each  created  directory  to
              CTX

       --help display this help and exit

       --version
              output version information and exit

AUTHOR
       Written by David MacKenzie.

REPORTING BUGS
       Report mkdir bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report mkdir translation bugs to <http://translationproject.org/team/>

COPYRIGHT
       Copyright  Â©  2010  Free Software Foundation, Inc.  License GPLv3+: GNU
       GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free  to  change  and  redistribute  it.
       There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
       mkdir(2)

       The full documentation for mkdir is maintained as a Texinfo manual.  If
       the info and mkdir programs are properly installed at  your  site,  the
       command

              info coreutils 'mkdir invocation'

       should give you access to the complete manual.

GNU coreutils 8.5                 April 2010                          MKDIR(1)



دیدن man های یک دستور  
man -wa command 

مثلا 

$ man -wa mkfifo
/usr/share/man/man1/mkfifo.1
/usr/share/man/man3/mkfifo.3


خوب حالا اگه بخاین راهنمای C-language دستور mkfifo رو ببینین باید به manای که عدد 3 رو داره برین که برای این کار دستور به این شکل میشه 
$ man 3 mkfifo


اگه بخاین که man تمام راهنما های موجود برای یک دستورو یک جا براتون بیاره از a- استفاده کنین 
حالا اگه دستور زیرو بزنین اول man 1 و بعد man 7 رو میاره به این صورت که با بسته شدن man 1 با q ((کیو )) یا Ctrl-C  به man 2 میرود  
man -a man 




*نکته :* 
  اگه دستور دیدن مکان man یک دستورو به شکل man -w COMMAND  بزنین فقط مکان  راهنمایی رو که بازدن man COMMAND میبینین رو نشون میده که برای دیدن مکان  همه ی man های یک دستور باید از aw- استفاده کنین .


*سیرچ کردن تمام صفحات man موجود* 
برای این کار از k- استفاده کنین 
مثلا کلمه apache رو سیرچ میکنیم 

ali@172.16.15.149:~$ man -k apache
a2dismod (8)         - enable or disable an apache2 module
a2dissite (8)        - enable or disable an apache2 site / virtual host
a2enmod (8)          - enable or disable an apache2 module
a2ensite (8)         - enable or disable an apache2 site / virtual host
ab (1)               - Apache HTTP server benchmarking tool
apache2 (8)          - Apache Hypertext Transfer Protocol Server
apache2ctl (8)       - Apache HTTP server control interface
apachectl (8)        - Apache HTTP server control interface
check_forensic (8)   - tool to extract mod_log_forensic output from apache lo...
logresolve (1)       - Resolve IP-addresses to hostnames in Apache log files
rotatelogs (8)       - Piped logging program to rotate Apache logs



وقتی که دستور man ls رو میزنین راهنمای ls باز میشه که خود همون صفه باز شده از چند قسمت تشکیل شده که به صورت زیر هستش 

Heading Description
Name         The name of the item, along with a description
Synopsis               A complete description of syntax or usage
Description        A brief description of the item
Options      Detailed information on each command-line option (for commands)
Return values     Information on function return values (for programming references)
See also          A list of related items that may be helpful
Bugs         Descriptions of unusual program behavior or known defects
Files         A list of important files related to the item, such as configuration files
Copying or copyright          A description of how the item is to be distributed or protected
Authors      A list of those who are responsible for the item


دستور خلاصه تر از man  هم هست که فقط توضیح کوتاهی از اون دستورو میده 

whatis ls
ls (1)               - list directory contents





منبع : LPIC-1_In_Nutshell_Oreilly_Edition3.pdf
ادرس دانلود 
http://ubuntuone.com/p/15HZ/

----------


## alieblice

روش برای شناسایی فایل سیستم
df -T



rf@Aref-Ubuntu:~$ df -T

Filesystem    Type   1K-blocks      Used Available Use% Mounted on

/dev/sda1     ext4    28868732    818088  26584176   3% /

none      devtmpfs      505400       688    504712   1% /dev

none         tmpfs      512008       356    511652   1% /dev/shm

none         tmpfs      512008       224    511784   1% /var/run

none         tmpfs      512008         0    512008   0% /var/lock

/dev/sda5     ext4    68246080  30481724  34297656  48% /home

/dev/sda6     ext4    16339372   3596348  11913024  24% /usr

/dev/sdb1     vfat     1003584    937464     66120  94% /media/Receiver Fl

-T در فرمان df نوع فایل سیستم را مشخص میکند.


Mount command

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


mount | grep "^/dev"



rf@Aref-Ubuntu:~$ mount | grep "^/dev"

/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)

/dev/sda5 on /home type ext4 (rw,commit=0)

/dev/sda6 on /usr type ext4 (rw,commit=0)

/dev/sdb1 on /media/Receiver Fl type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,  shortname=mixed,dmask=0077,utf8=1,showexec,flush)



file command

با استفاده از دسترسی root از فرمان file به شکل زیر استفاده کنید. توجه شود که نام device مورد نظر باید به دستور داده شود.


file -sL /dev/sda1



rf@Aref-Ubuntu:~$ sudo file -sL /dev/sda1

[sudo] password for rf: 

/dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=83c2ae51-5ab2-4380-bbc8-910f8148a288 (needs journal recovery) (extents) (large files) (huge files)



مشاهده فایل /etc/fstab

اگر  یک mountpoin مشخص، طوری تنظیم شده باشد که هنگام بالا آمدن سیستم بخواهد  mount شود، میتونیم نوع فایل سیستم اون رو تو fstab ببینیم.
استفاده از فرمان fsck

rf@Aref-Ubuntu:~$ cat /etc/fstab 

# /etc/fstab: static file system information.

#

# Use 'blkid -o value -s UUID' to print the universally unique identifier

# for a device; this may be used with UUID= as a more robust way to name

# devices that works even if disks are added and removed. See fstab(5).

#

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

proc            /proc           proc    nodev,noexec,nosuid 0       0

# / was on /dev/sda1 during installation

UUID=83c2ae51-5ab2-4380-bbc8-910f8148a288 /               ext4    errors=remount-ro 0       1

/dev/sda5       /home           ext4    defaults        0       2

/dev/sda6       /usr            ext4    defaults        0       2

/dev/sda7       none            swap    sw              0       0




  
توجه شود که در این روش باید device مورد نظر مشخص شود:


fsck -N /dev/sda1



rf@Aref-Ubuntu:~$ fsck -N /dev/sda1

fsck from util-linux-ng 2.17.2

[/sbin/fsck.ext4 (1) -- /] fsck.ext4 /dev/sda1 

و در آخر اینکه اگر شما دسترسی root را ندارید، اما میخواهید که فایل سیستمتان را شناسایی کنید، از:
کد:
/sbin/fsck -N 
استفاده کنید.
ممنون از همه دوستان عزیز
موفق باشید


منبع : http://forum.ubuntu.ir/index.php/top...html#msg135707

----------


## alieblice

دستور write برای  چت کردن در ترمینال با کاربرای دیگر که login شده اند استفاده میشه که خیلی هم ساده هستش و اپشنی هم نداره 

شکل کلی دستور 


write user [tty]

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


alieblice@alieblice-desktop:~$ write alieblice
write: alieblice is logged in more than once; writing to pts/4
salamm

در بالا میبینین که گفته  write: alieblice is logged in more than once; writing to pts/4
یعنی  کاربر alieblice بیشتر از یک ترمینال باز شده داره که همه این ترمینال ها  میتونه مال یک نفر یا چند نفر باشه که برای جلو گیری از اشتباه بهتره که   tty کاربر رو هم معلون کنین . برای دیدن tty کاربرای وارد شده به سیستم  دستور w یا  who رو بزنین 
مثال w تو سیستم من  


alieblice@alieblice-desktop:~$ w
 00:20:51 up  1:34,  7 users,  load average: 0.73, 0.67, 0.54
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
alieblic tty8     :0               22:52    1:34m  2:54   0.08s gnome-session
alieblic pts/0    :0.0             23:24   56:08   0.17s  0.17s bash
alieblic pts/1    :0.0             23:51   27:03   0.14s  0.14s bash
alieblic pts/2    :0.0             23:57    3:23   0.14s  0.14s bash
alieblic pts/3    :0.0             00:08    0.00s  0.14s  0.00s w
tia      pts/4    -                00:20   39.00s  0.41s  0.14s -bash
tia      pts/5    -                00:20    2.00s  0.36s  0.01s top
alieblice@alieblice-desktop:~$
همونطر که میبینین کاربر tia دو بار وارد سیستم شده 
مثلا من به کار بری که شناسش pts/5 هست ارتباط برقرار میکنم که الان داره با top کار میکنه  


alieblice@alieblice-desktop:~$ write tia pts/5
hi tia


بستن چت 

اگر زمانی خاستین که کسی مزاحمتون نشه در حین کار میتونین از دستور mesg  استفاده کنین که به صورت y و n استفاده میشه 
Usage: mesg [y|n]

مثلا باری این که کاربر tia اجازه ی چت رو ببنده دستور به این شکل هست که اگر mesg  رو هم به صورت خالی بزنین y یا n بودنشو میگه 


tia@alieblice-desktop:~$ mesg n
tia@alieblice-desktop:~$ mesg
is n
tia@alieblice-desktop:~$ 


 نکته  : در ubuntu چت یک طرفه هستش یعنی اگه شما با یک نفر ارتباط برقرار کنین  فقط میتونین براش چیزی بفرستین بارایه این که 2 طرفه بشه طرف مقابل هم باید  دستور مشابه شما رو بزنه در حالی که تو دبیان این جوری نیست .

دستورات مشابه دیگه ای هم وجود داره مثل talk

----------


## alieblice

گرفتن image iso در ترمینا.



sudo dd if=/dev/cdrom of=cd.iso



sudo dd if=/dev/dvd of=dvd.iso

مونت کردن Mounting an image



mkdir -p /mnt/isoimage


mount -o loop -t iso9660 cd.iso /mnt/isoimage

Unmount



umount -lf /mnt/isoimage



پی نوشت: اگه دو تا سیدی رام یا دیوی دی رام دارین 
/dev/cdrom می شه اولی /dev cdrom1 می شه دومی یا /dev/dvd و /dev/dvd1


منبع :http://forum.ubuntu.ir/index.php/top...html#msg133455

----------


## alieblice

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

شکل کلی دستور به شکل زیر هستش 


  $ alias name='unix command with options'
alias - دستوری که با اون دستور کوتاه شده یک دستورو میسازین
name  -  دستور جایگزین دستور بلند
unix command with options  - دستور واقعی که براش می خواهین دستور جایگزین درست کنین 

*چند مثال* 

پیدا کردن 5 فایل بزرگ داخل دایرکتوری


alias findbig="find . -type f -exec ls -s {} \; | sort -n -r | head -5
"


برای پاک کردن تمام صفحه‌ی نمایش و تاریخچه‌ی ترمینال ((history))


alias hcl='history -c; clear'

برای وارد شدن ((رموت)) به یک سیستم با ssh 


alias server_name='ssh root@192.168.1.1 -p7777 -c'

برای دیدن افراد انلاین pp*tp سرور ((روی سیستم شما شاید کار نکنه . دلیلش کار نکردنش اینه که رو سیستمتون pp*tp سرور ندارین )) 


alias pppp='last |grep ppp|grep still'

_*********************************************_

برای دیدن تمام دستورات alias خود فقط لازم هست که خود دستور الیاس رو بزنین 

برای  دیدن دستور واقعی یک دستور الیا س اول دستور alias و سپس دستور خلاصه شده  را بنویسید مثلا در زیر میخواهیم دستور اصلی دستور dus رو ببینیم : 


$ alias dus
alias dus='df -h'


برای پاک کردن یک دستور الیاس از unalias استفاده کنین 


unalias dus  

$ dus
-bash: dus: command not found



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


$ unalias -a
$ alias

*نکته !!*

اگه یک موقعی با رستارت کردن کامپیوتر دستورات alias تون پاک می شد , برای این که پاک نشه دستورات alias خودتونو داخل فلدر 


.bash_aliases
قرار بدین 
ادرس فلدر :


/home/username/.bash_aliases

منبع با مقداری تغییرات : http://www.thegeekstuff.com/2010/04/...lias-examples/
چند مثال دیگه تو منبع هست که نگفتم

----------


## alieblice

کرنل 32 یا 64 ::

استفاده از دستور uname -a برای فهمیدن 32 بیت یا 64 بیت بودن 
اگه در خروجی دستورتون کلمه ی *x86_64* بود یعنی کرنل سیستم شما 64 بیت است 

اگه در خروجی دستورتون یکی از کلمات *i386/i486/i586/i686* بود یعنی کرنل شما 32 بیت است 

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


$ uname -a
Linux ora100 2.6.5-7.252-smp #1 SMP Tue Feb 14 11:11:04 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux



cpu 32 یا 64 ::

استفاده از  /proc/cpuinfo 
این دستورو داخل ترمینال بزنین تا اطلاعات cpu شما رو نشون بده که از داخل اون اطلاعات 32 یا 64 بیت بودن cpuتونو می تونین بفهمین 


less /proc/cpuinfo

این دستورو در ترمینال بزنین که اگر در خروجیش کلمه ی *lm* بود شما cpu 64 بیت دارین 




$ grep flags /proc/cpuinfo
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat  pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat  pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat  pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
 
دستور lscpu هم هست که اطلاعات کاملی از cpu در اختیارتون قرار میده ((تجزیه تحلیل دستورش با خودتون ))


ali@172.16.15.149:~$ lscpu
Architecture:          i686
CPU op-mode(s):        64-bit
CPU(s):                1
Thread(s) per core:    1
Core(s) per socket:    1
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 44
Stepping:              2
CPU MHz:               2127.777
Hypervisor vendor:     Microsoft
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K

منبع : http://www.thegeekstuff.com/2010/12/linux-32-or-64-bit

----------


## alieblice

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

کد:
دانلود منیجرهای دنیای لینوکس

http://linuxreview.ir/1390/01/%D8%AF...8%DA%A9%D8%B3/



*شکل کلی دستور* 



 wget [OPTION]... [URL]... 

*دانلود کردن یک فایل* 

برای دانلود کردن یک فایل دستور wget رو بنویسین و در ادامش url ((ادرس فایل مورد نظر )) تونو بنویسین مثلا : 


$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
نکته : دستور wget رو در هر دایرکتوری که بزنین فایل در همون دایرکتوری ذخیره میشه 

توضیح دستور بالا :

٪ مقدار درصد فایل که دانلود شده در زیر 31% فایل دانلود شده 
مقدار بایت فایل دانلو شده که در ادامه فلش میاد که در زیر 1,213,592 است 
سرعت دانلود کردن که در زیر  68.2K/s  است 
مقدار زمان باقی مانده تا اتمام دانلود فایل که در زیر  34s است 

*درحال دانلود شدن* 


$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Saving to: `strx25-0.9.2.1.tar.bz2.1'

31% [=================> 1,213,592   68.2K/s  eta 34s

*اتمام دانلود* 


$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Saving to: `strx25-0.9.2.1.tar.bz2'

100%[======================>] 3,852,374   76.8K/s   in 55s    

2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]


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

برای این کار لیست ادرس های خود را داخل یک فایل متنی ذخیره کنید و دستور wget رو به همراه اپشن i- استفاده کنین 


$ wget -i download-file-list.txt
نکته : ادرس هاتون باید یه شکل زیر باشه یعنی در هر خط یک url قرار بدین و url بعدی زیر خط بالایی 


$ cat > download-file-list.txt
URL1
URL2
URL3
URL4

*دانلود کردن وذخیره کردن با اسمی متفاوت* 
به طور پیش فرض wget اسم فایلو از اخرین کلمه بعد از اسلش (( / )) بر میداره 
برای این کار از اپشن O- (( اوو بزرگ)) 


wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
دربالا  اگه از اپشن O- استفاده نکنین فایل با اسم  download_script.php?src_id=7701 ذخیره می شود و اگر استفاده کنین با اسم  taglist.zip ذخیره میشود 

*محدودیت سرعت در دانلود* 

برای این کار از اپشن  limit-rate=NUMBER-- استفاده کنین مثلا در زیر محدودیت 200 کیلپبایت میزاریم 


$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

*ادامه دادن دانلود فایل ناقص دانلود شده* 

برای این کار از c- استفاده کنین 


$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
نکته  مهم : دستور بالا رو باید در همون دایرکتوری که فایلتونو بار اول زدین و  ناقص دانلود کردین بزنین تا فایلتون که به صورت ناقص هست به وسیله wget  پیدا بشه  در غیر این صورت از اول شروع به دانلود میکند 
اگر فایلی رو  خاستین دانلود کنین که یک فایل دیگه هم اسمش وجود داره به اخر فایلی که شما  دانلود میکنین یک 1- اضافه میکنه اگه همون اسم با 1- وجود داشت 2- اضافه  میکند 


*دانلود کردن در پشت صحنه :*
برای این کار از b- استفاده کنین 
نکته : در این حالت با دستور fg نمیتونین wget رو به روی صفحه بیارین اگر دستور jobs هم بزنین میبینین که  خبری از wget نیست '.


$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Continuing in background, pid 1984.
Output will be written to `wget-log

در این حالت wget اطلاعات رو در یک فایل ذخیره میکند که همون طور که در بالا میبینین اسم اون فایل wget-log است 

برای دیدن فایل به صورت on time از دستور tail استفاده کنین 


$ tail -f wget-log
Saving to: `strx25-0.9.2.1.tar.bz2.4'

     0K .......... .......... .......... .......... ..........  1% 65.5K 57s
    50K .......... .......... .......... .......... ..........  2% 85.9K 49s
   100K .......... .......... .......... .......... ..........  3% 83.3K 47s
   150K .......... .......... .......... .......... ..........  5% 86.6K 45s
   200K .......... .......... .......... .......... ..........  6% 33.9K 56s
   250K .......... .......... .......... .......... ..........  7%  182M 46s
   300K .......... .......... .......... .......... ..........  9% 57.9K 47s


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

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


$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

مثال : 


 wget --mirror -p --convert-links -P /tmp http://forum.ubuntu.ir/index.php/topic,17561.0.html

ادرس http://forum.ubuntu.ir/index.php/topic,17561.0.html دانلود میکنپ ودر فایل tmp/ ذخیره میکند 

توضیح دستور بالا : ((ترجمش با خودتون ))
  کد:
  –mirror : turn on options suitable for mirroring.
    -p : download all files that are necessary to properly display a given HTML page.
    –convert-links : after the download, convert the links in document for local viewing.
    -P ./LOCAL-DIR : save all the files and directories to the specified directory.







چند مثال مفید دیگه هم در منبع بود که من نگفتم 
منبع :  http://www.thegeekstuff.com/2009/09/...some-examples/

----------


## alieblice

برای ساختن user چندین تا دستور وجود داره که این جا برای ساختن user  دستور 
useradd
adduser
داریم و برای پاک کردن user 
deluser
userdel 
داریم
حالا اگه بخایم که برای یک کاربر محدودیت زمانی و بعضی محدودیتای دیگه بزاریم از دستور 
usermod 
استفاده میکنیم

useradd 

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


useradd tia

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


useradd -m tia
حالا اگه خروجی home دایرکتوریرو بگیرین میبینین که فلدر tia ساخته شده 


ساختن کاربر و اضافه کردن اون به لیست کاربرای یک گروه 
با این دستور کاربر tia ساخته میشه و به گروه student اضافه میشه


useradd -g student tia

ساختن کاربر و مشخص کردن ادرس home دایرکتوری
با این دستور کاربر tia ساخته میشه و home دایرکتوریش هم میشه ادرسه /var/www/LILI


useradd tia -d /var/www/LILI



adduser

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



root@debian:/# adduser tia
Adding user `tia' ...
Adding new group `tia' (1009) ...
Adding new user `tia' (1008) with group `tia' ...
The home directory `/home/tia' already exists.  Not copying from `/etc/skel'.
adduser: Warning: The home directory `/home/tia' does not belong to the user you are currently creating.
Enter new UNIX password: 
Retype new UNIX password: 
Sorry, passwords do not match
passwd: Authentication token manipulation error
passwd: password unchanged
Try again? [y/N] y
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for tia
Enter the new value, or press ENTER for the default
    Full Name []: tia dada
    Room Number []: 1122
    Work Phone []: 1212121212
    Home Phone []: 121212121
    Other []: blablanla
Is the information correct? [Y/n] y
root@debian:/# 


اضافه کردن کاربر tia به گروه student


root@debian:/# adduser tia student
Adding user `tia' to group `student' ...
Adding user tia to group student
Done.



deluser

دستور deluser برای پاک کردن کاربرا هستش 
پاک کردن کاربر tia 


root@debian:/# deluser
Enter a user name to remove: tia
Removing user `tia' ...
Warning: group `tia' has no more members.
Done.
root@debian:/# 


بعضی اپشن ها 

برای پاک کردن home دایرکتوری


--remove-hom  


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


--remove-all-files

برای پشتیبان گیری از فایلای اون کاربر قبل از پاک کردن 


--backup-to <DIR>




userdel


برای پاک کردن کاربر به همراه دایرکتوری خانه 
کد:
userdel tia -r




usermod

دستور usemod برای گذاشن محدودیت برای یک کاربر هسنش 

برای قفل کردن کاربر 


usermod -L tia

برای باز کردن قفل کاربر


usermod -U tia

-d 
برای تعیین تاریخ برای از کار افتادن کاربر

-s
برای تعیین شل کاربر

کلا تنضیماتش خیلی نیست با --help میتونین تنضیماتشو ببینین اکثرشم احتیاج به توضیح نداره 



_chage_
این دستور هم برای گذاشتن یک سری دیگه از محدودیت ها استفاده میشه 
برای گذاشتن محدودیت های دیگه ای مثل تعداد پروسس با حد اکثر تعداد login ها و غیره میتونین از فلدر 
_/etc/security_ 
استفاده کنین 

برای دیدن کاربرای online هم میتونین از دستور 
*who* 
یا
*w*
کنین

----------


## alieblice

دستور  rsync برای بکاپ گیری در لینوکس استفاده میشه همچنین قابلیت synchronize  دو فایل رو هم داره که این 2 فایل میتونن در یک کامپیوتر یا یکیشون در یک  کامپیوتر رموت باشه 

چند نکته خوب درمورد rsync 

*سرعت بالا*  : به دلیل این که اول 2 تا فایلو باهم مقایسه میکنه بعد فقط قسمت های تغییر کرده رو بروز یا تغییراتی درشون اءمال میکنه 
*امنیت*  : چون rsync از ssh برای برقراری ارتباط استفاده میکنه از امنیت بالایی برخورداره 
*مصرف پهنای باند کم* : چون از فشرده سازی به صورت block by block استفاده میکند همیشه پهنای باند مصرفی از مقدار فایل تبادل شده کمتر است 
در اخر هم پیشنیاز خاصی برای نصبش نیاز نیست 

*نصب* : 

*برای نصب دستورات زیر رو بزنین* 


apt-get update 
apt-get install rsync

*شکل کلی دستور* 


$ rsync options source destination

*Synchronize دو فلدر در یک کامپیوتر* 


$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes  received 1098 bytes  54966.00 bytes/sec
total size is 44867  speedup is 1.63
$

-z بزای فشرده سازی
v- برای نشون دادن مراحل کار 
r-  indicates recursive

حالا اگه ls -l هردو فایلو بگیرین میبینین که پرمیشن ها ثابت مانده اند ولی زمان ساخته شدن فایلا تغییر کردن 


$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin  949 Sep  2  2009 /root/temp/sva.xml



*برای این که زمان ساخته شدن فایلا تغییر نکند از a- استفاده کنین* 


$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes  received 1104 bytes  55206.00 bytes/sec
total size is 44867  speedup is 1.63
$
حالا اگه خروجی ls -l رو نگاه کنین میبینین که زمان ساخته شدن فایلها بعد از بکاپ گیری یکی هستش 


$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /root/temp/sva.xml



*Synchronize فقط یک فایل که عمل  کپی کردن یک فایل به فلدر دیگر رو انجام میده* 



$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys

sent 42 bytes  received 12380 bytes  3549.14 bytes/sec
total size is 12288  speedup is 0.99



*Synchronize کردن فایل از کامپیوتر local به کامپیوتر remote* 
local : کامپیوتری که شما الان باهاش کار میکنین ((کامپیوتر محلی))
remote : کامپیوتری که در دور دست هستش 



$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname

sent 15810261 bytes  received 412 bytes  2432411.23 bytes/sec
total size is 45305958  speedup is 2.87


برای انجام این کار احتیاج به username وIP address سیستم  رموت و همچنین ادرس فایل در سیستم رموت که شکل کلی به این شکل میشه 

 username@machinename:path
path : ادرس دایرکتوری در سیستم رموت 
که در دستور بالا به این شکل بود :  thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/


/root/temp/ : ادرس فایل های ارسالی از لوکال به سرور 


*Synchronize سیستم رموت به سیستم خانگی* 


alieblice@alieblice-desktop:~$ sudo rsync -avz root@172.16.49.128:/var/www/Videos /home/reza
[sudo] password for alieblice: 
root@172.16.49.128's password: 
receiving incremental file list
created directory /home/reza
Videos/
Videos/.htaccess
Videos/Oggy.001.avi
Videos/Oggy.002.avi
Videos/Oggy.003.avi
Videos/Oggy.004.avi
Videos/Oggy.005.avi

sent 129 bytes  received 347205008 bytes  10063917.01 bytes/sec
total size is 350419831  speedup is 1.01
alieblice@alieblice-desktop:~$ 


root@172.16.49.128:/var/www/Videos : ادرس سیستم رموت 

/home/reza : ادرسی که میخایم فایلا از رموت تو کامپیوتر لوکال شخصی ذخیره شود 


*دیدن اطلاعاتی در مورد انتقال هر فایل* 
برای این کار از progress-- استفاده کنین 



alieblice@alieblice-desktop:~$ sudo rsync --progress -avz root@172.16.49.128:/var/www/Videos /home/reza
root@172.16.49.128's password: 
receiving incremental file list
Videos/
Videos/Oggy.001.avi
    70811648 100%   17.25MB/s    0:00:03 (xfer#1, to-check=4/7)
Videos/Oggy.002.avi
    70343454 100%   11.02MB/s    0:00:06 (xfer#2, to-check=3/7)
Videos/Oggy.003.avi
    70598656 100%   13.04MB/s    0:00:05 (xfer#3, to-check=2/7)
Videos/Oggy.004.avi
    69273600 100%   14.00MB/s    0:00:04 (xfer#4, to-check=1/7)
Videos/Oggy.005.avi
    69392384 100%   12.04MB/s    0:00:05 (xfer#5, to-check=0/7)

sent 110 bytes  received 350537798 bytes  12746833.02 bytes/sec
total size is 350419831  speedup is 1.00
alieblice@alieblice-desktop:~$ 





ممکنه  وقتی که 2 فایلو باهم دارین synce میکنین یکسری فایل در فلدر ی که دارین  بکاپ هارو توش ذخیره میکنین ((target )) وجود داشته باشه که در فلدر اصلی  ((source)) که ازش بکاپ میگیرین نباشه حالا اگه بخاین که فایلای اضافی که  در  target بودنو پاک کنین از delet-- استفاده کنین 
ls فولدر source


root@debian:/var/www/Videos# ls
Oggy.003.avi  Oggy.004.avi  Oggy.005.avi

ls فلدر target 


alieblice@alieblice-desktop:~$ ls /home/reza/Videos
Oggy.001.avi  Oggy.002.avi  Oggy.003.avi  Oggy.004.avi  Oggy.005.avi
alieblice@alieblice-desktop:~$


alieblice@alieblice-desktop:~$ sudo rsync --progress --delete  -avz root@172.16.49.128:/var/www/Videos /home/reza
root@172.16.49.128's password: 
receiving incremental file list
deleting Videos/Oggy.002.avi
deleting Videos/Oggy.001.avi
Videos/
Videos/Oggy.005.avi
    69392384 100%   16.48MB/s    0:00:04 (xfer#1, to-check=0/5)

sent 34 bytes  received 69415891 bytes  9255456.67 bytes/sec
total size is 209264729  speedup is 3.01
alieblice@alieblice-desktop:~$ 





*ممکنه فقط بخاین فایلایی که با کلمه خاصی شروع میشن رو بکاپ بگیرین* 
که برای این کار از include-- و  exclude--  استفاده کنین 
--include 'P*' : فایلایی که با P شروع میشن رو بکاپ بگیر
--exclude '*' : تمام فایلای دیگر رو در نظر نگیر 


$ rsync -avz --include 'P*' --exclude '*' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys

sent 129 bytes  received 10286798 bytes  2285983.78 bytes/sec
total size is 32768000  speedup is 3.19




*محدودیت حجمی* 

برای ایجاد محدودیت حجمی میتونین از 


--min-size=SIZE :فقط فایلایی که حجمشون از مقدار در نظر گرفته شده بیشتر است رو انتقال بده 
--min-size=SIZE : فقط فایلایی که حجمشون از مقدار در نظر گرفته شده کمتر است رو انتقال بده 


دستور زیر فایلای زیر 100 کیلوبایت رو انتقال میده 
M for megabytes and G for gigabytes K for kilobyte 



$ rsync -avz --max-size='100K' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername

sent 252 bytes  received 123081 bytes  18974.31 bytes/sec
total size is 45305958  speedup is 367.35





rsync خیلی گسترده هستش و پایه اساس خیلی از نرم افزارای بکاپ گیری لینوکس و ویندوز هستش 
برای دیدن کامل کارایی که rsync میتونه انجام بدهد به man یا helpش مراجعه کنین 

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


http://en.wikipedia.org/wiki/Rsync



منبع : http://www.thegeekstuff.com/2010/09/...mand-examples/
چند مثال دیگه تو منبع هست که نگفتم

----------


## alieblice

تقریبا اطمینان دارم که همه میدونن zip چی هستش پس خیلی توضیح نمیدم 
zip یک فرمت فشرده سازی هستش که با اون مبشه یک یا چند فایل و یا دایرکتوری را zip فشرده کرد که باعش کم شدن حجم میشود 

فایلی که با zip فشرده بشود در اخر اسم ان کلمه zip قرار میگیرد که نشانه فرمت اون هست 
اطلاعات بیشتر که zip چی هست :  http://en.wikipedia.org/wiki/ZIP_%28file_format%29


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



tia@alieblice-desktop:~/com$ zip 1.zip 1.jpeg 
  adding: 1.jpeg (deflated 0%
)

1-در  بالا فایل 1.jpeg رو به فرمت zip دز میاریم و با اسم 1.zip ذخیره میکنیم   (( اول اسمی که میخایم فایل ذخیره بشه و بعد ادرس فایل مورد نظر ))
2- در بالا در هر دایرکتوری که باشیم فایل فشرده در همون جا ذخیره میشه  . اگه دوست داشتین میتونین ادرس بدین به هش 
مثلا در زیر فایل رو در /home/tia ذخیره میکنیم 



zip /home/tia/1.zip /var/www/1.jpeg

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



 zip archivefile1 doc1 doc2 doc3

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


 zip archivefile1 *
نکته  : در بالا دایرکتوری های داخل دایرکتوری ها فشرده نمیشن برای این کار از  r- استفاده کنین(( This copies the current directory, including all  subdirectories into the archive file)).  


zip error: Nothing to do! (/home/tia/1.zip)
tia@alieblice-desktop:~/com$ zip -r ggg.zip * 
  adding: 1.jpeg (deflated 0%)
  adding: 1.zip (stored 0%)
  adding: 2.flv (deflated 3%)
  adding: limit-3 (deflated 76%)
  adding: untitled folder/ (stored 0%)
  adding: untitled folder/limit-3 (deflated 76%)
  adding: untitled folder/untitled folder/ (stored 0%)


نکته  : در بالا فایل هایی که اولشون با نقطه شروع میشه ((فایل های مخفی)) فشرده  نمیشوند برای این که اون ها هم فشرده شوند دستور به این شکل میشه 
کد:
 zip archivefile1 .* *


* سطح فشرده سازی* 

در  zip ر 9 سطح فشرده سازی دارسم    (-0, -1, -2, -3, -4, -5, -6, -7, -8,  -9) داریم که 9 بالا ترین و صفر اصلا فشرده نمیکنه و به طور پیش فرض روی 6  هستش



zip -r -9   /home/tia/padmins3.zip *


*گذاشتن رمز* 
گذاشتن رمز به 2 صورت انجام میشه یک با اپشن e- و دیگری با اپشن P- ((پی *بزرگ* )) که فرق این 2 تا اینه که در p- باید رمز رو در دستور بنویسین ولی با e- رمزو خودش میپرسه 



tia@alieblice-desktop:~/com$ zip -r -9 -P @LiebL1C3  /home/tia/padmins3.zip 1.jpeg 
updating: 1.jpeg (deflated 0%)
tia@alieblice-desktop:~/com$ 
tia@alieblice-desktop:~/com$ zip -r -9 -e  /home/tia/padmins3.zip 1.jpeg Enter password: 
Verify password: 
updating: 1.jpeg (deflated 0%)
tia@alieblice-desktop:~/com$ 


*اپدیت کردن فایل zip* 

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



tia@alieblice-desktop:~/com$ zip test.zip *
  adding: 1.jpeg (deflated 0%)
  adding: 1.zip (stored 0%)
  adding: 2.flv (deflated 3%)
  adding: ggg.zip (stored 0%)
  adding: limit-3 (deflated 76%)
  adding: untitled folder/ (stored 0%)
tia@alieblice-desktop:~/com$ zip -u  test.zip *
  adding: oo-presenting-kubuntu-fa.pdf (deflated 11%)
tia@alieblice-desktop:~/com$ 



*unzip* 

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

مثلا برای از فشرده دراوردن فایل letter


 unzip letters 
در این حالت فایل ها در همون دایرکتوری که هستین از فشره در میاد 

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



ali@172.16.15.133:~$ unzip -j  syslog.save.zip
Archive:  syslog.save.zip
replace syslog.save? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^Cali@172.16.15.133:~$
ali@172.16.15.133:~$
ali@95-168-161-82:~$ unzip   syslog.save.zip
Archive:  syslog.save.zip
replace syslog.save? [y]es, [n]o, [A]ll, [N]one, [r]ename: r
new name: syslog-01
 extracting: syslog-01
ali@172.16.15.133
:~$

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


unzip \*.zip

*باز کردن فایل zip از حالت فشرده در محل دیگری :*
برای این کار از d- استفاده کنین


PersianAdmins:~# unzip padmins.zip -d /padmins/
Archive: padmins.zip
[padmins.zip] ali/ password:
creating: /padmins/ali/
creating: /padmins/ali/navid/
extracting: /padmins/ali/navid/reza
extracting: /padmins/file1.txt
inflating: /padmins/file2.txt
PersianAdmins:~#

*اطمینان از سالم بودن فایل zip*
*روش اول*


ali@172.16.15.133:~$ unzip -tq syslog.save.zip
No errors detected in compressed data of syslog.save.zip
.

*روش دوم*


ali@172.16.15.133:~$ unzip -t test.zip
Archive:  test.zip
    testing: wtmp                     OK
    testing: syslog.save              OK
No errors detected in compressed data of test.zip.



*از فشرده در اوردن یک فایل خاص از داخل فایل zip*



ali@172.16.15.133:~$ zip test.zip wtmp syslog.save
  adding: wtmp (deflated 96%)
  adding: syslog.save (stored 0%)
ali@172.16.15.133:~$ 
ali@172.16.15.133:~$ unzip test.zip wtmp -d /home/ali/
Archive:  test.zip
replace /home/ali/wtmp? [y]es, [n]o, [A]ll, [N]one, [r]ename: r
new name: wtmp-2
  inflating: /home/ali/wtmp-2


*بدست آوردن اطلاعاتی در مورد فایل ها و دایرکتوری های موجود در فایل zip :*



ali@172.16.15.133:~$ unzip -v test.zip
Archive:  test.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
  427392  Defl:N    16218  96% 2011-03-27 12:23 8be4c72a  wtmp
       1  Stored        1   0% 2011-03-26 10:44 32d70693  syslog.save
--------          -------  ---                            -------
  427393            16219  96%                            2 files


منابع : http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm
http://persianadmins.ir/v2/articles/...-on-linux.html

----------


## alieblice

دستور blkid بارای پیدا کردن اطلاعاتی در مورد درایو ها از جمله اسم , نوع فایل سیستم , UUID , و ... استفاده میشود 

شکل کلی دستور 


blkid [ -hlv ] [ [ -c cachefile ] -w writecachefile ] [ -o format ] [ -s tag ] [ -t NAME=value ] [ device ... ] 


برای این که ببینین چه درایو هایی روی سیستمتون وجود داره دستورو به تنهایی بزنین
دستورو به همراه sudo بزنین "


root@172.16.49.20:/# blkid
/dev/sda1: UUID="eb51f2cf-636e-49a0-8ed5-31daee03f0f9" TYPE="ext3" LABEL="LILI"
/dev/sda5: UUID="ccc497b8-da19-4965-b96f-2c0d44332025" TYPE="swap

همون طور که در بالا میبینین 2 درایو وجود دارد که ادرساشون : 
/dev/sda1
/dev/sda5
هستش که sd اولشون نشان دهنده این هست که از نوع هارد های sata هستن
LABEL="LILI" : اسم درایو رو میگه 
TYPE="ext3"  و TYPE="swap" نوع فرمت درایو رو میگه 

*اپشن o-* 

به وسیله ی این اپشن می تونین خروجی دستورو  بر اساس  فرمت های مختلف ببینین که به صورت پیش فرض full  هستش 
value, device, list, udev or full))

list


root@172.16.49.20:/# blkid -o list
device                  fs_type    label       mount point                 UUID
----------------------------------------------------------------------------------------------------------------
/dev/sda1               ext3       LILI        /                           eb51f2cf-636e-49a0-8ed5-31daee03f0f9
/dev/sda5               swap                   <swap>                      ccc497b8-da19-4965-b96f-2c0d44332025


udev


root@172.16.49.20:/# blkid -o udev
ID_FS_UUID=eb51f2cf-636e-49a0-8ed5-31daee03f0f9
ID_FS_UUID_ENC=eb51f2cf-636e-49a0-8ed5-31daee03f0f9
ID_FS_TYPE=ext3
ID_FS_LABEL=LILI
ID_FS_LABEL_ENC=LILI
ID_FS_UUID=ccc497b8-da19-4965-b96f-2c0d44332025
ID_FS_UUID_ENC=ccc497b8-da19-4965-b96f-2c0d44332025
ID_FS_TYPE=swap



value


root@172.16.49.20:/# blkid -o value
eb51f2cf-636e-49a0-8ed5-31daee03f0f9
ext3
LILI
ccc497b8-da19-4965-b96f-2c0d44332025
swap

به وسیله ی دستور blkid میتونین lable یا UUID یک درایو رو به device name  تبدیل کنین


root@172.16.49.20:/# blkid -L LILI
/dev/sda1
root@172.16.49.20:/# blkid -U eb51f2cf-636e-49a0-8ed5-31daee03f0f9
/dev/sda1
root@172.16.49.20:/#


موضوعات مرتبط :
۵ روش برای شناسایی فایل سیستم
http://forum.ubuntu.ir/index.php/top...html#msg135707

----------


## alieblice

دستور mount برای بالا اوردن یک درایو استفاده میشه که در فارسی هم همون موینت کردن میگن 
هر درایوی که شما در سیستمتون داشته باشین یک device name بهش تعلق میگیره که در فولدر /dev/میتونین اونا رو پیدا کنین مثلا 


dev/sda
/dev/sda5
برای بدست اوردن اطلاعاتب در مورد فایل سیستم درایوهاتون و پیدا کردن uuid , lable و device name به 2 اموزش زیر رجوع کنین
http://forum.ubuntu.ir/index.php/top...html#msg135707
http://forum.ubuntu.ir/index.php/top...html#msg145022

شکل کلی دستور 


mount [-alrsvw] [-t fstype] [-o options] [device] [mountpoint]


*mount کردن یک درایو به ساده ترین شکل*
برای این کار احتیاج به device name اون درایو و یک محل برای مونت کردنش احتیاج داریم که به اون mount point میگن 
پس شکل کلی به این شکل میشه


mount device-name mount-point
مثلا 


alieblice@ubuntu:~$ sudo blkid
[sudo] password for alieblice: 
/dev/sda1: UUID="246dcfec-7380-48d3-942b-a5ba4c2e8882" TYPE="ext4" 
/dev/sda5: UUID="715fa349-8dd1-4104-bd70-9a31a6279749" TYPE="swap" 
/dev/sdb: UUID="d1a62327-4227-439b-81f9-4ef82027957b" TYPE="ext4" LABEL="New Volume" 
/dev/sdc1: UUID="5f1bb23f-3857-4e06-8bda-28e0cb6f61d3" TYPE="ext2" 
/dev/sdc5: UUID="b4637559-61e4-41ff-ae1c-667632393686" SEC_TYPE="ext2" TYPE="ext3" 
alieblice@ubuntu:~$ mount /dev/sdb /media/sdb
mount: only root can do that
alieblice@ubuntu:~$ sudo mount /dev/sdb /media/sdb
alieblice@ubuntu:~$ 

دستور blkid برای دیدن دایو های موجود روی سیستمتون استفاده میشه که قبلا کامل توضیح داده شده 
همون  طور که در بالا میبینین چندین تا دراییو وجود داره که ما درایو dev/sdb رو  به /media/sdb موینت کردیم که /dev/sdb درواقع mount point مون بود
نکته : فلدر sdb باید از قبل در فولدر media موجود باشه در غیر این صورت ارور میده 
mountکردنو میتونین بر اساس label و uuid هم انجام بدین که دستور به این صورت میشه 
برای lable از L- استفاده کنین ((ال بزرگ))
label

alieblice@ubuntu:~$ sudo mount -L New Volume
mount: no such partition found
alieblice@ubuntu:~$ sudo mount -L "New Volume"
alieblice@ubuntu:~$ 
پیشنهاد میکنم همیشه اسم درایو رو بین "" قرار بدین تا به مشکل بر نخرین
در  بالا mount point رو تعیین نکردم  به این دلیل که داخل فایل /etc/fstab  تنظیماتی رو انجام دادم (( در اخر اموزش در مورد فایل fstab توضیح دادم ))

uuid


alieblice@ubuntu:~$ sudo mount -U d1a62327-4227-439b-81f9-4ef82027957b  /media/sdb


توضیح بعضی اپشن ها 
a-   : استفاده از a- باعث میشه که تمام درایو های لیست شده در فایل /etc/fstab  موینت بشن ((دیگه لازم نیست دونه به دونه برای هرکدوم دستور موینت رو  بنویسیم ))

r-  : استفاده از r- باعث میشه تا درایومون به صورت read-only ((فقط قابل خواندن)) موینت بشه 
w-  : با استفاده از w- درایوتون به صورت read and write ((قابل خواندن و نوشتن)) موینت میشود 
v-  : اطلاعات بیشتری رو از مراحل موینت شدن درایو به شما میدهد
t-  : با استفاده از t-  میتونین نوع فایل سیستم مورد نظرتونو انتخاب کنین ((ext4 ,ext3 , .....))
L- و U- که به ترتیب برای موینت کردن بر اساس اسم و uuid هستش که در بالا مثالش زده شد 

o-
یک سری اپشن دیگر هستن که باید در ادامه o-  بیان که در زیر تعدادیشون توضیح داده شده 

defaults   : با عث میشه تا تنظیمات پیش فرض برای موینت کردن اون درایو استفاده بشه  که در درجه اول تنظیمات داخل فایل /etc/fstab رو میخونه و اگر تنظیماتی  نبود سراغ تنظیمات  خودش میزه 

auto    : با این اپشن میتونیم بگیم که در هنگام بوت شدن سیستم , این درایو هم  موینت بشود یا در موقعی که از a- استفاده کردیم به عنوان اپشن , این درایو  هم موینت بشود 

noauto  : عکس کار auto رو انجام میده یعنی در موقع بوت شدن سیستم درایو رو موینت نکند و در موقع استفاده از اپشن a-  موینت نشود 

user یا nouser   :    با استفاده از این 2 میتونیم به کاربران غیر روت اجازه دهیم که یک درایو  رو بدون دست رسی به روت موینت کنن که معمولا همون کاربری که موینت کرده  درایو رو میتونه unmount بکند  .

اپشن بالا بیشتر برای درایو هایی مثل usb  فلاپی و غیره  استفاده میشه 

users   :  شبیه user با این تفاوت که هرکسی میتونه درایو رو unmount کند 

remount   : بعضی اوقات پیش میاد که لازم میشه بدون این که یک درایوی unmount بشه  تغییراتی روی اون درایو ایجاد کنیم مثلا تبدیلش کنیم به read-only  در این  مواقع میتونیم از این اپشن استفاده کنیم 

loop   : فرض کنیم که یک  فایل ایمیج داریم که میخایم اونو جوری موینتش کنیم که انگار یک درایو از  hard disk مون بوده میتونیم از این اپشن استفاده کنیم مثلا


mount -t vfat -o loop image.img /mnt/image
فایل image.img  جوری موینت میکنه که انگار یک درایو یا یک هارد بوده 

ro  :همون فقط قابل خوندن هستش 
rw  :همون قابل خوندن و نوشتن هستش

چند مثال از اپشن های بالا 



alieblice@ubuntu:~$ sudo blkid
/dev/sda1: UUID="246dcfec-7380-48d3-942b-a5ba4c2e8882" TYPE="ext4" 
/dev/sda5: UUID="715fa349-8dd1-4104-bd70-9a31a6279749" TYPE="swap" 
/dev/sdb: LABEL="New Volume" UUID="d1a62327-4227-439b-81f9-4ef82027957b" TYPE="ext4" 
/dev/sdc1: UUID="5f1bb23f-3857-4e06-8bda-28e0cb6f61d3" TYPE="ext2" LABEL="LILI" 
/dev/sdc5: UUID="b4637559-61e4-41ff-ae1c-667632393686" SEC_TYPE="ext2" TYPE="ext3" 
alieblice@ubuntu:~$ 


مثال :
در  زیر یک درایو با فرمت ext2 و به همراه اپشن فقط قابل خواندن (r-) و همچنین  توانایی unmount کردن درایو به وسیله ی هرکاربری(users) که اسم درایو    LILI  است رو به mount point  به این ادرس /media/LILI موینت میکنیم 


alieblice@ubuntu:~$ sudo mount -v -r -t ext2 -o users -L LILI /media/LILI
/dev/sdc1 on /media/LILI type ext2 (ro,noexec,nosuid,nodev)
alieblice@ubuntu:~$

در  مثال زیر همون درایو بالا رو بدون این که unmount کنیم  از اپشن فقط قابل  خواندن به قابل خواندن و نوشتن و همچنین قابلیت unmount کردنشو به وسیلهی  هر کاربری میگیرم 


alieblice@ubuntu:~$ sudo mount -v -o remount -w -U 5f1bb23f-3857-4e06-8bda-28e0cb6f61d3
/dev/sdc1 on /media/LILI type ext2 (rw,noexec,nosuid,nodev)
alieblice@ubuntu:~$ 

نکته ک برای 2 مثال بالا حتما نکته اخر اموزش رو هم بخونین

*فایل /etc/fstab*

فایل /etc/fstab از 6 قسمت تشکیل شده که شامل موارد زیر هستش 


#device      mount point  filesystem options      dump fsck

dump : یک نرم افزار backup گیر هستش که ازش استفاده میکنین میتونین مقدار رو به عدد یک تغییر بدین تا از درایوتون پشتیبان تهیه کند
pass   یا fsck : لینوکس در زمان بوت شدن از نرمافزار fsck  برای چک کردن فایل  سیستم ها استفاده میکنه که اگه مقدارشو به عدد 1 تغییر بدین در هر بار بالا  امدن فایل سیستم برای اون درایو  رو چک میکنه 

در واقع شما میتونین  همون اپشن هایی که در دستور mount مینوشتین رو در این فایل بنویسین تا هر  بار نخواد دستورو از نو بنویسین و هم چنین ایجاد اپشن هایی مثل مونت شدن  اتوماتیک در موقع بوت سیستم
مثال :
در  زیر یک درایو با فرمت ext2 و به همراه اپشن فقط قابل خواندن (r-) و همچنین  توانایی unmount کردن درایو به وسیله ی هرکاربری(users) که ادرس درایو    /dev/sdc1  است رو به mount point  به این ادرس /media/LILI و قابلیت  موینت شدن خودکار در زمان بوت و قابلیت موینت کردن به وسیله ی کاربران عادی  رو داخل فایل fstab مینویسیم 

# <

file system> <mount point>   <type>  <options>            <dump>  <pass>
/dev/sdc1       /media/LILI     ext2     ro,users,user,auto   0        0

نکته : در قسمت device میتونیم از lable و یا uuid هم استفاده کنیم که در مثال زیر نوع چگونگی نوشتنش رو میتونین ببینین

نمونه یک فایل fstab پیشرفته 


#device      mount point  filesystem options      dump fsck

/dev/sda1    /            ext3       defaults        1 1

UUID=3631a288-673e-40f5-9e96-6539fec468e9

             /usr         reiserfs   defaults        0 0

LABEL=/home  /home        reiserfs   defaults        0 0

/dev/sdb5    /windows     vfat       uid=500,umask=0 0 0

/dev/cdrom   /media/cdrom iso9660    users,noauto    0 0

/dev/sdb1    /media/usb   auto       users,noauto    0 0

server:/home /other/home  nfs        users,exec      0 0

//winsrv/shr /other/win   cifs       users,credentials=/etc/creds 0 0

/dev/sda4    swap         swap       defaults        0 0


نکته مهم :

بعضی اوقات در دستوراتی که استفاده میکنیم از اپشنایی مثل : قابلیت موینت شدن به وسیله ی هر کاربری 
یا قابلیت unmount شدن به وسیله ی هر کاربری و ... استفاده میکنیم مثل دستور زیر


sudo mount -v -r -t ext2 -o users -L LILI /media/LILI
خوب حالا اگه الان به عنوان یک کاربر معمولی بیاین وبخاین که اونو unmount کنین , نمیتونین اونو unmount کنین و این اررورو میده 


alieblice@ubuntu:~$ umount /dev/sdc1
umount: /dev/sdc1 is not in the fstab (and you are not root)
alieblice@ubuntu:~$ 

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

منبع :  lpic_2_linux_professional_institute_certification

----------


## alieblice

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

برای  استفاده از wall اول خود دستور رو بنویسید بعد یک صفه باز میشه میتونین  متنتونو در اون بنویسین بعد که متنتونو نوشتین Ctrl+d  رو بزنین تا متن  برای همه ارسال شود 
مثلا



root@de-10:/home/alieblice# wall
abdarchi chaii biar
                                                                               
Broadcast Message from alieblice@de-10.04                                      
        (/dev/pts/0) at 17:35 ...                                              
                                                                              
barname kary emrooz:
8 AM -2:30 PM  zange tafrihhhh
                                                               ^D                
root@de-10:/home/alieblice# 


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


root@de-10:/home/alieblice# wall Desktop/broadcast
                                                                               
Broadcast Message from alieblice@de-10.04                                      
        (/dev/pts/0) at 17:37 ...                                              
                                                                               
ta 10 daghigheie dige hame dar salon egtemaat game sheed      ((genab raees))
^D                            
root@de-10:/home/alieblice# 


برای این که نخواد Crtl+d بزنین میتونین از روش های زیر استفاده کنین 
استفاده از echo 


root@de-10:/# echo Remember to brush your teeth! | wall
                                                                               
Broadcast Message from root@de-10.04                                           
        (/dev/pts/0) at 17:46 ...                                              
                                                                               
Remember to brush your teeth!                                                  
                                                                               
root@de-10:/# 



استفاده از >>>


root@de-10:/# wall <<<'Remember to brush your teeth!'
                                                                               
Broadcast Message from root@de-10.04                                           
        (/dev/pts/0) at 17:50 ...                                              
                                                                               
Remember to brush your teeth!                                                  
                                                                               
root@de-10:/#
 


نکته : اگه کاربرانی ورود هر نوع مسیجی رو بسته باشن به وسیلهی دستور mesg فقط کاربر روت میتونه به اون افراد متنی رو ارسال کند 



منبع : http://en.wikipedia.org/wiki/Wall_%28Unix%29

----------


## alieblice

دستور fdisk برای پارتیشن بندی یک هارد استفاده میشود
نکته : دستور fdisk کار فرمت کردنو انجام نمیده فقط پارتیشن رو میسازه 

در قالب بیسیک کلا سه نوع پارتیشن داریم
primary , extended , logical

حداکثر تعداد پارتیشن ها
primary : چهار
extended : یک
logical : درون پارتیشن extended تا 26 عدد 
عدد 26 رو مطمءن نیستم بعضی جاها به عنوان نا محدود نام بردن 

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

fdisk -l

alieblice@de-10:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe51ba496

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           2      119618   960823522    f  W95 Ext'd (LBA)
/dev/sda2          119619      121552    15526912   83  Linux
/dev/sda3          121552      121602      402432   82  Linux swap / Solaris
/dev/sda5               2      119618   960823521    7  HPFS/NTFS

Disk /dev/sdb: 320.1 GB, 320072933376 bytes
249 heads, 33 sectors/track, 76079 cylinders
Units = cylinders of 8217 * 512 = 4207104 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x41894189

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1       12462    51197952    7  HPFS/NTFS
/dev/sdb2           12462       76077   261361485    f  W95 Ext'd (LBA)
/dev/sdb5           12462       76077   261359616    7  HPFS/NTFS

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x465668a5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1      117794   946176000    7  HPFS/NTFS
/dev/sdc2   *      117794      121601    30582784    7  HPFS/NTFS
alieblice@de-10:~$ 


یا تو یک سیستم خلوت تر 

alieblice@ubuntu:/$ sudo fdisk -l

Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003f696

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         493     3952640   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             493         523      238593    5  Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5             493         523      238592   82  Linux swap / Solaris

Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004bbdd

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          30       30704   83  Linux
/dev/sdc2              31          70       40960   83  Linux
/dev/sdc3              71         102       32768   83  Linux
alieblice@ubuntu:/$ 

یا برای این که فقط پارتیشن های یک هاردو ببینین ادرس هارد هم بزنین 


alieblice@ubuntu:~$ sudo fdisk -l /dev/sdc

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004bbdd

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          30       30704   83  Linux
/dev/sdc2              31          70       40960   83  Linux
/dev/sdc3              71         102       32768   83  Linux
alieblice@ubuntu:~$


blkid
کد:
alieblice@de-10:~$ sudo blkid
/dev/sda2: UUID="b69e95f0-bcf7-409e-a898-f9e70d78d0f4" TYPE="ext4" 
/dev/sda3: UUID="69bc2dec-ef4f-487b-bf50-5e7c273596a9" TYPE="swap" 
/dev/sda5: LABEL="1-TB" UUID="FA402FC0402F828D" TYPE="ntfs" 
/dev/sdb1: UUID="D410B13310B11E04" TYPE="ntfs" 
/dev/sdb5: UUID="70E8BF68E8BF2B6C" TYPE="ntfs" 
/dev/sdc1: LABEL="1-TB-2" UUID="9AA05A1BA059FE67" TYPE="ntfs" 
/dev/sdc2: UUID="D6308EFC308EE2BB" TYPE="ntfs" 
alieblice@de-10:~$ 


اموزش blkid  قبلا کامل گفته شده 
http://forum.ubuntu.ir/index.php/top...html#msg145022


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

 extra functionality (experts only)

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

d = برای پاک کردن پارتیشن استفاده میشه 
l  =  هر پارتیشنی برای خودش کدی داره که میتونین با این اپشن کد هارو ببینین  در حالت عادی احتیاجی به این کدها پیدا نمیکنین مگر اینکه بخاین  پارتیشنایی مثل lvm بسازین
n = برای ساختن یک پارتیشن استفاده میشود
p = پارتیشنایی که هم اکنون روی هاردتون وجود داره رو نشون میدهد
q = خروج بدون ذخیره کردن چیزی
t = برای تغییر کد پارتیشن استفاده میشود
u = برای تغییر واحد ها بین sectors و cylinders  استفاده میشود 
w = ذخیره اطلاعات و خروج 


*چند مثال*
نکته:  من در اینجا از درایوهایی که توسط vmware player ایجاد شدن استفاده میکنم  که حجمشونم خیلی کم هستش زیر (( مگابایت 300)) برای سریع کردن کار 

مثال 1



در مثال شماره یک فقط 2 درایو از 3 درایو  روی هاردمونو پاک میکنیم
روش کار :
1 = هارد مورد نظرتونو توسط دستورایی که بالا نام بردم پیدا کنین
2 = دستور fdisk رو به همراه ادرس اون بنویسید 

alieblice@de-10:~$ sudo fdisk /dev/sdc 
نکته  : وقتی دستور fdisk رو میزنین وارد یک محیط دیگه میشید که فقط اپشن هایی  که بالا نام بردم و اپشنای دیگری که با زدن m میتونین ببینین   رو میتونین  استفاده کنین 

alieblice@de-10:~$ sudo fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): q

alieblice@de-10:~$ 


3  = بعد از این که وارد محیط شدین اگه m رو بزنین اپشن های قابل قبول رو  براتون میاره اگه p روبزنین پارتیشن های موجود روی اون هاردرو میاره 


alieblice@ubuntu:~$ sudo fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004bbdd

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          30       30704   83  Linux
/dev/sdc2              31          70       40960   83  Linux
/dev/sdc4              71         102       32768   83  Linux

Command (m for help): 


همون طور که میبینین در بالا 3 درایو درون هارد وجود دارد

 4  = باری پاک کردن یک درایو باید d رو بزنین که بعد از زدن d از شما شماره  درایو رو میپرسه که باتوجه به اطلاعاتی که در خروجی اپشن p گرفتین میتونین  درایو درست رو بدین
به این صورت که   اگه مثلا میخاین dev/sdc2 رو پاک کنین عدد 2 رو بدین و با این کار پارتیشن dev/sdc2 پاک میشود
نکته : هنوز پارتیشنتون به صورت واقعی پاک نشده اگه اشتباه زدین عدد رو میتونین با زدن q ((کیو کوچک)) هیچ چیزی رو ذخیره نکنین و خارج شید 
4-1 = کار بالا دو باره انجام بدین تا درایو بعدی رو هم پاک کنین 
4-2 = حالا p رو بننین تا ببینین که پاک شده 
5 = حرف w ((دبلیو کوچک)) رو بزنین و همه چیز ذخیره میشود 

خروجی کامل مثال یک :

alieblice@ubuntu:~$ sudo fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004bbdd

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          30       30704   83  Linux
/dev/sdc2              31          70       40960   83  Linux
/dev/sdc4              71         102       32768    5  Extended

Command (m for help): d
Partition number (1-5): 2

Command (m for help): d
Partition number (1-5): 4

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
alieblice@ubuntu:~$ 


عکس بعد از پاک کردن پارتیشن ها 




مثال 2
در  مثال دوم از همون درایو قبلی به همراه همون پارتیشن بندی که در پایان  ایجاد شد ((عکس پایانی مثال اول --عکس بالا )) استفاده میکنیم به این صورت 
که میخاهیم یک درایو از نوع extende بسازیم و درون اون دو درایو از نوه logical
تو این مثال مراحلو به صورت جزع جزع توضیح نمیدم دیگه به غیر از چند قسمتش 
1 = دستور fdisk رو به همراه ادرس هاردمون میزنیم 
سپس p رو میزنیم که درایو های موجود روی هاردو نشون بدهد 
سپس n رو میزنیم تا درایو جدید ایجاد کنیم 
2 = بعد از این که n رو زدیم از ما سوال میپرسه که چه نوع درایوی میخاین اضافه کنین ((extended یا primary )) 
از جایی که قراره یک extended بسازیم خوب من e رو انتخاب میکنم    
p = primary
e = extended
نکته : در اینجا گذینه logical رو نیاورد به این دلیل که پارتیشن logical داخل پارتیشن extende ساخته میشه 
3 = بعد از این که نوع پارتیشن رو تعیین کردین از شما یک شماره میخاد که اون میشه شماره درایوتون من 2 رو میدم 


alieblice@ubuntu:~$ sudo fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b8f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          20       20464   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (21-102, default 21):


4 = بعد از  مرحله بالا میرسیم به مرحله تعیین حجم درایو 
به  صورت پیش فرض حجم درایو رو به صورت cylinder  میاره که به شما میگه  میتونید از یک عدد مشخص تا عدد مشخص دیگری انتخاب کنین در این مثال عدد بین  ((21  تا 102 )) هستش. از جایی که خیلی کم پیش میاد کسی بخاد بر اساس  cylinder پارتیشن بندی کنه من اینجا بر اساس مگابایت یاد میدم
*4-1  = چگونه بر اثاث مگابایت پارتیشن یندی کنیم * 

همون  طور که در خروجی مرحله 1 تا 3 میبینین عدد انتخابی ما بین 21 تا 102 هستش  برای شروع بر اثاث مگابایت عدد 21 رو بزنین وقتی عدد 21 رو زدین از شما یک  عدد دیگر میخاد که در این قسمت میتونین عدد رو به صورت مگابایت کیلوبایت و  گیگابایت بدین 

+size{K,M,G}

همیشه  از اون عددی که میدین یک مقدار بزرگ ترشو میسازه دلیلشو نتونستم پیدا کنم   مثلا برای 170 مگابایت 179 مگابایت ساخت و برای 80 مگابایت حدود 85 تا 
اگه دلیلشو پیدا کردین به منم بگین 
مثلا برای این که 2350 مگابایت بشه سایز درایوتون عدد رو به این شکل بدین 

+2350M
به طور مشابه برای کیلوبلیت و گیگا بایت مثلا 10 گیگ --- 1000000کیلو بایت 

+10G
+100000K


در زیر 80 مگابایت تعیین کردم 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (21-102, default 21): 21
Last cylinder, +cylinders or +size{K,M,G} (21-102, default 102): +80M

Command (m for help):


5 = تا این جا دو درایو  داریم یکی از قبل با نوع primary و یکی هم که الان ساختیم با نوع extended 
حالا 2 درایو داخل پارتیشن extended رو میسازیم که از نوع logical میشن   
6 = مثل مرحله قبل n رو میزنیم بعد نوع درایو که در اینجا میشه l ((ال کوچیک )) رو میزنیم  و بعد مثل مرحله قبل حجمشو میدیم 
نکته : در اینجا گذینه extended نیامد چون یکی ازش میشه ساخت 
7 = دوباره همون کار مرحله 6 رو انجام میدیم تا دومی رو هم اضافه کنیم 
و بارای ذخیره کردن w رو میزنیم 
و همه چی ذخیره میشه 

خروجی کامل مثال دوم 


alieblice@ubuntu:~$ sudo fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b8f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          20       20464   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (21-102, default 21): 21
Last cylinder, +cylinders or +size{K,M,G} (21-102, default 102): +80M

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b8f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          20       20464   83  Linux
/dev/sdc2              21         101       82944    5  Extended

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (21-101, default 21): 21
Last cylinder, +cylinders or +size{K,M,G} (21-101, default 101): +50M

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b8f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          20       20464   83  Linux
/dev/sdc2              21         101       82944    5  Extended
/dev/sdc5              21          71       52208   83  Linux

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (72-101, default 72): 72
Last cylinder, +cylinders or +size{K,M,G} (72-101, default 101): 101

Command (m for help): p

Disk /dev/sdc: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009b8f2

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          20       20464   83  Linux
/dev/sdc2              21         101       82944    5  Extended
/dev/sdc5              21          71       52208   83  Linux
/dev/sdc6              72         101       30704   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
alieblice@ubuntu:~$ 

عکس نهایی مثال 2دوم 


منبع :
http://www.thegeekstuff.com/2010/09/linux-fdisk/
http://www.cyberciti.biz/faq/linux-h...fdisk-command/
http://www.cyberciti.biz/faq/linux-viewing-drive-partitions-with-fdisk-parted

----------


## alieblice

دسترسی  به هر فایل یا دایرکتوری توسط ۹بیت اطلاعات اضافه‌ای که به فایل یا  دایرکتوری چسبانده می‌شود برای ۳ کلاس ۳ بیتی کاربر, گروه کاربر و سایر  کاربران , تعیین می‌شود که به ترتیب با کدهای u(کاربر) , g(گروه) و  o(سایرین) مشخص می‌شوند. 0 یا 1 بودن بیت اول تعیین کننده دسترسی خواندن  (Read)برای صاحب فایل ( کاربر), بیت دوم امکان نوشتن (Write) و ایجاد تغییر  در فایل یا دایرکتوری مورد نظر و بالاخره بیت سوم امکان اجرای(eXecute)  فایل‌های اجرایی را مشخص می‌کند. سه بیت دوم این دسترسی‌ها را برای کلاس  گروه کاربر و سه بیت آخر دسترسی‌ها را برای سایر کاربران مشخص می‌کند. در  صورتی که یک مجوز به کاربری داده نشده باشد به جای مجوز مورد نظر(یکی از  حروف R,W یاX ) هنگام نمایش مجوزها، علامت دش (-) دیده می‌شود. آنچه در زیر  دیده می‌شود مجوز دسترسی کامل به یک فایل است. یعنی همه کاربران امکان  خواندن، نوشتن و اجرای فایل را دارند :
rwxrwxrwx


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

rwxr-x---

نمونه‌ای  از این مجوزها را می‌توانید با اجرای فرمان ls -l مشاهده نمایید. توجه  کنید که علاوه بر ۹بیت ذکر شده، یک کاراکتر اضافه نیز در ابتدای این رشته  وجود دارد که تعیین کننده نوع فایل است که برای فایل‌های عادی بصورت دش (-)  و برای دایرکتوری ها بصورت d دیده می‌شود:
 drwxr-xr-x



 -rwxr-xr-x

نکته:

مجوز پیش فرض برای فایل‌های جدید بصورت زیر است:



rw-r- - r--


و  در صورتی که فایلی توسط یکی از کامپایلرهای موجود اجرایی شده باشد x (یا  امکان اجرا کردن) به دسترسی‌ها اضافه می‌گردد. مجوز پیش فرض دسترسی به یک  دایرکتوری جدید نیز مشابه همین حالت است:

rwxr-xr-x


در صورتی که بخواهید مجوزهای پیش فرض را برای نشست جاری خود تغییر دهید می‌توانید از دستور umask استفاده کنید.

برای  تغییر مجوزهای یک فایل یا دایرکتوری کاربری که این اختیار را دارد (کاربر  ریشه یا صاحب فایل یا دایرکتوری) می‌تواند با دستور chmod این کار رابوسیله  یکی از دو روش زیر انجام دهد.

-در روش نخست پس از دستور chmod  می‌توان با علامت های "+" یا "–" یک یا چند مجوز را به کلاس ها افزود و یا  از آنها گرفت. در این حالت کلاس ها با کدهایی که در بالا ذکر شد تعیین می  شوند.مثلا:



#chmod go-rx anything


این  دستور تعیین می کند که مجوز خواندن و اجرای فایلی به نام anything از کلاس  گروه کاربر(u) و سایرین(o) گرفته شود و برعکس آن به صورت زیر است:



#chmod go+rx anything


-در  روش دوم مجموع سه سطح دسترسی(خواندن,نوشتن و اجرا) به صورت یک عدد بین صفر  تا هفت برای 3 کلاس کاربر, گروهش و سایرین به صورت زیر تعیین می شود و پس  از دستور chmod می آید. برای خواندن عدد چهار, برای نوشتن عدد دو و برای  اجرا عدد یک منظور می شود. یعنی هفت(1+2+4) نشان دهنده دسترسی کامل است در  نتیجه مثلا 777 نشان دهنده اعطای دسترسی کامل به همه کاربران است.مثلا:



#chmod 750 anything


این دستور نیز تعیین می کند که مجوزها بصورت زیر تغییر کنند:



rwxr-x---

منبع :
http://sat4u.org/showthread.php?t=237441&page=5

----------


## alieblice

دستور du شماره 2
برای به دست آوردن سایز یه دایرکتوری
du
این دستور همه  دایرکتوری های داخل دایرکتوری جاری رو سایزشون رو بهتون میگه. خط آخر هم  سایز دایرکتوری جاری رو میگه. توجه بشه که سایز ها در حالت عادی به صورت Kb  نشان داده میشوند.
 du /home/david
این فرمان size دایرکتوری /home/david رو میده
 du -h
این فرمان یه خروجی قابل فهم تری رو نشون میده. در این حالت اگر فایل‌ها به کیلوبایت باشه با K، اگه به مگابایت باشه با M و …
 du -ah
این دستور نه تنها دایرکتوری ها بلکه تمام فایل‌های داخل دایرکتوری جاری رو نشون میده
du -c
اندازه دایرکتوری جاری را به شکل زیر نشان میدهد:
30M.
30M total
من خودم درست متوجه نشدم که این دقیقاً به چه دردی میخوره اما این Total
میتونه جایی که میخوایم با دستور grep فقط اندازه نهایی دایرکتوری جاری رو پیدا کنیم مفید باشه.

 du -ch | grep total
این دستور فقط خط آخر را در خروجی خواهد داشت که اندازه دایرکتوری جاری را نشان میدهد.
 du -s
بهترین  راه و ساده‌ترین راه برای فهمیدن اندازه دایرکتوری جاری.(بسیار خلاصه و  فقط اندازه دایرکتوری جاری رو نشون میده)که البته بهتره که یه h هم بهش  اضافه کنید تا خوانا تر بشه.
 du –exculde=mp3
خوب این دستور میاد  اندازه دایرکتوری جاری و زیر دایرکتوری ها رو اعلام میکنه، به جز اون  فایل‌هایی رو که تو نامشون mp3 وجود داره. بنابر این اگه فایل‌های Mp3 در  دایرکتوری جاری داشته باشیم، اندازه اونا اعلام نمیشه.
دستور df
برای به دست آوردن مقدار فضای خالی دیسک/اندازه استفاده شده

df
با زدن این دستور خروجی نمایش داده شده شامل ۶ ستون است که کاملاً قابل فهم هستند. توجه شود که اندازه ها بر اساس کیلوبایت هستند
 df -h 
همونطور که قبلاً هم گفته شد، option -h برای قابل فهم تر شدن خروجی به کار میره
اکثر کاربر ها از option دیگه ای چندان استفاده نمیکنن. بنابر این df رو در همین حد توضیح میدیم.

منبع:
http://www.codecoffee.com/tipsforlinux/articles/22.html
دستور du شماره یک 
https://barnamenevis.org/showthread.p...B1%D8%B3%DB%8C
وسطای صفحه هستش 

منبع :
http://forum.ubuntu.ir/index.php/top...html#msg151917

----------


## alieblice

دستور at برای زمان بندی کارها , مثلا اجرا شدن یک دستور در زمان خاصی یا اجرا شدن یک اسکریپت در زمان خاصی استفاده میشود 
دستور مشابه دیگه ای مثل دستور at هستش که اسمش cron هستش 
اموزش cron  :
http://wiki.ubuntu.ir/CronHowto?highlight=%28cron%29
یکی  از فرق های مهم cron و at در این هست که cron قابلیت تکرار شدن رو داره ((  مثلا هر روز در زمان خاصی کار خاصی انجام بشه)) اما at کاری که بهش دادیم  رو یک بار انجام میدهد


*شکل کلی دستور* 

at [-V] [-q queue] [-f file] [-mldv] timespec...
at [-V] [-q queue] [-f file] [-mkdv] [-t time]
یا به شکل ساده تر 

 at time date
تعیین زمان در at 

تنها قسمت مهم دستور at تعیین زمان اجرا شدن دستور هستش
در  دستور at وقتی که دستور به همراه زمان معیین شده زدین یک صفه باز میشه که  به صورت زیر هستش در اون صفه میتونین دستور مورد نظر خودتونو بنویسین و سپس  کلید ترکیبی  Ctrl+D رو بزنین تا  اجرا بشه 


alieblice@ubuntu:~$ at 12:00 tomorrow + 3 min
warning: commands will be executed using /bin/sh
at> ls > ~/Desktop/ls.txt
at>  حالا کنترل= دی رو بزنین  <EOT>
job 73 at Fri Jul 10 12:03:00 2009
alieblice@ubuntu:~$
 _جزع به جزع دستور بالا در پایین تر توضیح داده شده_ 

*معنی کلمات در تعیین زمان* 

 اگه فرض کنیم ساعت وتاریخ  هم اکنون  

 10:00 AM Tuesday, September 18, 2001باشد ,, هر کدوم از زمان یندی های زیر معنیشونو جلوشون نوشته 


at noon =     12:00 PM September 18, 2001
at midnight =     12:00 AM September 19, 2001
at teatime =     4:00 PM September 18, 2001
at tomorrow =     10:00 AM September 19, 2001
at noon tomorrow =     12:00 PM September 19, 2001
at next week =     10:00 AM September 25, 2001
همون  طور که در بالا میبینین بعضی کلمات معنی خاصی دارن مثلا noon  یعنی ساعت  12:00 pm  و کلمات به صورت ترکیبی هم میتونن استفاده بشن مثلا 

 at noon tomorrowیعنی فردا ((روز بعد از امروز )) ساعت 12:00 pm


 at next weekاگه امروز سه شنبه ساعت 10 صبح باشه دستور بالا میگه *هفته ی دیگه*سه شنبه ساعت 10 صبح کار انجام بشه 


*مشخص کردن روز های هفته* 

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

 day_of_week     : SUN | MON | TUE | WED | THU | FRI | SATاز چپ به راست به ترتیب بالا  یعنی

 Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |  چند مثال : 

 at next monday  =    10:00 AM September 24, 2001 اگه الان ساعت 10 صبح باشه یک شنبه بعدی همین ساعت دستور اجرا میشه 


 at 04:46 am friروز جمعه ساعت 4:46 دقیقه صبح کارو انجام میده 



*نام گذاری ماه ها* 

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

month_name      : JAN | FEB | MAR | APR | MAY | JUN
                | JUL | AUG | SEP | OCT | NOV | DEC

چند مثال

 at 2:30 PM Sept 21ساعت 2:5 ظهر در تاریخ 21 سپتامر


 at noon jul 24
*چند مثال اضافه از تمام قسمتایی که تا الان گفتیم*
اگه فرض کنیم هم اکنون ساعت و تاریخ 

 10:00 AM Tuesday, September 18, 2001 
at 9:00 AM =    9:00 AM September 19, 2001
at 2:30 PM =     2:30 PM September 18, 2001
at 1430 =    2:30 PM September 18, 2001     
at 2:30 PM tomorrow =     2:30 PM September 19, 2001
at 2:30 PM next month =     2:30 PM October 18, 2001
at 2:30 PM Fri  =    2:30 PM September 21, 2001
at 2:30 PM Sept 21  =    2:30 PM September 21, 2001
at 2:30 PM 9/21/2010 =     2:30 PM September 21, 2010 
at   5   pm   Friday = خودتون حدث بزنین
نکته : بعد از next مقادیری که  بر اثاث واحد های زیر باشه  میتونه بیاد 

    * minute[s]
    * hour[s]
    * day[s]
    * week[s]
    * month[s]
    * year[s]

*
نکته* : 
در 

 at 1430 =    2:30 PM September 18, 2001     از am و pm   نمیتونین استفاده کنین باید زمان رو به صورت 24 ساعته بزنین یعنی مثلا به جای 2 ظهر بزنین 14 



*زمان معکوس  ((Countdown))*

شاید  بخاین کاری رو در مثلا 5 دقیقه اینده انجام بدین یا مثلا در فردا پنج  دقیقه بعد از ساعت 12 ظهر خوب این 5 دقیقه ها رو باید به صورت زیر بنویسین 
نکته : مقاکد:
مفادیری که بعد از بعلاوه می ایند بر اثاث  یکی از این واحد های زیر میتونه باشه 
* minute[s]
    * hour[s]
    * day[s]
    * week[s]
    * month[s]
    * year[s]
مثلا برای این که کاری رو در 25 دقیقه اینده از هم اکنون انجام بدین دستورو این جوری بنویسین 

 at now +15 minبه جای min میتونین minutes یا minute هم بزارین 


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

at noon tomorrow +3 hours
یا
at 12:00 pm tomorrow +3 hours

جند مثال از این قسمت 
اگه فرض کنیم زمان و تاریخ هم اکنون 

 10:00 AM Tuesday, September 18, 2001 معنی هر مثال جلوش نوشته شده 

at now + 30 minutes =     10:30 AM September 18, 2001
at now + 1 hour =     11:00 AM September 18, 2001
at now + 2 days =     10:00 AM September 20, 2001
at 4 PM + 2 days =     4:00 PM September 20, 2001
at now + 3 weeks =     10:00 AM October 9, 2001
at now + 4 months =    10:00 AM January 18, 2002
at now + 5 years =    10:00 AM September 18, 2007

*چند مثال واقعی به همراه کار* 

روش  کار به این صورت هستش که شما اول دستور at رو به همراه زمان اجرا شدنش  مینویسین و سپس برای شما یک صفه باز میشه که در اون جا میتونین دستور مورد  نظرتونو بنویسین  و برای این که  کار خود را ذخیره کنین کلید ترکیبی Ctrl+D رو بزنین 

در دستور زیر کاری رو فردا 3 دقیقه بعد از ساعت 12 انجام میدهد 

alieblice@ubuntu:~$ at 12:00 tomorrow + 3 min
warning: commands will be executed using /bin/sh
at> ls > ~/Desktop/ls.txt
at> <EOT>
job 73 at Fri Jul 10 12:03:00 2009
alieblice@ubuntu:~$
دستور بالا رو میتونین به صورت زیر هم بنویسین که فکر کنم راحت تر باشه 

alieblice@ubuntu:~$ echo ls > ~/Desktop/ls.txt | at 12:00 tomorrow + 3 min
warning: commands will be executed using /bin/sh
job 74 at Fri Jul 10 12:03:00 2009
alieblice@ubuntu:~$ 

*
اپشن v- (( وی کوچک ))*

اپشن v- برای نشون دادن زمان اجرا شدن دستور در همان اول کار یعنی قبل از امدنه صفحه ای که شما توش دستورو مینویسین 

alieblice@ubuntu:~$ at -v noon jul 24 + 10 min
Fri Jul 24 12:10:00 2009

warning: commands will be executed using /bin/sh
at> cp -r /home/alielbice /var/backup/alieblice-bkp
at> <EOT>
job 77 at Fri Jul 24 12:10:00 2009
alieblice@ubuntu:~$ 
*

اپشن f-* 

اپشن f- برای دادن لیستی از کار هایی که میخایم انجام بدیم از طریق یک فایل متنی هستش 

alieblice@ubuntu:~$ cat myjobs.txt
/home/sathiya/calculate-space.sh
/path/to/a/shell-script
/path/to/any/command/or/script
alieblice@ubuntu:~$ at -f /home/alieblice/jobs.txt now +1 hour
warning: commands will be executed using /bin/sh
job 79 at Thu Jul  9 08:07:00 2009
alieblice@ubuntu:~$
*

اپشن l-* 
نکته :  به جای  l- میتونین از *atq* هم استفاده کنین 
این اپشن و atq برای لیست کردن کار هایی که هنوز انجام نشده اند و در انتظار رسیدن زمان تعیین شده هستن استفاده میشه 

alieblice@ubuntu:~$ at -l
79    Thu Jul  9 08:07:00 2009 a alieblice
77    Fri Jul 24 12:10:00 2009 a alieblice
73    Fri Jul 10 12:03:00 2009 a alieblice
74    Fri Jul 10 12:03:00 2009 a alieblice
alieblice@ubuntu:~$ 
همون طور که میبینین هر کار برای خودش عددی دارد که از اون برای پاک کردن و دیدن محتویات اون استفاده میشه 
* 
پاک کردن یک کار* 

از اپشن d- یا atrm میتونین استفاده کنین 
برای این کار نیاز به شماره اون کار دارین که میتونین با لیست کردنشون شمارشونو یدست بیارین 
مثلا در زیر کار به شماره  77 رو پاک میکنیم 

alieblice@ubuntu:~$ atq
79    Thu Jul  9 08:07:00 2009 a alieblice
77    Fri Jul 24 12:10:00 2009 a alieblice
73    Fri Jul 10 12:03:00 2009 a alieblice
74    Fri Jul 10 12:03:00 2009 a alieblice
alieblice@ubuntu:~$ 
alieblice@ubuntu:~$ at -d 77
alieblice@ubuntu:~$ 
alieblice@ubuntu:~$ at -l
79    Thu Jul  9 08:07:00 2009 a alieblice
73    Fri Jul 10 12:03:00 2009 a alieblice
74    Fri Jul 10 12:03:00 2009 a alieblice
alieblice@ubuntu:~$


*
دیدن اطلاعات یک کار* 
برای این کار از اپشن c- ((سی کوچک )) استفاده کنین 

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

alieblice@ubuntu:~$ at -l
73    Fri Jul 10 12:03:00 2009 a alieblice
74    Fri Jul 10 12:03:00 2009 a alieblice
alieblice@ubuntu:~$ 
alieblice@ubuntu:~$ at -c 73
#!/bin/sh
# atrun uid=1000 gid=1000
# mail alieblice 0
umask 22

خروجی کامل نیست 


محدود کردن دسترسی به at 

برای  این که دسترسی کاربران رو به دستور at ببندین یا دسترسی رو برای یک سری  کار بر خاص باز بگذارین میتونین از 2 فایل زیر استفاده کنین 
سیستم اول فلدر at.allow رو چک میکنه اگه وجود نداشت میره سراغ at.deny 
/etc/at.allow
       /etc/at.deny
مثلا اگه کاربر tia رو به فایل at.deny اضافه کنین موقعی که کاربر tia بخاد از at استفاده کنه این اررور رو میگیره 

tia@ubuntu:~$ at 12:00 pm 
You do not have permission to use at.
tia@ubuntu:~$ 
اگرم بخاین که at رو برای فقط کاربرای مشخصی باز بگذارین از فلدر at.allow استفده کنین 
ممکنه این فلدر وجود نداشته باشه میتونین بسازینش 

*
فایل های مرتبط به at* 

/var/spool/cron/atjobs
       /var/spool/cron/atspool
       /var/run/utmp
       /etc/at.allow
       /etc/at.deny


منابع :
http://www.thegeekstuff.com/2010/06/...mand-examples/
http://publib.boulder.ibm.com/infoce...ixcmds1/at.htm
http://pcsupport.about.com/od/comman...at-command.htm
http://www.softpanorama.org/Utilities/at.shtml
http://content.hccfl.edu/pollock/Unix/AtDemo.htm

----------


## alieblice

دستور scp  برگرفته از secure copy  برای کپی کردن اطلاعات از یک کامپیوتر به یک کامپیوتر دیگر استفاده میشود 
درواقع تمام امکانات دستور cp را دارد با این تفاوت که قابلیت انتقال داده بین ۲ کامپیوتر نیز وجود دارد (( یعنی فقط به صورت لوکال کار نمیکنه به صورت رموت هم کار میکنه ))
یکی از مزیت هایی که این دستور دارد امن بودن اون به واسته استفاده از تونل ssh هستش ((همه چیز encrypt میشه))

شکل کلی دستور 

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
         [-l limit] [-o ssh_option] [-P port] [-S program]
         [[user@]host1:]file1 ... [[user@]host2:]file2

شکل قابل فهم تر 

$ scp REMOT-SYSTEM:ADRESS  LOCAL-SYSTEM-ADRESS  


در دستور زیر یک فایل رو از سیستم رموت به سیتم لوکال انتقال میدهیم 
alieblice@de-10:~$ scp root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi /home/alieblice/
root@172.16.49.21's password: 
ShaunTheSheep_Part_07.avi                     100%   49MB  24.6MB/s   00:02    
alieblice@de-10:~$ 


root@172.16.49.21  = یوزرنیم به همراه ادرس سیستم رموت 
/var/www/ShaunTheSheep_Part_07.avi  = اسم و ادرس فایلی که میخایم کپیش دیم به سیستم لوکال
/home/alieblice/   = محل ذخیره شدن فایل در سیستم لوکال 


*کپی کردن  فایل و تغییر اسم ان* 
برای این کار مثل مثال بالا عمل میکنیم با این تفاوت که وقتی محل ذخیره شدن اونو در سیستم لوکال انتخاب میکنیم اسمش را هم  انتخاب میکنیم
alieblice@de-10:~$ scp  root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi /home/alieblice/Videos/scp/cartoon-07.avi
root@172.16.49.21's password: 
ShaunTheSheep_Part_07.avi                     100%   49MB  49.1MB/s   00:01    
alieblice@de-10:~$ 

حالا اگه ls محل ذخیره شدنو بگیریم میبینین که اسم فایل تغییر کرده 
alieblice@de-10:~$ ls /home/alieblice/Videos/scp/
cartoon-07.avi
alieblice@de-10:~$

*کپی کردن فایل ها* 
برای این کار مثل دستور cp از r- استفاده کنین 
در دستور زیر دایرکتوری DNSvideo رو از سیستم رموت به لوکال کپی میکنیم
alieblice@de-10:~$ scp -r root@172.16.49.21:/var/www/DNSvideo /home/alieblice/Documents/
root@172.16.49.21's password: 
YouTube - ‪Setting Up and Configuring a DNS 100%   20MB  20.1MB/s   00:01    
YouTube - Setup DNS Server Quick & Simple.flv 100% 9288KB   9.1MB/s   00:00    
YouTube - ‪Setting Up and Configuring a DNS 100%   20MB  19.6MB/s   00:00    
YouTube - ‪Instala y configura Bind 9 en Ub 100%   10MB  10.2MB/s   00:01    
YouTube - ‪Setting Up and Configuring a DNS 100%   15MB  15.1MB/s   00:00    
YouTube - install dan konfigurasi bind9 (DNS) 100% 6742KB   6.6MB/s   00:00    
YouTube - Setting Up and Configuring a DNS Se 100%   17MB  17.5MB/s   00:00    
alieblice@de-10:~$ 


اگر از -r استفده نکنین این اررور رو میده 
alieblice@de-10:~$ scp root@172.16.49.21:/var/www/DNSvideo /home/alieblice/Documents/
root@172.16.49.21's password: 
scp: /var/www/DNSvideo: not a regular file


*Local Copy*

برای این کار دقیقه مثل دستور cp عمل میکنیم 
alieblice@de-10:~$ scp -r /home/alieblice/Documents/DNSvideo ~/


*انتقال فایل از لوکال به رموت* 

برای این کار اول ادرس فایل در لوکال رو بدین و سپس ادرس و محل ذخیره شدن در رموت را بدهید 
alieblice@de-10:~$ scp /home/alieblice/Videos/ShaunTheSheep_Part_18.avi root@172.16.49.21:
root@172.16.49.21's password: 
Permission denied, please try again.
root@172.16.49.21's password: 
ShaunTheSheep_Part_18.avi                     100%   49MB  49.3MB/s   00:01    
alieblice@de-10:~$ 

نکته : اگر برای ذخیره شدن فایل یا برای کپی شدن فایل در سیستم رموت ادرسی رو انتخاب نکنیم مثل بالا به طور پیش فرض home دایرکتوری استفاده میشه 


*توضیح بعضی از اپشن ها* 

-B
برگرفته از batch mode بیشتر در اسکریپت ها استفاده میشه و باعث میشه که از interactive authentication methods
 نتونین استفاده کنین  وباید از روش هایی مثل key  authenticationباید استفاده کنین 

-C
(سی بزرگ)  برای فشرده سازی استفاده میشود که در سرعت های پایین باعث بالا رفتم سرعت میشه ولی در سرعت های بالا فقط باعث کندی سرعت میشه  

-l 
برای محدود کردن سرعت کپی کردن فایل استفاده میشود بر اثاث Kbit/s

در زیر سرعت 1000 کلو بیت بر ثانیه استفاده شده که برای تبدیل ان به کیلو بایت بر ثانیه باید ان را تقسیم بر 8 کنین   1000/8=125
در مثال زیر اگه توجه کنین بعد از مدت کوتاهی سرعت به 125 رسیده 

مثال :
alieblice@de-10:~$ scp -l 1000 root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi ~/
root@172.16.49.21's password: 
ShaunTheSheep_Part_07.avi                       0%  400KB 141.0KB/s   05:53 ETA
ShaunTheSheep_Part_07.avi                       1%  528KB 139.7KB/s   05:56 ETA
ShaunTheSheep_Part_07.avi                       7% 3520KB 125.8KB/s   06:11 ETA^


-P
برای مشخص کردن پرت ارتباطی استفاده میشود 
نکته : این جا از پی بزرگ استفاده شده بر عکس ssh که از پی کوچک استفاده میشود دلیلش اینه که در rcp از پی کوچک برای کار دیگری استفاده میشده 

-p

برای شما quiet mode رو فعال میکنه به تفاوتش در مثال زیر توجه کنین 
alieblice@de-10:~$ scp -q root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi ~/
root@172.16.49.21's password: 
alieblice@de-10:~$

درصد و سرعت انتقال رو نشون نمیده 

-v

از وی برای گرفتن اطلاعات اضافی تری در باره ی نوع اتصال و چیز های دیگه میتونین استفاده کنین 
از وی تا 3 بار میتونین استفاده کنین که سومین وی خیلی اطلاعات دقیقی میده

مثال برای یک وی  
alieblice@de-10:~$ scp -v root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi ~/
Executing: program /usr/bin/ssh host 172.16.49.21, user root, command scp -v -f /var/www/ShaunTheSheep_Part_07.avi
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 172.16.49.21 [172.16.49.21] port 22.
debug1: Connection established.
debug1: identity file /home/alieblice/.ssh/identity type -1
debug1: identity file /home/alieblice/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-4096
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-4096
debug1: identity file /home/alieblice/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6
debug1: match: OpenSSH_5.5p1 Debian-6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '172.16.49.21' is known and matches the RSA host key.
debug1: Found key in /home/alieblice/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/alieblice/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/alieblice/.ssh/identity
debug1: Trying private key: /home/alieblice/.ssh/id_dsa
debug1: Next authentication method: password
root@172.16.49.21's password: 
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.utf8
debug1: Sending command: scp -v -f /var/www/ShaunTheSheep_Part_07.avi
Sending file modes: C0755 51482624 ShaunTheSheep_Part_07.avi
Sink: C0755 51482624 ShaunTheSheep_Part_07.avi
ShaunTheSheep_Part_07.avi                     100%   49MB  49.1MB/s   00:01    
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 14816, received 51535384 bytes, in 1.3 seconds
Bytes per second: sent 11794.2, received 41024565.4
debug1: Exit status 0
alieblice@de-10:~$ 


مثال برای 2 وی 

alieblice@de-10:~$ scp -vv root@172.16.49.21:/var/www/ShaunTheSheep_Part_07.avi ~/

خروجیش رو نمیزارم چون خیلی زیاد بود 


دستور مشابه دیگری به اسم   rsync  با امکانات خیلی بیشتری وجود دارد که قبلا اموزشش گذاشته شده 

منبع :
Pro OpenSSH (2005).pdf
ادرس دانلود کتاب : 
http://ubuntuone.com/p/12CZ/

----------


## alieblice

*نکته :* 
خروجی هر دستور  به صورت عکس هم قرار گرفته برای درک بهتر 
 اگه عکس ها دیده نمیشن از ادرس زیر میتونین عکس هارو ببینین (( شماره هر عکس رو بالاش با رنگ ابی قرار دادم ))
http://alieblice.persiangig.com/image/grep-pic/
یا از این ادرس دانلود کنین 
http://ubuntuone.com/p/15nL/

 

دستور grep برای پیدا کردن یک نوشته  در بین تعداد زیادی نوشته استفاده میشه که خروجیش میتونه به صورت های مختلف باشه مثلا :
خط هایی که اون نوشته مورد نظر رو دارا هستن رو نشون بده
تعداد خط هایی که نوشته در انها منطبق شده نشون بدهد 
....
..
.

*شکل کلی دستور* 

grep [OPTION]... PATTERN [FILE]...یا
grep "literal_string" filename[size=13pt]نکته : [/size]

در طی اموزش از 3 فایل به نام های  demo و demo2 و demo3  استفاده میشه که متن داخلشون به ترتیب به صورت زیر هست 

demo 
alieblice@de-10:~$ cat demo
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

demo2
alieblice@de-10:~$ cat demo2
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.demo3
alieblice@de-10:~$ cat demo3
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

 * e - go to the end of the current word.
 * E - go to the end of the current WORD.
 * b - go to the previous (before) word.
 * B - go to the previous (before) WORD.
 * w - go to the next word.
 * W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.جستوجو برای یک کلمه  در متن 
این دستور ساده ترین نوع دستور grep هستش که به صورت زیر عمل میکنیم 
grep "literal_string" filenameمثال
قبل از زدن دستور زیر فایل demo رو با محتویاتی که اول اموزش گذاشتم بسازید 

در مثال زیر به دنبال کلمه this میگردیم 

[code]alieblice@de-10:~$ grep "this" demo
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.
alieblice@de-10:~$ 
*1*



جستوجو برای یک کلمه در چندین فایل
برای این کار فقط لازم اسم فایلارو پشت سر هم با یک فاصله بنویسین 

مثال 
قبل از زدن دستور زیر  فایل demo2 رو بسازین 

[code]alieblice@de-10:~$ grep "this" demo demo2
demo:this line is the 1st lower case line in this file.
demo:Two lines above this line is empty.
demo:And this is the last line.
demo2:this line is the 1st lower case line in this file.
demo2:Two lines above this line is empty.
demo2:And this is the last line.
*2*



همون طور که در بالا میبینین اول هر خط نوشته که هر خط ماله چه فایلی هست 

دستور بالا رو میتونین به این صورت هم بنویسین 
alieblice@de-10:~$ grep "this" demo*حساس نبودن به حروف بزرگ و کوچک بوسیله i- 
در حالت عادی grep حساس به حروف بزرگ و کوچک هستش اگه با i- برای the جستوجو کنیم تمام کلمات THE و The  و the رو شامل میشه 
alieblice@de-10:~$ grep -i "the" demo
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.
alieblice@de-10:~$ [size=12pt]*4*[/size]


استفاده از regular expression در grep 
grep به خوبی از regular expression پشتیبانی میکند که روش استفادشم مثل مثال اول هستش 
اطلاعات بیشتر در مورد regular expression رو از ادرسهای زیر میتونین بخونبن 
http://www.thegeekstuff.com/2011/01/...-grep-command/
http://www.thegeekstuff.com/2011/01/...80%93-part-ii/
http://www.grymoire.com/Unix/Regular.htmlمثال 
alieblice@de-10:~$ grep "lines.*empty" demo
Two lines above this line is empty.
alieblice@de-10:~$
*
5
*


در بالا grep برای هر چیزی که با lines شروع بشه و با empty به پایان برسه که در بینشون هر چیزی میتونه باشه جستو جو میکنه 

جستوجو فقط برای کلمه خاصته شده 
اگه با grep کلمه is رو جستوجو کنیم کلمات زیر رو هم جزو خروجی میاره 
“is”, “his”, “this”
حالا اگه بخایم که فقط دنبال is بگرده از w- میتونیم استفاده کنیم 

عکس grep با اپشن i-
*6*

عکس grep با اپشن w- 

alieblice@de-10:~$ grep -iw "is" demo
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.
alieblice@de-10:~$ *7*]



نشون دادن چند خط قبل یا بعد یا دوروبر نوشته پیدا شده    -A, -B and -C     
برای این قسمت فایل demo3 رو بسازین

نشون دادن N خط بعد نوشته تطبیق شده    با استفاده از A-

alieblice@de-10:~$ grep -A 3 -i "example" demo3
Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.
alieblice@de-10:~$*8*]


نشون دادن N خط قبل از نوشته تطبیق شده    با استفاده از B-

alieblice@de-10:~$ grep -B 2 "single WORD" demo3
Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
alieblice@de-10:~$*9
*


نشون دادن چند خط دورو بر نوشته تطبیق شده با استفاده از C- ((سی بزرگ))

alieblice@de-10:~$ grep -C 2 "Example" demo3
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
alieblice@de-10:~$ *10*]


جستوجو در داخل تمام فایل ها و ساب دایرکتوری ها با استفاده از r-
grep -r "ramesh" *بر عکس کردن جستوجو   با استفاده از v-  

با این کار تمام خط هایی که با کلمه تطبیق نیافته اند نشون داده میشن 

alieblice@de-10:~$ grep -v "go" demo3
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:


WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.
alieblice@de-10:~$*11*


همون طور که میبینین در عکس خروجی رنگی وجود ندارد


جستو جو هم زمان برایه چند نوشته  به وسیله e-
برای این کار دستورو به این شکل مینویسیم 
grep -v -e "pattern" -e "pattern"مثال :
alieblice@de-10:~$ grep -e "is" -e "line" demo
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.
alieblice@de-10:~$ *12*]



میتونین خط هایی که هیچکدان از نوشته های مورد نظر رو ندارن هم پیدا کنین که به این شکل میشه 
alieblice@de-10:~$ grep -ve "is" -e "line" demo
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.*13*]




شمردن خط هایی که نوشته تطبیق شده رو داراست به وسیله c- 

alieblice@de-10:~$ grep -c "go" demo3
6
alieblice@de-10:~$یا

alieblice@de-10:~$ grep -c this demo
3
alieblice@de-10:~$نشون دادن فایل هایی که نوشته مورد نظر درون انها تطبیق شده بوسیله l-

alieblice@de-10:~$ grep -l this *
demo
demo2یا
alieblice@de-10:~$ grep -l this demo*
demo
demo2نشون دادن خطی که در ** نوشته تطبق شده بوسیله n-
alieblice@de-10:~$ grep -n "go" demo3
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.
alieblice@de-10:~$ 
*16*


همون طور که میبینین شماره خط رو اول هر خط نوشته 

رنگی کردن 

به طور پیش فرض grep از رنگ قرمز برای مشخص کردن متن های تطبیق یافته استفاده میکند که در عکس های بالا دیده میشه 
حالا اگه بخاین رنگش رو تغییر بدین راحت ترین روش اینه که یک خط مثل خط پایین رپ به فایل 
.bashrcکه در home دایرکتوری تون هست قرار بدین ((  نکته :  اول فایل یک نقطه داره که باعث مخفی شدنش میشه ))
نمونه خط :
export GREP_OPTIONS='--color=auto' GREP_COLOR='COLOR'در خط بالا به جای COLOR کد رنگ مورد نظرتونو بزارین 

چند نمونه رنگ 
export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'*17*


export GREP_OPTIONS='--color=auto' GREP_COLOR='1;37;41'*18*


export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'*19*



export GREP_OPTIONS='--color=auto' GREP_COLOR='7'منبع : 
http://www.thegeekstuff.com/2009/03/...mand-examples/
http://www.debian-administration.org/articles/460

----------


## alieblice

ما با این دستور میتونیم یه سری تغییرات روی یوزر های لینوکسی بدیم .
    همون طور که می بینید دستور usermod شامل 17 آپشن هست که یکی یکی توضیح میدم .
    البته آپشن های


    -L
    -p 
    -U

    به صورت انحصاری هست و اگر بخوایم از این 3 تا آپشن استفاده کنم فقط در  یک دستور باید یکی از این آپشن هارو قرار بدیدم یعنی همزمان نمیتونیم از  آپشن های -p و -L استفاده کرد .



    root@debian:~# usermod --help
    Usage: usermod [options] LOGIN

    Options:
      -c, --comment COMMENT         new value of the GECOS field
      -d, --home HOME_DIR           new home directory for the user account
      -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
      -f, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -g, --gid GROUP               force use GROUP as new primary group
      -G, --groups GROUPS           new list of supplementary GROUPS
      -a, --append                  append the user to the supplemental GROUPS
                                    mentioned by the -G option without removing
                                    him/her from other groups
      -h, --help                    display this help message and exit
      -l, --login NEW_LOGIN         new value of the login name
      -L, --lock                    lock the user account
      -m, --move-home               move contents of the home directory to the
                                    new location (use only with -d)
      -o, --non-unique              allow using duplicate (non-unique) UID
      -p, --password PASSWORD       use encrypted password for the new password
      -s, --shell SHELL             new login shell for the user account
      -u, --uid UID                 new UID for the user account
      -U, --unlock                  unlock the user account
      -Z, --selinux-user            new SELinux user mapping for the user account

    root@debian:~#


    آپشن -c :
    با این آپشن میتونیم یه توضیح مختصر برای یک یوزر بنویسیم مثلا :


    root@debian:~# usermod -c Administrator vahid

    با توجه به دستور بالا ما گفتیم که یوزر vahid مدیر هست .

    آپشن -d :
    با این آپشن میتونیم ست کنیم home directory یک یوزر رو , توی ویندوز  مثلا c:\users\vahid هست که میتونیم توی لینوکس به صورت دیفالت در home یک  فایل به اسم خود یوزر ساخته میشه و Home Directory اون شخص میشه . به طور  مثال برای تغییر Home Directory یک کاربر :

    root@debian:~# usermod -d /home2/vahid vahid


    آپشن -e :
    با این آپشن میتونیم تاریخ انتقضای یک کاربر رو ست کنیم به طور مثال :

    root@debian:~# usermod -e 2020-10-10 vahid

    با توجه به دستور بالا ما گفتیم که یوزر vahid یوزر کاربریشون در تاریخ 2020-10-10 باطل بشه و دسترسی به سیستم نداشته باشه .

    آپشن -f :
    با این آپشن میتونیم ست کنیم که زمانی که پسورد Expire شد یه مدت بر  حسب روز به کاربر وقت داده بشه که پسوردشو عوض کنه . برای مثال :

    root@debian:~# usermod -f 7 vahid

    اینجا ست کردیم که بعد از اینک پسورد کاربری vahid باطل شد 7 روز وقت داشته باشه تا پسورش خودشو عوض کنه .

    آپشن -g :
    با این آپشن میتونیم گروه کاربری رو تغییر بدیم برای مثال :

    root@debian:~# id vahid
    uid=1000(vahid) gid=1000(vahid) groups=1000(vahid)
    root@debian:~# usermod -g root vahid
    root@debian:~# id vahid
    uid=1000(vahid) gid=0(root) groups=0(root)

    توی دستور های بالا اول ما ای دی یوزر vahid رو چک کردیم . دیدم یوزر و  گروه هر دو vahid هست بعد با دستور usermod یوزر vahid رو در گروه root  قرار دایدم .

    آپشن -G :
    با این آپشن میتونیم یک یوزر رو در گروه قرار بدیدم برای مثال :

    root@debian:~# usermod -G vahid vahid
    root@debian:~# id vahid
    uid=1000(vahid) gid=0(root) groups=0(root),1000(vahid)

    خوب ما میبینم که علاوه بر اینکه یوزر Vahid در گروه خودش هست در گروه root هم هست .

    آپشن -a :
    زمانی که ما از دستور های -G استفاده میکنیم فقط ما کاربر رو به یک  گروه ها اضافه میکنیم ولی اگه یه زمان بخوایم در چندین گروه قرار بگیره از  -a استفاده میکنیم برای مثال :

    root@debian:~# usermod -aG sales vahid
    root@debian:~# id vahid
    uid=1000(vahid) gid=0(root) groups=0(root),1002(sales)
    root@debian:~# usermod -aG vahid vahid
    root@debian:~# id vahid
    uid=1000(vahid) gid=0(root) groups=0(root),1000(vahid),1002(sales)

    آپشن -l :
    با این آپشن میتونیم یوزر کاربری رو اسمشو عوض کنیم برای مثال :

    root@debian:~# usermod -l master sirous

    در مثال بالا یوزر کاربری sirous به یوزر master تغییر کرد

    آپشن -L :
    با این آپشن خیلی ساده یک یوزر رو دسترسیشو قطع میکنیم در واقع میبیندیمش برای مثال :

    root@debian:~# usermod -L master

    در مثال بالا یوزر master لاک شد و دیگه دسترسی به سیستم نداره

    آپشن -m :
    با این آپشن میتونیم home Directory یک یوزر رو منتقل کنیم به یک مکان دیگه برای مثال :

    usermod -m -d /home/master master

    در مثال بالا home directory منتقل میشه به /home/master

    آپشن -o :
    همون طور که میدونید uid یا همون user id به طور منحصر به فرد مربوط به  یک کاربر هست ولی با این آپشن میتونیم به چند کاربر یک uid بدیم برای مثال  :

    root@debian:~# usermod -o vahid

    آپشن -p :
    با این آپشن میتونیم پسورد برای یک کاربر بزاریم یا تغییرش بدیم الیته باید encrypted باشد پسورد برای مثال :

    root@debian:~# mkpasswd
    Password:
    D9Fv4apNaq/rE
    root@debian:~# usermod -p D9Fv4apNaq/rE master

    اول ما با دستور mkpasswd یک پسورد encrypted ساختیم و بعد اون پسورد رو برای کاربر قرار دایدم

    اپشن -s :
    با این آپشن میتونیم دسترسی shell کاربر رو تعیین کنیم برای مثال

    root@debian:~# usermod -s /bash/false vahid

    در مثال بالا ما دسترسی shell رو از کاربر vahid گرفتیم

    آپشن -u :
    با این آپشن میتونیم عدد UID رو خودمون برای کاربر ست کنیم برای مثال :

    root@debian:~# usermod -u 22 master
    root@debian:~# id master
    uid=22(master) gid=1011(sirous) groups=1011(sirous)

    در مثال بالا uid کاربر master رو 22 قرار دادیم

    آپشن -U :
    با این آپشن میتونیم کاربری که لاک هست رو آنلاک کنیم

    root@debian:~# usermod -U Vahid

    در مثال بالا یوزر Vahid انلاک هست و میتونه به سیستم دسترسی داشته باشه .

    آپشن -Z :
    با این آپشن میتونیم ست کنیم که یک یوزر جزو یوزر های selinux باشه برای مثال :

    root@debian:~# usermod -Z master

    یوزر master رو جزو یوزر های Selinux قرار دادیم که یه سری دسترسی های خاص داده



    با تشکر
    وحید سیروس 


*منبع*: http://www.webhostingtalk.ir/f104/28950/

موضوعات وابسته :   ساختن کاربر ((user)) و پاک کردن و ایجاد بعضی محدودیت ها
http://forum.ubuntu.ir/index.php/top...html#msg134502

----------


## alieblice

سطح دسترسی ها در لینوکس

    پایه و اساس سطح دسترسی ها در لینوکس شامل دو تا قسمت میشه یکی مالکیت فایل یا (ownership ) و یکی مجوز فایل ها (permissions ) .
    مالکیت فایل (ownership ) شامل دو تا قسمت میشه :
    یکی مالکیت کاربری (User Ownership)
    یکی مالکیت گروهی (Group Ownership)
    پس یک فایل دو تا مالکیت میگیره یکی مالکیت گروه یکی مالکیت کاربر
    برای مثال فایل زیر رو ببینید :

    root@debian:~/# ll
    -rw-r--r-- 1 root vahid 0 Aug  5 00:58 vahid.txt
    root@debian:~/#

    از فایل بالا متوجه میشیم که Group Ownership این فایل گروه vahid هست .
    و User Ownership این فایل مربوط به یوزر root هست .
    حالا ما چه شکلی میتونیم ownership یک فایل رو تغییر بدیم ؟ با دستور chown
    به صورت زیر :

    chown userowner:groupowner myfile.txt

    به طور مثال ما میخوایم User Ownership و Group Ownership هر دو این فایل رو به vahid تغییر بدیم

    root@debian:~/wht# chown vahid:vahid vahid.txt
    root@debian:~/wht# ll
    -rw-r--r-- 1 vahid vahid 0 Aug  5 00:58 vahid.txt
    root@debian:~/wht#

    حالا میریم سراغ قسمت دوم یعنی مجوز فایل ها (permissions )
    مجوز فایل ها (permissions ) شامل 3 تا قسمت میشه :
    مجوز برای کاربر
    مجور برای گروه
    مجوز برای دیگران (که شامل بقیه کاربران سیستم میشه)

rw- r-- r-- 1 vahid vahid 0 Aug  5 00:58 vahid.txt
|   |   |
|   |   |________ user permission
|   |___________ group permission
|_______________ other permission


    که هر قست شامل 3 قسمت میشه :

    r = read permission
    w = write permission
    x = execute permission

    یعنی :
    دسترسی خواندن
    دسترسی نوشتن
    دسترسی اجرایی (برای اجرا کردن یک برنامه)

    که هر قسمت یه عدد میگیره

    4  = read (r)
    2 = write (w)
    1 = execute (x)
    0 = no permission (-)

    برای مثال فایل زیر رو مد نظر بگیرید :

    root@debian:~/wht# ll
    -rw-r--r-- 1 vahid vahid 0 Aug  5 00:58 vahid.txt
    root@debian:~/wht#

    اگر permission فایل رو سه قسمت کنیم :

    -rw-       r--      r--

    میبینیم که
    در سطح کاربر فقط میتونه فایل رو بخونه
    در سطح گروه هم فقط میتونه فایل رو بخونه
    و در سطح other دسترسی خوندن و نوشن رو داره

    حالا ما چه شکلی میتونیم permission یک فایل رو تغییر بدیم ؟ با دستور chmod

    chmod permissionnumber myfile.txt

    به طور مثال ما میخوایم خود کاربر دسترسی خوندن و نوشتن و اجرا شدن رو داشته باشه ولی گروهش هیج دسترسی نداشته باشه و برای Other هم فقط دسترسی خوندن باشه
    حالا میایم عدد ها رو جمع میزنی
    دسترسی برای کاربر = خوندن + نوشتن + اجرا شدن = 4+2+1 = پس عدد دسترسی برای کاربر میشه 7
    دسترسی برای گروه = هیچ دسترسی نداشته باشه = 0 = پس عدد دسترسی گروه میشه 0
    دسترسی برای other = خوندن = 4 = پس عدد دسترسی other میشه 4
    و این دسترسی رو اعمال میکنیم :

    root@debian:~/wht# chmod 407 vahid.txt
    root@debian:~/wht# ll
    -r-----rwx 1 vahid vahid 0 Aug  5 00:58 vahid.txt
    root@debian:~/wht#

    حالا اگر خواستید تمامی فایل ها و زیر مجموعه هاش رو تغیر owner یا permission بدید باید از آپشن -R (تاکید میکنم بر روی R بزرگ هست ) استفاده کنید
    برای مثال :

    root@debian:~# chown -R vahid:vahid wht/
    root@debian:~# chmod -R 407 wht/

    این دو تا دستور تمامی owner های این فایل هارو به vahid تغییر میده و تمامی فایل های این فولدر به 407 تغییر میکنه

    موفق و پیروز باشید 

*منبع* :  http://www.webhostingtalk.ir/f104/29244/
موضوعات وابسته : http://forum.ubuntu.ir/index.php/top...html#msg151252

----------


## alieblice

دستور cd برای جابه جایی بین فولدر ها استفاده میشود 
کلا اپشن هایه زیادی ندارد ولی با ترکیب کردنش با دستورات دیگر کارایی شو تا حد زیادی میشه بالا برد که در سرعت انجام کار ها تاثیر زیادی داره 

مثال 
فرض میکنیم که میخاین وارد دسکتاپتون بشین خوب برای این کار اگه ترمینال رو باز کنینباید داخل home دایرکتوریتون باشین که برای فهمیدنش میتونین از دستور زیر استفاده کنین 
pwd
دستور pwd مکان هم اکنون شما رو نشون میده که مثلا برای من الان این هست 
alieblice@de-10:~$ pwd
/home/alieblice

همون طور که در بالا میبینین alieblice فولدر خانگی من هست ((( user's home directory  ))

حالا چگونه وارد دسکتاپ بشیم 
اول دستور cd رو مینویسیم و سپس ادرس فولدری که میخایم واردش بشیم 
alieblice@de-10:~$ cd Desktop
حالا pwd بگیرین 
alieblice@de-10:~/Desktop$ pwd
/home/alieblice/Desktop


چند نکته :
در بالا گفتیم ادرس فایل رو مینویسیم که خوب در مواقعی مثل بالا که فایل مورد نظر ما (( Deksktop )) در همون مکانی هست که ما الان داخلش هستیم  فقط لازمه اسم اون فولدر مورد نظرمون رو بنویسیم 

اگه شرایط مثل بالا نبود و در یک فولدر دیگری بودیم باید ادرس فولدر مورد نظرمون (( Desktop )) رو به صورت کامل بنویسیم  (( به صورت کامل یعنی از اولین صفحه دایرکتوری درایومون   )) با مثال زیر بهتر متوجه میشین 

مثال :
در زیر فرض میکنیم شمت میخاین از دسکتاپ (( /home/alieblice/Desktop ))  میخاین به فایل videos که ادرسش این هست برین (( /home/alieblice/Videos))

کارو به 2 صورت میشه انجام داد
1- ادرس فولدر Videos روکامل بزنیم
نکته مهم :
به ' / ' قبل از home توجه کنین اگه اون رو بزارین یعنی ادرس رو دارین از اولین دایرکتوری (( صفحه اول درایو  )) مینویسین ولی اگر نزارین دنباله ادرس داخل همون دایرکتوری که هم اکنون هستین میگرده 


alieblice@de-10:~/Desktop$ cd /home/alieblice/Videos
alieblice@de-10:~/Videos$ 
alieblice@de-10:~/Videos$ pwd
/home/alieblice/Videos
alieblice@de-10:~/Videos$ 


 یکی این که یک دایرکتوری به عقب برگردیم و بعد بریم داخل Videos 
برای برگشتن به یک دایرکتوری به عقب از دو تا نقطه استفاده مکینیم 
alieblice@de-10:~/Desktop$ pwd
/home/alieblice/Desktop
alieblice@de-10:~/Desktop$ 
alieblice@de-10:~/Desktop$ cd ..
alieblice@de-10:~$ 
alieblice@de-10:~$ pwd
/home/alieblice
alieblice@de-10:~$ 
alieblice@de-10:~$ cd Videos/
alieblice@de-10:~/Videos$ 
alieblice@de-10:~/Videos$ pwd
/home/alieblice/Videos
alieblice@de-10:~/Videos$ 


مراحل رو کامل به همراه pwd گذاشتم قکر نکنم احتیاج به تو ضیح باشه 


برگشتن به ادرس قبلی 

اگه به روش اول مثال قبل عمل کرده باشین یعنی مستقیم از Desktop به Videos رفته باشین و بخاین دوباره به Desktop برگردین از - استفاده میکنیم که مراحل کار به این شکل میشود 

alieblice@de-10:~/Videos$ cd -
/home/alieblice/Desktop
alieblice@de-10:~/Desktop$

برگشتن به home دایرکتوری

برایه این کار از ‍~  ((   shift +دکمه بالایه tab )) استفاده کنین

alieblice@de-10:~/Desktop$ cd ~
alieblice@de-10:~$ 
alieblice@de-10:~$ pwd
/home/alieblice
alieblice@de-10:~$

برگشتن به 2 دایرکتوری قبل 
alieblice@de-10:~/Desktop$ cd ../..
alieblice@de-10:/home$ pwd
/home
alieblice@de-10:/home$ 
به طور مشابه برایه 4 دایرکتوری به این شکل در میاد 
cd ../../../../

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

هنگامی که ادرس فایلی رو مینویسین اگه اسم دقیق یا املاش رو بلد نیستین میتونین از tab استفاده کنین مثلا در زیر تمام فایلایی که اولشون با dir شروع میشه رو لیست میکنه 
alieblice@de-10:/$ cd /home/alieblice/Desktop/dede/dire
dire1/ dire2/ dire3/ dire4/ 
alieblice@de-10:/$ cd /home/alieblice/Desktop/dede/dire1
alieblice@de-10:~/Desktop/dede/dire1$


دردست کردن اشتباهات به صورت اتومات به وسیله shopt -s cdspell

به مثال زیر نگاه کنین 
بار اول کلمهی mail رو به صورت اشتباه ((mall)) مینویسیم که اررور میده و بعد از زدن دستورز
shopt -s cdspell
خودش به صورت اتومات غلط املایی رو حل میکنه 

# cd /etc/mall
-bash: cd: /etc/mall: No such file or directory

# shopt -s cdspell
# cd /etc/mall
# pwd
/etc/mail
[Note: By mistake, when I typed mall instead of mail,
          cd corrected it automatically]

منبع :
http://www.thegeekstuff.com/2008/10/...ip3-for-geeks/

----------


## alieblice

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

شکل کلی دستور 
       cat [OPTION]... [FILE]...

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

THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.



Tree lines above this line is empty.

One lines above this line is empty.
And this is the last line.


اگه دستور cat رو به تنهایی بزنین خروجی مثل متن بالا رو نشون میده نه کم نه زیاد 

alieblice@~/Desktop$ cat sisi.txt 
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.



Tree lines above this line is empty.

One lines above this line is empty.
And this is the last line.
alieblice@~/Desktop$ 


*شماره گذاری خط ها* 
خط هارو به دو صورت میشه نام گذاری کرد
*1-*  تمام خط ها یعنی هم خط هایه پر و هم خط هایه خالی بوسیله n- 
خط هایه خالی یعنی خط هایه 4 ,5,6,8 
مثال

alieblice@~/Desktop$ cat -n sisi.txt 
     1    THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
     2    this line is the 1st lower case line in this file.
     3    This Line Has All Its First Character Of The Word With Upper Case.
     4    
     5    
     6    
     7    Tree lines above this line is empty.
     8    
     9    One lines above this line is empty.
    10    And this is the last line.
alieblice@~/Desktop$ 


*2-* فقط خط هایه پر رو شماره گذاری مکند  یعنی خط هایه خالی رو شماره گذاری نمیکنه بوسیله  b-  
مثال:

alieblice@~/Desktop$ cat -b sisi.txt 
     1    THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
     2    this line is the 1st lower case line in this file.
     3    This Line Has All Its First Character Of The Word With Upper Case.



     4    Tree lines above this line is empty.

     5    One lines above this line is empty.
     6    And this is the last line.
alieblice@~/Desktop$ 



*نشانه گذاری پایان خط ها به وسیله E-* 

بوسیله این اپشن میتونین پایان هر خط رو با علامت ﷼ مشخص کنین 

alieblice@~/Desktop$ cat -E sisi.txt
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.$
this line is the 1st lower case line in this file.$
This Line Has All Its First Character Of The Word With Upper Case.$
$
$
$
Tree lines above this line is empty.$
$
One lines above this line is empty.$
And this is the last line.$
alieblice@~/Desktop$ 


*پاک کردن خط هایه خالی پشت سر هم بوسیله s- (( اس کوچک  ))*

اگه به متنی که اول اموزش گذاشته شده توجه کنید وسط متن 3 خط خالی پشت سر هم وجود داره که اگه بخاین اونارو حذف کنین و یک خطو نگه دارین از s-  استفاده کنین 
مثال :
alieblice@~/Desktop$ cat -s sisi.txt 
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Tree lines above this line is empty.

One lines above this line is empty.
And this is the last line.
alieblice@~/Desktop$ 

همون طور که میبینین 3 خط به یک خط تبدیل شد 

*نکته :* 
اگه اسم چند فایلو پشت سر هم تو cat بیاریم همشونو پشت سر هم نشون میده 
    cat file1 file2 file3

*چند دستور ترکیبی cat* 

اگه خروجی cat اونقدر زیاده که تو صفحه ترمینالتون جا نمیشه میتونین از این اپشن استفاده کنینی 
    cat file1 | less

با دستور زیر میتونین اطلاعات  FILENAME رو به فایل جدید NEWFILENAME انتقال بدین 
cat FILENAME > NEWFILENAME
نکته : اگه در دستور بالا فایل NEWFILENAME وجود داشته باشه پاک میشه و فایل جدیدی جاش ایجاد میشه اگه میخاین که این طور نشه و به ادامه اون فایل اضافه بشه از << استفاده کنین 

cat FILENAME >> NEWFILENAME

ذخیره خروجی چندین تا فایل در یک فایل
    cat file1 file2 file3 > file4

منابع :
http://publib.boulder.ibm.com/infoce...xcmds1/cat.htm
http://www.linfo.org/cat.html

----------


## alieblice

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

*شکل کلی دستور* 
sort [OPTION]... [FILE]...

ساده ترین شکل دستور sort به شکل زیر هستش که به صورت پیش فرض ترتیب کردن رو بر اساس حروف انجام میدهد 
برایه این مثال اول فایل زیر رو با محتویات زیر بسازید و ذخیره کنید 
alieblice@~/Desktop/sisi$ nano lili.txt
X
C
d
c
a
h
g
A
G
H
K
p
برایه ذخیره شدن دکمه کنترل و ایکس رو فشار بدین و سپس دکمه y رو بزنین (( Ctrl+x ))
alieblice@~/Desktop/sisi$


مثال :
alieblice@~/Desktop/sisi$ sort lili.txt 
a
A
c
C
d
g
G
h
H
K
p
X
alieblice@~/Desktop/sisi$ 

*ترتیب بر اساس اعداد به وسیله n-*
برایه این کار فایل sisi.txt رو به روش بالا با محتویات زیر بسازین 
10
30
40
5
7
1
88
2
1390

یک فایل رو به دو صورت میشود به ترتیب اعداد کرد 

*1=*
از این طریق اعداد فقط بر حصب عدد اولشون ترتیب میشن
مثال:
alieblice@~/Desktop/sisi$ sort lili.txt 

1
10
1390
2
30
40
5
7
88
alieblice@~/Desktop/sisi$

*2=* 
بر اساس ترتیب شمردن که احتیاج به اپشن n- دارد
مثال:
alieblice@~/Desktop/sisi$ sort -n lili.txt 

1
2
5
7
10
30
40
88
1390
alieblice@~/Desktop/sisi$

*نکته :* اگه خاستین بر عکس ترتیب بشود از اپشن r- استفاده کنین یعنی مثلا در ترتیب اعداد در مثال بالا اول 1390 بعد 88 وبعد 40 و بعد ....


*تعیین جدول* 

برایه تعیین جدول احتیاج به دو چیز داریم یک جدا کننده که به ما میگه چه جوری دو تا جدول از هم جدا میشوند و دیگری شماره جدول 
در مثال هایه زیر از متن زیر استفاده شده است

acl Safe_ports port 80        # http
bin:x:2:2:bin:/bin:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
acl Safe_ports port 777        # multiling http
acl Safe_ports port 631        # cups
acl Safe_ports port 873        ## rsync
acl Safe_ports port 901        # SWAT
alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
tia:x:1000:1000::/home/tia:/bin/bash

به خط زیر توجه کنین
alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
اگه در خط بالا نوع جدا کننده را : در نظر بگیریم خط بالا از 7 قسمت درست شده که ما اینجا به اونا جدول می گفتیم 
در مثال زیر میگیم که خطوط رو بر اساس جدول 3وم و نوع جدا کننده : به ترتیب اعداد بکند 
alieblice@~/Desktop/sisi$ sort -n -t: -k3 lili.txt 
acl Safe_ports port 631        # cups
acl Safe_ports port 777        # multiling http
acl Safe_ports port 80        # http
acl Safe_ports port 873        ## rsync
acl Safe_ports port 901        # SWAT
bin:x:2:2:bin:/bin:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
tia:x:1000:1000::/home/tia:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
alieblice@~/Desktop/sisi$
در مثال بالا t- برای تعیین جدا کننده و k- برایه تعیین جدول هستش 
اگه خاستین خروجی هایه تکراری پاک شوند از u- استفاده کنین 

*مثال :*
alieblice@~/Desktop/sisi$ sort -nu -t":" -k3 lili.txt 
acl Safe_ports port 80        # http
bin:x:2:2:bin:/bin:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
alieblice:x:1000:1000:alieblice,,,:/home/alieblice:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
alieblice@~/Desktop/sisi$ 
همون طور که میبینین این خط به همراه تمام خط هایی که توش جدا کننده پیدا نشده به جز یکی حذف شدند 
tia:x:1000:1000::/home/tia:/bin/bash

مثالی دیگر :
در مثال زیر جدا کننده رو یک فاصله (( space )) در نظر میگیریم
alieblice@~/Desktop/sisi$ sort -t" " -k 4 -nu lili.txt 
bin:x:2:2:bin:/bin:/bin/sh
acl Safe_ports port 80        # http
acl Safe_ports port 631        # cups
acl Safe_ports port 777        # multiling http
acl Safe_ports port 873        ## rsync
acl Safe_ports port 901        # SWAT
alieblice@~/Desktop/sisi$ 

*نکته :*
یکی از مشکلاتی که دستور sort دارد نوع جدا کننده هستش که نمیشه دو حرفی تعیین کرد یعنی مثلا چیزهایی مثل  " :"    ::"    ":@"  نمیشه تعیین کرد 

منبع : LPIC-1_In_Nutshell_Oreilly_Edition3
ادرس دانلود:
http://ubuntuone.com/p/15HZ/

----------


## MogsIncon

HI all! It's my new blog zxc88cxz_anchor2!

----------


## alieblice

*دستور free*



دستور free  برایه دیدن مقدار رم خالی استفاده میشود 
کلا تعداد زیادی اپشن نداره ولی تشریح قسمت هایه مختلف دستورش مهمه 
*شکل کلی دستور* 

با زدن خود دستور free  به تنهایی خروجی شبیه زیر رو دریافت میکنین که بر اساس کیلوبایت است 
alieblice@ali:~$ free 
             total       used       free     shared    buffers     cached
Mem:       4037504     723244    3314260          0      44752     198608
-/+ buffers/cache:     479884    3557620
Swap:      2096124          0    2096124
alieblice@ali:~$


*Mem* = مقدار رم مصرفی شما رو با احتصاب disk caching نشون میده ((disk caching در اخر توضیح داده شده ))
*-/+ buffers/cache* = مقدار رم مصرف شده برایه disk caching و مقدار رم خالی شما بدون احتصاب disk caching رو نشون میدهد 
*Swap* = مقدار فضایه مصرف شده از رم Swap رو نشون میده
توضیح اپشن ها :
= *-b  * برایه نشون دادن بر اساس بایت است 
= *-k* برایه نشون دادن بر اساس کیلوبایت است
= *-m* برایه نشون دادن بر اساس مگابایت است
alieblice@ali:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          3942        706       3236          0         43        193
-/+ buffers/cache:        468       3473
Swap:         2046          0       2046
alieblice@ali:~$ 


= *-g*  برایه نشون دادن بر اساس گیگابایت است
نکته :  همون طور که در مثال اپشن –m  میبینین مقدار رم 3942 مگابایت است ولی در حالت –g   مقدار 3 رو نشون میده پس کلی نشون میده 
alieblice@ali:~$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          0          3          0          0          0
-/+ buffers/cache:          0          3
Swap:            1          0          1
alieblice@ali:~$ 

= *-s* برایه خروجی گرفتن به صورت ادامه دار هستش با تعیین مدت رمان (( پشت سر هم اپدیت میشه ))
در زیر هر 3 ثانیه خروجیمون بروز میشه
alieblice@ali:~$ free -s 3
             total       used       free     shared    buffers     cached
Mem:       4037504     726784    3310720          0      44848     200992
-/+ buffers/cache:     480944    3556560
Swap:      2096124          0    2096124

             total       used       free     shared    buffers     cached
Mem:       4037504     726908    3310596          0      44848     200992
-/+ buffers/cache:     481068    3556436
Swap:      2096124          0    2096124

^C
alieblice@ali:~$ 

= *-c* برایه تعیین تعداد مرتبه خروجی است که حتما باید با –s  بیاد 
مثال:
در زیر 4 بار خروجی میگریم با فاصله زمانی 3 ثانیه
alieblice@ali:~$ free -ms 3 -c 4
             total       used       free     shared    buffers     cached
Mem:          3942        711       3231          0         43        196
-/+ buffers/cache:        471       3471
Swap:         2046          0       2046

             total       used       free     shared    buffers     cached
Mem:          3942        711       3231          0         43        196
-/+ buffers/cache:        471       3471
Swap:         2046          0       2046

             total       used       free     shared    buffers     cached
Mem:          3942        711       3231          0         43        196
-/+ buffers/cache:        471       3471
Swap:         2046          0       2046

             total       used       free     shared    buffers     cached
Mem:          3942        711       3231          0         43        196
-/+ buffers/cache:        471       3471
Swap:         2046          0       2046

alieblice@ali:~$ 


= *-o*  به صورت شکل قدیم نشون میده
فرقش اینه که خط -/+ buffers/cache  (( buffer adjusted  )) رو نشون نمیده  



alieblice@ali:~$ free -o -m
             total       used       free     shared    buffers     cached
Mem:          3942        711       3231          0         43        196
Swap:         2046          0       2046
alieblice@ali:~$ 

= *-t*  مجموع مقداررم swap  و ram سخت افزاری رو نشون میده
نکته  :  اعداد خط -/+ buffers/cache  رو تو جمع حساب نمیکنه 
alieblice@ali:~$ free -tm
             total       used       free     shared    buffers     cached
Mem:          3942        712       3230          0         43        196
-/+ buffers/cache:        471       3470
Swap:         2046          0       2046
Total:        5989        712       5277
alieblice@ali:~$ 

*مقدار واقعی مصرف رم شما* 
در لینوگس 2 نوع مصرف رم داریم 
1= رمی که شما مصرف میکنین 
2= رمی که شما مصرف میکنین به همراه disk caching
disk caching چیست ؟
disk caching در این جا به عملی می گویند که سیستم میاد مقدار رم خالی شما (( مثلا 2.5 گیگ از 4 گیگ )) که استفاده نمیشه مقداریش رو برایه کش کردن استفاده میکنه اما به محض این که شما اون مقدار فضا (( مثلا 500 مگابایت ))  یا به  مقداری از اون فضا احتیاج پیدا کردین سیستم بلافاصله فضا رو برایه شما خالی میکنه . پس اختلالی در انجام کار ها پیش نمیاره و حتی باعث سریع شدن کار ها بالا رفتن سرعت لود نرم افزارها میشه .
اگه هنوز متوجه نشدین داستان زیر رو بخونین
http://chrisjohnston.org/2009/why-on...much-ram-usageو برایه دیدن تاثیرش هم ادرس زیر رو نگاه کنین 
http://www.linuxatemyram.com/play.htmlپس برایه این که بدونین چه مقدار رم خالی دارین باید عددی که در خط -/+ buffers/cache است رو بخونین 
که در مثال زیر 3470 مگابایت است 
alieblice@ali:~$ free -tm
             total       used       free     shared    buffers     cached
Mem:          3942        712       3230          0         43        196
-/+ buffers/cache:        471       3470
Swap:         2046          0       2046
Total:        5989        712       5277
alieblice@ali:~$ 

نکته :
در دستور top  مقدار رم مصرفی با احتصاب disk caching نشون داده میشه 
در دستور htop  مقدار رم مصرفی  بدون احتصاب disk caching محاصبه میشود 
غیر فعال کردن disk caching 
حقیقتش نمیدونم که با این کار به طور کامل از کش شدن جلو گیری میکنیم یا تا حدی جلوشو میگیریم ولی در اعداد تغییر چشم گیری ایجاد میشه
دستور زیر رو برایه جلوگیری کردن بزنین 
Sudo echo 3 | sudo tee /proc/sys/vm/drop_caches

حالا اگه دوباره دستور  free رو بزنین میبینین که اعداد  زیر ستون هایه    
shared    buffers    cached
نغییر کرده است

در ادرس زیر هم* ((جلوگیری از cache شدن ram در لینوکس بطور اتوماتیک))*
http://www.forum.persianadmins.ir/sh...ad.php?t=18296

فایل هایه مربوطه
/proc/meminfo
/proc/sys/vm/drop_caches


منابع:
http://www.forum.persianadmins.ir/sh...ad.php?t=18296
http://www.linuxatemyram.com/

----------


## alieblice

*دستور uptime*

دستور uptime  برایه دیدن مقدار مدت زمان روشن بودن سیستم استفاده میشود که در کنار اون ساعت ;  تعداد کاربر و مقدار لود سیستم رو نشون میدهد 
 دستور uptime اپشنی ندارد و خروجیش به شکل زیر هستش
13:17:57 up 214 days, 2:52, 4 users, load average: 0.09, 0.03, 0.01

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

alieblice@ali:~$ uptime
 22:00:58 up 13 min,  2 users,  load average: 0.00, 0.06, 0.10

13:17:57 = ساعت سیتم 
214 days, 2:52 = مدت زمان روشن بودن سیستم که اگر بیشتر از 24 ساعت شود تبدیل به روز و ساعت میشود
load average: 0.09, 0.03, 0.01 = مقدار لود سیستم رو نشون میده که در اینجا 0.09است  که از چپ به راست برایه   1, 5 و 15 دقیقه است 
load average در لینوکس بر اساس تعداد پروسس هایی که در نوبت اجرا (( run queue )) هستن محاصبه میشود که این پروسس ها میتونه مربوط به cpu ; disk I/O   یا حتی network   باشن  
متن زیر کامل ترشو گقته
Load average on a Linux system is defined as the number of blocking processes in the run queue
averaged over a certain time period. A blocking process is a process that is waiting on a resource
to continue, usually the CPU, disk I/O, or network. Many processes waiting in the run queue
will drive up the load average of your system. It’s not uncommon to see a load average over 1;
that just means for the designated time interval (1, 5 or 15 minutes) there was an average of at
least one process waiting on resources in the run queue. This is usually indicative of a busy
system and might not necessarily mean anything is amiss. However, high load averages will
negatively affect system performance, so it’s always a good idea to be aware of what is causing
them. Here is the uptime output of a relatively busy web server:
$ uptime 
1:20pm up 3 days 15:49, 1 user, load average: 1.47, 1.10, 0.83 

*پیدا کردن uptime  به روش هایه دیگر*
مدت زمان روشن بودن سیستم در فایل زیر نیز وجود دارد
*cat /proc/uptime*
ali@95:~$ cat /proc/uptime
91554.73 89629.48
ali@95:~$
91554.73 = زمان روشن بودن سیستم بر اثاث ثانیه 
89629.48 = 
The second number is how much of that time the machine has spent idle, in seconds.[10] On multi core systems (and some linux versions) the second number is the sum of the idle time accumulated by each CPU.

با دستور زیر هم میشه مدت زمان رو دید 
sudo ps -p 1 -o etime=

ali@95:~$ sudo ps -p 1 -o etime=
 1-01:34:53
ali@95:~$
ali@95:~$ uptime
 17:17:08 up 1 day,  1:35,  2 users,  load average: 0.00, 0.00, 0.00
ali@95:~$

با دستور *top * و *htop* هم میشه دید 

منابع:
http://en.wikipedia.org/wiki/Uptime
http://www.thegeekstuff.com/2011/04/...mand-examples/

----------


## alieblice

*shell job controls (دستور fg bg jobs  nohup)*

منظور از shell job از کاv انداختن و راه اندازی مجدد یک پروسس یا ازبین بردن و یا به پشت صحنه بردن یک پروسس در ترمینال است 

jobs = برایه دیدن کار هایه پشت صحنه 
fg = برایه  رویه صحنه اوردن کاری که در پشت صحنه است 
bg = برایه رستارت کردن کاری که در پشت صحنه است 
nohup =  برایه ازبین نرفتن کاری  به هنگام بستن ترمینال 

*منظور از فرستادن یک کار (( پروسس )) به پشت صحنه* 

فرض کنین  تو ترمینال دستور firefox رو میزنین یا مثلا دستور nautilus وقتی که یکی از این دو دستور رو میزنین نرم افزار مربوطه رو صفحه ظاهر میشود و یک سری اطلاعاتی رو تو ترمینال مینویسد و عملا ترمینال رو برایه زدن دستورات دیگر غیر قابل مصرف میکند . حالا برایه این که ترمینالتون در این مواقع قابل استفاده باشد اون نرم افزار یا پروسس رو به پشت صحنه میفرستیم 


مثال:
مراحل کار :

اول nautilus رو اجرا میکنیم 
دوم به وسیله کلید ترکیبی Ctrl+z از کار میندازیمش و
سوم به وسیله ی دستور bg رستارتش میکنیم تا شروع به کار کند 


alieblice@/$ sudo nautilus 
Initializing nautilus-open-terminal extension
Initializing nautilus-gdu extension
Initializing nautilus-image-converter extension


^Z
[1]+  Stopped                 sudo nautilus
alieblice@/$ 



اگر الان دستور jobs رو بزنین خروجی شبیه زیر رو میبینین 

alieblice@/$ jobs
[1]+  Stopped                 sudo nautilus
alieblice@/$ 

همون طور که میبینین کلمه Stopped رو نوشته که نشون از ازکار افتادن این پروسس ((در اینجا به وسیله Ctrl+z )) هست که برایه راه اندازیش از دستور bg به همراه شماره کار (پروسس) که در این جا [1] میباشد استفاده میکنیم 

alieblice@/$ bg 1
[1]+ sudo nautilus &
alieblice@/$ 

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

alieblice@/$ jobs
[1]+  Running                 sudo nautilus &
alieblice@/$ 

اگر خاستین nautilus رو دوباره به رویه صحنه بیارین از fg استفاده کنین به همراه شمارش

alieblice@/$ fg 1
sudo nautilus

alieblice@/$ 



*اجرا کردن یک پروسس که به طور خود کار به پشت صحنه برود* 

برایه این کار در پایان دستورتون از حرف & استفاده کنین 
مثال:
بعد از زدن دستور به همراه & یک بار دکمه enter رو بزنین 

alieblice@/$ sudo nautilus&
[1] 7661
alieblice@/$ Initializing nautilus-open-terminal extension
Initializing nautilus-gdu extension
Initializing nautilus-image-converter extension

alieblice@/$


*دستور jobs*
در مورد jobs این جا کامل توضیح داده ولی چون بیشتر چیزایی که گفته بود کار نمیکرد من فقط دو تا از اپشناشو میگم 
http://publib.boulder.ibm.com/infoce...ds3%2Fjobs.htm

همون طور که در بالا دیدین دستور jobs برایه دیدن کارهایه پشت صحنه هستش 
مثال:
alieblice@/$ jobs
[1]+  Running                 sudo nautilus &
alieblice@/$


توضیح چند تا از اپشن ها 

از l- برایه دیدن  job number, current job, process group ID
از p- برایه دیدن pid 



*دستور nohup*
از این دستور برایه زمانی که یک پروسس رو در ترمینال ایجاد کردیم و میخایم که بابسته شدن ترمینال پروسسمون از بین نره استفاده میکنیم 
در nohup
 خروجی ها در $HOME/nohup.out
اررور ها در خود ترمینال 
و ورودی ها :
If  standard  input  is a terminal, redirect it from /dev/null

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


مثال : 
alieblice@~$ sudo nohup firefox
nohup: ignoring input and appending output to `nohup.out'
alieblice@~$ 


نکته : 
پروسس هایی که با  nohup اجرا میشن در لیست کار هایه دستور  jobs نمیاد 

منابع :
LPIC-1_In_Nutshell_Oreilly_Edition3
http://ubuntuone.com/p/15HZ/

http://publib.boulder.ibm.com/infoce...ds3%2Fjobs.htm

----------


## alieblice

سلام دوستان 

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

اموزش دستور LS ((نسخه PDF ))
از ادرس زیر در دست رس است 



http://community.fsforums.ir/Thread-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%A8%D9%87-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C?pid=55#pid55  

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

----------


## alieblice

*برگه تقلب دستورات*


http://ubuntuone.com/7fM95BEYaZE0trViPH1tKh



http://ubuntuone.com/3YL2JPKmzmKszvgb0VpDWa



http://ubuntuone.com/79wlpbo6mgFwMm7GsSMMmy

.
http://ubuntuone.com/2a7vhLACCr2hncRJs43sAR



http://ubuntuone.com/4X9cnxZ1f9BOn7ECO9tQU3


http://ubuntuone.com/05Cf2nj0LJofJrwEOi4xmE


*برگه تقلب دستورات پیرامون فایل هایه متنی*


sed stream editor
http://ubuntuone.com/35ATILSVlW6yG3IHhPxpJj


awk
http://ubuntuone.com/7L23wAEMcj39QEcIJ1BMrr



*برگه تقلب مدیریت بسته ها (( deb rpm yum ))*


rpm
http://ubuntuone.com/4zrgBduf66LRByWrBlr5Xm



rpm
http://ubuntuone.com/2fJaVcfMJaEvOBGz3HmdSF



apt-get
http://ubuntuone.com/2PHO6OwfgN1f4p1xT6Cyyk


*برگه تقلب دبیان*


http://ubuntuone.com/4wDKCLAGuYk2UhZQqyDARQ
برگه تقلب بالا رو این جوری تا بزنین :




*برگه تقلب اوبونتو*



http://ubuntuone.com/3CC8ZoKKmSeI73nvQHgUW6


http://ubuntuone.com/1pKe0R6RX5t45ec8hUFpOq



*متفرقه*


anatomy-of-a-linux-system
http://ubuntuone.com/7FSO512J9NjMcYmXOLPMUG




UNIX-Linux-Shell-Cheat-Sheet
http://ubuntuone.com/2xrPe610jbZ1omw06WRtdf




Linux Security Quick Reference Guide
http://ubuntuone.com/2p9SymVmI0OOqKxpwYSg51




LINUX Admin Quick Reference
http://ubuntuone.com/1LXZjS58sSsI03NtezydV8




منبع:
fsforums.ir

----------


## small_rz

سلام.
چطوری فلش تو Redhat نصب کنم؟
mount می کنم permission denied میده.
مرسی

----------

