-
مدیریت گزینه های فرمان
شنبه 28 اردیبهشتماه سال 1392 15:58
پرسش و پاسخ شماره ۳۵ چگونه میتوانم شناسههای( گزینههای ) خطفرمان را به آسانی مدیریت کنم؟ خوب، تا اندازه بسیاری بستگی به آن دارد که چه کاری میخواهید با آنها انجام بدهید. چندین راهکار ، هرکدام با ضعف و قوتهای مربوط به خود، وجود دارد. فهرست مطالب حلقه دستی getopts گزینه بلند ماهرانه getops پیمایش ساده تکراری...
-
اجرای چرخنده در bash
پنجشنبه 26 اردیبهشتماه سال 1392 15:36
پرسش و پاسخ شماره ۳۴ آیا میتوانم در Bash یک چرخنده اجرا کنم؟ مطمئناً! i=1 sp="/-\|" echo -n ' ' while true do printf "\b${sp:i++%${#sp}:1}" done در هر نوبت که حلقه تکرار میشود، کاراکتر بعدی در رشته sp را نمایش میدهد، هنگامیکه به انتها میرسد از سر گرفته میشود. ( i موقعیت کاراکتر جاری برای نمایش...
-
به دست آوردن ID پردازش
سهشنبه 24 اردیبهشتماه سال 1392 15:37
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۳۳ چگونه میتوانم شماره شناسایی پردازشی را با دادن نام آن پردازش به دست آورم؟ به طور معمول به پردازش با استفاده از شماره شناسایی پردازش(PID) رجوع میشود، و فرمان ps(1) میتواند اطلاعات هر پردازشی با شماره شناسایی (ID) داده شده را نمایش...
-
پرسش و پاسخ شماره ۳۲
یکشنبه 22 اردیبهشتماه سال 1392 16:09
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۳۲ چطور میتوانم خروجی 'time' را به یک متغیر یا فایل تغییر مسیر بدهم؟ کلمه کلیدی time در پوسته Bash نیرنگ خاصی را به کار میبرد، به طوری که میتوانید مواردی مانند این را انجام دهید time find ... | xargs ... و به جای فقط فرمان ساده در ابتدای...
-
پرسش و پاسخ شماره ۳۱
جمعه 20 اردیبهشتماه سال 1392 10:49
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۳۱ تفاوت بین test و [ و [[ چیست؟ [ (فرمان test) و [[ (فرمان جدید test) برای ارزیابی عبارتها به کار میروند. [[ فقط در پوسته Bash و Korn کار میکند، و قدرتمندتر میباشد، [ و test در پوستههای POSIX معتبر هستند. چند مثال...
-
پرسش و پاسخ شماره ۳۰
سهشنبه 17 اردیبهشتماه سال 1392 15:57
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۳۰ چگونه میتوانم تمام فایلهای *.foo را به *.bar تبدیل نمایم، یا فاصلهها را به خط زیر تبدیل کنم، و یا حروف بزرگ نام فایلها را به حروف کوچک تبدیل کنم؟ برخی توزیعهای گنو-لینوکس دارای فرمان rename(1) هستند، که میتوانید برای این...
-
پرسش و پاسخ شماره ۲۹
یکشنبه 15 اردیبهشتماه سال 1392 16:28
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۹ به چه طریق میتوانم مقصد یک پیوند نمادین را نمایش بدهم؟ فرمان غیر استاندارد خارجی readlink(1) میتواند برای نمایش مقصد لینک نمادین استفاده شود: $ readlink /bin/sh bash اگر شما برنامه readlink را ندارید، میتوانید از Perl استفاده...
-
پرسش و پاسخ شماره ۲۸
جمعه 13 اردیبهشتماه سال 1392 15:00
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۸ چگونه میتوانم محل اسکریپت خود را تعیین کنم؟ میخواهم فایلهای پیکربندی را از همان محل بخوانم. این موضوع به طور مکرر طرح میشود. این پاسخ فقط عبارت به کار رفته فوق («فایلهای پیکربندی») را پوشش نمیدهد، بلکه چند حالت مختلف را شامل میشود....
-
پرسش و پاسخ شماره ۲۷
چهارشنبه 11 اردیبهشتماه سال 1392 16:05
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۷ چطور میتوان دو پردازش جداگانه را به هم ارتباط داد؟ دو فرآیند نا مرتبط نمیتوانند از شناسهها، محیط یا stdin/stdout برای مراوده استفاده کنند، برخی اشکال ارتباط درون فرآیندی(IPC) لازم است. فایل پردازش A در یک فایل مینویسد، و پردازش B...
-
پرسش و پاسخ شماره ۲۶
دوشنبه 9 اردیبهشتماه سال 1392 16:11
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۶ از چه طریق میتوانم ترتیب سطرهای فایلی را تصادفی نمایم(بُر زدن)؟(یا یک سطر اتفاقی از فایل را انتخاب کنم، یا انتخاب یک فایل به طور تصادفی از یک شاخه.) یک راهکار برای تصادفی نمودن سطرها در یک فایل چنین است. این روش، تولید یک عدد تصادفی است...
-
پرسش و پاسخ شماره ۲۵
شنبه 7 اردیبهشتماه سال 1392 18:17
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۵ چطور میتوانم پارامترهای موضعی(مکانی) بعد از $9 را دستیابی کنم به جای $10 از ${10} استفاده کنید. این روش در BASH و KornShell کار میکند، اما در پیادهسازیهای قدیمی BourneShell کار نمیکند. یک روش دیگر برای دستیابی به...
-
پرسش و پاسخ شماره ۲۴
پنجشنبه 5 اردیبهشتماه سال 1392 14:57
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۴ من متغیرهایی را در یک حلقه مقرر میکنم. چرا آنها پس از اتمام حلقه، ناگهان ناپدید میگردند؟ یا، چرا نمیتوانم دادهها را برای خواندن لولهکشی نمایم؟ در اکثر پوستهها، هر یک از فرمانهای یک لوله در پوسته فرعی جداگانهای اجرا میگردد. نه در...
-
پرسش و پاسخ شماره ۲۳
سهشنبه 3 اردیبهشتماه سال 1392 17:49
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۳ من میخواهم به پوسته محاورهای که مستعارها و توابع ویژهای دارد، نه آنها که در ~/.bashrc کاربر هست، متصل شوم. فقط یک فایل شروع اولیه( start-up ) متفاوت تعیین کنید: bash --rcfile /my/custom/bashrc نوع دیگر پرسش: من اسکریپتی دارم که یک...
-
پرسش و پاسخ شماره ۲۲
یکشنبه 1 اردیبهشتماه سال 1392 16:00
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۲ چگونه میتوانم به جای فقط اعداد صحیح، اعداد با ممیز شناور را در محاسبه استفاده کنم؟ حسابگر داخلی BASH فقط از اعداد صحیح استفاده میکند: $ echo $((10/3)) 3 برای اکثر عملیات درگیر با اعداد دارای ممیزشناور ، باید از یک برنامه خارجی استفاده...
-
پرسش و پاسخ شماره ۲۱
جمعه 30 فروردینماه سال 1392 17:29
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۱ چگونه میتوانم یک رشته را با رشته دیگری در یک متغیر، جریان داده، یک فایل، یا تمام فایلهای یک شاخه، تعویض نمایم؟ یک تعداد ابزار برای این مورد در دسترس است. که استفاده از هریک به عوامل زیادی بستگی دارد، البته مهمترین عامل آن است که چه چیزی...
-
پرسش و پاسخ شماره ۲۰
چهارشنبه 28 فروردینماه سال 1392 17:26
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۲۰ چگونه میتوانم نام فایلهای شامل کاراکتر سطرجدید، فاصله، یا هردو را پیدا کرده و با آنها کار کنم؟ اول و پیش از همه برای درک آنکه چرا مشکل دارید، مبحث شناسهها را بخوانید، تا خوب دریابید، پوسته جملاتی را که به آن میدهید چطور میفهمد. اگر...
-
پرسش و پاسخ شماره ۱۹
دوشنبه 26 فروردینماه سال 1392 16:59
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۹ به کدام طریقه میتوانم یک فایل را به محدودههایی از سطرها، مانند سطرهای 1-10، 11-20، 21-30 تجزیه کنم؟ برخی سیستمهای یونیکس برنامه سودمند split را برای این منظور فراهم میکنند: split --lines 10 --numeric-suffixes input.txt output- برای...
-
پرسش و پاسخ شماره ۱۸
یکشنبه 25 فروردینماه سال 1392 09:03
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۸ چگونه میتوانم از اعدادی که با صفر شروع میشوند مثل 01 و 02 در یک حلقه استفاده کنم؟ به طور معمول، چند روش برای حل مشکل موجود است، هریک با مزایا و معایب خاص خود. Bash نگارش 4 صفرهای پُرکننده(صفر قبل از عدد) و دامنه آنها را در بسط ابرو یش...
-
پرسش و پاسخ شماره ۱۷
پنجشنبه 22 فروردینماه سال 1392 16:20
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۷ چگونه میتوانم عبارتها را گروهبندی کنم، مثل (a AND b) OR c؟ روش قابل حمل(POSIX یا Bourne) استفاده از چندین فرمان test (یا [ ) است: # Bourne if test A && test B || test C; then ... در این حالت گروهبندی به صورت ضمنی است،...
-
پرسش و پاسخ شماره ۱۶
دوشنبه 19 فروردینماه سال 1392 17:28
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۶ چگونه میتوانم از AND/OR/NOT منطقی در الگو(جانشین) پوسته استفاده کنم؟ "Glob"ها الگوهای سادهای هستند که میتوانند برای مطابقت نام فایلها و رشتهها به کار بروند. به طور معمول آنها خیلی قدرتمند نمیباشند. اگر قدرت بیشتری لازم...
-
پرسش و پاسخ شماره ۱۵
شنبه 17 فروردینماه سال 1392 15:45
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۵ چگونه میتوانم یک دستور را با تمام فایلهای دارای پسوند .gz اجرا کنم؟ غالباً یک فرمان تعدادی فایل را به عنوان شناسه میپذیرد، به عنوان مثال: zcat -- *.gz در برخی سیستمها، به جای zcat باید از gzcat استفاده کنید. اگر هیچ یک در دسترس...
-
پرسش و پاسخ شماره ۱۴
پنجشنبه 15 فروردینماه سال 1392 16:20
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۴ چطور میتوانم چند دستور را در یک مرحله تغییر مسیر بدهم؟ تغییر مسیر خروجی استاندارد یک فرمان منفرد به همین آسانی است: date > file برای تغییر مسیر خروجی استاندارد خطا: date 2> file برای تغییر مسیر هردو: date > file 2>&1 یا،...
-
پرسش و پاسخ شماره ۱۳
سهشنبه 13 فروردینماه سال 1392 22:10
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۳ چگونه میتوانم دو متغیر را به هم الحاق کنم؟ چگونه یک رشته را در یک متغیر اضافه (پیوست) کنم؟ در شل، عملگری(صریح) برای الحاق نمودن رشتهها (لفظی یا بدون ارجاع به متغیر) وجود ندارد، فقط میتوانید آنها را در مجاورت هم بنویسید: var=$var1$var2...
-
پرسش و پاسخ شماره ۱۲
دوشنبه 12 فروردینماه سال 1392 16:46
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۲ به چه طریق میتوانم یک فرمان شل را از یک برنامه غیرپوستهای فراخوانی نمایم؟ میتوانید از گزینه -c پوسته برای اجرای شل جهت اجرای تکه کوتاهی از اسکریپت استفاده کنید: sh -c 'echo "Hi! This is a short script."' این کار بدون...
-
پرسش و پاسخ شماره ۱۱
شنبه 10 فروردینماه سال 1392 12:54
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۱ چگونه میتوانم سطر شماره n از یک فایل را چاپ کنم؟ یک روش زمخت(بلکه غیر سریع)این است: sed -n ${n}p "$file" اما حتی اگر فقط سطر سوم را خواسته باشید، این تمام فایل را میخواند، که برای اجتناب از آن میتوان، جهت چاپ سطر $n ...
-
پرسش و پاسخ شماره ۱۰
چهارشنبه 7 فروردینماه سال 1392 17:14
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۱۰ چطور میتوانم یک ساختار دایرکتوری سلسله مراتبی بدون فایل ایجاد نمایم؟ با برنامه cpio : cd "$srcdir" && find . -type d -print | cpio -pdumv "$dstdir" یا با برنامه pax : cd "$srcdir" && find ....
-
پرسش و پاسخ شماره ۹
دوشنبه 5 فروردینماه سال 1392 09:41
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۹ میانگیری(buffering) چیست؟ یا، چرا این سطر فرمان من خروجی ندارد: tail -f logfile | grep 'foo bar' | awk ... اکثر فرمانهای استاندارد یونیکس وقتی به طور غیر محاورهای به کارمیروند، خروجی را در حافظه میانجی قرار میدهند. بدین معنی که...
-
پرسش و پاسخ شماره ۸
شنبه 3 فروردینماه سال 1392 11:23
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۸ چگونه میتوانم تمام فایلها را به طور بازگشتی برای یک رشته جستجو نمایم؟ 90% اوقات، تمام آنچه لازم دارید یکی از اینهاست: # :سطرهای انطباق یافته را چاپ میکند (GNU grep) grep -r -- "$search" . # :فقط نام فایلها را برگشت و چاپ...
-
پرسش و پاسخ شماره ۷
پنجشنبه 1 فروردینماه سال 1392 10:58
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۷ آیا تابعی وجود دارد که طول یک رشته را بازگرداند؟ سریعترین روش، نیازی به برنامههای خارجی ندارد(اما در پوسته بورن قابل استفاده نمیباشد) # POSIX در پوسته ${#varname} یا برای پوسته Bourne: # Bourne expr "$varname" : '.*' ( برنامه...
-
ادامه پرسش و پاسخ شماره ۶
سهشنبه 29 اسفندماه سال 1391 14:50
ادامه پرسش و پاسخ شماره ۶ پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی ادامه پرسش و پاسخ شماره ۶ غیر مستقیم اندیشیدن قبل از به کاربردن غیرمستقیم قرار دادن نام متغیرها یا هر ترکیب دستوری bash درون پارامترها ی دیگر به طور کلی ایده نامساعدی است. این کار از جدایی بین کُد و داده تخطی میکند، و بدین ترتیب...