مواد، جس کا ترجمہ ہم آج شائع کرتے ہیں، ان لوگوں کے لیے ہے جو لینکس کمانڈ لائن میں مہارت حاصل کرنا چاہتے ہیں۔ اس ٹول کو مؤثر طریقے سے استعمال کرنے کی صلاحیت کافی وقت بچا سکتی ہے۔ خاص طور پر، ہم یہاں Bash شیل اور 21 مفید کمانڈز کے بارے میں بات کریں گے۔ ہم اس بارے میں بھی بات کریں گے کہ طویل ہدایات کی ٹائپنگ کو تیز کرنے کے لیے کمانڈ فلیگ اور باش عرفی نام کیسے استعمال کیے جائیں۔
→
شرائط
جیسے جیسے آپ لینکس کمانڈ لائن کے ساتھ کام کرنا سیکھیں گے، آپ کو بہت سے ایسے تصورات کا سامنا کرنا پڑے گا جو نیویگیٹ کرنے میں مددگار ہیں۔ ان میں سے کچھ، جیسے "لینکس" اور "یونکس"، یا "شیل" اور "ٹرمینل"، بعض اوقات الجھ جاتے ہیں۔ آئیے ان اور دیگر اہم شرائط کے بارے میں بات کرتے ہیں۔
اب جب کہ ہم نے اہم اصطلاحات کا احاطہ کر لیا ہے، میں یہ بتانا چاہتا ہوں کہ میں یہاں "باش"، "شیل" اور "کمانڈ لائن" کی اصطلاحات کے ساتھ ساتھ "ڈائریکٹری" اور "فولڈر" کی اصطلاحات کو ایک دوسرے کے ساتھ استعمال کروں گا۔
سٹینڈرڈ stdin
)، معیاری پیداوار (معیاری پیداوار، stdout
) اور معیاری ایرر آؤٹ پٹ (معیاری خرابی، stderr
).
اگر مثال کے طور پر کمانڈز جو نیچے دی جائیں گی، تو آپ کو کچھ ایسا ملے گا۔ my_whatever
- اس کا مطلب ہے کہ اس ٹکڑے کو آپ کی کسی چیز سے تبدیل کرنے کی ضرورت ہے۔ مثال کے طور پر، ایک فائل کا نام.
اب، ان احکام کے تجزیہ کے ساتھ آگے بڑھنے سے پہلے جن کے لیے یہ مواد وقف ہے، آئیے ان کی فہرست اور ان کی مختصر تفصیل پر ایک نظر ڈالتے ہیں۔
21 باش کمانڈز
▍معلومات حاصل کرنا
man
: کمانڈ کے لیے صارف گائیڈ (مدد) دکھاتا ہے۔pwd
: ورکنگ ڈائرکٹری کے بارے میں معلومات دکھاتا ہے۔ls
: ڈائریکٹری کے مواد کو دکھاتا ہے۔ps
: آپ کو چلانے کے عمل کے بارے میں معلومات دیکھنے کی اجازت دیتا ہے۔
▍ فائل سسٹم میں ہیرا پھیری
cd
: ورکنگ ڈائرکٹری کو تبدیل کریں۔touch
: ایک فائل بنائیں۔mkdir
: ایک ڈائریکٹری بنائیں۔cp
: فائل کاپی کریں۔mv
: فائل کو منتقل یا حذف کریں۔ln
: ایک لنک بنائیں۔
▍I/O ری ڈائریکشن اور پائپ لائنز
<
: ری ڈائریکٹstdin
.>
: ری ڈائریکٹstdout
.|
: ایک کمانڈ کے آؤٹ پٹ کو دوسری کمانڈ کے ان پٹ پر پائپ کیا۔
▍ فائلوں کو پڑھنا
head
: فائل کا آغاز پڑھیں۔tail
: فائل کا اختتام پڑھیں۔cat
: فائل پڑھیں اور اس کے مواد کو اسکرین پر پرنٹ کریں، یا فائلوں کو جوڑیں۔
▍ فائلوں کو حذف کرنا، عمل کو روکنا
rm
: ایک فائل کو حذف کریں۔kill
: عمل کو روکنا۔
▍تلاش کریں۔
grep
: معلومات کے لیے تلاش کریں۔ag
: تلاش کے لیے اعلی درجے کی کمانڈ۔
▍ محفوظ کرنا
tar
: آرکائیوز بنانا اور ان کے ساتھ کام کرنا۔
آئیے ان احکامات کے بارے میں مزید تفصیل سے بات کرتے ہیں۔
ٹیم کی تفصیلات
شروع کرنے کے لیے، آئیے ان احکامات سے نمٹتے ہیں، جن کے نتائج فارم میں جاری کیے جاتے ہیں۔ stdout
. عام طور پر یہ نتائج ٹرمینل ونڈو میں ظاہر ہوتے ہیں۔
▍معلومات حاصل کرنا
man command_name
: کمانڈ گائیڈ ڈسپلے کریں، یعنی مدد کی معلومات۔
pwd
: موجودہ ورکنگ ڈائرکٹری کا راستہ دکھائیں۔ کمانڈ لائن کے ساتھ کام کرنے کے دوران، صارف کو اکثر یہ معلوم کرنے کی ضرورت ہوتی ہے کہ وہ سسٹم میں کہاں ہے۔
ls
: ڈائریکٹری کے مواد کو ظاہر کریں۔ یہ کمانڈ بھی اکثر استعمال ہوتا ہے۔
ls -a
: پوشیدہ فائلیں دکھائیں۔ جھنڈا یہاں لگایا گیا ہے۔ -a
ٹیمیں ls
. جھنڈوں کا استعمال کمانڈز کے رویے کو اپنی مرضی کے مطابق کرنے میں مدد کرتا ہے۔
ls -l
: فائلوں کے بارے میں تفصیلی معلومات دکھائیں۔
نوٹ کریں کہ جھنڈوں کو جوڑا جا سکتا ہے۔ مثال کے طور پر - اس طرح: ls -al
.
ps
: چلانے کے عمل کو دیکھیں۔
ps -e
: تمام چلنے والے عمل کے بارے میں معلومات دکھائیں، نہ صرف موجودہ صارف شیل سے وابستہ۔ یہ کمانڈ اکثر اس شکل میں استعمال ہوتا ہے۔
▍ فائل سسٹم میں ہیرا پھیری
cd my_directory
: ورکنگ ڈائرکٹری کو اس میں تبدیل کریں۔ my_directory
. ڈائرکٹری ٹری میں ایک لیول اوپر جانے کے لیے استعمال کریں۔ my_directory
رشتہ دار راستہ ../
.
سی ڈی کمانڈ
touch my_file
: فائل کی تخلیق my_file
دیئے گئے راستے کے ساتھ.
mkdir my_directory
: ایک فولڈر بنائیں my_directory
دیئے گئے راستے کے ساتھ.
mv my_file target_directory
: فائل منتقل کریں۔ my_file
فولڈر میں target_directory
. ٹارگٹ ڈائرکٹری کی وضاحت کرتے وقت، آپ کو اس کے لیے مطلق راستہ استعمال کرنے کی ضرورت ہے (اور اس طرح کی تعمیر نہیں۔ ../
).
ٹیم mv
فائلوں یا فولڈرز کا نام تبدیل کرنے کے لیے بھی استعمال کیا جا سکتا ہے۔ مثال کے طور پر، یہ اس طرح نظر آسکتا ہے:
mv my_old_file_name.jpg my_new_file_name.jpg
: فائل کی ایک کاپی بنائیں
cp my_source_file target_directorymy_source_file
اور اسے فولڈر میں ڈال دیں۔ target_directory
.
ln -s my_source_file my_target_file
: ایک علامتی لنک بنائیں my_target_file
فی فائل my_source_file
. اگر آپ لنک تبدیل کرتے ہیں تو اصل فائل بھی بدل جائے گی۔
اگر فائل my_source_file
پھر حذف کر دیا جائے گا۔ my_target_file
رہے گا. جھنڈا۔ -s
ٹیمیں ln
آپ کو ڈائریکٹریز کے لنکس بنانے کی اجازت دیتا ہے۔
اب آئیے I/O ری ڈائریکشن اور پائپ لائنز کے بارے میں بات کرتے ہیں۔
▍I/O ری ڈائریکشن اور پائپ لائنز
my_command < my_file
: معیاری ان پٹ فائل ڈسکرپٹر کو تبدیل کرتا ہے (stdin
) فی فائل my_file
. یہ مفید ہو سکتا ہے اگر کمانڈ کی بورڈ سے کچھ ان پٹ کا انتظار کر رہی ہو، اور یہ ڈیٹا پہلے ہی فائل میں محفوظ ہو جائے۔
my_command > my_file
: کمانڈ کے نتائج کو ری ڈائریکٹ کرتا ہے، یعنی عام طور پر کیا جاتا ہے۔ stdout
اور اسکرین پر، فائل میں آؤٹ پٹ my_file
. اگر فائل my_file
موجود نہیں ہے - یہ تخلیق کیا گیا ہے۔ اگر فائل موجود ہے تو اسے اوور رائٹ کر دیا گیا ہے۔
مثال کے طور پر، کمانڈ پر عمل کرنے کے بعد ls > my_folder_contents.txt
ایک ٹیکسٹ فائل بنائی جائے گی جس میں موجودہ ورکنگ ڈائرکٹری میں موجود چیزوں کی فہرست ہوگی۔
اگر علامت کے بجائے >
تعمیر کا استعمال کریں >>
، پھر، بشرطیکہ وہ فائل جس پر کمانڈ کا آؤٹ پٹ ری ڈائریکٹ کیا گیا ہو موجود ہو، اس فائل کو اوور رائٹ نہیں کیا جائے گا۔ ڈیٹا اس فائل کے آخر میں شامل کیا جائے گا۔
اب آئیے ڈیٹا پائپ لائن پروسیسنگ پر ایک نظر ڈالتے ہیں۔
ایک کمانڈ کے آؤٹ پٹ کو دوسری کمانڈ کے ان پٹ میں فیڈ کیا جاتا ہے۔ یہ ایک پائپ کو دوسرے سے جوڑنے کی طرح ہے۔
first_command | second_command
: کنویئر کی علامت، |
، ایک کمانڈ کے آؤٹ پٹ کو دوسری کمانڈ کو بھیجنے کے لیے استعمال کیا جاتا ہے۔ بیان کردہ ڈھانچے کے بائیں جانب کی کمانڈ کیا بھیجتی ہے۔ stdout
، میں گرنا stdin
پائپ لائن کی علامت کے دائیں طرف کمانڈ۔
لینکس پر، کسی بھی اچھی طرح سے تشکیل شدہ کمانڈ کا استعمال کرتے ہوئے ڈیٹا کو پائپ لائن کیا جا سکتا ہے۔ یہ اکثر کہا جاتا ہے کہ لینکس میں ہر چیز ایک پائپ لائن ہے۔
آپ پائپ لائن کی علامت کا استعمال کرتے ہوئے متعدد کمانڈز کو چین کرسکتے ہیں۔ ایسا لگتا ہے:
first_command | second_command | third_command
کئی کمانڈز کی ایک پائپ لائن کا موازنہ ایک پائپ لائن سے کیا جا سکتا ہے۔
نوٹ کریں کہ جب کمانڈ علامت کے بائیں طرف ہے۔ |
، کچھ آؤٹ پٹ کرتا ہے۔ stdout
، جو وہ آؤٹ پٹ کرتی ہے وہ فوری طور پر دستیاب ہے۔ stdin
دوسری ٹیم. یعنی، یہ پتہ چلتا ہے کہ، پائپ لائن کا استعمال کرتے ہوئے، ہم حکموں کے متوازی عملدرآمد کے ساتھ کام کر رہے ہیں. بعض اوقات یہ غیر متوقع نتائج کا باعث بن سکتا ہے۔ اس بارے میں تفصیلات پڑھی جا سکتی ہیں۔
اب آئیے فائلوں سے ڈیٹا پڑھنے اور اسکرین پر ڈسپلے کرنے کے بارے میں بات کرتے ہیں۔
▍ فائلوں کو پڑھنا
head my_file
: فائل کے شروع سے لائنوں کو پڑھتا ہے اور انہیں اسکرین پر پرنٹ کرتا ہے۔ آپ نہ صرف فائلوں کے مواد کو پڑھ سکتے ہیں، بلکہ یہ بھی پڑھ سکتے ہیں کہ کمانڈ کیا آؤٹ پٹ ہے۔ stdin
اس کمانڈ کو پائپ لائن کے حصے کے طور پر استعمال کرنا۔
tail my_file
: فائل کے آخر سے لائنوں کو پڑھتا ہے۔ اس کمانڈ کو پائپ لائن میں بھی استعمال کیا جا سکتا ہے۔
سر (سر) سامنے ہے، اور دم (دم) پیچھے ہے۔
اگر آپ پانڈا لائبریری کا استعمال کرتے ہوئے ڈیٹا کے ساتھ کام کر رہے ہیں، تو کمانڈز head
и tail
آپ سے واقف ہونا چاہئے. اگر ایسا نہیں ہے تو، اوپر کی تصویر پر ایک نظر ڈالیں، اور آپ انہیں آسانی سے یاد کر لیں گے.
فائلوں کو پڑھنے کے دوسرے طریقوں پر غور کریں، آئیے کمانڈ کے بارے میں بات کرتے ہیں۔ cat
.
ٹیم cat
یا تو ایک فائل کے مواد کو اسکرین پر پرنٹ کرتا ہے، یا متعدد فائلوں کو جوڑتا ہے۔ یہ اس بات پر منحصر ہے کہ جب کال کی جاتی ہے تو اس کمانڈ کو کتنی فائلیں بھیجی جاتی ہیں۔
بلی کا حکم
cat my_one_file.txt
: جب ایک فائل کو اس کمانڈ پر منتقل کیا جاتا ہے، تو یہ اسے آؤٹ پٹ کرتا ہے۔ stdout
.
اگر آپ اسے دو فائلیں یا زیادہ فائلیں دیتے ہیں، تو یہ مختلف طریقے سے برتاؤ کرتا ہے۔
cat my_file1.txt my_file2.txt
: ان پٹ کے طور پر متعدد فائلوں کو موصول ہونے کے بعد، یہ کمانڈ ان کے مواد کو جوڑتا ہے اور دکھاتا ہے کہ کیا ہوا ہے۔ stdout
.
اگر فائل کنکٹیشن کے نتیجے کو ایک نئی فائل کے طور پر محفوظ کرنے کی ضرورت ہے، تو آپ آپریٹر استعمال کرسکتے ہیں۔ >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
اب آئیے اس بارے میں بات کرتے ہیں کہ فائلوں کو کیسے ڈیلیٹ کیا جائے اور عمل کو کیسے روکا جائے۔
▍ فائلوں کو حذف کرنا، عمل کو روکنا
rm my_file
: فائل کو ڈیلیٹ کریں my_file
.
rm -r my_folder
: فولڈر کو حذف کرتا ہے۔ my_folder
اور اس میں موجود تمام فائلیں اور فولڈرز۔ جھنڈا۔ -r
اشارہ کرتا ہے کہ کمانڈ تکرار موڈ میں چلے گی۔
جب بھی فائل یا فولڈر کو حذف کیا جائے تو سسٹم کو تصدیق طلب کرنے سے روکنے کے لیے، پرچم کا استعمال کریں۔ -f
.
kill 012345
: مخصوص چلنے کے عمل کو روکتا ہے، اسے خوبصورتی سے بند کرنے کا وقت دیتا ہے۔
kill -9 012345
: مخصوص چلانے کے عمل کو زبردستی ختم کرتا ہے۔ جھنڈا دیکھیں -s SIGKILL
اس کا مطلب پرچم جیسا ہی ہے۔ -9
.
▍تلاش کریں۔
آپ ڈیٹا کو تلاش کرنے کے لیے مختلف کمانڈز استعمال کر سکتے ہیں۔ خاص طور پر - grep
, ag
и ack
. کے ساتھ ان احکامات کے ساتھ ہماری واقفیت شروع کرتے ہیں grep
. یہ ایک وقتی تجربہ شدہ، قابل اعتماد کمانڈ ہے، جو، تاہم، دوسروں کے مقابلے میں سست ہے اور استعمال میں اتنا آسان نہیں جتنا کہ وہ ہیں۔
grep کمانڈ
grep my_regex my_file
: تلاش کرتا ہے۔ my_regex
в my_file
. اگر کوئی مماثلت پائی جاتی ہے تو، ہر میچ کے لیے پوری تار واپس کردی جاتی ہے۔ طے شدہ my_regex
ایک باقاعدہ اظہار کے طور پر علاج کیا جاتا ہے.
grep -i my_regex my_file
: تلاش کیس غیر حساس انداز میں کی جاتی ہے۔
grep -v my_regex my_file
: تمام قطاریں لوٹاتا ہے جن میں شامل نہیں ہے۔ my_regex
. جھنڈا۔ -v
معکوس کا مطلب ہے، یہ آپریٹر سے مشابہت رکھتا ہے۔ NOT
، بہت سی پروگرامنگ زبانوں میں پایا جاتا ہے۔
grep -c my_regex my_file
: تلاش کے پیٹرن کے لیے فائل میں پائے جانے والے میچوں کی تعداد کے بارے میں معلومات لوٹاتا ہے۔
grep -R my_regex my_folder
: مخصوص فولڈر میں موجود تمام فائلوں اور اس میں موجود فولڈرز میں بار بار تلاش کرتا ہے۔
اب ٹیم کی بات کرتے ہیں۔ ag
. وہ بعد میں آئی grep
، یہ تیز تر ہے، اس کے ساتھ کام کرنا زیادہ آسان ہے۔
ag کمانڈ
ag my_regex my_file
: لائن نمبرز، اور خود ان لائنوں کے بارے میں معلومات لوٹاتا ہے، جن کے ساتھ مماثلتیں پائی گئیں۔ my_regex
.
ag -i my_regex my_file
: تلاش کیس غیر حساس انداز میں کی جاتی ہے۔
ٹیم ag
فائل کو خود بخود پروسیس کریں۔ .gitignore
اور اس فائل میں درج فولڈرز یا فائلوں میں جو کچھ پایا جاتا ہے اسے آؤٹ پٹ سے خارج کرتا ہے۔ یہ بہت آرام دہ ہے۔
ag my_regex my_file -- skip-vcs-ignores
: خودکار ورژن کنٹرول فائلوں کے مشمولات (جیسے .gitignore
تلاش میں ) کو مدنظر نہیں رکھا گیا ہے۔
اس کے علاوہ، ٹیم کو بتانے کے لئے ag
آپ جن فائل پاتھوں کو تلاش سے خارج کرنا چاہتے ہیں، آپ فائل بنا سکتے ہیں۔ .agignore
.
اس حصے کے شروع میں، ہم نے حکم کا ذکر کیا۔ ack
. ٹیمیں ack
и ag
بہت ملتے جلتے، ہم کہہ سکتے ہیں کہ وہ 99% قابل تبادلہ ہیں۔ تاہم، ٹیم ag
تیزی سے کام کرتا ہے، اسی لیے میں نے اسے بیان کیا۔
اب آرکائیوز کے ساتھ کام کرنے کی بات کرتے ہیں۔
▍ محفوظ کرنا
tar my_source_directory
: فولڈر سے فائلوں کو جوڑتا ہے۔ my_source_directory
ایک ٹربال فائل میں۔ ایسی فائلیں فائلوں کے بڑے سیٹ کسی کو منتقل کرنے کے لیے کارآمد ہیں۔
ٹار کمانڈ
اس کمانڈ کے ذریعہ تیار کردہ ٹربال فائلیں ایکسٹینشن والی فائلیں ہیں۔ .tar
(ٹیپ آرکائیو)۔ حقیقت یہ ہے کہ لفظ "ٹیپ" (ٹیپ) کمانڈ کے نام میں چھپا ہوا ہے اور فائلوں کے ناموں کی توسیع میں اس سے پیدا ہوتا ہے اس بات کی نشاندہی کرتا ہے کہ یہ کمانڈ کتنے عرصے سے موجود ہے۔
tar -cf my_file.tar my_source_directory
: نام کی ایک ٹربال فائل بناتا ہے۔ my_file.tar
فولڈر کے مواد کے ساتھ my_source_directory
. جھنڈا۔ -c
"تخلیق" (تخلیق) اور پرچم کے لئے کھڑا ہے۔ -f
بطور "فائل" (فائل)۔
سے فائلیں نکالنے کے لیے .tar
فائل، کمانڈ استعمال کریں۔ tar
جھنڈوں کے ساتھ -x
("اقتباس"، نکالنا) اور -f
("فائل"، فائل)۔
tar -xf my_file.tar
: سے فائلیں نکالتا ہے۔ my_file.tar
موجودہ ورکنگ ڈائرکٹری میں۔
اب بات کرتے ہیں کہ کمپریس اور ڈیکمپریس کیسے کریں۔ .tar
-فائلوں.
tar -cfz my_file.tar.gz my_source_directory
: یہاں پرچم کا استعمال کرتے ہوئے -z
("زپ"، کمپریشن الگورتھم) اشارہ کرتا ہے کہ الگورتھم کو فائلوں کو کمپریس کرنے کے لیے استعمال کیا جانا چاہیے gzip
(GNUzip)۔ فائل کمپریشن ایسی فائلوں کو اسٹور کرتے وقت ڈسک کی جگہ بچاتا ہے۔ اگر فائلوں کی منصوبہ بندی کی گئی ہے، مثال کے طور پر، دوسرے صارفین کو منتقل کرنے کے لیے، تو یہ ایسی فائلوں کو تیز تر ڈاؤن لوڈ کرنے میں معاون ہے۔
فائل کو ان زپ کریں۔ .tar.gz
آپ ایک جھنڈا شامل کر سکتے ہیں۔ -z
extract content کمانڈ پر .tar
فائلیں، جس پر ہم نے اوپر بات کی ہے۔ ایسا لگتا ہے:
tar -xfz my_file.tar.gz
واضح رہے کہ ٹیم tar
اور بھی بہت سے مفید جھنڈے ہیں۔
باش عرفی نام
باش عرفی نام (جنہیں عرف یا مخفف بھی کہا جاتا ہے) کو کمانڈز کے مختصر ناموں یا ان کی ترتیب بنانے کے لیے ڈیزائن کیا گیا ہے، جن کا استعمال باقاعدہ کمانڈز کی بجائے کام کو تیز کرتا ہے۔ اگر آپ کے پاس کوئی عرف ہے۔ bu
، جو کمانڈ کو چھپاتا ہے۔ python setup.py sdist bdist_wheel
، پھر اس کمانڈ کو کال کرنے کے لیے، اس عرف کو استعمال کرنا کافی ہے۔
اس طرح کا عرف بنانے کے لیے، صرف درج ذیل کمانڈ کو فائل میں شامل کریں۔ ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
اگر آپ کے سسٹم میں فائل نہیں ہے۔ ~/.bash_profile
، پھر آپ کمانڈ کا استعمال کرکے اسے خود بنا سکتے ہیں۔ touch
. عرف بنانے کے بعد، ٹرمینل کو دوبارہ شروع کریں، جس کے بعد آپ اس عرف کو استعمال کر سکتے ہیں۔ اس صورت میں، دو حروف کا ان پٹ کمانڈ کے تین درجن سے زیادہ حروف کے ان پٹ کی جگہ لے لیتا ہے، جس کا مقصد
В ~/.bash_profile
آپ کثرت سے استعمال ہونے والی کسی بھی کمانڈ کے لیے عرفی نام شامل کر سکتے ہیں۔
▍نتائج
اس پوسٹ میں، ہم نے 21 مشہور Bash کمانڈز کا احاطہ کیا ہے اور کمانڈ عرفی نام بنانے کے بارے میں بات کی ہے۔ اگر آپ اس موضوع میں دلچسپی رکھتے ہیں -
پیارے قارئین! ابتدائی افراد کے لیے مفید کون سے احکامات آپ ان میں شامل کریں گے جن پر اس مضمون میں بحث کی گئی ہے؟
→
ماخذ: www.habr.com