خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

5 مثال Bash Script برای کمک به یادگیری برنامه نویسی لینوکس

آیا می خواهید برنامه نویسی را در لینوکس یاد بگیرید؟ با Bash کنار بیایید.

خلاصه عناوین

  • نحوه چاپ Hello World در Bash
  • با خواندن ورودی یک دایرکتوری ایجاد کنید
  • با استفاده از آرگومان های خط فرمان یک دایرکتوری ایجاد کنید
  • حذف یک فایل با استفاده از یک تابع Bash
  • یک ماشین حساب پایه برای محاسبات حسابی ایجاد کنید

برنامه نویسی Bash یکی از محبوب ترین و در دسترس ترین روش های برنامه نویسی کامپیوتر لینوکس شما است. این مثال‌های ساده اسکریپت به شما کمک می‌کند تا فرآیند را درک کنید و شما را با اصول برنامه‌نویسی Bash آشنا کنید.

1. نحوه چاپ Hello World در Bash

مثال Hello World یک راه عالی برای یادگیری هر زبان برنامه نویسی است و Bash نیز از این قاعده مستثنی نیست.

در اینجا نحوه چاپ “Hello World” با استفاده از Bash آمده است:

  1. یک ویرایشگر متن را باز کنید و یک فایل جدید حاوی خطوط کد زیر را ویرایش کنید.
  2. خط اول اسکریپت های Bash شما همیشه باید به این صورت باشد:#!/bin/bash دستور Shebang (#!/bin/bash) ضروری است زیرا پوسته از آن برای تصمیم گیری در مورد نحوه اجرای اسکریپت استفاده می کند. در این حالت از مفسر Bash استفاده می کند.
  3. هر خطی که با علامت # شروع شود یک نظر است. خط shebang یک مورد خاص است، اما شما می توانید از نظرات خود برای توضیح کد خود استفاده کنید. یک نظر در خط 2 اضافه کنید، به عنوان مثال:# متنی را از یک اسکریپت bash چاپ کنید
  4. می توانید با استفاده از دستور echo و سپس مقداری که می خواهید چاپ کنید، در خروجی استاندارد چاپ کنید. موارد زیر را در خط 3 اضافه کنید: echo “Hello World”
  5. اسکریپت را ترجیحا با پسوند .sh ذخیره کنید، به عنوان مثال. hello_world.sh. تمدید یک الزام نیست، اما قراردادی است که رعایت آن مفید است.
  6. برای اجرای اسکریپت خود، فایل را قابل اجرا کنید. از دستور chmod (“تغییر حالت”) به همراه آرگومان +x (“قابل اجرا”) و نام اسکریپت پوسته خود استفاده کنید: chmod +x hello_world.sh
  7. از این دستور برای اجرای اسکریپت از داخل دایرکتوری آن استفاده کنید:./hello_world.sh
  8. هنگامی که اسکریپت اجرا می شود، متن “Hello World” را در ترمینال شما چاپ می کند:

#!/bin/bash

