কিভাবে কমান্ড-লাইন উইজার্ড হয়ে উঠবেন

সবচেয়ে দরকারী কম্পিউটার বিজ্ঞান ক্লাস আপনি সম্ভবত গ্রহণ করেননি

সঙ্গে ইমেজ তৈরি স্থিতিশীল বিস্তার

Oআমার ক্যারিয়ার জুড়ে আমি ধারাবাহিকভাবে লক্ষ্য করেছি যে সবচেয়ে উত্পাদনশীল ডেটা বিজ্ঞানী এবং প্রকৌশলীদের মধ্যে সাধারণত একটি জিনিস মিল থাকে: তারা কমান্ড লাইন উইজার্ড. তারা তাদের কম্পিউটারের ফাইল সিস্টেম নেভিগেট করতে পারে, লগ ফাইলে প্যাটার্ন অনুসন্ধান করতে পারে, এবং মাউস এবং গ্রাফিকাল ইউজার ইন্টারফেসের সাথে ধীরগতির নেভিগেশনের উপর নির্ভর না করে কমান্ড লাইন থেকে কাজ, সোর্স কোড এবং সংস্করণ নিয়ন্ত্রণ সবই পরিচালনা করতে পারে।

তবুও, এই কমান্ড-লাইন 'উইজার্ডি', এটি শেল সরঞ্জামগুলির সাথে অপরিচিত কারও কাছে মনে হতে পারে, এটি সাধারণত সাধারণ কম্পিউটার বিজ্ঞান পাঠ্যক্রমের অংশ নয়। একটি এমআইটি কোর্স আপনার কমান্ড লাইন আয়ত্ত করার চারপাশে যথাযথভাবে নাম দেওয়া হয়েছে "আপনার সিএস শিক্ষার অনুপস্থিত সেমিস্টার".

এই পোস্টটি আমার ব্যক্তিগত, 10-পাঠের 'কমান্ড-লাইন উইজার্ডি 101' ক্লাস, পাঠকদের জন্য লক্ষ্য করা হয়েছে যারা কমান্ড লাইনের সাথে বেশি এবং গ্রাফিক্যাল ইউজার ইন্টারফেসের সাথে কম কাজ করতে চান। আমরা শেল এবং পথ পরিবর্তনশীল, উপনাম, ফাইল অনুমতি, স্ট্রিমিং এবং পাইপিং, দক্ষ চাকরি ব্যবস্থাপনা, tmux, ssh, git এবং vim এর চারপাশে মৌলিক বিষয়গুলি কভার করব।

চল শুরু করি. CLW 101 এ স্বাগতম।

1। স্তরটি

আপনি আপনার টার্মিনাল খুললে, আপনি একটি দেখছেন খোল, যেমন bash (আবার জন্মানো শেল) বা ZSH (z-শেল)। শেল প্রকৃতপক্ষে একটি সম্পূর্ণ প্রোগ্রামিং ভাষা যা নির্দিষ্ট স্ট্যান্ডার্ড প্রোগ্রামগুলিতে অ্যাক্সেস সহ যা ফাইল সিস্টেম নেভিগেশন এবং ডেটা ম্যানিপুলেশনের জন্য অনুমতি দেয়। আপনি টাইপ করে কোন শেল চালাচ্ছেন তা খুঁজে পেতে পারেন:

প্রতিধ্বনি $ বিক্রয়

ব্যাশে, আপনি যখনই একটি নতুন শেল শুরু করেন, শেলটি কমান্ডের একটি ক্রম লোড করে যা এর ভিতরে নির্দিষ্ট করা হয় .bashrc ফাইল, যা সাধারণত আপনার হোম ডিরেক্টরিতে থাকে (যদি আপনি একটি ম্যাক ব্যবহার করেন তবে সাধারণত একটি থাকে .bash_profile পরিবর্তে ফাইল)। সেই ফাইলটিতে আপনি আপনার পাথ ভেরিয়েবল বা উপনামের মতো দরকারী জিনিসগুলি নির্দিষ্ট করতে পারেন (নিচে আরও বেশি)।

2. পথ পরিবর্তনশীল

