مطالبی که امروز ترجمه آن را منتشر می کنیم برای کسانی است که می خواهند بر خط فرمان لینوکس مسلط شوند. توانایی استفاده موثر از این ابزار می تواند در زمان زیادی صرفه جویی کند. به طور خاص، ما در اینجا در مورد پوسته Bash و 21 دستور مفید صحبت خواهیم کرد. همچنین در مورد نحوه استفاده از پرچم های فرمان و نام مستعار Bash برای سرعت بخشیدن به تایپ دستورالعمل های طولانی صحبت خواهیم کرد.
→
قوانین و مقررات
همانطور که کار با خط فرمان لینوکس را یاد می گیرید، با مفاهیم زیادی روبرو می شوید که برای پیمایش مفید هستند. برخی از آنها، مانند "لینوکس" و "یونیکس"، یا "پوسته" و "ترمینال"، گاهی اوقات اشتباه می شوند. بیایید در مورد این و سایر اصطلاحات مهم صحبت کنیم.
اکنون که به عبارات مهم پرداختیم، میخواهم به این نکته اشاره کنم که عبارتهای «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
مسیر نسبی ../
.
دستور 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_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
: خطوط را از انتهای فایل می خواند. از این دستور می توان در خط لوله نیز استفاده کرد.
سر (سر) در جلو و دم (دم) در پشت است
اگر با داده ها با استفاده از کتابخانه pandas کار می کنید، سپس دستورات 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
فایل های 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 را پوشش داده ایم و در مورد ایجاد نام مستعار دستورات صحبت کرده ایم. اگر به این موضوع علاقه مند هستید -
خوانندگان عزیز! چه دستوراتی را که برای مبتدیان مفید است به دستوراتی که در این مقاله مورد بحث قرار گرفت اضافه می کنید؟
→
منبع: www.habr.com