লোড হচ্ছে…

অনলাইন Bash কম্পাইলার ও প্লেগ্রাউন্ড

ব্রাউজার-ভিত্তিক কম্পাইলার ও প্লেগ্রাউন্ড, Bash, Progsity IDE।

Bash সম্পর্কে

প্রায় সব Linux server এ shell হিসেবে Bash থাকে। Program গুলোকে জোড়া লাগানোর কাজটাও সে করে: কয়েক লাইনেই একটা file পড়ে, ছেঁকে, গুনে report বানিয়ে ফেলা যায়। SSH দিয়ে ঢোকা কোনো machine এ একই কাজ বারবার করতে হলে তখনই বোঝা যায় Bash জানা কতটা কাজে লাগে।

এই playground এ আপনার script চলে Linux এর আসল Bash এ, একটা sandbox এর ভেতরে। পরিচিত tool গুলো সবই আছে: coreutils (sort, uniq, cut, tr, head, wc, seq), sed, grep, awk আর bc। Network নেই, নতুন কিছু install ও করা যায় না। Script কাজ করবে তার stdin আর নিজের বানানো file নিয়ে।

Script চালু হওয়ার আগেই syntax error ধরা পড়ে, bash -n যেভাবে check করে সেভাবেই। তাই fi বা done বাদ পড়লে সেটা মাঝপথে গিয়ে নয়, শুরুতেই একবারে জানিয়ে দেয়।

কীভাবে ব্যবহার করবেন

  1. Editor এ script লিখুন। উপরে #!/bin/bash দিতে পারেন, না দিলেও চলবে।
  2. Input টা stdin panel এ দিন। read দিয়ে পড়ুন, অথবা সরাসরি sort এর মতো কোনো tool এ pipe করে দিন।
  3. Run চাপুন। stdout আর stderr আলাদা tab এ দেখায়।

প্রশ্নোত্তর

কোন shell, কোন version?›

GNU Bash 5.2। Array, [[ ]] দিয়ে test, (( )) দিয়ে হিসাব, parameter expansion সবই চলে। এটা Bash, সাধারণ sh নয়।

কোন কোন command আছে?›

GNU coreutils, sed, grep, awk (mawk), bc, আর এই playground এর অন্য language গুলো, যেমন python3। যেসব command এ root বা network লাগে, যেমন apt, কোনো website এ curl, বা sudo, সেগুলো চলবে না।

দশমিকের হিসাব করব কীভাবে?›

Bash নিজে শুধু পূর্ণসংখ্যা বোঝে। দশমিক লাগলে হিসাবটা bc তে পাঠান, যেমন echo "scale=4; 22 / 7" | bc।

Script কি file বানাতে পারে?›

পারে, নিজের working directory তে, যতক্ষণ run টা চলছে ততক্ষণ। Run শেষ হলে কিছুই থাকে না।

সময়ের কোনো সীমা আছে?›

আছে। কোনো run অনন্ত loop এ পড়লে সেটা থামিয়ে time limit বলে জানানো হয়। একটা script একসাথে কয়টা process চালাতে পারবে, তারও সীমা আছে।

কোড উদাহরণ

উপরের এডিটরে উদাহরণ লোড করতে “এটি চেষ্টা করুন” ট্যাপ করুন।

  • Loop আর হিসাব

    for i in 1 2 3 4 5; do
      echo "$i squared is $((i * i))"
    done
  • দুটো সংখ্যা পড়া

    read -r a b
    echo $((a + b))
  • একই line কয়বার আছে

    printf 'pear\napple\nmango\napple\n' | sort | uniq -c
  • awk দিয়ে column গুণ

    printf '3 4\n5 6\n' | awk '{ print $1 * $2 }'
  • bc দিয়ে দশমিক

    echo "scale=4; 22 / 7" | bc