যখন আপনি আপনার শেলের মধ্যে নির্দিষ্ট প্রোগ্রামের নাম টাইপ করেন, যেমন python, cat, বা ls, কিভাবে শেল জানেন যে কোথা থেকে প্রোগ্রাম পেতে হবে? এটাই এর উদ্দেশ্য পথ পরিবর্তনশীল. এই ভেরিয়েবলটি কোলন দ্বারা পৃথক করা সমস্ত পাথের একটি তালিকা সংরক্ষণ করে যেখানে শেলটি প্রোগ্রামগুলি সন্ধান করে। আপনি টাইপ করে আপনার পাথ পরিবর্তনশীল পরিদর্শন করতে পারেন:

প্রতিধ্বনি $PATH

এবং আপনি এই কমান্ডের সাথে আপনার পাথ ভেরিয়েবলে অতিরিক্ত ডিরেক্টরি যোগ করতে পারেন:

এক্সপোর্ট PATH="my_new_path:$PATH"

আপনার bashrc ফাইলে এই কমান্ডটি যোগ করা ভাল, যাতে আপনি একটি নতুন শেল শুরু করার সময় আপনার অতিরিক্ত ডিরেক্টরি সর্বদা আপনার পথে থাকে।

3. উপনাম

ওরফে কাস্টম কমান্ড যা আপনি দীর্ঘ কমান্ড বারবার টাইপ করা এড়াতে সংজ্ঞায়িত করতে পারেন, যেমন:

alias ll="ls -lah"
ওরফে gs="git অবস্থা"
ওরফে জিপি="গিট পুশ অরিজিন মাস্টার"

উপনামগুলি আপনার উন্নয়ন কর্মপ্রবাহের জন্য সুরক্ষা তৈরি করতেও ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, সংজ্ঞায়িত করে

ওরফে mv="mv -i"

আপনার টার্মিনাল আপনাকে সতর্ক করবে যদি আপনি যে ফাইলটি সরাতে চলেছেন সেটি নতুন ডিরেক্টরির অধীনে বিদ্যমান থাকে, যাতে আপনি ভুলবশত সেই ফাইলগুলিকে ওভাররাইট না করেন যা আপনি ওভাররাইট করতে চাননি।

একবার আপনি আপনার bashrc ফাইলে এই উপনামগুলি যোগ করলে, আপনি যখন একটি নতুন শেল শুরু করেন তখন সেগুলি সর্বদা উপলব্ধ থাকে।

4. ফাইল অনুমতি এবং sudo

যখন একাধিক ব্যবহারকারী একটি মেশিন শেয়ার করেন, তখন এটি সেট করা গুরুত্বপূর্ণ ফাইল অনুমতি যা নির্ধারণ করে কোন ব্যবহারকারী কোন ডেটাতে কোন অপারেশন করতে পারে। আপনি যখন টাইপ করুন ls -l, আপনি নিম্নলিখিত ফর্মে তাদের অনুমতি সহ আপনার বর্তমান ডিরেক্টরিতে ফাইলগুলি দেখতে পাবেন:

-rwxrwxrwx

এখানে,

  • rwx যথাক্রমে পড়ার, লিখতে এবং কার্যকর করার অধিকারের পক্ষে দাঁড়ানো
  • 3 rwx ব্লকগুলি (1) ব্যবহারকারী, (2) ব্যবহারকারী গোষ্ঠী এবং (3) অন্য সবার জন্য। প্রদত্ত উদাহরণে, এই 3টির সবকটিই পড়া, লেখার পাশাপাশি অনুমতিগুলি সম্পাদন করেছে৷
  • ড্যাশ নির্দেশ করে যে এটি একটি ফাইল। ড্যাশের পরিবর্তে, আপনি একটি দেখতে পারেন d ডিরেক্টরির জন্য বা l একটি প্রতীকী লিঙ্কের জন্য।

আপনি ফাইল অনুমতি সম্পাদনা করতে পারেন chmod. উদাহরণস্বরূপ, আপনি যদি নিজের জন্য একটি ফাইল এক্সিকিউটেবল করতে চান তবে আপনি টাইপ করবেন

chmod u+x my_program.py

👉 যদি একটি ফাইল এক্সিকিউটেবল হয়, তাহলে শেল কিভাবে তা এক্সিকিউট করতে জানে? এটি ফাইলের প্রথম সারিতে একটি 'হ্যাশব্যাং' দিয়ে নির্দিষ্ট করা হয়েছে, যেমন #!/bin/bash একটি bash স্ক্রিপ্ট বা জন্য #!/bin/python একটি পাইথন স্ক্রিপ্টের জন্য।

