[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید

مطالبی که امروز ترجمه آن را منتشر می کنیم برای کسانی است که می خواهند بر خط فرمان لینوکس مسلط شوند. توانایی استفاده موثر از این ابزار می تواند در زمان زیادی صرفه جویی کند. به طور خاص، ما در اینجا در مورد پوسته Bash و 21 دستور مفید صحبت خواهیم کرد. همچنین در مورد نحوه استفاده از پرچم های فرمان و نام مستعار Bash برای سرعت بخشیدن به تایپ دستورالعمل های طولانی صحبت خواهیم کرد.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید

همچنین در وبلاگ ما مجموعه ای از انتشارات در مورد اسکریپت های bash را بخوانید

قوانین و مقررات

همانطور که کار با خط فرمان لینوکس را یاد می گیرید، با مفاهیم زیادی روبرو می شوید که برای پیمایش مفید هستند. برخی از آنها، مانند "لینوکس" و "یونیکس"، یا "پوسته" و "ترمینال"، گاهی اوقات اشتباه می شوند. بیایید در مورد این و سایر اصطلاحات مهم صحبت کنیم.

یونیکس یک سیستم عامل محبوب است که توسط آزمایشگاه بل در دهه 1970 توسعه یافت. کدش بسته شد

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

پایانه (ترمینال) یا ترمینال شبیه ساز برنامه ای است که به سیستم عامل دسترسی می دهد. شما می توانید چندین پنجره ترمینال را به طور همزمان باز کنید.

شل (شل) برنامه ای است که به شما امکان می دهد دستورات نوشته شده به زبان خاصی را به سیستم عامل ارسال کنید.

بر هم زدن مخفف Bourne Again Shell است. این رایج ترین زبان پوسته ای است که برای تعامل با سیستم عامل استفاده می شود. همچنین، پوسته Bash پیش فرض در macOS است.

رابط خط فرمان (واسط خط فرمان، CLI) روشی برای تعامل بین شخص و رایانه است که هنگام استفاده از آن کاربر دستوراتی را از صفحه کلید وارد می کند و رایانه با اجرای این دستورات، پیام ها را به صورت متنی برای کاربر نمایش می دهد. CLI عمدتاً برای دریافت اطلاعات به روز در مورد نهادهای خاص، به عنوان مثال، در مورد فایل ها و برای کار با فایل ها استفاده می شود. رابط خط فرمان باید از رابط کاربری گرافیکی (GUI) که در درجه اول از ماوس استفاده می کند، متمایز شود. رابط خط فرمان اغلب به سادگی خط فرمان نامیده می شود.

اسکریپت (اسکریپت) یک برنامه کوچک است که شامل دنباله ای از دستورات پوسته است. اسکریپت ها روی فایل ها نوشته می شوند، می توان از آنها به طور مکرر استفاده کرد. هنگام نوشتن اسکریپت، می توانید از متغیرها، شرطی ها، حلقه ها، توابع و سایر ویژگی ها استفاده کنید.

اکنون که به عبارات مهم پرداختیم، می‌خواهم به این نکته اشاره کنم که عبارت‌های «Bash»، «شل» و «خط فرمان» را در اینجا به جای یکدیگر به کار می‌برم، همچنین از عبارات «دایرکتوری» و «پوشه» استفاده می‌کنم.

استاندارد جریان ها، که در اینجا از آن استفاده خواهیم کرد ورودی استاندارد است (ورودی استاندارد، stdin)، خروجی استاندارد (خروجی استاندارد، stdout) و خروجی خطای استاندارد (خطای استاندارد، stderr).

اگر در دستورات مثالی که در زیر داده خواهد شد، چیزی شبیه به آن خواهید یافت my_whatever - این بدان معنی است که این قطعه باید با چیزی از شما جایگزین شود. به عنوان مثال، نام یک فایل.

حال قبل از اینکه به تحلیل دستوراتی بپردازیم که این مطالب به آنها اختصاص دارد، نگاهی به لیست آنها و توضیحات مختصر آنها بیندازیم.

21 فرمان Bash

▍دریافت اطلاعات

  • 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 مسیر نسبی ../.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
دستور cd

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_directory
: یک کپی از یک فایل ایجاد کنید my_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 یک فایل متنی حاوی لیستی از آنچه در دایرکتوری فعلی موجود است ایجاد می شود.

اگر به جای نماد > از ساخت و ساز استفاده کنید >>، پس به شرطی که فایلی که خروجی دستور به آن هدایت می شود وجود داشته باشد، این فایل رونویسی نمی شود. داده ها به انتهای این فایل اضافه خواهند شد.

حال بیایید نگاهی به پردازش خط لوله داده بیندازیم.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
خروجی یک فرمان به ورودی فرمان دیگر وارد می شود. مثل اتصال یک لوله به لوله دیگر است

first_command | second_command: نماد نوار نقاله، |، برای ارسال خروجی یک دستور به دستور دیگر استفاده می شود. دستور سمت چپ ساختار توصیف شده به چه چیزی ارسال می کند stdout، سقوط به stdin دستور در سمت راست نماد خط لوله.

در لینوکس، داده ها را می توان با استفاده از تقریباً هر دستوری که به خوبی شکل گرفته است، خط لوله کرد. اغلب گفته می شود که همه چیز در لینوکس یک خط لوله است.

با استفاده از نماد خط لوله می‌توانید چندین فرمان را زنجیره‌ای کنید. به نظر می رسد این است:

first_command | second_command | third_command

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
یک خط لوله از چندین فرمان را می توان با یک خط لوله مقایسه کرد

توجه داشته باشید که وقتی دستور سمت چپ نماد |، چیزی را به خروجی می دهد stdout، آنچه او خروجی می دهد بلافاصله به عنوان در دسترس است stdin تیم دوم یعنی معلوم می شود که با استفاده از خط لوله، با اجرای موازی دستورات سر و کار داریم. گاهی اوقات این می تواند منجر به نتایج غیرمنتظره شود. جزئیات در این مورد را می توان خواند اینجا.

حالا بیایید در مورد خواندن داده ها از فایل ها و نمایش آنها بر روی صفحه صحبت کنیم.

▍خواندن فایل ها

head my_file: خطوط را از ابتدای فایل می خواند و روی صفحه چاپ می کند. شما می توانید نه تنها محتویات فایل ها را بخوانید، بلکه می توانید دستورات خروجی را نیز بخوانید stdinبا استفاده از این دستور به عنوان بخشی از خط لوله.

tail my_file: خطوط را از انتهای فایل می خواند. از این دستور می توان در خط لوله نیز استفاده کرد.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
سر (سر) در جلو و دم (دم) در پشت است

اگر با داده ها با استفاده از کتابخانه pandas کار می کنید، سپس دستورات head и tail باید برای شما آشنا باشد اگر اینطور نیست، به شکل بالا نگاهی بیندازید، به راحتی آنها را به خاطر خواهید آورد.

راه های دیگری را برای خواندن فایل ها در نظر بگیرید، بیایید در مورد دستور صحبت کنیم cat.

تیم cat یا محتویات یک فایل را روی صفحه چاپ می کند یا چندین فایل را به هم متصل می کند. بستگی به این دارد که هنگام فراخوانی چند فایل به این دستور ارسال شود.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
دستور گربه

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. این یک فرمان آزمایش شده و قابل اعتماد است که با این حال کندتر از سایرین است و به اندازه آنها برای استفاده راحت نیست.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
دستور 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، سریعتر است، کار با آن راحت تر است.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
دستور 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 در یک فایل تربال. چنین فایل هایی برای انتقال مجموعه های بزرگی از فایل ها به شخصی مفید هستند.

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید
دستور tar

فایل های tarball تولید شده توسط این دستور فایل هایی با پسوند هستند .tar (آرشیو نوار). مخفی بودن کلمه نوار (tape) در نام دستور و در پسوند نام فایل هایی که ایجاد می کند، نشان دهنده مدت زمان وجود این دستور است.

tar -cf my_file.tar my_source_directory: یک فایل tarball به نام ایجاد می کند my_file.tar با محتویات پوشه my_source_directory. پرچم -c مخفف "ایجاد" (ایجاد) و پرچم است -f به عنوان "پرونده" (پرونده).

برای استخراج فایل ها از .tar-file، از دستور استفاده کنید 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 به دستور استخراج محتوا .tarفایل‌هایی که در بالا به آن پرداختیم. به نظر می رسد این است:

tar -xfz my_file.tar.gz
لازم به ذکر است که تیم tar پرچم های مفید بسیار بیشتری وجود دارد.

نام مستعار Bash

نام مستعار Bash (که نام مستعار یا مخفف نیز نامیده می شود) برای ایجاد نام اختصاری دستورات یا دنباله آنها طراحی شده اند که استفاده از آنها به جای دستورات معمولی باعث افزایش سرعت کار می شود. اگر نام مستعار دارید bu، که دستور را پنهان می کند python setup.py sdist bdist_wheel، سپس برای فراخوانی این دستور کافی است از این نام مستعار استفاده کنید.

برای ایجاد چنین نام مستعاری کافیست دستور زیر را به فایل اضافه کنید ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

اگر سیستم شما فایل را ندارد ~/.bash_profile، سپس می توانید آن را خودتان با استفاده از دستور ایجاد کنید touch. پس از ایجاد نام مستعار، ترمینال را مجددا راه اندازی کنید، پس از آن می توانید از این نام مستعار استفاده کنید. در این حالت، ورودی دو کاراکتر جایگزین ورودی بیش از سه دوجین کاراکتر دستور می شود که برای مجامع بسته های پایتون

В ~/.bash_profile می توانید نام مستعار برای هر دستوری که اغلب استفاده می شود اضافه کنید.

▍نتایج

در این پست، 21 دستور محبوب Bash را پوشش داده ایم و در مورد ایجاد نام مستعار دستورات صحبت کرده ایم. اگر به این موضوع علاقه مند هستید - اینجا مجموعه ای از نشریات اختصاص داده شده به بش. اینجا می توانید نسخه pdf این نشریات را پیدا کنید. همچنین، اگر می خواهید Bash را یاد بگیرید، به یاد داشته باشید که مانند هر سیستم برنامه نویسی دیگری، تمرین کلیدی است.

خوانندگان عزیز! چه دستوراتی را که برای مبتدیان مفید است به دستوراتی که در این مقاله مورد بحث قرار گرفت اضافه می کنید؟

همچنین در وبلاگ ما مجموعه ای از انتشارات در مورد اسکریپت های bash را بخوانید

[نشانه‌گذاری شده] Bash برای مبتدیان: 21 دستور مفید

منبع: www.habr.com

اضافه کردن نظر