لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۸/۱۲/۱۴
    bond
  • ۹۸/۱۰/۲۰
    GIT
  • ۹۸/۱۰/۱۴
    DISK

۸ مطلب با موضوع «ProgrammingAndScript» ثبت شده است

۲۱
دی

برای pars کردن یک عبارت json می‌توان از دستور زیر که تلفیقی از کد پایتون نیز می‌باشد استفاده نمود

 

echo '{"hostname":"test","domainname":"example.com"}' | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["hostname"]'

 

برای اطلاعات بیشتر به لینک مراجعه نمایید

  • behrooz mohamadi nsasab
۱۴
آبان

دستور شیفت در اسکریپت نویسی:

  • دستور شیفت فقط یک عدد بعنوان آرگومان می‌پذیرد
  • دستور شیفت عددی بین صفر تا تعداد آرگومان می‌پذیرد
  • در دستور شیفت عدد صفر هیچ کاری نمی‌کند
  • اگر خط شیفت با عدد ۱ اجرا بشود. آنگاه آرگومان یک را نادیده گرفته و آرگومان شماره دو بعنوان آرگومان شماره یک، تلقی خواهد شد
shift 1
  • گر خط شیفت با عدد ۲ اجرا بشود. آنگاه آرگومان یک و دو  نادیده گرفته شده و آرگومان شماره سه بعنوان آرگومان شماره یک، تلقی خواهد شد
shift 2
  • گر خط شیفت با عدد پنج اجرا بشود. آنگاه آرگومان یک و دو وسه و چهار و پنج  نادیده گرفته و آرگومان شماره شش بعنوان آرگومان شماره یک، تلقی خواهد شد
shift 5
  • بطور خلاصه می‌توان گفت «به اندازه عدد داده شده به دستور شیفت» آرگومان ورودی را حذف کرده و آرگومان بعدی را بعنوان یک درنظر خواهد گرفت
  •  

 

  • behrooz mohamadi nsasab
۲۰
دی

نکات:

  • محیط استیج یعنی وضعیت آماده کامیت کردن

  • هد یکی از کامیت‌ها یا تغییرات پایداری است که در یک شاخه وجود دارد. معمولا آخرین کامییتی است که کرده ایم
  • نمایش تغییرات بر اساس برنامه diff -u انجام می‌گیرد.
  • اول همه فایل‌های untracked هستند یعنی گیت مواظب آنها نیست و بعد آن را add می‌کنیم و در اینصورت گیت آنها را میفهمد و مواظبت می‌کند یعنی میروند در محیط stage و بعدا آن را کامیت می‌کنیم و با این کار به محیط پایدار خواهند رسید
  • وقتی از یک سایتی یک پروژه راکلون می‌کنیم اسم کامیت پایدار (معمولا HEAD) آن پروژه را می‌گذاریم origin و همچنان اسم آخرین نسخه پایدار سیستم خودم هم master خواهد بود

دستورات:

ایجاد پروژه و اقدامات اولیه

  • ساختن یک پروژه گیت خالی که یک فولدر مخفی ایجاد می‌کند
$ git init

 

  • کلون کردن یک پروژه در سیستم خود
$ git clone <URL.git>

 

  • از پروژه فعلی یک ریپوزیتوری در سرور ایجاد کن و اسم آن را بگذار اوریجین و آدرس آن را هم باید ادمین سرور گیت به ما بدهد
$ git remote add origin URL

 

نمایش وضعیت و لاگ

  • نمایش وضعیت فایل‌های موجود در پوشه ای که گیت آن پوشه را در اختیار گرفته است:
$ git status

 

  • مشاهده کارهایی که کردید
$ git log --stat --summary

 

  • مشاهده کارهایی که کردید با تفاوت دیف‌ها:
$ git log -p

 

  • نمایش تغییرات کنونی با تغییرات هِد
$ git diff HEAD

 

  •  فایل‌های محیط استیج چه تغییراتی داشته اند.-تفاوت هد و استیج را نشان می‌دهد
$ git diff --staged
$ git diff --color

 

  • نشان دادن تغییرات یک کامیت
$ git show <Hash Of Commit>

 

  •  نمایش جزییات یک تگ که بعنوان ورژن شناخته می‌شود:
$ git show <tag name>

 

  • وضعیت را در سرور گیت نشان میدهد(باید بررسی شود)
$ git remote

 

 

اقدامات در stage و unstage

  • یک فایل را از استیج بیرون بیاور
