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

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

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

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

پرسش و پاسخ شماره ۶۶


می‌خواهم عبارت ‎if  [[ $var == foo || $var == bar || $var == more ... ]]‎ را بدون n مرتبه تکرار ‎$var‎، بررسی کنم.

چاره کار استفاده از case می‌باشد:

   # Bourne
   case "$var" in
      foo|bar|more) ... ;;
   esac

در Bash و ksh همین کار را‏، globهای توسعه یافته نیز می‌توانند در داخل فرمان ‎[[‎ انجام بدهند:

   # bash/ksh
   ${BASH_VERSION+shopt -s extglob}
   if [[ $var == @(foo|bar|more) ]]; then
      ...
   fi

به طور جایگزین، برای کنترل هر یک از اقلام لیست الگوها، می‌توانید یک حلقه بر روی آنها به کار ببرید.

    # bash/ksh93/zsh (w/ emulate ksh)

    # usage: pmatch string pattern [ pattern ... ]
    function pmatch {
        ${1+typeset x=}"${1-false}" &&
        while command shift; do
            [[ $x == $1 ]] && return
        done 2>/dev/null
        return 1
    }

    var='foo bar'
    if pmatch "$var" foo bar baz foo\* blarg; then
        : ...
    fi

ksh93 برای اجتماع(و) منطقی(اگر ‎$var‎ بر تمام الگوها منطبق شود، صحیح را برگشت می‌دهد)، می‌تواند از جداکننده الگوی & استفاده کند.

    # ksh93 فقط در پوسته‎
    [[ $var == @(foo&bar&more) ]] && ...

تنها برای پوسته‌هایی که (الگوهای extglob) زیرمجموعه ksh88 را پشتیبانی می‌کنند، می‌توانید استفاده منطقی از عملگر نفی الگوی فرعی را مطابق قوانین DeMorgan استفاده کنید. زیرنویس 1

    # bash/ksh88/etc...
    ${BASH_VERSION+shopt -s extglob}
    [[ $var == !(!(foo)|!(bar)|!(more)) ]] && ...

اما این مورد کاملا غیر شفاف است و خیلی کوتاه‌تر از نوشتن عبارتهای جداگانه برای هر الگو نیز نمی‌باشد.


CategoryShell

پرسش و پاسخ 66 (آخرین ویرایش ‎2013-01-14 22:03:43‎ توسط ormaaj)


  1. مترجم: مطابق قوانین تبدیل De Morgan در منطق گزاره‌ای:

    نفی (A و B) معادل است با (نفی A) یا (نفی B)‏ و به بیان دیگر ‎!(A & B)‎ معادل ‎(!A) | (!B)‎ است
    و همچنین:
    نفی (A یا B) معادل است با (نفی A) و (نفی B) به عبارتی ‎!(A | B)‎ همان ‎(!A) & (!B)‎ است

    (بازگشت)

pause در اسکریپت


آیا یک دستور "PAUSE" مانند آن که در اسکریپتهای MSDOS هست، در bash وجود دارد؟ که به کاربر اعلام نماید جهت ادامه کلیدی را بزند؟

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

# Bash
read -p "Press [enter] to continue..."

# Bourne
echo "Press [enter] to continue..."
read junk

یا استفاده از مورد زیر برای منتظر ماندن تا موقعی که کاربر برای ادامه یک ضربه کلید بزند:

# Bash
read -rsn 1 -p "Press any key to continue..."

گاهی اوقات در حالیکه شما از قبل به علت اینکه (به عنوان مثال) در حال استفاده از لوله‌ای برای تغذیه اسکریپت خود می‌باشید، در حال خواندن از ورودی استاندارد هستید، اما لازم است تا فشردن کلیدی توسط کاربر برای ادامه منتظر بمانید. چگونه به read می‌گویید که از صفحه کلید بخواند؟ در اینجا یونیکس به طور قابل انعطافی سودمند است، شما می‌توانید ‎‎"< /dev/tty"‎‎ را اضافه کنید

# Bash
read -rsn 1 -p "Press any key to continue..." < /dev/tty

اگر می‌خواهید مهلت معین برای انتظار قرار بدهید، از گزینه ‎-t‎ برای read استفاده نمایید:

# Bash
printf 'WARNING: You are about to do something stupid.\n'
printf 'Press a key within 5 seconds to cancel.'
if ! read -rsn 1 -t 5
then something_stupid
fi

اگر فقط می‌خواهید مدتی زمانی را بدون اعتنا به ورودی کاربر، متوقف گردد، sleep را به کار ببرید:

echo "The script is tired.  Please wait a minute."
sleep 60

اگر یک شمارش معکوس تفننی برای زمان دار نمودن read می‌خواهید:

# Bash
# .این تابع عدد چند رقمی را نمی‌تواند مدیریت کند
countdown() {
  local i 
  printf %s "$1"
  sleep 1
  for ((i=$1-1; i>=1; i--)); do
    printf '\b%d' "$i"
    sleep 1
  done
}

printf 'Warning!!\n'
printf 'Five seconds to cancel: '
countdown 5 & pid=$!
if ! read -s -n 1 -t 5; then
  printf '\nboom\n'
else
  kill "$pid"; printf '\nphew\n'fi

(اگر این کُد را در پوسته محاوره‌ای به کار ببرید، در اثر سیستم کنترل job موقعی که پردازش فرزند تولید می‌شود و موقعی که کُشته می‌شود، شاهد اختلالی خواهید بود، اما در اسکریپت چنین اختلالی وجود نخواهد داشت.)


پرسش و پاسخ 65 (آخرین ویرایش ‎‎ 2013-04-08 12:28:58‎ توسط geirha)


پرسش و پاسخ شماره ۶۴


چرا دریافت پاسخ پرسشی که من در ‎ #bash‎ پرسیدم، تا این اندازه دشوار است؟

شاید هیچ کس جواب را نداند( یا افرادی که می‌دانند مشغول هستند). شاید شما توضیح کافی در باره مشکل نداده‌اید، یا شما مشکل را به طور شفاف بیان نکرده‌اید. شاید سؤالی که پرسیده‌اید در این FAQ، یا در تله‌های Bash، یا در راهنمای BashGuide، پاسخ داده شده است.

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

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

علاوه براین، اگر شما تلاش نموده‌اید که خودتان مشکل را برطرف نمایید، واقعاً احتمال بسیاری وجود دارد با استفاده از تکنیکی که کار نمی‌کند(یا حداقل برای آن مشکل خاص کار نمی‌کند) تقلا کرده باشید. هر کدی که از قبل دارید احتمالاً می‌باید دور ریخته شود. ارسال کُد خودتان که کار نمی‌کند به عنوان جایگزین توصیف مشکلی که می‌خواهید حل شود معمولاً اتلاف وقت است، و تقریباً همیشه برخورنده است.

برای توصیه‌های عمومی‌تر آداب معاشرت اینترنت را ببینید. سعی کنید از XyProblem مفتضح پرهیز نمایید.

dilbert-20110402.gif

همچنین:

  • #bash aphorism 1‎‎ (کلمات قصار شماره ۱ ‎bash‏): توصیف اول پرسش کننده در مورد پرسش یا مشکل گمراه کننده خواهد بود.

    • نتیجه گیری ‎#bash 1.1‎: توصیف ثانوی پرسش کننده در مورد پرسش یا مشکل نیز گمراه کننده خواهد بود.

  • #bash aphorism 2‎‎ (کلمات قصار شماره ۲ ‎bash‏): پرسش کننده آنقدر پرسش اولیه خود را تغییر خواهد داد تا کمک کننده در کانال را دیوانه کند.

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

  • داده‌ها هرگز به آسانترین روش برای کارکردن با آنها قالب‌بندی نمی‌شوند.
  • 30 تا 40 درصد گفتگوها در کانال‎ #bash مصداق کلمات قصار ‎ #1‎ و ‎#2‎ می‌باشند.
  • پرسش کننده هرگز در اولین نوبتی که می‌پرسد به شما نمی‌گوید که واقعاً چه کاری می‌خواهد انجام بدهد.
  • سومین توصیف پرسش کننده در باره مشکل، دوتوصیف قبلی در تشریح نادرست عناصری از مشکل را شفاف می‌کند، اما دو موضوع جدید نامربوط اضافه خواهد نمود که حتی از هم بازکردن کلاف درهم تابیده مشکل واقعی را دشوارتر خواهد نمود.
  • بی ربطی به موضوع تا وقتی ادامه خواهد یافت که شخصی پرسشی در مورد bash می‌پرسد که مشمول کلمات قصار bash شماره 1 و(یا) 2 قرار گیرد و GreyCat عصبانی بشود.
  • پرسش کننده پاسخ‌های داده شده را نمی‌خواند و به کار نمی‌برد، بلکه با رویه b1 و b2 ادامه می‌دهد.
  • نادان به طور پیوسته دیگر تازه واردها را بدآموزی می‌کند.
  • موقع انتخاب از دو راه حل داده شده ، تازه وارد همیشه راه حل پیچیده‌تر را انتخاب می‌کند حتی اگر کمتر قابل حمل باشد.
  • موقع انتخاب یکی از راه حل‌های ارائه شده، تازه وارد همیشه راه حل اشتباه را انتخاب می‌کند.
  • تازه واره همیشه دلیلی برای گفتن، «این کار نمی‌کند» خواهد یافت.
  • اگر نمی‌دانید استناد کلمات قصار bash چه شخصی است، آن شخص شما هستید.
  • تمام نمونه‌های ارائه شده توسط پرسش کننده، ناقص، گمراه کننده، و اشتباه هستند و بیانگر پرسش واقعی نیستند.
  • همه وقتی greycat درست می‌گوید، او را نادیده می‌گیرند و وقتی اشتباه می‌کند، رویه b1 است.
  • تازه وارد نمی‌داند که واقعاً چه می‌پرسد، اگر می‌دانست، نیاز ی به پرسیدن نداشت.
  • شما پیشرفته‌تر هستید، احتمالاً بیشتر آنرا فوق پیچیده می‌کنید.
  • شما مبتدی‌تر هستید، احتمالاً بیشتر آن را سردرنیاوردنی می‌کنید.
  • یک تازه‌وارد برای به دست آوردن تأییدیهِ اسکریپت خود به ‎#bash می‌آید. نا امید برمی‌گردد.
  • تازه‌وارد پاسخی که به او داده‌اید را نمی‌پذیرد، مهم نیست که درست باشد یا خیر.
  • تازه‌وارد یک پرنده خونخوار است.
  • تازه‌وارد همیشه دستاویزی برای اشتباه انجام دادن دارد.

پرسش و پاسخ 64 (آخرین ویرایش ‎ 2011-05-12 19:54:44‎ توسط GreyCat)


XyProblem


مشکل X-Y چنانکه گاهی اوقات XyProblem نامیده شده، هذیانی است که برای افراد در هر دو طرف متقاضی کمک و ارائه دهنده کمک، منجر به اتلاف وقت و انرژی بسیار زیاد می‌گرد. این مورد غالباً به صورتی مشابه این پیش می‌رود:

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

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

این یک نمونه است.

<n00b> چگونه می‌توانم سه کاراکتر انتهای نام فایل را نمایش بدهم؟

<feline> اگر آنها در یک متغیر باشند با:  ‎echo ${foo: -3}‎
<feline> چرا 3 کاراکتر؟ واقعاًچه می‌خواهی؟
<feline> پسوند را می‌خواهی؟

<n00b> بله.

<feline> پس آنچه را می‌خواهی بپرس!
<feline> تضمینی وجود ندارد که هر نام فایل پسوند سه کاراکتری داشته باشد،
<feline> بنابراین گرفتن کورکورانه سه کاراکتر مشکل را حل نمی‌کند.
<feline> از این استفاده کن ‎echo ${foo##*.}‎

یک مثال دیگر:

RikusW> فرض کنید من یک نام فایل در‎ $1‎ دارم، چطور می‌توانم اندازه آن را به دست آورم؟

greycat> چرا؟

erUSUL> با ‎du $file‎

RikusW> تشکر

erUSUL> با ‎du "$file"‎ هم

RikusW> فکرش را نکرده‌ای ... :)

greycat> پاسخهای لفظی به پرسشهای نامناسب می‌تواند خطرناک باشد.
greycat> چرا آن اندازه را می‌خواهی؟ مقصود چیست؟

RikusW> با ‎`du $1`‎ ممکنه؟
RikusW> نیاز برای نوشتن یک اسکریپت برای dd و قسمت کردن خروجی به 512k و  md5sum آن...

erUSUL> ‏RikusW: چی؟ بعداً می‌خواهی با آن اندازه کاری انجام بدهی؟

greycat> شما چی می‌خواهی؟

RikusW> دستور dd وقتی به انتها می‌رسد 1 را برگشت نمی‌دهد...

greycat> ... چرا یک md5 منفرد برای کل آن چیز نمی‌گیرید؟

RikusW> من یک فایل خراب 500 مگا بایتی دارم....
RikusW> و یک ارتباط کند

greycat> ‏rsync.
greycat> دیگه!

و یک مثال دیگر:

<lhunath> موقع شروع یک پردازش از پوسته ، پردازش، gid پوسته را به ارث می‌برد - من در نظر دارم پردازشی را با یک GID غیر از شماره شنایی گروه خودم شروع کنم، بنابراین فرض کردم اول بایدبه گروه جدید newgrp کنم و  سپس پردازش را شروع کنم - اما اجرای  ‎newgrp audio‎  به عنوان غیر-root این خطا را می‌دهد: ‎Can not execute bash: No such file or directory                            
‎<lhunath>‎ اگر چه ‎newgrp - audio‎ کار می‌کند، اما من نمی‌توانم برای شروع یک پردازش معین با یک GID متفاوت از این در یک اسکریپت پوسته استفاده نمایم، چون یک پوسته فرعی تولید می‌کند

<greycat> شما *واقعاً* سعی دارید چه کار کنید؟

<lhunath> سعی در شروع wine با شماره شناسایی گروه audio

‎<greycat>‎ ‏lhunath: خُب... daemontools یک برنامه setuidgid را شامل می‌شود که می‌تواند آن را انجام بدهد، اما برای اجرای آن شما باید به عنوان root اقدام کنید، و سپس  یک حساب کاربری تعریف کنید که گروه اولیه آن دارای  GID مورد نظر شما باشد.
<greycat> من شک دارم که آنچه شما می‌خواهید انجام بدهید *واقعاً* « وادار به کارکردن audio در wine» باشد. به این معنی که احتمالاً بخواهید خودتان را به گروه «audio» در  ‎/etc/group‎ اضافه کنید، و logout و برگشت.

<lhunath> په هه هه، اگر فقط به آن آسانی بود. نه، آنچه من *واقعاً* سعی می‌کنم انجام بدهم به دست آوردن rlimits است که در pam برای ‎@audio‎ تنظیم کنم تا به پردازش wineserver اِعمال گردد به طوری که بتواند از sched_fifo  استفاده کند، برای آنکه اولویت بالاتر به نخ‌های audio  جهت بازی‌هایی که آن را درخواست می‌کنند بدهد. برای اینکه wineserver قادر باشد از rlimits استفاده کند، نیاز به داشتن یک gid از ‎@audio‎ دارد که من در ‎/etc/security/limits.conf‎ تعریف نموده‌ام

<greycat> شما که حقیقتاً گمان نمی‌کنی rlimits موقعی که یک پردازش با یک UID/GID مخصوص فراخوانی بشود به طور جادویی ظاهر شود، گمان می‌کنی؟
<greycat> rlimits داخل *خود* پردازش شما تنظیم می‌شود و سپس موقعی که شما ‎fork/exec‎ می‌کنید به فرزندان شما به ارث می‌رسد.
<greycat> تنها موارد خاصی فایلهای پیکربندی ‎pam.d‎ را می‌خوانند -- مواردی که به libpam لینک می‌شوند.
<greycat> مانند ‎/bin/login or /usr/sbin/sshd‎

‎‎<lhunath>‎ ‏greycat: آیا اگر تعریف می‌کردم
 ‎'@audio          -       rtprio          90' in /etc/security/limits.conf ;x‎

<greycat> lhunath: فکر می‌کنید کدام پردازش آن فایل را می‌خواند؟

‎<lhunath>‎ ‏pam
‎<lhunath>‎ ‏hrm.

<greycat> lhunath: و شما فکر می‌کنید که «wine» با libpam لینک می‌شود؟
<greycat> لازم است شما محدودیت‌هایی را که می‌خواهید تنظیم کنید، *و آنوقت* برنامه‌ای را که می‌خواهید اجرا کنید.
<greycat> آنها را به ارث می‌برد.
<greycat> من همیشه مواردی مانند این را انجام می‌دهم:  
‏شروع Freenet node‏‎ su --> ulimit -v whatever --> su - freenet   ---->  ‎ 
<greycat> معمولاً ‎exec su - freenet‎ به طوری که اگر/وقتی پردازش freenet منقضی شود یک پوسته ‎ raw roo‎t پاکیزه نشده رها می‌شود

<lhunath> هه.

<goldfish> دلپذیر

<greycat> ببین، به *این* دلیل است که من مواردی مانند «واقعاً در تلاش برای انجام چه کاری هستید» را می‌پرسم

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

(مترجم: این مثال آخری را ترجمه نکردم چون نمونه‌های بومی مشکل X-Y در انجمن‌های فارسی به وفور دیده می‌شود.)

<chron> i'm editting a sed stream like:  sed 's/^/blah/'
<chron> but i want to replace with 'blah/' instead of 'blah'
<chron> editting a stream*

<greycat> blah\/ or use a different separator

<_matt> blah\//

<chron> thanks
<chron> i'm trying to ls a directory, and every file or folder that shows in ls, i want it to come out like file1 file2 file3  (all in one line)
<chron> instead of columns or list

<greycat> echo *

<trash> chron: echo dir/*

<chron> i'm trying to compare 2 files: file1 and file2, if there is any matching line in file1 from file2, i want it gone from file1

<greycat> !faq subtract
->#bash http://wooledge.org/mywiki/BashFaq#faq36 -- How can I get all lines that are: in both of two files (set intersection) or in only one of two files (set subtraction).

<trash> !bashphorism2
->#bash The questioner will keep changing the original question until it drives the helpers in the channel insane.

* greycat goes out on a limb and guesses that the actual question is "I want to synchronize a directory against another directory"

<chron> no
<chron> i know what i'm doing, i swear
<chron> lol

<trash> I swear you don't.

<chron> cool worked, thanks guys
<chron> i have a file with <package>-<ver> in a list (separate lines), for example: gnu-netcat-0.7.1, and i want to remove -<ver>
<chron> gnu-netcat-0.7.1 becomes gnu-netcat

<Knirch> !pe
->#bash Parameter Expansion. Expressions like ${foo%.mp3} and so on -- see man bash, and then search for Parameter Expansion. See also, http://wooledge.org/mywiki/BashFaq#faq74 and http://tiswww.tis.case.edu/~chet/bash/bashref.html#SEC30

<greycat> chron: ${foo%-*}
<greycat> !pe
->#bash Parameter Expansion. Expressions like ${foo%.mp3} and so on -- see man bash, and then search for Parameter Expansion. See also, http://wooledge.org/mywiki/BashFaq#faq74 and http://tiswww.tis.case.edu/~chet/bash/bashref.html#SEC30

<chron> and that will work even with something like gnu-netcat-0.7.1 ?
<chron> when it has the hyphen after 'gnu'

<greycat> !pe
->#bash Parameter Expansion. Expressions like ${foo%.mp3} and so on -- see man bash, and then search for Parameter Expansion. See also, http://wooledge.org/mywiki/BashFaq#faq74 and http://tiswww.tis.case.edu/~chet/bash/bashref.html#SEC30

<chron> ok ok

<savetheWorld> foo=gnu-netcat-0.7.1;  echo ${foo/-[0-9]*/}

<greycat> savetheWorld: stupid.

* savetheWorld humbly accepts greycat's gentle critique, begs forgiveness and asks for more information

<chron> how do you do it for every line?

<greycat> !faq 1
->#bash http://wooledge.org/mywiki/BashFaq#faq1 -- How can I read a file line-by-line?

<greycat> savetheWorld: foo=glibc-2.5-2.5.1
<greycat> in that case, you want glibc-2.5 to be the output, but yours fails.

<savetheWorld> greycat: but I just tested it.
<savetheWorld> foo=glibc-2.5-2.5.1;  echo ${foo/-[0-9]*/}
<savetheWorld> glibc

<greycat> savetheWorld: and that's wrong.

<chron> it's not glibc-2.5

<savetheWorld> ah, rats
<savetheWorld> hmm - right end anchor.... ah, first dash traveling left from the right hand end.

<greycat> which is precisely what ${foo%-*} does

<savetheWorld> ah, didn't see you post that the first time.

<greycat> it was delayed by some lag

<savetheWorld> and % is non greedy, %% is greedy.
<savetheWorld> right?

<igli> yup

<savetheWorld> tx

<chron> ok greycat was right, but i needed savetheWorld's solution

<greycat> !bashphorism1
->#bash the questioner's first description of the problem/question will be misleading.

<chron> lol because some packages look like blah-2.5-r4
<chron> thanks both

<greycat> Has to be a Gentoo user.

<chron> lol
<chron> quit being so uncanny

<igli> chron: what are you working on?

<chron> emerging all packages in a category
<chron> that are not already merg'd

<igli> all in the whole cat?

<greycat> and the reason you can't just type "emerge blah-2.5-r4" is...?

<trash> he has to type emerge =blah-version

<chron> not only that but

<greycat> and the reason you can't just type "emerge =blah-2.5-r4" is...? ;-)

<igli> he needs the list first

<chron> i want to get ones that aren't already merg'd

<trash> chron: just add -u

<greycat> !xy
->#bash http://wooledge.org/mywiki/XyProblem

<chron> and i need to get that not-already-merged list
<chron> into /etc/portage/package.keywords
<chron> i know what i'm doing :>

<igli> cd /usr/portage/"$cat"; list=($(echo *))

<greycat> You're a gentoo user.  By definition, you don't have a clue what you're doing.

<greycat> igli: you mean list=(*)

<savetheWorld> "you keep saying that.   I do not think it means what you think it means"..... TPB.

<chron> but my /etc/portage/package.keywords looks very funny with massive comments

<igli> god yes, sorry, just woke up

<chron> no gentoo means i know what i'm doing

<trash> chron: LOL
<trash> that was a good one.

<savetheWorld> Inconceivable!

<chron> please don't tell me you use debian
<chron> else i'd be laughing for days

<greycat> Now that's a case where LOL was probably literal.

<igli> chron: don't get into this seriously
<igli> #friendly-coders when they've mauled you enuff chron
<igli> ;)