অবশেষে, একটি বিশেষ 'সুপার ব্যবহারকারী' আছে যার কাছে সমস্ত ফাইলের জন্য সমস্ত অনুমতি রয়েছে। আপনি সেই সুপার ইউজার রাইটিং হিসাবে যেকোনো কমান্ড চালাতে পারেন sudo সেই আদেশের সামনে। আপনি নির্বাহ করে একটি স্বতন্ত্র সুডো শেলও চালু করতে পারেন

সুডো সু

⚠️ যত্ন সহকারে সুডো ব্যবহার করুন। sudo এর সাহায্যে, আপনি আপনার কম্পিউটারের হার্ডওয়্যার নিয়ন্ত্রণ করে এমন কোডে পরিবর্তন করতে পারবেন এবং একটি ভুল আপনার মেশিনকে অব্যবহারযোগ্য করে তুলতে পারে। মনে রাখবেন, মহান শক্তির সাথে মহান দায়িত্ব আসে।

5. স্ট্রিমিং এবং পাইপিং

সার্জারির স্ট্রিমিং অপারেটর > একটি প্রোগ্রাম থেকে একটি ফাইলে আউটপুট পুনর্নির্দেশ করে। >> একই জিনিস করে, তবে এটি ওভাররাইট করার পরিবর্তে একটি বিদ্যমান ফাইলে যুক্ত করা হচ্ছে, যদি এটি ইতিমধ্যেই বিদ্যমান থাকে। এটি আপনার নিজস্ব প্রোগ্রাম লগ ইন করার জন্য দরকারী:

python my_program.py > লগফাইল

আরেকটি দরকারী ধারণা হল বংশীধ্বনিতুল্য: x | y প্রোগ্রাম এক্স এক্সিকিউট করে এবং এক্স থেকে আউটপুটকে প্রোগ্রাম y-তে নির্দেশ করে। উদাহরণ স্বরূপ:

  • cat log.txt | tail -n5 : log.txt থেকে শেষ ৫টি লাইন প্রিন্ট করে
  • cat log.txt | head -n5 : log.txt থেকে প্রথম ৫টি লাইন প্রিন্ট করে
  • cat -b log.txt | grep error : log.txt-এ সমস্ত লাইন দেখায় যাতে লাইন নম্বর (-b) সহ স্ট্রিং 'ত্রুটি' রয়েছে

6. কাজ পরিচালনা করা

আপনি যদি আপনার কমান্ড লাইন থেকে একটি প্রোগ্রাম চালান (যেমন python run.py), প্রোগ্রামটি ডিফল্টভাবে চলবে পুরোভূমি, এবং প্রোগ্রামটি সম্পন্ন না হওয়া পর্যন্ত আপনাকে অন্য কিছু করতে বাধা দেয়। যখন প্রোগ্রামটি ফোরগ্রাউন্ডে চলছে, আপনি করতে পারেন:

  • কন্ট্রোল+সি টাইপ করুন, যা প্রোগ্রামে একটি SIGINT (সিগন্যাল ইন্টারাপ্ট) সিগন্যাল পাঠাবে, যা মেশিনকে অবিলম্বে প্রোগ্রামটি বাধা দিতে নির্দেশ দেয় (যদি না প্রোগ্রামটির অভ্যন্তরীণভাবে এই সংকেতগুলি পরিচালনা করার উপায় থাকে)।
  • কন্ট্রোল+জেড টাইপ করুন, যা প্রোগ্রামকে পজ করবে। বিরতির পরে প্রোগ্রামটি অগ্রভাগে এনে এটি চালিয়ে যেতে পারে (fg), অথবা ব্যাকগ্রাউডে পাঠিয়ে (bg).

এখনই ব্যাকগ্রাউন্ডে আপনার কমান্ড শুরু করার জন্য, আপনি ব্যবহার করুন & অপারেটর:

python run.py &

👉 আপনি কিভাবে বুঝবেন যে কোন প্রোগ্রামগুলো বর্তমানে ব্যাকগ্রাউন্ডে চলছে? কমান্ড ব্যবহার করুন jobs. এটি চলমান চাকরির নাম এবং তাদের প্রক্রিয়া আইডি (পিআইডি) প্রদর্শন করবে।

সর্বশেষে,kill ব্যাকগ্রাউন্ডে চলমান প্রোগ্রামগুলিতে সংকেত পাঠানোর একটি প্রোগ্রাম। উদাহরণ স্বরূপ,

  • kill -STOP %1 একটি STOP সংকেত পাঠায়, বিরতি দেওয়া প্রোগ্রাম 1।
  • kill -KILL %1 একটি KILL সংকেত পাঠায়, প্রোগ্রাম 1 স্থায়ীভাবে বন্ধ করে দেয়।