$ git reset file

 

  • بازگشت به آخرین تغییرات در آن فایل-با این کار فایل اصلی که در هد است جایگزین فایلی می‌شود که در آن تغییرات اشتباه داده بودید
$ git checkout -- <FILE>

 

  • حذف فایل stage شده موجود و تبدیل به unstage
$ git rm --cached <FileNames>

 

  • حذف فولدر  stage شده موجود و تبدیل به unstage
$ git rm --cached -r <FOLDER>

 

  • پاک کردن یک فایل از گیت و فایل‌سیستم
$ git rm <file>

 

 

 

کامیت و تگ

  • افزودن یک تغییر در استیج :
$ git add <File>

 

  • افزودن یک تغییر در استیج:
$ git add -A

 

  • انتقال تغییرات از استیج به کامیت:
$ git commit -m "message"

 

  • بازگشت به آخرین کامیت(اگر استیج نشده باشد یعنی دستور اَد زده نشده باشد)
$ git checkout -- filename

 

  • بازگشت به آخرین کامیت درصورتی که دستور اَد زده شده باشد
$ git reset HEAD filename

 

  • نکته: tag می‌تواند به ما بگوید که کدام کامیت است که قابلیت ارائه به مشتری را دارد. یعنی مدیر پروژه در ذهن خودش حفظ نکند که کدام ورژن شماره یک است و کدام شماره نسخه دوم از برنامه است. معمولا شرکت‌ها برای اینکه یک release از محصول بدهند در کامیت مطلوب یک تگ میزنند که تحت عنوان ورژن شماره خاص از محصول شناخته بشود.
  • نکته: تگ بر روی کامیت زده می‌شود
  • نمایش تگ‌ها
$ git tag

 

  • زدن تک به آخرین کامیت  :
$ git tag -a v2.0.1 -m " توضیحات در باره این تگ"

 

 

  • به یک کامیت قدیمی یک تگ اختصاص دادیم:
$ git tag -a v1.3.9 <Hash Of custom commit> -m "توضیحات درباره تک"

 

  • نمایش تمام تگ‌هایی که در اول آن کاراکتر "وی" قرار دارد:
$ git tag -l "v*"

 

  • نکته: اگر تغییر از نوع ایجاد تگ باشد، گیت آن را نمی‌فهمد. یعنی دستور git status ایجاد تگ را گزارش نمی‌دهد.(در نتیجه در دستور پوش هم چیزی به سرور اضافه نخواهد شد)
  • تگ مورد نظر را به شاخه اوریجین در سرور اضافه  کند
$ git push origin <TagName>

 

  • تگ‌ها را به شاخه اوریجین در سرور گیت اضافه کن:
$ git push origin --tags
  • رفتن به یک تگ(یعنی کامیتی که در آن تگ زده شده) در پروژه(نکته: اگر به یک تگ checkout کردیم برای ایجاد تغییرات باید یک برنچ ایجاد نماییم و تغییرات را به آن اعمال نماییم.)
$ git checkout <Tag name>

 

  • پروژه ای که از سایت گرفتم را تغییر دادم. این تغییرات در شاخه مَستر سیستم خودم انجام گرفته است. اگر بخواهم این تغییرات را در برنچ اصلی سایت قرار بدهم باید از این دستور کمک بگیرم
$ git push origin master

 

  • آخرین تغییراتی که در سایت وجود دارد که با نام اوریجین شناخته می‌شود را بگیرد و در شاخه مَستر سیستم خودم اَعمال کن
$ git pull origin master

 

  • تغییرات مستر را به شاخه اوریجین که در سرور است اضافه کن:
$ git push origin master

 

 

برنچ

  • نمایش تمامی برنچ‌های موجود
$ git branch

 

  • ساختن یک برنج جدید:
$ git branch <Name>

 

  • رفتن به برنچ دیگر(بکش بیرون اون رو):
$ git checkout <branchName>

 

  • پاک کردن یک برنچ:
$ git branch -d <BranchName>

 

  • برنجی که هِد در آن است را با برنج ذکر شده یکی می‌کند:
$ git merge <branchName>

 

  • تنها مشاهده تغییرات سرور آنلاین(ریموت)- نکته: تغییرات به لوکال منتقل نمی‌شود
$ git fetch origin 

 

 

کار با merge

  • پس از اینکه با دستور fetch‌ صحت تغییرات مخزن آنلاین را مشاهده کردیم،‌ آن را با دستور زیر از مخزن آنلاین به لوکال منتقل می‌کنیم.(حتما باید نام برنج آورده بشود)
$ git merge origin/master

 

 