<chron> well i know what i'm doing, and it's already in progress :>

<greycat>    --noreplace (-n)
<greycat>           Skips the packages specified on the command-line that have
<greycat>           already been installed.

<chron> yea that's the solution i'm using when i'm doing actually merger
<chron> last step :)

<igli> cd /usr/portage/"$cat"; list=(*); emerge -n ${list[@]}
<igli> cd /usr/portage/"$cat"; list=(*); emerge -n "${list[@]}" # sorry

<greycat> or just cd /usr/portage/"$cat" && emerge -n *

<igli> heh :)

<greycat> but hey, that would be too obvious and simple!

<igli> "" not needed in gentoo, but best to be safe

<chron> ok i can use that as my last step

<greycat> us poor ignorant Debian and BSD users can't handle his Gentoo elitism.

<igli> chill out greycat :)

<chron> but what i did to get the list in the first place was echo *

<igli> well do that instead

<chron> cd /usr/portage/$cat && emerge -n $whateverthatgotechoed
<chron> lolz

<igli> use *

<chron> or i can just copy and paste what i echo *'d

<greycat> emerge -n *

<chron> ah

<igli> indeed

<trash> indeed lolZ

<chron> lolZ

<igli> hehe that is hilarious

XyProblem (آخرین ویرایش ‎2013-03-19 06:47:47‎ توسط 109-224-132-97)