আমার ব্যক্তিগত ম্যাকবুকের টার্মিনালে tmux সহ চারটি টার্মিনাল প্যান (লেখকের ছবি)।

7. tmux

tmux ('টার্মিনাল মাল্টিপ্লেক্সার') আপনাকে সহজেই নতুন টার্মিনাল তৈরি করতে এবং তাদের মধ্যে নেভিগেট করতে সক্ষম করে। এটি অত্যন্ত উপযোগী হতে পারে, উদাহরণস্বরূপ আপনি আপনার ফাইল সিস্টেম নেভিগেট করতে একটি টার্মিনাল এবং কাজ চালানোর জন্য অন্য টার্মিনাল ব্যবহার করতে পারেন। tmux এর সাথে, আপনি এমনকি এই দুটি পাশাপাশি থাকতে পারেন।

👉 tmux শেখার আরেকটি কারণ হ'ল দূরবর্তী বিকাশ: আপনি যখন একটি দূরবর্তী মেশিন থেকে লগ আউট করেন (উদ্দেশ্যক্রমে বা দুর্ঘটনাক্রমে), আপনার শেলের ভিতরে সক্রিয়ভাবে চলমান সমস্ত প্রোগ্রাম স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। অন্যদিকে, আপনি যদি আপনার প্রোগ্রামগুলিকে একটি tmux শেলের মধ্যে চালান, আপনি কেবল tmux উইন্ডোটি বিচ্ছিন্ন করতে পারেন, লগ আউট করতে পারেন, আপনার কম্পিউটার বন্ধ করতে পারেন এবং পরে সেই শেলটিতে ফিরে আসতে পারেন যেন আপনি কখনই লগ আউট হননি।

tmux দিয়ে শুরু করার জন্য এখানে কিছু মৌলিক কমান্ড রয়েছে:

  • tmux new -s run 'রান' নামের নতুন টার্মিনাল সেশন তৈরি করে
  • control-BD: এই উইন্ডোটি বিচ্ছিন্ন করুন
  • tmux a : সর্বশেষ উইন্ডোতে সংযুক্ত করুন
  • tmux a -t run : 'রান' নামক উইন্ডোতে সংযুক্ত করুন
  • নিয়ন্ত্রণ-বি" : নীচে আরেকটি টার্মিনাল প্যান যোগ করুন
  • control-B% : ডানদিকে আরেকটি টার্মিনাল প্যান যোগ করুন
  • কন্ট্রোল-বি➡️ : ডানদিকে টার্মিনাল প্যানে যান (বাম, উপরে, নিচের জন্য অনুরূপ)

8. SSH এবং কী জোড়া

ssh দূরবর্তী মেশিনে লগ ইন করার জন্য একটি প্রোগ্রাম। দূরবর্তী মেশিনে লগ ইন করার জন্য, আপনাকে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রদান করতে হবে, অথবা আপনি একটি কী জোড়া ব্যবহার করতে হবে, যার মধ্যে একটি পাবলিক কী (যা উভয় মেশিনেরই অ্যাক্সেস আছে) এবং একটি ব্যক্তিগত কী (যা শুধুমাত্র আপনার নিজস্ব মেশিন) সমন্বিত অ্যাক্সেস আছে)।

ssh-keygen এই ধরনের একটি কী জোড়া তৈরি করার জন্য একটি প্রোগ্রাম। চালালে ssh-keygen, এটি ডিফল্টভাবে নামে একটি পাবলিক কী তৈরি করবে id_rsa.pub এবং একটি ব্যক্তিগত কী নামে id_rsa, এবং আপনার মধ্যে উভয় রাখুন ~/.ssh ডিরেক্টরি আপনাকে রিমোট মেশিনে সর্বজনীন কী যোগ করতে হবে, যা আপনার এখন জানা উচিত, আপনি একসাথে পাইপিং করে করতে পারেন cat, ssh, এবং একটি স্ট্রিমিং অপারেটর:

বিড়াল .ssh/id_rsa.pub | ssh user@remote 'cat >> ~/.ssh/authorized_keys'

এখন আপনি আপনার ব্যক্তিগত কী প্রদান করে রিমোটে ssh ব্যবহার করতে সক্ষম হবেন:

ssh রিমোট -i ~/.ssh/id_rsa৷

একটি আরও ভাল অনুশীলন একটি ফাইল তৈরি করা হয় ~/.ssh/config যেটিতে আপনার সমস্ত ssh প্রমাণীকরণ কনফিগারেশন রয়েছে। উদাহরণস্বরূপ, যদি আপনার config ফাইলটি নিম্নরূপ:

হোস্ট দেব
HostName রিমোট
আইডেন্টিটিফাইল ~/.ssh/id_rsa

তারপর আপনি শুধু টাইপ করে দূরবর্তী লগ ইন করতে পারেন ssh dev.

9. গিট

git এটি একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা যা আপনাকে কমান্ড লাইন থেকে আপনার কোডের সংস্করণ ইতিহাস এবং শাখাগুলি দক্ষতার সাথে নেভিগেট করার অনুমতি দেয়।

👉 খেয়াল রাখবেন git GitHub এর মতো নয়: git এটি একটি স্বতন্ত্র প্রোগ্রাম যা আপনার স্থানীয় ল্যাপটপে আপনার কোডের সংস্করণ পরিচালনা করতে পারে, যখন GitHub হল আপনার কোড দূরবর্তীভাবে হোস্ট করার একটি জায়গা।

এখানে কিছু প্রয়োজনীয় গিট কমান্ড রয়েছে:

  • git add : পরবর্তী প্রতিশ্রুতিতে আপনি কোন ফাইলগুলি অন্তর্ভুক্ত করতে চান তা নির্দিষ্ট করে
  • git commit -m 'my commit message' : কোড পরিবর্তন করে
  • git checkout -b dev : 'dev' নামে একটি নতুন শাখা তৈরি করে এবং সেই শাখাটি পরীক্ষা করে দেখুন
  • git merge dev : dev কে বর্তমান শাখায় মার্জ করে। যদি এটি মার্জ দ্বন্দ্ব তৈরি করে, তাহলে আপনাকে এই বিরোধগুলি ম্যানুয়ালি ঠিক করতে হবে, এবং তারপর চালাতে হবে৷ git add file_that_changed; git merge --continue
  • git stash : সমস্ত পরিবর্তন ফিরিয়ে দেয়, এবং git stash pop তাদের ফিরিয়ে আনে। যদি আপনি মাস্টার শাখায় পরিবর্তন করেন এবং তারপর সিদ্ধান্ত নেন যে আপনি আসলে সেই পরিবর্তনগুলি একটি পৃথক শাখা হতে চান তাহলে এটি কার্যকর।
  • git reset --hard : স্থায়ীভাবে সব পরিবর্তন ফিরিয়ে দেয়

এবং এখানে একটি দূরবর্তী হোস্ট (যেমন GitHub) এর সাথে ডিল করার জন্য কিছু প্রয়োজনীয় গিট কমান্ড রয়েছে:

  • git clone : আপনার স্থানীয় মেশিনে কোড রেপোর একটি অনুলিপি ক্লোন করে
  • git push origin master : রিমোট হোস্টে পরিবর্তনগুলিকে ঠেলে দেয় (যেমন GitHub)
  • git pull : রিমোট থেকে সর্বশেষ সংস্করণ টানে। (এটি দৌড়ানোর মতোই git fetch; git merge;).

👉 আগে যেমন একটি কমান্ড চালাতে সক্ষম হন git push origin master, আপনাকে একটি ssh কী-পেয়ার দিয়ে প্রমাণীকরণ করতে হবে (পাঠ 8 দেখুন)। আপনি যদি GitHub ব্যবহার করেন, আপনি কেবল আপনার প্রোফাইল সেটিংসের অধীনে সর্বজনীন কী পেস্ট করতে পারেন।

10. ভিম

ভিম একটি শক্তিশালী কমান্ড-লাইন ভিত্তিক পাঠ্য সম্পাদক। vim-এ অন্তত খুব মৌলিক কমান্ডগুলি শিখতে এটি একটি ভাল ধারণা:

  • প্রতিবার একবারে আপনাকে একটি দূরবর্তী মেশিনে লগ ইন করতে হবে এবং সেখানে একটি কোড পরিবর্তন করতে হবে। vim একটি স্ট্যান্ডার্ড প্রোগ্রাম এবং তাই সাধারণত আপনি যে কোনও মেশিনে কাজ করেন।
  • যখন চলমান git commit, ডিফল্টরূপে গিট একটি কমিট বার্তা লেখার জন্য vim খোলে। তাই অন্তত আপনি জানতে চাইবেন কিভাবে লিখতে হয়, সংরক্ষণ করতে হয় এবং একটি ফাইল বন্ধ করতে হয়।