دستور Shebang (#!/bin/bash) ضروری است زیرا پوسته از آن برای تصمیم گیری در مورد نحوه اجرای اسکریپت استفاده می کند. در این حالت از مفسر Bash استفاده می کند.

# Print some text from a bash script

echo "Hello World"

chmod +x hello_world.sh

./hello_world.sh

پایانه ای که نتیجه یک اسکریپت bash ساده را نشان می دهد که متن را به خروجی می فرستد

2. با خواندن ورودی یک دایرکتوری ایجاد کنید

از اسکریپت های خود، می توانید هر برنامه ای را که معمولاً در خط فرمان اجرا می کنید، اجرا کنید. به عنوان مثال، می توانید با استفاده از دستور mkdir یک دایرکتوری جدید از اسکریپت خود ایجاد کنید.

  1. با همان خط shebang قبلی شروع کنید:#!/bin/bash
  2. با استفاده از دستور echo مانند قبل از کاربر یک نام دایرکتوری درخواست کنید: “نام دایرکتوری جدید را وارد کنید:”
  3. از دستور خواندن داخلی برای واکشی ورودی کاربر استفاده کنید. آرگومان واحد متغیری را نامگذاری می کند که پوسته ورودی را در:read newdir ذخیره می کند
  4. هنگامی که نیاز به استفاده از مقدار ذخیره شده در یک متغیر دارید، پیشوند نام آن را با نماد دلار ($) قرار دهید. می توانید محتویات متغیر ورودی را به عنوان آرگومان به دستور mkdir ارسال کنید تا یک دایرکتوری جدید ایجاد کنید: mkdir $newdir
  5. هنگامی که این اسکریپت را اجرا می کنید، از شما برای ورودی می خواهد. یک نام دایرکتوری معتبر وارد کنید و خواهید دید که اسکریپت آن را در دایرکتوری فعلی شما ایجاد می کند:

#!/bin/bash

echo "Enter new directory name:"

read newdir

mkdir $newdir

یک اسکریپت bash ساده که یک دایرکتوری از ورودی کاربر ایجاد می کند

3. یک دایرکتوری با استفاده از آرگومان های خط فرمان ایجاد کنید

به عنوان جایگزینی برای خواندن ورودی به صورت تعاملی، اکثر دستورات لینوکس از آرگومان ها پشتیبانی می کنند. هنگام اجرای یک برنامه می توانید یک آرگومان برای کنترل رفتار آن ارائه کنید.

مطلب مرتبط:   قلاب های چرخه حیات Svelte: آنها چیست و چگونه کار می کنند؟

در اسکریپت خود، می توانید از $1 برای ارجاع به متغیر خاصی که حاوی مقدار آرگومان اول است استفاده کنید. $2 به آرگومان دوم اشاره خواهد کرد و به همین ترتیب.

  1. با استفاده از دستور mkdir از مثال قبلی یک دایرکتوری ایجاد کنید. با این حال، این بار، از متغیر داخلی $1:#!/bin/bashmkdir $1 استفاده کنید
  2. اسکریپت را اجرا کنید، این بار نام انتخابی یک فهرست جدید را به عنوان آرگومان ارسال کنید:./arg_dir.sh تست

#!/bin/bash
mkdir $1

./arg_dir.sh Test

ممکن است تعجب کنید که اگر اسکریپت را بدون ارائه هیچ استدلالی اجرا کنید چه اتفاقی می افتد. آن را امتحان کنید و ببینید؛ شما باید یک پیام خطایی دریافت کنید که “usage: mkdir” را شروع می کند:

پایانه ای که پیام خطایی را از mkdir نشان می دهد

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

  1. مثل همیشه، با خط shebang شروع کنید:#!/bin/bash
  2. قبل از اینکه mkdir را فراخوانی کنید، یک آرگومان اول خالی را بررسی کنید (یعنی بدون آرگومان). می توانید این کار را با استفاده از دستور if Bash انجام دهید که کد را بر اساس یک شرط اجرا می کند:if [“$1” = “”]; سپس
  3. اگر آرگومان اول خالی است، یک خطا چاپ کنید و از اسکریپت خود خارج شوید:    echo «لطفا یک نام دایرکتوری جدید به عنوان اولین آرگومان ارائه کنید»    خروج
  4. کلمه کلیدی کمی عجیب “fi” (“اگر” معکوس شده) پایان یک دستور if را در Bash:fi نشان می دهد.
  5. اسکریپت شما اکنون می تواند مانند قبل ادامه یابد، تا زمانی که یک آرگومان وجود دارد رسیدگی کند: mkdir $1

#!/bin/bash

if ["$1" = ""]; then

    echo "Please provide a new directory name as the first argument"
    exit

fi

mkdir $1

هنگامی که این نسخه جدید اسکریپت را اجرا می کنید، اگر فراموش کردید یک آرگومان اضافه کنید، پیامی دریافت خواهید کرد:

مطلب مرتبط:   8 بهترین کتابخانه نمودار جاوا اسکریپت برای توسعه وب

پایانه ای که نتیجه یک اسکریپت bash ساده برای ایجاد یک فهرست را نشان می دهد

4. یک فایل را با استفاده از یک تابع Bash حذف کنید

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

در اینجا نمونه ای از تابعی است که یک فایل داده شده را حذف می کند.

  1. با خط shebang شروع کنید:#!/bin/bash
  2. یک تابع را با نوشتن نام آن و به دنبال پرانتزهای خالی و دستورات داخل براکت‌های مجعد تعریف کنید:del_file() {    echo “deleting $1”    rm $1} سپس می‌توانید تابع را فراخوانی کرده و نام فایل را برای حذف ارسال کنید:del_file test.txt

#!/bin/bash

del_file() {
    echo "deleting $1"
    rm $1
}

del_file test.txt

پایانه ای که یک اسکریپت bash را نشان می دهد که یک فایل را حذف می کند

وقتی تابعی را فراخوانی می‌کنید، $ خاص را تنظیم می‌کند؟ مقدار با وضعیت خروج آخرین فرمانی که اجرا می کند. وضعیت خروج برای بررسی خطا مفید است. در این مثال، می توانید آزمایش کنید که آیا دستور rm موفق بوده است یا خیر:

if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi

پایانه ای که یک اسکریپت bash را نشان می دهد که سعی دارد یک فایل را حذف کند اما خطا ایجاد می کند

5. یک ماشین حساب پایه برای محاسبات حسابی ایجاد کنید

این مثال آخر یک ماشین حساب بسیار ابتدایی را نشان می دهد. هنگامی که آن را اجرا می کنید، دو مقدار را وارد می کنید، سپس یک عملیات حسابی را برای انجام روی آنها انتخاب می کنید.

در اینجا کد calc.sh آمده است:

#!/bin/bash

# Take operands as input
echo "Enter first number: "
read a

echo "Enter second number: "
read b

# Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo "4. Division"
read choice

# calculator operations
case $choice in
  1)
 result=`echo $a + $b | bc`
  ;;

  2)
 result=`echo $a - $b | bc`
 ;;

  3)
 result=`echo $a \* $b | bc`
  ;;

  4)
 result=`echo "scale=2; $a / $b" | bc`
  ;;
esac

echo "Result: $result"

به استفاده از case … esac که معادل Bash دستور switch از زبان های دیگر است توجه کنید. این به شما امکان می دهد یک مقدار – در این مورد، متغیر انتخاب – را در برابر چندین مقدار ثابت آزمایش کنید و کد مرتبط را اجرا کنید.

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

این اسکریپت از دستور bc برای انجام هر محاسبات استفاده می کند.

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