آداب معاشرت در اینترنت


آداب معاشرت در شبکه

اینترنت (یا 'Net، یا Net) شبکه‌ای تشکل یافته از بسیاری شبکه‌های متمایز و کوچکترِ کامپیوترها می‌باشد. گر چه، نگاه به آن تنها به عنوان مجموعه‌ای از کامپیوترها، گمراه کننده است، زیرا اکثر آن کامپیوترها در حال استفاده توسط انسانها می‌باشند. آگاهی از اینکه چطور با یک کامپیوتر رفتار شود یک مهارت با اهمیت است، اما دانستن آن که چگونه با سایر افرادی که در حال استفاده از کامپیوتر می‌باشند، نیازمند برخی ملاحظات اضافی است.

اینترنت قطع نظر از جزییات، می‌تواند به چند پروتکل(قرارداد) متمایز یا روشهای پذیرفته شده برای تبادل اطلاعات، تقسیم بشود. این پروتکل‌ها شامل SMTP (انتقال الکترونیکی نامه)، HTTP (انتقال اَبَرمتن، برای صفحات وب)، IRC ((مکالمه اینترنتی با دیگران)، NNTP (انتقال اخبار در شبکه)، و مانند آنها می‌باشد. کامپیوترها از این پروتکل‌ها برای مبادله اطلاعات با یکدیگر استفاده می‌کنند -- اما آنها همچنان مطابق درخواست عوامل انسانی این کار را انجام می‌دهند.

به عنوان انسان، ما نرم‌افزاری را انتخاب می‌کنیم که برقراری ارتباط با سایر انسانها( یا کامپیوترها )را به مناسب‌ترین روش برای ما میسر کند. نرم‌افزار یک واسط(راه ورود) به آنچه غالبا به یک جایگاه تعبیر می‌کنیم، به ما ارائه می‌کند. به عنوان مثال ما از «انجمن‌های وب» به عنوان محل‌هایی که مردم می‌توانند برای صحبت با یکدیگر به آنجا بروند، صحبت می‌کنیم. بعلاوه، ما «گروههای خبری»، «فهرست‌های پستی»، «اطاقهای گفتگو» و غیره را داریم. موقعی که ما در ویژگی‌های اصلی نرم‌افزار ماهر شویم، تمام این موارد را به عنوان مکان‌هایی می‌بینیم که سایر افرادی که می‌توانیم با آنها صحبت کنیم، در آنجا هستند. ما واژه‌هایی را به کار می‌بریم که تجربه جسمانی‌مان را وانمود می‌کنند -- «رفتن»، «صحبت کردن»، «گفتن» -- حتی موقعی که واقعاً حرکت نمی‌کنیم یا در حال استفاده از صدایمان نیستیم.

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

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

یک راهنما برای رفتار اجتماعی، آداب معاشرت نامیده می‌شود. بنابراین یک راهنمای رفتارهای اجتماعی جهت اینترنت، آداب معاشرت اینترنت، یا net etiquette نامیده می‌شود.

1. قواعد کلی

1.1. قبل از اینکه صحبت نمایید، گوش کنید

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

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

اگر در یک انجمن انگلیسی صحبت می‌کنند، شما باید با بیشترین استطاعت خود انگلیسی صحبت کنید. اگر آنها فرانسه سخن می‌گویند، شما باید فرانسه صحبت کنید. اگر آنها متمایل به استفاده از املای صحیح می‌باشند، آنوقت شما باید همنوایی کنید، یا اینکه آنها با سردی از شما پذیرایی می‌کنند. استفاده از اختصاراتی مانند "R" برای "are" و "U" برای "you" و "pls" برای "please" و غیره در بعضی از انجمن‌ها برای شما خصومت شدیدی را به همراه خواهد داشت، اما در سایر انجمن‌ها به طور کامل قابل‌قبول است.

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

1.2. spam نکنید

در این حالت، Spam چند رفتار متمایز را دربر می‌گیرد:

  • اعلان‌های خارج از موضوع(off-topic) به قصد کسب منفعت
  • بازگویی مکرر پرسش‌هایتان برای تحصیل توجه بیشتر

هر دو مورد توسط اکثر اجتماعات به طور جدی به عنوان قانون‌شکنی در نظر گرفته می‌شوند، مخصوصاً مورد اول. اکثر انجمن‌هایی که دارای انواعی از کنترل‌های دسترسی هستند در اولین علامت spam کردن تجاری، بدون بحث و چشم‌پوشی، از آن کنترل‌ها برای اخراج شما استفاده می‌کنند. بسیاری از انجمن‌ها در صورتی که URLهایی در یادداشت خود قرار بدهید که منابع بالقوه‌ای(شهرت، شانس، امتیازات) در هر نوع بازی آنلاین که تعداد کلیک بر URL را شمارش می‌کند، برای شما تحصیل کند -- که همچنین شکلی از منفعت برای شما می‌باشد -- رفتار مشابهی خواهند نمود.

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

همچنین تکرار کلمه‌به‌کلمه همان پرسش شکل نامناسبی به حساب می‌آید. این امر نشان می‌دهد که شما هیچ اقدام عملی برای حل مشکل خود یا تکمیل بحث به عمل نمی‌آورید. شما مابین تکرار جستجوها باید برای مشکل خود وقت بگذارید، و تکرار پرسش را بر مبنای آنچه آموخته‌اید تنظیم نمایید. برای مثال، «من در <URL را درج کنید> دیدم که نمی‌توانم foo را به طور مستقیم در bar بگذارم، اما آیا راهی هست که بتوانم آن را رفع و رجوع کنم؟ من واقعاً نیاز دارم که foo را در محلی قرار بدهم.»

1.3. troll نکنید

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

Trollها معمولاً در اطراف اجتماعات بزرگتر می‌چرخند، زیرا آنها بزرگترین جمع ممکن از مستمعین را می‌طلبند. در انجمن‌های کوچکتر، به ندرت دیده می‌شوند. برخی از تکنیک‌های متداول troll کردن از این قبیل هستند:

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

یک مبحث مرتبط، metadiscussion زیرنویس 1 خود اجتماع می‌باشد. مدیریت صحیح این مورد می‌تواند ماهرانه باشد، نشان دادن مشکلی که شما می‌بینید یک چیز است، اما راه انداختن گفتار تعصب‌آمیز و جزمی در مورد اینکه افراد چطور باید رفتارشان را به منظور منطبق کردن با برخی ایده‌آل‌های ذهنی تغییر بدهند چیز دیگری است. تلاش برای تغییر یک اجتماع، یا باورهای دیرپای آن، احتمالاً باعث کشمکش می‌گردد.

1.4. یک شریک باشید نه یک سربار

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

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

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

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

1.5. جزییات مطلب

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

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

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

تمام اطلاعات پس‌زمینه‌ای لازم را ارائه کنید. اگر این یک مشکل کامپیوتری است، به اجتماع بگویید از چه نوع کامپیوتری استفاده می‌کنید. اگر مشکل نرم‌افزاری است، بگویید که چه نرم‌افزاری به کار می‌برید(از جمله شماره‌های نگارش در صورت امکان). اگر مشکل یک ماشین است, مدل و سال ساخت ماشین را بگویید.

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

1.6. آنها اشخاص هستند نه آدمِ ماشینی

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

هرگز پاسخ‌ها را مطالبه نکنید. شما در اینترنت از هیچ شخص دیگری برای دریافت کمک طلبکار نیستید مگر آنکه بهایی جهت آن به آنها پرداخت می‌کنید، در چنین حالتی، احتمالاً شما به جای یک انجمن وب یا اطاق گفتگو باید مستقیماً با آنها صحبت کنید. اشخاصی که با شما صحبت می‌کنند برای انجام این کار از وقت زندگی خودشان می‌زنند، و ممکن است وقت یا تمایل برای بیش از یک جوابگویی مختصر نداشته باشند. با پرتوقعی شما کمتر محتمل است که افراد بخواهند با شما صحبت کنند. (یک حالت دیگر از این مسئله، موقعی است که شخصی برای دریافت کمک می‌گوید «من عجله دارم.» خُب، متأسفیم. زمینه‌سازی خارج از نزاکت از طرف شما یک حالت اضطراری در طرف ما را وضع نمی‌کند.)

2. قواعد جهت IRC

کانالهای تقویت گپ اینترنتی ‎(IRC)‎ اجتماعاتی تشکیل شده پیرامون مباحث خاص هستند، غالباً مباحث فنی (اما نه همیشه ). سرویس‌گیرنده‌های IRC به یک سرویس‌دهنده IRC متصل می‌شوند، افراد برای شناسایی خودشان «نامهای خودمانی» انتخاب می‌کنند. پیغامها توسط سرویس‌گیرنده به IRC سرویس‌دهنده ارسال می‌شوند، که سپس پیغام را با ارسال آن به هر شخص (سرویس‌گیرنده) متصل به همان کانال تکرار می‌کند. همینطور پیغام‌ها سطرهای متنی با طول محدود شده می‌باشند(معمولاً حدود 200 تا 250 کاراکتر). گاهی اوقات رنگ و نشانه‌گذاری‌ها از آنها زدوده می‌شود (اما گاهی اوقات خیر، به کانال بستگی دارد).

«گپ زنی» با استفاده از این نرم‌افزار تقریباً لحظه‌ای است، پیغام‌های ارسالی توسط یک سرویس‌گیرنده به طور خیلی سریع توسط سایر سرویس‌گیرنده‌ها مشاهده می‌گردد(به طور معمول در کمتر از یک ثانیه).همینطور، افراد بسیاری برای مدتهای طولانی به طور پیوسته پیغام‌های کانال را می‌خوانند، این امر شانس بسیار خوبی به شما می‌دهد که پیغام شما ظرف چند لحظه دیده شود. این رویه با فهرست‌های پستی یا گروههای خبری Usenet یا انجمن‌های وب، جایی که پیغامهای شما ممکن است ساعت‌ها توسط سایر اشخاص دیده نشود، به طور برجسته‌ای تفاوت دارد.

همینطور، کانالهای IRC برخی قواعد تخصصی آداب معاشرت را برای حفظ سلامت کانال(و اعضای آن) تکامل بخشیده‌اند:

2.1. سرویس‌گیرنده‌تان را بشناسید

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

برخی سرویس‌گیرنده‌های IRC، و تعدادی اسکریپت که افراد به عنوان افزودنی به سرویس‌گیرنده‌هایشان به کار می‌برند، کارهایی انجام می‌دهند که توسط بعضی کانال‌ها نامطلوب محسوب می‌گردند. به عنوان مثال، در بسیاری از کانالها ویژگی‌هایی مانند «وقتی خارج می‌شوم اعلام کن» یا «وصل مجدد خودکار در صورت قطع ارتباط» بی ادبی در نظر گرفته می‌شوند.

برای خواندن مستندات سرویس‌گیرنده خود یا لااقل بخشهای اول آن، وقت صرف کنید.چگونگی اتصال به سرویس‌دهنده‌های مختلف IRC (یا شبکه) و کانالها را، چگونه سوییچ کردن میان آنها را یاد بگیرید. تعدادی از گزینه‌های معتبر و مخصوصاً هر گزینه‌ای که سرویس‌گیرنده شما تنظیم می‌کند و برای شما منحصر بفرد است یا با سایر سرویس‌گیرنده‌ها تفاوت دارد را بیاموزید.

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

2.2. خواندن مبحث

هر کانال یک «topic»(مبحث) ماندگار دارد، که رشته‌ای از متن است که برای آن در نظرگرفته شده تا توسط همه اشخاص موقعی که وارد کانال می‌شوند خوانده شود.بسته به کانال، مبحث ممکن است URLهایی برای اسناد پرسش‌هایی که به طور مکرر پرسیده شده‌اند، یا سایر آموزشهایی که لازم است دنبال کنید، به شما ارایه کند.

اکثر سرویس‌گیرنده‌های IRC وقتی شما وارد کانال می‌شوید topic را نمایش خواهند داد، اگرچه گاهی اوقات در انبوه سایر متن‌ها (فهرست نامهای کاربری و غیره) گم می‌شود. اغلب، می‌توانید با تایپ ‎/topic‎ در سرویس‌گیرنده خود، دوباره آن را بخوانید -- اما وقتی شک دارید به طوریکه در بالا پیشنهاد شد، مستندات سرویس‌گیرنده‌تان را بخوانید.

اگر کانال شما یک FAQ (پرسشهایی که مکرراً پرسیده شده‌اند) دارد، حتماً قبل از هرگونه پرسشی آن را بخوانید. پرسیدن پرسش‌هایی که در FAQ پوشش داده می‌شوند تنبلی یا گستاخی محسوب می‌گردند. احتمال زیادی وجود دارد که پرسش شما قبلاً بارها مطرح گردیده و پاسخ آن بیان شده باشد، و غالباً FAQ پاسخ‌هایی را که شما نیاز دارید شامل می‌شود.

2.3. فقط سؤال را بپرسید

وقتی اشخاص می‌پرسند «آیا هیچکس اینجا هست؟» یا « می‌توانم یک سؤال در باره _ _ _ بپرسم؟»، آزار دهنده است، اگر شما پرسشی دارید و صلاحدید فوق را پیروی ‌کرده‌اید، آنوقت بفرمایید و آن را بپرسید. اگر هیچکس پاسخ نداد، آنوقت کمی صبر کنید. اگر کانال نخواهد پرسشهایی در مورد آنچه شما می‌پرسید را بپذیرد، به شما خواهند گفت(و اغلب جایی را که شما می‌توانید چنان مواردی را بپرسید به شما پیشتهاد خواهند نمود).

یکی از اصلی‌ترین دلایلی که چرا اعضای کانال IRC پرسشهایی مانند «چه کسی می‌تواند در مورد _ _ _ به من کمک کند؟» را دوست ندارند، آن است که پاسخ «من می‌توانم» معمولاً به وسیله رگباری از پیغام‌های خصوصی توسط پرسش کننده دنبال می‌شود. که ما را پیش می‌برد به:

2.4. از کانال بپرسید، نه از یک فرد

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

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

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

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

2.5. مگر اینکه یک chatbot باشد...

برخی کانالها برای پاسخگویی به پرسشها یا توزیع اطلاعات دارای برنامه‌های AI(هوش مصنوعی) به نام «chatbot» یا «bot» می‌باشند. ارسال پیغام‌های شخصی به برنامه‌های bot تشویق می‌شود، زیرا bot شکیبایی نامحدودی دارد (برخلاف انسان مالک آن)، و آنچه که bot می‌تواند به شما پاسخ بدهد یک پرسش کوچکتری از پرسشهایی است که افراد در کانال به آنها رسیدگی می‌کنند.

یادگیری آنکه چطور و چه وقت با یک bot صحبت کنیم وقت و تجربه لازم دارد، اکثر آنها فوق‌العاده ساده‌ می‌باشند و تنها پرسشهایی را که از کلیدواژه‌های مخصوصی ترکیب شده باشند جواب می‌دهند. بهترین روش یادگیری این مطلب مشاهده کارکرد دیگران با آن و سپس امتحان کردن خودتان است. بسیار بهتر است این تجربیات به جای کل کانال بااستفاده از ‎/msg‎ (یا معادل آن در کانال شما) انجام بشود.

2.6. flood ‏2 نکنید

بسیاری از کانالها دارای رهنمودی در این مورد می‌باشند که بدون آنکه مایه دردسر قلمداد بشوید، چند سطر از متن را می‌توانید به ردیف ارسال کنید. این تعداد به طور گسترده‌ای متغیر است، به کانال و چگونگی فعالیت آن بستگی دارد -- در کانال بزرگتر و فعال‌تر آستانه تحمل «flooding» پایین‌تر خواهد بود. وقتی در این باره تردید دارید، قبل از اینکه مقادیر زیادی متن را مستقیماً در یک کانال IRC درج نمایید، سؤال کنید.

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

اگر مشکل شما نیاز به نشان دادن اطلاعات بسیار دارد (برای مثال، 10 سطرِ کُد در برنامه‌ای که شما روی آن کار می‌کنید)، آنوقت شما باید اطلاعات را در جایی روی یک سرویس‌دهنده وب 3 قرار بدهید و یک URL به آن بدهید -- اما تنها بعد از تشریح مشکل به اندازه کافی، این کار را انجام بدهید! آمدن به یک کانال IRC گفتن کی میتونه در مورد http://paste.site/paste123456 به من کمک کنه، بدون یک توضیح بیشتر، یک انحراف بزرگ است. (این با این حقیقت آمیخته است که اکثر این قبیل مشکلات درج شده(paste) به جای 10 سطر کُد، صدها سطر خواهند بود....)

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

2.7. پرسش را به یکباره بپرسید

این مطلب مخصوصاً در کانالهای شلوغ اهمیت دارد. شما باید تا آنجا که ممکن است، پرسش خود را طوری تهیه کنید تا در اندازه یک سطرمنفردِ IRC (تقریباً 200 تا 250 بایت) باشد. به آن طریق، اشخاص تمام پرسش شما را به یکباره می‌بینند.

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

در کانالهای کمتر شلوغ، ممکن است پرسیدن یک پرسش در چند قسمت خوب باشد. مطابق معمول، شما باید رهنمودها یا استانداردهایی را به کار ببرید که معیار کانالی است که در آن هستید.


آداب معاشرت شبکه (آخرین ویرایش ‎2010-05-24 23:33:36‎ توسط GreyCat)


  1. مترجم: metadiscussion به معنی بحث درجه دوم: به جای صحبت در مورد موضوعات مباحثات جاری، بحث در باره خودِ بحث، از قبیل سبک آن، شرکت کنندگان آن و غیره. (بازگشت)

  2. مترجم: flood به معنی روانه کردن مقادیر بسیاری متن در یک کانال IRC می‌باشد، و مخصوصاً وقتی متن کسل کننده‌ای باشد و سایر کاربران در حال انجام یک مکالمه جدی باشند، نوعی بی‌ادبی است. (بازگشت)

  3. مترجم: برای این منظور برخی سایت‌ها سرویس‌های خاصی به نام سرویس paste را ارایه می‌کنند، به عنوان نمونه paste.ubuntu.com که می‌توانید آن متن طولانی را در آن وارد کنید و سپس لینک صفحه‌ای که دریافت می‌کنید را در پرسش خود درج نمایید (بازگشت)