ভিম সম্পর্কে বোঝার সবচেয়ে গুরুত্বপূর্ণ বিষয় হল বিভিন্ন অপারেশন মোড রয়েছে। একবার আপনি ভিম চালু করলে, আপনি ভিতরে আছেন নেভিগেশন মোড, যা আপনি ফাইলের মাধ্যমে নেভিগেট করতে ব্যবহার করেন। টাইপ i শুরুতেই সম্পাদনা মোড, যাতে আপনি ফাইলে পরিবর্তন করতে পারেন। টাইপ করুন Esc সম্পাদনা মোড ছেড়ে নেভিগেশন মোডে ফিরে যাওয়ার কী।

নেভিগেশন মোড সম্পর্কে দরকারী জিনিস হল যে আপনি আপনার কীবোর্ডের সাথে ফাইলটি দ্রুত নেভিগেট করতে এবং ম্যানিপুলেট করতে সক্ষম হন, উদাহরণস্বরূপ:

  • x একটি অক্ষর মুছে দেয়
  • dd একটি সম্পূর্ণ সারি মুছে দেয়
  • b (ফিরে) আগের শব্দে যায়, n (পরবর্তী) পরবর্তী শব্দে যায়
  • :wq আপনার পরিবর্তনগুলি সংরক্ষণ করে এবং ফাইল বন্ধ করে
  • :q! আপনার পরিবর্তন উপেক্ষা করে এবং ফাইলটি বন্ধ করে দেয়

আরও (আরো অনেক কিছু!) vim কীবোর্ড শর্টকাটগুলির জন্য, চেক আউট করুন এই vim cheatsheet.

দ্বারা ফোটো ভ্যাসিলি কলোদা on Unsplash

সর্বশেষ ভাবনা

অভিনন্দন, আপনি 'কমান্ড লাইন উইজার্ডি 101' সম্পন্ন করেছেন। যাইহোক, আমরা এখানে শুধুমাত্র পৃষ্ঠ স্ক্র্যাচ করেছি. অনুপ্রেরণার জন্য, নিম্নলিখিত সমস্যাটি বিবেচনা করুন:

“একটি টেক্সট ফাইল এবং একটি পূর্ণসংখ্যা দেওয়া হয়েছে k, মুদ্রণ kফাইলের মধ্যে সবচেয়ে সাধারণ শব্দ (এবং তাদের সংঘটনের সংখ্যা) হ্রাসকারী ফ্রিকোয়েন্সি।"

একজন ডেটা সায়েন্টিস্ট হিসাবে, আমার প্রথম প্ররোচনা হতে পারে একটি জুপিটার নোটবুক চালু করা, ডাটা লোড করা সম্ভবত পান্ডাসে, এবং তারপরে পান্ডাদের মতো একটি ফাংশন ব্যবহার করা agg. যাইহোক, একজন পাকা কমান্ড-লাইন উইজার্ডের কাছে, এটি একটি ওয়ান-লাইনার:

tr -cs A-Za-z '' | tr AZ az | সাজান | uniq -c | sort -rn | sed ${1}q

এই নিবন্ধের শুরুতে দেখানো স্ট্যাবল ডিফিউশনের কল্পনা থেকে এটি খুব আলাদা বলে মনে হচ্ছে না। জাদুকর, সত্যিই.

https://towardsdatascience.com/how-to-become-a-command-line-wizard-5d78d75fbf0c?source=rss—-7f60cf5620c9—4 থেকে https://towardsdatascience-এর মাধ্যমে পুনঃপ্রকাশিত কমান্ড-লাইন উইজার্ড কীভাবে হবেন। com/feed

<!–

->

সময় স্ট্যাম্প:

থেকে আরো ব্লকচেইন পরামর্শদাতা

ইরানি অ্যাসোসিয়েশন স্থিতিশীল ক্রিপ্টো নিয়ন্ত্রণের আহ্বান জানিয়েছে কারণ সরকার বিদেশী বাণিজ্যে ক্রিপ্টোর ব্যাপক ব্যবহারের পরিকল্পনা করছে

উত্স নোড: 1636661
সময় স্ট্যাম্প: আগস্ট 23, 2022