-
Bad Questions
جمعه 4 مردادماه سال 1392 16:03
پرسشهای بد پرسشهای نامناسب موقعی که اشخاص برای حل یک مشکل، جهت مشورت یا کمک به دیگران رجوع میکنند، اغلب متوجه میشوند برای حصول پاسخی که در جستجوی آن هستند، با دشواری مواجه میباشند. زیرنویس 1 تقریباً در تمام موارد، علت این موضوع پرسش نامناسب است. پرسشهای بد برای هیچکس سودی ندارند. وقت شما را هدر میدهند، و به...
-
مشکل در قطع ارتباط با ssh
چهارشنبه 2 مردادماه سال 1392 16:03
پرسش و پاسخ شماره ۶۳ وقتی من میخواهم بعد از اجرای یک job پسزمینهای راه دور قطع ارتباط کنم، سرویسگیرنده ssh من هنگ میکند ! کُد زیر آنچه را انتظار دارید، انجام نخواهد داد: ssh me@remotehost 'sleep 120 &' # Client hangs for 120 seconds این ویژگی OpenSSH میباشد. سرویسگیرنده تا وقتی که ترمینال راه دور هنوز در...
-
ایجاد فایل موقتی به طور بیخطر
دوشنبه 31 تیرماه سال 1392 16:03
پرسش و پاسخ شماره ۶۲ چطور میتوانم در یک حالت ایمِن، یک فایل موقتی ایجاد کنم؟ به نظر نمیرسد هیچ فرمان منفردی وجود داشته باشد که واقعاً در همه جا کار بکند . tempfile قابل حمل نیست. mktemp به طور وسیعتری موجود است( اما باز هم به طور در همه جا حاضر نیست)، فقط ممکن است برای ایجاد فایل از قبل، مستلزم گزینه -c باشد،...
-
لیست تغییرات Bash در هر نگارش
شنبه 29 تیرماه سال 1392 16:03
پرسش و پاسخ شماره ۶۱ آیا لیستی از ویژگیهای اضافه شده به یک نگارش معین Bash وجود دارد؟ در اینجا پیوندهایی به مستندات رسمی Bash آمده است: NEWS : فایل لیست موجز تغییرات بین نگارش جاری و نگارش قبلی CHANGES : تاریخچه کامل تغییرات bash (فقط از نگارش2.0 به بعد) COMPAT : مسائل سازگاری بین bash3 و نگارشهای قبلی لیست خلاصه...
-
تعویض دایرکتوری با اسکریپت!
پنجشنبه 27 تیرماه سال 1392 16:03
پرسش و پاسخ شماره ۶۰ من سعی میکنم اسکریپتی بنویسم که دایرکتوری جاری را تغییر دهد( یا یک متغیر را تنظیم کند)، اما بعد از به پایان رسیدن اسکریپت، در همان جایی هستم که از آنجا شروع کرده بودم(یا متغیر من نیست)! این را ملاحظه نمایید: #!/bin/sh cd /tmp اگر شخصی این اسکریپت را اجرا نماید، چه اتفاقی روی میدهد؟ Bash منشعب...
-
RaceCondition
سهشنبه 25 تیرماه سال 1392 16:03
وضعیت مسابقه یک race condition وضعیتی است که در آن دو یا چند مورد به طور همزمان در حال وقوع میباشند، و نتیجه نهایی به زمانبندی دقیق رویدادها بستگی دارد. برای مثال، دو برنامه را در نظر بگیرید که در یک زمان اجرا میشوند: #!/bin/sh # برنامه اول read number < file number=$(($number + 1)) echo $number > file...
-
fork بمب
یکشنبه 23 تیرماه سال 1392 16:01
پرسش و پاسخ شماره ۵۹ من این دستور را در جایی دیدم: :() { :|:& } (بمب خوشهای). این چطور کار میکند؟ این به طور بالقوه یک فرمان خطرناک است. آن را اجرا نکنید! راهاندازی از پرسش فوق حذف میشود، تنها آن قسمتی که تابع را تنظیم میکند باقی میماند. بمب خوشهای یک شکل ساده تکذیب سرویس(یا حمله DoS ) است که بر مبنای...
-
رفتار Bash با دادههای باینری
جمعه 21 تیرماه سال 1392 16:37
پرسش و پاسخ شماره ۵۸ آیا bash میتواند دادههای باینری را اداره کند؟ به طور اساسی پاسخ خیر است.... در حالیکه bash مشکلاتی به زیادی پوستههای قدیمیتر با آنها ندارد، باز هم نمیتواند دادههای باینری اختیاری را پردازش نماید، و به طور اخص، متغیرهای پوسته 100% باینری خالص نیستند، بنابراین نمیتوانید فایلهای...
-
گروهبندی اقلام داخل یک فایل
چهارشنبه 19 تیرماه سال 1392 16:05
پرسش و پاسخ شماره ۵۷ چطور میتوانم اقلام را گروهبندی نمایم(در یک فایل با پیشوندهای مشترک)؟ چنان که شخصی بخواهد این فایل را: foo: entry1 bar: entry2 foo: entry3 baz: entry4 تبدیل کند به این foo: entry1 entry3 bar: entry2 baz: entry4 دو روش ساده عمومی برای انجام این کار وجود دارد: مرتب نمودن فایل، و سپس تکرار روی آن،...
-
untar یا unzip چند فایل با هم
دوشنبه 17 تیرماه سال 1392 16:36
پرسش و پاسخ شماره ۵۶ چطور میتوانم چند فایل را به طور یکجا untar (یا unzip) نمایم؟ چون فرمان tar در اصل طوری طراحی شده بود که از دستگاههای نوار گردان مغناطیسی بخواند یا در آن بنویسد(کلمه tar از T ape AR chiver اخذ شده)، شما به طور خاص فقط میتوانید نام فایلها را در بایگانی قرار دهید(نوشتن در نوار) یا...
-
انواع redirection و تفاوت آنها
شنبه 15 تیرماه سال 1392 16:51
پرسش و پاسخ شماره ۵۵ به طور کلی در باره 2 >& 1 بگویید -- تفاوت بین 2 >& 1 > foo و > foo 2 >& 1 چیست، و چهوقت میتوانم از هرکدام استفاده کنم؟ تمام پردازشهای Bash به ترتیب از چپ به راست تغییر مسیر داده میشوند. و ترتیب معنا دار است. انحراف از آن در یک...
-
تعیین آنکه ورودی عدد باشد
پنجشنبه 13 تیرماه سال 1392 16:07
پرسش و پاسخ شماره ۵۴ چگونه میتوانم بگویم که یک متغیر آیا محتوی یک عدد معتبر هست؟ اول، شما باید معین کنید مقصود شما از «عدد» چیست. در اکثر حالتهای رایج که مردم این مورد را سؤال میکنند، به نظر میرسد منظور «یک عدد صحیح غیر منفی، بدون علامت + » است. یا به بیان دیگر رشتهای از تمام ارقام. سایر اوقات، افراد میخواهند یک...
-
مشکل در اعلان فرمان رنگی
سهشنبه 11 تیرماه سال 1392 16:45
پرسش و پاسخ شماره ۵۳ من یک اعلان فرمان تفننی رنگی دارم، اما حالا به نظر نمیرسد bash بداند پهنای ترمینال من چقدر است. سطرها به طور نادرستی شکسته میشوند. شما باید \[ و \] را در اطراف هر یک از رشتههای escape غیرقابل چاپ در اعلان خود قرار بدهید. از این قرار: fancy_prompt() { local blue=$(tput setaf 4) local...
-
تبدیل قالب DOS به قالب UNIX
یکشنبه 9 تیرماه سال 1392 16:56
پرسش و پاسخ شماره ۵۲ چطور میتوانم یک فایل را از قالب DOS به قالب UNIX تبدیل کنم( CRها را از CR-LF خاتمه دهنده سطرها حذف کنم)؟ در برخی سیستمها برای علامت زدن انتهای سطر، کاراکترهای رفتن سر سطر(CR)به کار میروند. سه نوع مختلف انتهای سطر رایج است: سیستمهای یونیکس فقط از تعویض سطر(LF)ها استفاده میکنند. سیستمهای...
-
پرسش و پاسخ شماره ۵۱
شنبه 8 تیرماه سال 1392 16:35
پرسش و پاسخ شماره ۵۱ من جستجوی تاریخچه درست مانند آن در tcsh میخواهم. چطور میتوانم آن را به کلیدهای up و down مربوط کنم؟ فقط سطرهای زیر را در فایل /etc/inputrc یا فایل ~/.inputrc خود اضافه کنید: "\e[A":history-search-backward "\e[B":history-search-forward سپس bash را مجدداً راهاندازی...
-
قرار دادن فرمان در متغیر
پنجشنبه 6 تیرماه سال 1392 18:01
پرسش و پاسخ شماره ۵۰ من سعی دارم دستوری را در یک متغیر قرار بدهم، اما موارد پیچیده همیشه ناموفق است! برخی اشخاص کوشش میکنند مواردی مشابه این کد را انجام بدهند: # مثالی که کار نمیکند args="-s 'The subject' $address" mail $args < $body این کُد به دلیل تفکیک کلمه و به علت آنکه نقلقولهای منفرد داخل متغیر لفظی هستند...
-
پرسش و پاسخ شماره ۴۹
چهارشنبه 5 تیرماه سال 1392 16:06
پرسش و پاسخ شماره ۴۹ چگونه میتوانم به روزرسانیهای دورهای یا پیوست کردنها به یک فایل راببینم؟(مثل: رشد فایل log ) tail -f رشد یک فایل ثبت وقایع را به شما نشان میدهد. در بعضی سیستمها(برای مثال OpenBSD)، این به طور خودکار تبدیل یک فایل لاگ به فایل جدیدی با همان نام را دنبال میکند(که به طور معمول...
-
فرمان eval و مسائل امنیت
دوشنبه 3 تیرماه سال 1392 16:09
پرسش و پاسخ شماره ۴۸ فرمان eval و مسائل امنیت فرمان eval برای سوءاستفاده به شدت قدرتمند و بینهایت آسان است. باعث میشود کُد شما به جای یکبار دوبار تجزیه بشود، این به معنی آنست که برای مثال، اگر کُد شما دارای متغیر مرجع باشد، تفکیک کننده پوسته، محتوای آن متغیر را ارزیابی خواهد نمود. اگر متغیر محتوی فرمان پوسته باشد،...
-
تغییر مسیر stderr به یک لوله
شنبه 1 تیرماه سال 1392 15:57
پرسش و پاسخ شماره ۴۷ چطور میتوانم stderr را به یک لوله تغییر مسیر بدهم؟ یک لوله فقط میتواند خروجی استاندارد (stdout) برنامه را حمل کند. برای عبور دادن خروجی استاندارد خطا (stderr) از میان لوله، لازم است stderr را به همان مقصد stdout تغییر مسیر بدهید. به طور اختیاری برای دریافت stderr تنها،...
-
بررسی وجود یک کلمه در یک لیست
پنجشنبه 30 خردادماه سال 1392 16:00
پرسش و پاسخ شماره ۴۶ میخواهم بررسی کنم که آیا یک کلمه در یک لیست وجود دارد( یا یک عنصر عضوی از یک مجموعه هست). اگر پرسش واقعی شما «چطور میتوانم بررسی کنم که آیا یکی از پارامترهایم -v است؟» میباشد، پس لطفاً پرسش و پاسخ شماره 35 را ملاحظه کنید.در غیر اینصورت، خواندن را ادامه دهید.... اول از همه، بیایید...
-
ممانعت دوجانبه
سهشنبه 28 خردادماه سال 1392 16:16
پرسش و پاسخ شماره ۴۵ چطور میتوانم مطمئن شوم که فقط یک نمونه از اسکریپت در یک زمان معین در حال اجرا است(ممانعت دوطرفه)؟ برخی وسائل ممانعت دوجانبه را لازم داریم. یک روش، استفاده از "lock" است: هر تعداد از پردازشها میتوانند به طور همزمان برای بدست آوردن قفل تلاش نمایند، اما فقط یکی از آنها موفق میشود. چگونه میتوانیم...
-
ایجاد نوار پیشروی
چهارشنبه 22 خردادماه سال 1392 16:22
پرسش و پاسخ شماره ۴۴ چطور میتوانم نوار پیشروی ایجاد کنم؟ چگونه میتوانم موقع کپی یا انتقال فایلها، نمایشگر پیشروی را ببینم؟ آسانترین روش افزودن نوار پیشرفت به اسکریپت خودتان، استفاده از dialog --gauge است. در اینجا مثالی آوردهایم که متکی به ویژگیهای BASH میباشد: # Bash # .در شاخه جاری را پردازش...
-
پرسش و پاسخ شماره ۴۳
سهشنبه 21 خردادماه سال 1392 19:00
پرسش و پاسخ شماره ۴۳ چرا این job من در crontab ناموفق است؟ 0 0 * * * some command > /var/log/mylog. ` date +%Y%m%d ` در بسیاری از نگارشهای crontab ، با علامت (%) به طور ویژهای رفتار میشود، و بنابراین باید با کاراکتر گریز \ پوشش داده شود: 0 0 * * * some command > /var/log/mylog.`date...
-
آیا پردازش در حال اجرا میباشد؟
یکشنبه 19 خردادماه سال 1392 15:45
پرسش و پاسخ شماره ۴۲ چگونه میتوانم دریابم که یک پردازش هنوز در حال اجرا است؟ فرمان kill برای ارسال سیگنالها به پردازش در حال اجرا به کار میرود. به عنوان یک عمل راحت، سیگنال "0" که موجود نیست میتواند برای پی بردن به در حال اجرا بودن یک پردازش به کار برود: # Bourne myprog & # برنامه را در پس زمینه آغاز...
-
پرسش و پاسخ شماره ۴۱
پنجشنبه 16 خردادماه سال 1392 15:56
پرسش و پاسخهای رایج Bash در Greg's Wiki ترجمه محمود پهلوانی پرسش و پاسخ شماره ۴۱ چطور میتوانم تعیین نمایم که آیا یک متغیر شامل یک زیر رشته هست؟ در BASH : # Bash if [[ $foo = *bar* ]] مورد فوق کمابیش در تمام نگارشهای Bash کار میکند. Bash نگارش 3 (و بالاتر) همچنین عبارتهای منظم را هم مجاز میداند: # Bash my_re='ab*c'...
-
دریافت ورودی به وسیله برنامه dialog
یکشنبه 12 خردادماه سال 1392 16:29
پرسش و پاسخ شماره ۴۰ چگونه میتوانم از dialog برای دریافت ورودی کاربر استفاده کنم؟ در اینجا یک نمونه هست: # POSIX foo=$(dialog --inputbox "text goes here" 8 40 2>&1 >/dev/tty) echo "The user typed '$foo'" در اینجا تغییرمسیر قدری مهارت آمیز است. اول جمله foo=$(command) برقرار شده، بنابراین خروجی...
-
فایلهای نقطهای
پنجشنبه 9 خردادماه سال 1392 16:00
پرسش و پاسخ شماره ۳۹ تمام فایلهای نقطهای که bash میخواند کدام هستند؟ صفحه فایلهای نقطهای را ملاحظه کنید صفحات تکمیلی راهنمای Bash در Greg's Wiki ترجمه محمود پهلوانی فایلهای نقطهای(DotFiles) پیکربندی نشستهای login شما با فایلهای نقطهای این نوشته فرض میکند شما در حال استفاده از bash به عنوان پوسته نشست login خود...
-
Unix Permissions
یکشنبه 5 خردادماه سال 1392 15:45
پرسش و پاسخ شماره ۳۸ مجوزهای فایل در یونیکس چگونه کار میکنند؟ مجوزها را ملاحظه کنید. صفحات تکمیلی راهنمای Bash در Greg's Wiki ترجمه محمود پهلوانی مجوزهای یونیکس هر فایل در درون یک فایل سیستم یونیکس -- و این(فایل) هر چیزی را که میتواند در سیستم فایل یونیکس باشد، شامل میشود: فایلها، دایرکتوریها، لولههای بانام،...
-
نمایش متن رنگی
پنجشنبه 2 خردادماه سال 1392 16:52
نمایش متن رنگی پرسش و پاسخ شماره ۳۷ چطور میتوانم متن را با رنگهای مختلف چاپ کنم؟ در برنامه خود از رشتههای escape رنگ ANSI استفاده نکنید ! فرمان tput محاوره با بانک اطلاعاتی ترمینال به روشی معقول، را برای شما میسر میسازد: # Bourne tput setaf 1; echo this is red tput setaf 2; echo this is green tput bold; echo...
-
فصل مشترک یا تفاوت دو فایل
دوشنبه 30 اردیبهشتماه سال 1392 15:54
پرسش و پاسخ شماره ۳۶ چطور میتوانم تمام سطرهایی را به دست آورم که: در هر دو فایل هستند(فصل مشترک) یا فقط در یکی از دوفایل میباشند(تفاوتها). از فرمان comm(1) استفاده کنید: # Bash # file2 و file1 فصل مشترک # (یعنی فقط سطرهایی که در هر دو فایل وجود دارد) comm -12 <(sort file1) <(sort file2) # file2 از file1...