کار با blame

  • نکته: وقتی یک باگ در یک فایل پیدا می‌کنیم git blame اجازه می‌دهد که آن را گردن یکی بیاندازید.
  • تاریخچه تغییرات فایل را نشان می‌دهد
$ git blame <FileName>

 

  • تاریخچه تغییرات لاین هشتم از فایل را نشان می‌دهد
$ git blame <FileName> -L8

 

  • تاریخچه تغییرات لاین هشتم تا لاین دهم از فایل را نشان می‌دهد(نفر آخری که تغییرات را ایجاد کرده است)در پروژه
$ git blame <FileName> -L8,10

 

 

 

برخی تنظیمات ساختاری خود گیت

  • می‌توانیم توسط دستورات زیر نام کاربری یا ایمیل یا دیگر موارد را برای گیت فعلی تنظیم نماییم
$ git config --global user.name برخی تنظیمات
$ git config --global user.name "Your Full Name"
$ git config --global user.email you@somewhere.com

 

 

 

 

 

    • behrooz mohamadi nsasab
    ۱۶
    مرداد

    ${parameter:=word}:

    If parameter is unset or null, the expansion of word is assigned to parameter.
    The value of parameter is then substituted. 
    Positional parameters and special parameters may not be assigned to in this way.

    ${var:-value}: 

    if ${var} is set and not null, or value otherwise.
    The ${var-value} construct is similar, but checks only that the variable is set.

    ${var:=value} and ${var=value}:

    if var is unset (and also set, but null for the := form).

    ${var:?message}:

    display message to stderr and then exit if var is unset or null.
    This should generally not be used within ebuilds as it does not use the die mechanism.
    There is a ${var?message} form too.

    ${var:+value}:

    if var is set and not null, or a blank string otherwise.
    There is a ${var+value} form.

     

     

    URL

    • behrooz mohamadi nsasab
    ۱۷
    فروردين

    تبدیل  jsonObject به Key=Value

    $ cat test.json
    {
        "var": 1,
        "foo": "bar",
        "x": "test"
    }
    $ jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" test.json
    foo=bar
    var=1
    x=test

     

    curl -s 'https://api.github.com/users/lambda' | jq -r '.name'

     

    URL

    URL

    URL

    • behrooz mohamadi nsasab
    ۱۰
    بهمن
    برای تبدیل یک اسکریپت شل به فایل اجرایی که محتوی آن قابل نمایش نباشد از دستور زیر میتوان استفاده کرد
    به عبارت دیگر دستور زیر فایل کامپایل شده را بصورت فایل اجرایی‌ای که محتوی قابل نمایش نیست در خواهد آورد


    shc -f NAME.sh
    • behrooz mohamadi nsasab
    ۲۳
    تیر
    برای نمایش یک پیغام بصورت notification از دستور زیر استفاده میکنیم:
    notify-send 'title' 'message'
    notify-send -u critical "job complete"
    zenity --timeout=180 --notification --text "salam behrooooooooooooooz"

    برای نمایش یک پیغام بصورت messageBox که بصورت یک ویندوز ظاهر شود و متنی را به نمایش گذارد از دستور زیر استفاده می‌شود:

    zenity --error --text="An error occurred\!" --title="Warning\!"
    find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."
    zenity --question --text="Do you wish to continue/?"
    zenity \
    --info \
    --text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \
    --title="Coffee time" \
    --ok-label="Sip"
    my_variable=$(zenity --entry --text="What's my variable:");echo $my_variable
    zenity --calendar
    اگر بخواهیم در یک متن با خاصیت بلی ویا خیر در قلب ترمینال نمایش شود (همانند ok و Cancell در حین نصب آپاچی) از دستور زیر استفاده می‌نماییم:
    whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78

    نمایش یک پنجره به سبک برنامه نویسی ویژوال:
    echo My text | yad \
    --text-info \
    --width=400 \
    --height=200

    yad \
    --title="Desktop entry editor" \
    --text="Simple desktop entry editor" \
    --form \
    --field="Type:CB" \
    --field="Name" \
    --field="Generic name" \
    --field="Comment" \
    --field="Command:FL" \
    --field="Icon" \
    --field="In terminal:CHK" \
    --field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \
    --button="WebUpd8:2" \
    --button="gtk-ok:0" \
    --button="gtk-cancel:1"

    دستوری برای گرفتن پسورد روت سیستم:
    gksudo lsof
    gksudo lsof | zenity --text-info --width 530


    Create a Message Box:

    whiptail --title "<message box title>" --msgbox "<text to show>" <height> <width>

    Example:

    #!/bin/bash
    whiptail --title "Test Message Box" --msgbox "Create a message box with whiptail. Choose Ok to continue." 10 60





    Create a Yes/No Box

    whiptail --title "<dialog box title>" --yesno "<text to show>" <height> <width>

    Example:

    #!/bin/bash
    if (whiptail --title "Test Yes/No Box" --yesno "Choose between Yes and No." 10 60) then
        echo "You chose Yes. Exit status was $?."
    else
        echo "You chose No. Exit status was $?."
    fi

    Example:

    #!/bin/bash
    if (whiptail --title "Test Yes/No Box" --yes-button "Skittles" --no-button "M&M's"  --yesno "Which do you like better?" 10 60) then
        echo "You chose Skittles Exit status was $?."
    else
        echo "You chose M&M's. Exit status was $?."
    fi





    Create a Free-form Input Box

    whiptail --title "<input box title>" --inputbox "<text to show>" <height> <width> <default-text>

    Example:

    #!/bin/bash
    PET=$(whiptail --title "Test Free-form Input Box" --inputbox "What is your pet's name?" 10 60 Wigglebutt 3>&1 1>&2 2>&3)
     
    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        echo "Your pet name is:" $PET
    else
        echo "You chose Cancel."
    fi





    Create a Password Box

    whiptail --title "<password box title>" --passwordbox "<text to show>" <height> <width>

    Example:

    #!/bin/bash
    PASSWORD=$(whiptail --title "Test Password Box" --passwordbox "Enter your password and choose Ok to continue." 10 60 3>&1 1>&2 2>&3)
     
    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        echo "Your password is:" $PASSWORD
    else
        echo "You chose Cancel."
    fi





    Create a Menu Box

    whiptail --title "<menu title>" --menu "<text to show>" <height> <width> <menu height> [ <tag> <item> ] . . .

    Example:

    #!/bin/bash
    OPTION=$(whiptail --title "Test Menu Dialog" --menu "Choose your option" 15 60 4 \
    "1" "Grilled Spicy Sausage" \
    "2" "Grilled Halloumi Cheese" \
    "3" "Charcoaled Chicken Wings" \
    "4" "Fried Aubergine"  3>&1 1>&2 2>&3)
     
    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        echo "Your chosen option:" $OPTION
    else
        echo "You chose Cancel."
    fi





    Create a Radiolist Dialog

    whiptail --title "<radiolist title>" --radiolist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . .

    Example:

    #!/bin/bash
    DISTROS=$(whiptail --title "Test Checklist Dialog" --radiolist \
    "What is the Linux distro of your choice?" 15 60 4 \
    "debian" "Venerable Debian" ON \
    "ubuntu" "Popular Ubuntu" OFF \
    "centos" "Stable CentOS" OFF \
    "mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3)
    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        echo "The chosen distro is:" $DISTROS
    else
        echo "You chose Cancel."
    fi





    Create a Checklist Dialog

    whiptail --title "<checklist title>" --checklist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . .

    Example:

    #!/bin/bash
    DISTROS=$(whiptail --title "Test Checklist Dialog" --checklist \
    "Choose preferred Linux distros" 15 60 4 \
    "debian" "Venerable Debian" ON \
    "ubuntu" "Popular Ubuntu" OFF \
    "centos" "Stable CentOS" ON \
    "mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3)
    exitstatus=$?
    if [ $exitstatus = 0 ]; then
        echo "Your favorite distros are:" $DISTROS
    else
        echo "You chose Cancel."
    fi





    Create a Progress Bar

    whiptail --gauge "<test to show>" <height> <width> <inital percent>

    Example:

    #!/bin/bash
    {
        for ((i = 0 ; i <= 100 ; i+=20)); do
            sleep 1
            echo $i
        done
    } | whiptail --gauge "Please wait while installing" 6 60 0




    • behrooz mohamadi nsasab
    ۱۶
    خرداد

    برای نصب برنامه pycharm که یک ادیتور هست که  کد پایتون را کامپایل میکند به روش زیر عمل میکنیم(نصب در دبیان9)
    نکته: از لینک آخر این دایکومنت برای نصب در توزیع‌های دیگر نیز میتوانید استفاده نمایید

    گام اول: بارگردن آدرس  URL

    گام دوم: instal this package

    گام سوم: select opration sysstem

    گام چهارم:  select server to download

    گام پنجم:

    sudo apt-get install pycharm-community-sloppy



    • behrooz mohamadi nsasab