خط فرمان راهی برای کنترل کامپیوتر بدون رابط کاربری گرافیکی است. در این بخش، دستورات اولیه تعامل با کامپیوتر خود را یاد خواهیم گرفت.
خوراکی های کلیدی
- دانش آموزان با دستورات در کامپیوتر خود حرکت می کنند.
- دانش آموزان فایل ها و پوشه ها را ایجاد، انتقال، کپی و حذف خواهند کرد.
خط فرمان چیست؟
اکثر کاربران اغلب از یک رابط کاربری گرافیکی (GUI) برای تعامل با کامپیوتر استفاده می کنند. رابطهای کاربری گرافیکی معمولاً برای دستکاری پنجرهها با نمادها، دکمهها، نوارهای اسکرول و غیره به ماوس یا لمس متکی هستند.
خط فرمان یک نمای جایگزین به کامپیوتر است. خط فرمان که گاهی اوقات به عنوان "یک پوسته"، "ترمینال"، "bash" یا "واسط متن" نامیده می شود، عبارت است از:
- وسیله ای برای تعامل با یک برنامه کامپیوتری که در آن کاربر دستورات را تایپ می کند. به عنوان مثال:
open README.txt
- راهی برای پیمایش و کار با کامپیوتر بدون ماوس.
- روشی غیر گرافیکی برای ایجاد، خواندن، به روز رسانی، عملکرد و حذف فایل ها و دایرکتوری های شما. به عنوان مثال:
mv README.txt readme.txt
رابط کاربری گرافیکی و خط فرمان به یک چیز نگاه می کنند! آنها روش های مختلفی برای تعامل با رایانه هستند.
چه زمانی از خط فرمان استفاده می کنیم؟
رابط های خط فرمان اغلب توسط توسعه دهندگان ترجیح داده می شوند:
- آنها ابزار مختصرتری برای کنترل یک برنامه یا سیستم عامل ارائه می دهند. چرا؟ زیرا همه چیز در یک پنجره اتفاق می افتد و با تمرین تلاش کمتری نسبت به یافتن و دستکاری اشیا با ماوس است.
- آنها به راحتی گزینه های کنترل یک فرمان را در معرض دید قرار می دهند. چرا؟ منوها در رابط کاربری گرافیکی تعداد بسیار کمی از گزینه ها را ارائه می دهند. در خط فرمان، صدها دستور وجود دارد، و چند کاراکتر اضافه شده به یک دستور می تواند آن را به انجام کارهای مختلف وادار کند. به عنوان مثال
- فایل های لیست پایه
ls
-
ls -a
فهرستی از تمام فایلها، از جمله فایلهای معمولاً پنهان -
ls -l
لیست طولانی که اطلاعات مربوط به هر فایل را نشان می دهد -
ls -R
بازگشتی، فهرستی از محتویات دایرکتوری ها -
ls -la
لیست طولانی همه فایل ها - آنها کار بر روی بسیاری از فایل ها را در یک زمان به روش های پیچیده آسان می کنند.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- آنها ابزاری را برای برنامه ریزی سیستم عامل (برنامه های پوسته) فراهم می کنند، به عنوان مثال مثال بالا یک برنامه پوسته بسیار ساده است که برای اصلاح تصاویر با نام فایل هایی که به
.png
ختم می شوند طراحی شده است.
خط فرمان در عمل
بخش هایی از یک فرمان خط فرمان
تمام دستورات دارای سه بخش هستند:
- دستور (یا ابزار) همیشه اول است.
- بسته به ابزاری که استفاده می کنید، پرچم ها اختیاری هستند. پرچم ها همیشه با یک - (منهای) شروع می شوند.
- استدلال ها چیزهایی هستند که فرمان باید به آنها عمل کند یا اطلاعات لازم. اغلب نام فایل ها
کادر بندی
زمینه و هدف
خط فرمان راهی برای کنترل کامپیوتر بدون ماوس یا رابط کاربری گرافیکی (رابط کاربری گرافیکی) است. قبل از اینکه رایانه اپل شروع به ساخت ماشینهایی با نمادها و پوشههایی کند که میتوانستید روی آنها کلیک کنید، تنها راه تعامل با رایانه شما از طریق خط فرمان بود.
به عنوان توسعه دهندگان، ما از خط فرمان استفاده می کنیم زیرا این خط فرمان بسیار سریعتر و قدرتمندتر از رابط کاربری گرافیکی است - نیازی به هدر دادن زمان برای کلیک کردن در اطراف نیست. خط فرمان می تواند به شما اجازه دهد تقریباً هر تعاملی را که با رایانه خود دارید انجام دهید.
از آنجایی که ترمینال رابط کاربری بسیار ساده تری است، هنگامی که نیاز به اتصال از راه دور به رایانه از طریق پیوند شبکه دارید، مزیت بزرگی نسبت به رابط کاربری گرافیکی دارد. این کاری است که توسعه دهندگان اغلب انجام می دهند - برای مثال هنگام سفر.
در این درس دستورات اساسی برای تعامل با رایانه خود را از طریق ایجاد فایل ها و دایرکتوری ها، جابجایی پوشه ها، تغییر دایرکتوری ها و فهرست کردن محتویات یک پوشه یاد می گیریم.
اهداف یادگیری
دانش آموزان قادر خواهند بود
- از ترمینال برای پیمایش فایل ها و پوشه ها استفاده کنید
- محتویات یک پوشه را فهرست کنید
- فایل ها و پوشه ها را در خط فرمان ایجاد کنید
- انتقال فایل ها و پوشه ها
- فایل ها و پوشه ها را کپی کنید
- حذف فایل ها و پوشه ها
شروع شدن
دسترسی به ترمینال
چارچوب بندی بخش و هدف
ترمینال یک رابط خط فرمان (CLI) را برای سیستم عامل فراهم می کند. با آن می توانید دستورالعمل های مستقیم و مبتنی بر متن را به رایانه خود بدهید.
برای انجام این کار، باید ترمینال شما را بر اساس سیستمی که استفاده می کنید راه اندازی کنیم.
هنگامی که ترمینال راه اندازی می شود، در فهرست اصلی رایانه شما (هر چه که رایانه خود را نامگذاری کرده اید) شروع به کار می کند. فهرست خانه شما با علامت ~ نشان داده می شود ~
هنگام بحث در مورد دنیای خود در داخل ترمینال، دایرکتوری ها همان پوشه ها هستند (ممکن است گاهی اوقات آنها را دایرکتوری بنامیم).
تغییر دایرکتوری ها
چارچوب بندی بخش و هدف
برای اینکه با رایانه خود در ترمینال صحبت کنیم و به آن بگوییم که چه کاری می خواهیم انجام دهیم، باید به یک زبان مشترک صحبت کنیم. Command Line دستورات نوشته شده در زبان برنامه نویسی bash را درک می کند. دستورات مخفف یا مخفف کلمات انگلیسی هستند.
دفترچه راهنمای کاری چاپ ( pwd
)
هنگامی که در ترمینال خود در حال حرکت هستید، مهم است که بدانید کجا هستید (این به طور مستقیم به زندگی واقعی نیز ترجمه می شود - اگر می خواهید به جایی برسید، ابتدا باید مکان فعلی خود را بدانید).
# See your current location - abbreviation for 'print working directory'
pwd
فایل ها و فهرست های موجود را فهرست کنید
در داخل فهرست کار شما، احتمالاً چندین فایل وجود دارد که می توانید به آنها دسترسی داشته باشید. به طور معمول، ما به نشانههای بصری مانند آیکونها تکیه میکنیم تا به ما بگوییم چه چیزی در دسترس است، اما اگر فقط حدس بزنیم که فایلها و پوشهها کجا قرار دارند، پیمایش در رایانه دشوار خواهد بود. در خط فرمان، از یک دستور خاص برای فهرست کردن مواردی که میتوانیم از هر دایرکتوری کاری معین / هر مکان مشخصی دسترسی داشته باشیم، استفاده میکنیم.
برای اینکه ببینید کدام فایل ها یا پوشه ها در فهرست فعلی ما هستند، از ls
(مخفف لیست) استفاده کنید تا نمای فهرستی از محتویات را ببینید.
# See files and folders in current location - abbreviation for 'list'
ls
دایرکتوری کاری را تغییر دهید
اگر نیاز به دسترسی به فایل یا دایرکتوری دارید که در لیست موجود نیست، ممکن است بخواهید دایرکتوری کاری خود را تغییر دهید تا به راحتی به آن دسترسی داشته باشید.
دستوری که به خط فرمان میگوید شما را به یک پوشه جدید منتقل کند (همچنین به عنوان پوشه شناخته میشود) با cd
(در همان خط) مسیر پوشه جدید دنبال میشود.
اگر به دایرکتوری می روید که داخل دایرکتوری است که در حال حاضر در آن هستید (یعنی زیرپوشه ای از دایرکتوری کاری خود)، از دستور cd
و به دنبال آن نام پوشه استفاده کنید.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
شما همچنین می توانید با شروع از فهرست خانه ~ حرکت کنید.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
اگر دایرکتوریها را تغییر دادهاید اما باید به فهرست اصلی برگردید، این کار را با پیمایش مستقیم به خانه با استفاده از ~
یا با استفاده از ..
برای پیمایش در یک سطح انجام دهید.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
توجه داشته باشید که cd ..
فقط یک سطح بالا می رود (به عقب) ، بنابراین اگر تا به حال سه بار دایرکتوری ها را تغییر داده اید (سه سطح پایین) ، باید از cd ..
سه بار برای رفتن به خانه استفاده کنید ، اما فقط یکبار باید از cd ~
استفاده کنید.
چالش های کوچک
- از
ls
برای دیدن آنچه در دایرکتوری فعلی شما وجود دارد استفاده کنید. - به فهرست اصلی خود برگردید و از
ls
برای مشاهده محتویات پوشه اصلی خود استفاده کنید. - نام یکی از پوشههایی را که داخل فهرست اصلی هستند انتخاب کنید و به این پوشه جدید بروید.
- از دستور list برای دیدن آنچه در داخل است استفاده کنید.
نکته: تکمیل خودکار با tab
هنگام تغییر دایرکتوری ها با دستور cd
، یک اشتباه تایپی باعث می شود دستور به درستی اجرا نشود. با این حال، با استفاده از کلید tab
، نام هر دایرکتوری موجود که در دایرکتوری فعلی شما وجود دارد، به صورت خودکار تکمیل می شود. بنابراین به جای تایپ cd Documents
، فقط cd Do
را تایپ کنید و سپس کلید tab
را فشار دهید و ترمینال دستور cd Documents/
را به صورت خودکار برای شما تکمیل می کند ( /
در پایان اختیاری است اما به شما می گوید که مقصد یک دایرکتوری است).
این تکمیل خودکار نه تنها زمانی که کار می کند در زمان صرفه جویی می کند، بلکه در صورت عدم کارکرد اطلاعات ارزشمندی را نیز ارائه می دهد. اگر دکمه تب به صورت خودکار تکمیل نمی شود، احتمالا یکی از سه مشکل واقعا رایج را ایجاد کرده اید:
- دایرکتوری که می خواهید به آن پیمایش کنید از دایرکتوری فعلی شما قابل دسترسی نیست.
- دو دایرکتوری وجود دارد که نامهای شروع مشابهی دارند (مانند
Documents
وDownloads
) و شما اطلاعات کافی برای تکمیل خودکار ارائه نکردهاید تا بدانید کدام یک را میخواهید. دوبارهtab
را فشار دهید تا فهرستی از دایرکتوری هایی را ببینید که می توانند با آنچه تایپ کرده اید مطابقت داشته باشند. سپس کمی بیشتر تایپ کنید (به اندازه ای که فقط یک مطابقت داشته باشد) و دوبارهtab
را فشار دهید. - شما قبلاً یک اشتباه تایپی در نیمه اول کلمه وارد کرده اید.
هر چه زودتر عادت کنید از تب برای تکمیل خودکار دستورات خود استفاده کنید، احتمال بیشتری وجود دارد که در موقعیتهای ناامیدکنندهای که به نظر میرسد دستورات شما کار نمیکنند، مدیریت کنید.
فهرست راهنمای والدین و فرزند
دایرکتوری ها و فایل ها می توانند روابط فرزند و والدین با یکدیگر داشته باشند. اگر directory_b
داخل directory_a
باشد، directory_b
فرزند directory_a
نامیده می شود. پس از آن directory_a
به عنوان والد directory_b
شناخته می شود. اگر مورد سوم، my_file
، داخل یک directory_b
باشد، فرزند directory_b
و نوه directory_a
در نظر گرفته میشود.
این روابط اغلب در انجمن ها با نمودار متنی نشان داده می شوند، مانند:
directory_a/ directory_b/ my_file
توجه داشته باشید که نام دایرکتوری ها به یک /
ختم می شوند در حالی که نام فایل ها ختم نمی شود. این سازماندهی سلسله مراتبی به طور کلی به عنوان ساختار درختی یک سیستم فایل نامیده می شود.
خواهر و برادر
اگر چندین فایل یا پوشه در یک سطح وجود داشته باشد، به عنوان خواهر و برادر شناخته می شوند. مثال: اگر file_b
و file_c
در داخل directory_a
قرار دارند، خواهر و برادر هستند.
این نمودار متنی به شکل زیر خواهد بود:
directory_a/ file_b file_c
توجه داشته باشید که از آنجایی که file_b
و file_c خواهر و برادر هستند، به همان میزان فرورفتگی دارند.
مسیرهای فایل
در اینجا نمودار متنی پیچیده تری وجود دارد که هم روابط والدین-فرزند و هم روابط خواهر و برادر را نشان می دهد.
north_america/ united_states/ new_york/ new_york_city/ manhattan queens staten_island bronx brooklyn california/ mountain_view los_angeles illinois/ chicago mexico/ mexico_city
در این مثال، new_york_city/
یک نام دایرکتوری است، اما مسیری نیز دارد که نحوه رسیدن به آنجا را توضیح میدهد: ~/north_america/united_states/new_york/new_york_city/
.
برای تغییر دایرکتوری به new_york_city/,
میتوانید با استفاده از نامها به صورت مرحلهای پیمایش کنید، یا میتوانید تمام مسیر را در یک دستور با استفاده از مسیر، پیمایش کنید.
# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/
# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/
خلاصه ای از دستورات ناوبری
# See your current location - abbreviation for 'print working directory'
pwd
# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads
# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory
# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..
# Will take you back home
cd
چالش های کوچک
- از
pwd
برای پیدا کردن پوشه فعلی که در آن هستید استفاده کنید. - به دایرکتوری دیگری تغییر دهید و مکان جدید خود را تأیید کنید.
- دوباره امتحان کنید و به پوشه دیگری بروید. از دستورات جدید خود برای دیدن موقعیت مکانی خود و همچنین مشاهده فایل های داخل این دایرکتوری استفاده کنید.
ساخت فایل ها و دایرکتوری ها
چارچوب بندی بخش و هدف
به عنوان توسعه دهندگان، باید فایل هایی با کد ایجاد کنیم. برای مرتب نگه داشتن آن فایلها، باید پوشهها / دایرکتوریهایی ایجاد کنیم که بتوانیم فایلهای خود را در آنجا ذخیره کنیم.
قبل از ایجاد فایل ها و پوشه های خود، از موقعیت مکانی خود در ترمینال آگاه باشید.
# See your current location.
pwd
برای ایجاد یک فایل، از فرمان touch
استفاده کنید
به دنبال آن نام فایل
# `touch` creates a new file.
touch style.css
هنگام ایجاد فایل، پسوند فایل را برای تعیین نوع اضافه کنید. نمونه انواع فایل:
-
.js
را به عنوان یک فایل جاوا اسکریپت می سازد -
.html
یک فایل HTML بسازید -
.css
یک فایل CSS می سازد -
.md
یک فایل علامت گذاری می سازد
نام فایل ها نباید دارای فاصله باشد.
# make a file - this will create a file in the current folder
touch my_text_file.txt
# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css
ساخت چندین فایل
با قرار دادن فاصله بین هر یک از نام ها می توانید چندین فایل را همزمان ایجاد کنید.
# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
ساخت دایرکتوری ها
برای ایجاد دایرکتوری / پوشه، از دستور mkdir
استفاده کنید
- مخفف 'make directory' - به دنبال آن نام پوشه.
# make a folder - this will create a directory in the current folder
mkdir my_new_folder
# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder
ساخت چندین دایرکتوری
با قرار دادن فاصله بین هر یک از نام ها می توانید چندین پوشه را همزمان ایجاد کنید.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
چالش های کوچک
- یک فایل جدید ایجاد کنید.
- در یک دستور چند فایل بسازید.
- یک دایرکتوری جدید ایجاد کنید.
- چند دایرکتوری جدید دیگر ایجاد کنید. برای این کار فقط از یک دستور استفاده کنید.
- با استفاده از آنچه در مورد پیمایش دایرکتوریها و ایجاد فایلها و پوشهها میدانید، با استفاده از فایلها و پوشهها، یک «درخت_خانواده» روی دسکتاپ خود بسازید.
جابجایی و کپی کردن
انتقال فایل ها و دایرکتوری ها
چارچوب بندی بخش و هدف
ما می توانیم یک فایل یا پوشه را در خط فرمان جابجا کنیم، اما همیشه باید سه چیز را مشخص کنیم:
- ما از دستور
mv
- مخفف برای move استفاده می کنیم. - دستور move را با نام فایل یا پوشه ای که می خواهید منتقل کنید دنبال کنید.
- نام فایل را با مقصدی که میخواهید آن را منتقل کنید دنبال کنید.
برای مثال، اگر ساختار فایلی مانند این دارید:
my_child_folder/ my_parent_folder/
میتوانید ببینید که آنطور که باید سازماندهی نشده است - آنها خواهر و برادر هستند زمانی که باید والدین و فرزند باشند. از این دستور استفاده کنید:
# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/
ساختار حاصل به این صورت خواهد بود.
my_parent_folder/ my_child_folder/
در اینجا برخی از تغییرات دیگر دستور mv
آمده است:
# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder
هشدار: mv
همچنین دستور تغییر نام یک فایل با استفاده از نحو mv old_name new_name
است. این بدان معناست که اگر فایلی را به دایرکتوری که وجود ندارد منتقل کنید، یا اگر مقصد را اشتباه نوشتید، آن فایل به جای جابجایی ، نام خود را تغییر میدهد.
چالش های کوچک
- 5 فایل متنی (txt.) بسازید.
- یک دایرکتوری جدید بسازید
- 5 فایلی که ایجاد کردید را به پوشه منتقل کنید.
- یک پوشه بسازید و این پوشه جدید را به داخل یک پوشه دیگر منتقل کنید.
کپی کردن فایل ها و فهرست ها
چارچوب بندی بخش و هدف
همانطور که ما برنامه های وب خود را می سازیم، ممکن است بخواهیم یک فایل را کپی کنیم (اگر در حال ساخت دو صفحه وب مشابه هستیم، ممکن است نخواهیم از ابتدا شروع کنیم)، و نحو دستور cp
(کپی) واقعاً شبیه mv
است. نحو.
کپی کردن یک فایل
دستور کپی سه قسمت دارد:
- دستور
cp
- مخفف کپی - نام فایلی که باید کپی شود
- نام کپی (اگر در همان پوشه باقی می ماند) یا مکان و نام (در صورت انتقال به پوشه دیگری).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt
اگر می خواهید کپی همان نام اصلی را حفظ کند، می توانید محل کپی را بدون نام فایل مشخص کنید.
# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/
داشتن تعداد زیادی فایل با همین نام ممکن است گیج کننده باشد، بنابراین فقط در صورتی از این روش استفاده کنید که مطمئن هستید به آن نیاز دارید.
کپی کردن یک دایرکتوری
کپی کردن یک پوشه یا دایرکتوری کمی پیچیدهتر است، زیرا احتمالاً میخواهید نه تنها پوشه، بلکه همه چیز داخل آن را نیز کپی کنید.
- دستور
cp -R
- مخفف کپی بازگشتی - از آن برای پوشههای خالی و غیرخالی استفاده کنید. - نام منبع (پوشه یا فایلی که می خواهیم منتقل کنیم)
- نام کپی (اگر در همان پوشه باقی می ماند) یا مکان و نام (در صورت انتقال به پوشه دیگری).
اخطار : هنگام تعیین نام برای کپی، اگر فایل یا پوشه قبلا ایجاد نشده باشد، هنگام کپی کردن ایجاد می شود. اگر فایل قبل از اجرای دستور کپی ایجاد شده باشد، هر چیزی که قبلاً در فایل بوده را بازنویسی می کند، پس مراقب باشید!
# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy
# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy
توجه: جزء -R
از cp -R
یک پرچم نامیده می شود. پرچم ها همیشه با یک خط تیره شروع می شوند و در ترکیب با دستورات برای ارائه دستورالعمل های خاص تر برای نحوه اجرای آن دستور استفاده می شوند.
چالش های کوچک
- یک فایل به نام
my_original.txt
ایجاد کنید - یک کپی از
my_original.txt
با نام چیزی جدید در همان پوشه ایجاد کنید. - یک دایرکتوری جدید بسازید
- از آن دایرکتوری یک کپی تهیه کنید، اما نام آن را متفاوت کنید.
- فایل کپی شده خود را (از مرحله 2) کپی کنید اما آن را در فهرست کپی شده (از مرحله 4) قرار دهید.
حذف فایل ها و پوشه ها
چارچوب بندی بخش و هدف
ما می توانیم فایل ها و پوشه ها را در خط فرمان حذف کنیم، اما انجام این کار دائمی است.
حذف یک فایل
برای حذف یک فایل ، میتوانیم از دستور rm
(مخفف remove ) و سپس نام فایل استفاده کنیم.
# delete a file in the working directory
rm unwanted_file.txt
# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt
حذف دایرکتوری که خالی است
برای حذف یک دایرکتوری خالی ، میتوانیم از دستور rmdir
- مخفف حذف پوشه - و به دنبال آن نام پوشه استفاده کنیم.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
حذف دایرکتوری که خالی نیست
برای حذف پوشهای که خالی نیست ، باید یک پرچم -R
- مخفف بازگشتی - بعد از دستور rm
قرار دهیم که به رایانه میگوید محتویات داخل پوشه را حذف کند. به عنوان یک میانبر، برخی از توسعه دهندگان از پرچم -Rf
استفاده می کنند که به اجبار همه چیز را حذف می کند (در غیر این صورت، ممکن است پیام هایی در مورد حذف برخی از فایل ها یا پوشه های فرزند دریافت کنید).
# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty
# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty
هشدار : استفاده از دستور rm
مانند سطل بازیافت یا قسمت حذف شده ایمیل شما نیست - این فایل ها به راحتی قابل بازیابی نیستند. هنگام حذف فایل ها به این روش بسیار محتاط باشید.
چالش های کوچک
- 4 فایل ایجاد کنید
- 2 تا از فایل ها رو پاک کن
- یک پوشه ایجاد کنید.
- یک پوشه دیگر ایجاد کنید و یک فایل داخل این پوشه ایجاد کنید.
- هر دو فهرست را حذف کنید.
می توانید کد این آزمایشگاه را در پوشه زیر در مخزن دانشجویی که از GitHub دانلود کرده اید پیدا کنید: command-line/labs/around-the-world
زمینه
ترم تحصیلی شما در خارج از کشور نزدیک است و زمان آن است که برنامه ریزی سفرهای اروپایی خود را آغاز کنید...
با سه ماه زندگی جدی در آینده نزدیک، می خواهید مطمئن شوید که از هر سفر آخر هفته نهایت استفاده را خواهید برد.
خوشبختانه شما از صفر شروع نمی کنید و دوستانتان برخی از فعالیت های مورد علاقه خود را در ترم خارج از کشور به شما ارائه کرده اند. متاسفانه بعضی از فایل ها به هم ریخته...
نگران نباشید، با سحر و جادو از خط فرمان شما آنها را در کمترین زمان رفع خواهید کرد!
وظیفه
مطمئن شوید که هر شهر در کشور صحیح قرار دارد و هر پوشه شهر دارای بناهای تاریخی مناسبی است. مراقب باشید وگرنه ممکن است در آمستردام به دنبال برج ایفل بگردید!
اگر با این کار کاملاً مطمئن هستید، رابط کاربری گرافیکی خود را پنهان کنید و مستقیماً از خط فرمان با این چالش روبرو شوید. در حین انجام همه این کارها باید در پوشه عمومی سراسر جهان بمانید، یعنی از مسیرهای مطلق هنگام مراجعه به پوشه ها و فایل ها استفاده کنید!
هنگامی که مطمئن شدید همه چیز در جای درست است، نوبت شماست که فرماندهی چند ماه آینده خود را بر عهده بگیرید. شهرهای جدید، کشورها و بناهایی را که باید ببینید و آنها را به درخت فایل خود اضافه کنید، طوفان فکری کنید!
تبریک می گویم! شما رسما یاد گرفتید که چگونه کامپیوتر صحبت کنید. برای برداشتن یک قدم بیشتر آماده اید؟ بیایید با الحاقیه صحبت کنیم...
برنامه های افزودنی
- دوباره همه فایلهایتان را با هم مخلوط کنید، سپس راهی شهر مورد نظرتان شوید. در حالی که در آن شهر هستید، فایل ها را دوباره سازماندهی کنید.
- یکی از بازی های سرگرم کننده خط فرمان را که در زیر لینک شده است، امتحان کنید
بازی پایانه
بازی پیشرفته (برای گوگل آماده باشید) - طرفدار بزرگ جنگ ستارگان؟ سعی کنید
telnet towel.blinkenlights.nl
را در خط فرمان خود اجرا کنید و اینتر را فشار دهید... (توجه داشته باشید که در نسخه های اخیر MacOS، دستورtelnet
دیگر به طور پیش فرض نصب نمی شود؛ در این مورد دستورnc towel.blinkenlights.nl 23
می تواند به جای آن استفاده شود.)
می توانید کد این آزمایشگاه را در پوشه زیر در مخزن دانشجویی که از GitHub دانلود کرده اید پیدا کنید: command-line/labs/bashing-away-repetition
آیا آمادهاید تکرار را از خط فرمان روزانه خود حذف کنید؟ عالیه منم همینطور!
زمینه
اگر برنامه نویسان از چیزی متنفرند، آن تکرار است. به عنوان دانشمندان کامپیوتر، وظیفه ما این است که کامپیوتر را تا حد امکان انجام دهیم. نوشتن اسکریپت های bash به ما کمک می کند تا استفاده از خط فرمان را کارآمدتر کنیم.
اول از همه، اسکریپت bash چیست ؟
سوال عالی خوشبختانه دوست ما رایان چادویک، در این مکان عالی برای یافتن آموزش های خط فرمان ، پاسخی برای ما دارد.
یک اسکریپت Bash به ما اجازه می دهد تا مجموعه ای از اقدامات را تعریف کنیم که سپس کامپیوتر بدون نیاز به وارد کردن دستورات خودمان انجام می دهد. اگر یک کار خاص اغلب انجام می شود، یا تکراری است ، یک اسکریپت می تواند ابزار مفیدی باشد.
بدون تکرار؟ این چیزی است که من در مورد آن صحبت می کنم.
آموزش
اول از همه، برای اینکه بتوانید اسکریپت خود را اجرا کنید، باید به رایانه خود اجازه بدهید. این کار را با اجرای دستور زیر انجام دهید.
chmod 755 myScript.sh
خوب، وقت آن است که اولین برنامه خود را بنویسید. به myScript.sh
خود بروید (ببینید آیا می توانید فایل را از خط فرمان باز کنید). در پایان فایل اضافه کنید:
echo "Hello World"
حالا اجرا کنید:
./myScript.sh
در ترمینال شما ** TA DA ** باید "Hello World" را در ترمینال خود چاپ شده ببینید.
هر چیزی که در اسکریپت bash خود می نویسید طوری اجرا می شود که گویی آن را در ترمینال خود تایپ کرده اید. بیایید قبل از رفتن به برنامه های افزودنی یک مثال دیگر را مرور کنیم. ابتدا یک فایل برای اسکریپت خود ایجاد کنید، این می تواند هر چیزی که می خواهید نامیده شود، اما باید پسوند .sh
داشته باشد. بعد مطمئن شوید که با تایپ chmod 755
و سپس نام اسکریپت خود در ترمینال و فشردن enter، به اسکریپت خود اجازه اجرا داده اید. هر بار که یک اسکریپت bash جدید را شروع می کنید، باید مطمئن شوید که این دو مرحله را کامل کرده اید.
چالش مقدمه
حالا بیایید اسکریپتی بنویسیم که یک پوشه جدید ایجاد کند. چه دستوری می دانیم که یک پوشه جدید ایجاد می کند؟ اگر به کلمه ای فکر می کنید که با m
شروع شود و با kdir
، در مسیر درستی هستید. دستوری را بنویسید که پوشه جدید شما را ایجاد میکند و نام آن را در فایل .sh
جدیدتان با چیزی جالب نامگذاری کنید، سپس آن را در ترمینال خود اجرا کنید.
اگر جواب داد، به سراغ سایر چالشهای فهرستشده در زیر بروید. اگر هنوز کمی گیج هستید، سعی کنید به آزمایشگاه خود در سراسر جهان نگاه کنید و به نحوه ایجاد پوشه های کشور و شهر جدید فکر کنید.
از استفاده از آموزش لینک شده در بالا نترسید و آماده باشید تا بهترین مهارت های Google خود را به دست آورید. اسکریپت هایی بنویسید و اجرا کنید که کارهای زیر را انجام می دهند:
وظایف اصلی
- دستوری را به فایلی که در بالا ایجاد کردید اضافه کنید تا به پوشه ای که ایجاد می کنید هدایت شود. (از چه دستوری برای تغییر دایرکتوری ها استفاده می کنیم؟)
- نام پوشه جدید شما را مهر تاریخ بزنید. به عنوان مثال، برنامه شما باید یک پوشه با نام "
2017-12-07my_super_cool_folder
" ایجاد کند.
- "دایرکتوری فعلی من این است:" و پس از آن دایرکتوری کاری شما، و "اینجا لیستی از همه چیز در این دایرکتوری است!" و محتویات دایرکتوری فعلی شما را چاپ می کند.
- دریابید که چگونه به اسکریپت bash خود یک ورودی بدهید و یک فایل بر اساس آن رشته ورودی ایجاد کنید. آموزشی که قبلاً در آزمایشگاه پیوند داده شده است چند نمونه عالی در بخش متغیرها برای بررسی دارد.
- از کاربر نام خود را بپرسید، سپس "سلام خوشحالم که نام او را در اینجا وارد کنید " را چاپ کنید.
- سعی کنید از کاربر خود اطلاعات بیشتری بخواهید و یک پیام سفارشی برای آنها ایجاد کنید.
متن نوشته
خط فرمان (یا ترمینال) یک تعامل مستقیم با سیستم عامل کامپیوتر (OS) فراهم می کند - همه کارهایی که رابط کاربری گرافیکی (GUI) انجام می دهد، اما از طریق دستورات متنی - از مسیریابی، ساخت فایل های جدید، تا اجرای اسکریپت ها . خط فرمان برای باز کردن فایلها و برای راهاندازی محیط توسعه هنگام استفاده از Google App Engine استفاده میشود.
خط فرمان در عمل
دسترسی به ترمینال
میانبر مک:
- Spotlight را با Command + space باز کنید.
- Terminal را در جستجوی Spotlight تایپ کنید.
پیمایش ترمینال
# See your current location - abbreviation for 'print working directory'.
pwd
# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads
# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory
# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..
# Return home.
cd
# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```
#### File Path Shorthand `~`
The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.
This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.
### <a id="view"></a>Viewing the Contents of Folders
```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls
ایجاد فایل ها و پوشه ها
ایجاد فایل ها
# Make a file - this will create a file in the current folder.
touch my_text_file.txt
# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css
# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
ایجاد پوشه ها
# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder
# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder
# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three
انتقال فایل ها و پوشه ها
انتقال فایل ها
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist. Read below for more details on renaming.
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder
انتقال پوشه ها
# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder
# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder
حرکت تغییر نام است
به خاطر داشته باشید که mv
نیز همان دستوری است که برای تغییر نام فایل ها یا پوشه ها استفاده می شود.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
کپی کردن فایل ها و پوشه ها
کپی کردن فایل ها
# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt
کپی کردن پوشه ها
# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy
# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy
حذف فایل ها و پوشه ها
حذف فایل ها
# Delete a file in the current working directory.
rm unwanted_file.txt
# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt
حذف پوشه ها
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
نکته ها و ترفندهای
- استفاده از خط فرمان را تمرین کنید، حتی زمانی که فکر نمی کنید نیازی به این کار دارید. با گذشت زمان در آن بهتر خواهید شد.
- کلید
tab
نام فایل یا پوشه شما را به صورت خودکار تکمیل می کند (ممکن است به حروف کوچک و بزرگ حساس باشد). - اگر فقط یک فایل یا پوشه منطبق باقی مانده باشد، به طور خودکار تکمیل می شود.
- اگر چندین فایل یا پوشه منطبق وجود دارد، tab را دو بار فشار دهید تا لیستی از موارد مشابه را مشاهده کنید.
- فلش بالا/پایین تاریخچه دستورات شما را چرخه میکند تا مجبور نباشید دستورات را دوباره تایپ کنید.
- از دستور
clear
برای پاک کردن پنجره ترمینال استفاده کنید. این همه کارهای قبلی شما را نگه می دارد - برای دیدن آن به بالا بروید. - برای راه اندازی مجدد ترمینال از
reset
استفاده کنید. این کار قبلی شما را روی صفحه نگه نمیدارد، اما اگر ترمینال شروع به رفتار غیرقابل پیشبینی کند، میتواند چندین مشکل را حل کند. - برای جابجایی مکان نما بر اساس یک کلمه،
option
+arrow
را فشار دهید
خلاصه بهترین روش ها
- با استفاده از
cd
,cd ..
یاcd <folder name>
در ترمینال پیمایش کنید. - محتویات پوشه ها را با استفاده از
ls
کنید. - ایجاد فایل با استفاده از
touch
؛ با استفاده ازmkdir
پوشه ها را ایجاد کنید. - انتقال فایل ها و پوشه ها با استفاده از
mv <item to move> <destination>
. - فایل ها و پوشه ها را با استفاده از
cp <item to copy> <destination>
. - فایل ها و پوشه ها را با استفاده از
rm <item to remove>
.
سوال 1
از چه چیزی برای شناسایی فهرست کاری فعلی خود استفاده می کنید؟
-
pwd
-
ls
-
cd
-
mkdir
-
touch
سوال 2
چگونه از دایرکتوری کاری فعلی خود به دو سطح بالا می روید؟
-
mv ~
-
cd ../..
-
mv up/up
-
cd ^(2)
سوال 3
از کدام دستور برای تغییر نام فایل استفاده می کنید؟
-
mv
-
cd
-
ls
-
python
-
rename
سوال 4
چرا دستور mv script.py
خطا می دهد؟
- زیرا "
script.py
" نام فایل نامعتبر است. - زیرا دستور
mv
را نمی توان با هیچ اطلاعات دیگری دنبال کرد. - این یک سوال گول زننده است؛ خطا نمی کند.
- زیرا انتقال یک فایل حداقل به دو آرگومان نیاز دارد - یک هدف و یک مقصد
سوال 5
دستور cd ~
چه کاری انجام می دهد؟
- دایرکتوری کاری خود را به فهرست اصلی خود تغییر دهید.
- دستور قبلی را تکرار کنید.
- از یک الگوریتم برای تعیین مفیدترین دستور در این زمان استفاده کنید.
- یک خطا پرتاب کنید.
سوال 6
کدام یک از موارد زیر دلیلی برای استفاده از تب برای تکمیل خودکار نام فایل ها نیست؟
- زیرا باعث صرفه جویی در زمان می شود.
- زیرا به رفع اشتباهات املایی کمک می کند.
- زیرا به قدرت پردازش کمتری نیاز دارد.
سوال 7
اگر یک توسعهدهنده جدید سعی میکند فایلی به نام " my script.py
" ایجاد کند، چرا فرمان touch my script.py
نمیکند؟
- زیرا
touch
نمی تواند فایل های جدیدی ایجاد کند. - زیرا
.py
یک پسوند فایل معتبر نیست. - زیرا به جای یک فایل، دو فایل ایجاد می کند، یکی به نام "
my
" و دیگری به نام "script.py
". - زیرا ایجاد فایل های جدید از خط فرمان غیرممکن است.
سوال 1
از چه چیزی برای شناسایی فهرست کاری فعلی خود استفاده می کنید؟
pwd
سوال 2
چگونه از دایرکتوری کاری فعلی خود به دو سطح بالا می روید؟
با cd ../..
دو سطح بالا می روید (هر ..
نشان دهنده یک سطح بالاتر است).
سوال 3
از کدام دستور برای تغییر نام فایل استفاده می کنید؟
mv
برای انتقال یک فایل از یک مکان به مکان دیگر استفاده می شود و می توان از آن برای تغییر نام فایل نیز استفاده کرد.
سوال 4
چرا دستور mv script.py
خطا می دهد؟
دستور mv
به دو آرگومان نیاز دارد، یک فایل منبع و یک فایل مقصد.
سوال 5
دستور cd ~
چه کاری انجام می دهد؟
دایرکتوری کاری شما را به دایرکتوری خانگی تغییر می دهد. کاراکتر ویژه ~ برای شناسایی فهرست اصلی کاربر فعلی استفاده می شود. همچنین میتوان از آن در ترکیب با یک نام کاربری متفاوت استفاده کرد: ~user2 برای اشاره به پوشه اصلی خود.
سوال 6
کدام یک از موارد زیر دلیلی برای استفاده از تب برای تکمیل خودکار نام فایل ها نیست؟
چون به قدرت پردازش کمتری نیاز دارد صحیح نیست . tab
برای اسکن پوشههایی که به دنبال نام فایل برای تکمیل خودکار هستند، به مقدار (اغلب ناچیز) قدرت پردازشی نیاز دارد، اما در زمان صرفهجویی میکند و از اشتباهات املایی در فرآیند جلوگیری میکند.
سوال 7
اگر یک توسعهدهنده جدید سعی میکند فایلی به نام " my script.py
" ایجاد کند، چرا فرمان touch my script.py
نمیکند؟
به جای یک فایل، دو فایل ایجاد می کند. دستور touch
فایل های جدیدی ایجاد می کند. در فضاهای ترمینال جداکننده هستند، نه کاراکترهایی که باید در نام فایل گنجانده شوند. بهتر است به طور کامل از آنها پرهیز کنید، اما اگر باید از آنها استفاده کنید، نام فایل باید در دو گیومه قرار گیرد:
touch "my script.py"
سوال 1
دستور ترمینال برای تغییر دایرکتوری ها به صورت زیر است:
-
move
-
mkdir
-
pwd
-
cd
سوال 2
اگر بخواهید به پوشه والد دایرکتوری فعلی خود بروید، چه دستوری را اجرا می کنید؟
-
cd up
-
cd .
-
cd ..
-
cd ~
سوال 3
کدام دستور برای ایجاد فایل استفاده می شود؟
-
touch
-
mkdir
-
create
-
pwd
سوال 4
کدام یک از دستورات زیر دو فایل به نامهای index.html
و style.css
ایجاد میکند؟
-
touch index.html, touch style.css
-
touch index.html, style.css
-
touch index.html style.css
-
touch index.html + style.css
سوال 5
از کدام دستور برای تغییر نام فایل یا پوشه استفاده می کنید؟
-
rename
-
move
-
mv
-
rm
سوال 6
rm
چه پرچمی انجام می دهد
و cp
آیا دستورات باید روی پوشه ها کار کنند؟
-
-f
-
-r
-
-x
-
-d
سوال 7
به منظور جابجایی projects
ها
به ~/Documents
و تغییر نام آن به Projects
ها، کدام دستور باید در جای خالی باشد؟
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
-
pwd
-
cd projects
-
mv ~ projects
-
cd ~/Documents
-
ls
سوال 8
دستور زیر چه خواهد کرد؟
rm -r projects
- فایلی به نام
projects
ها را حذف کنید - پوشه ای به نام
projects
ها را حذف کنید - نام فایلی به نام
projects
ها را تغییر دهید - محتویات فهرست فعلی
projects
ها را جستجو کنید
سوال 1
دستور ترمینال برای تغییر دایرکتوری ها به صورت زیر است:
دستور ترمینال برای تغییر دایرکتوری ها cd
است . خود دستور مخفف "تغییر دایرکتوری" است.
سوال 2
اگر بخواهید به پوشه والد دایرکتوری فعلی خود بروید، چه دستوری را اجرا می کنید؟
دستور پیمایش به پوشه والد cd ..
سوال 3
کدام دستور برای ایجاد فایل استفاده می شود؟
دستور ایجاد فایل ها touch
است
سوال 4
کدام یک از دستورات زیر دو فایل به نامهای index.html
و style.css
ایجاد میکند؟
دستور touch index.html style.css
دو فایل را ایجاد می کند . نیازی به کاما نیست و هر تعداد فایل را می توان با فاصله از هم جدا کرد.
سوال 5
از کدام دستور برای تغییر نام فایل یا پوشه استفاده می کنید؟
اگرچه مخفف "move" است و می تواند برای جابجایی فایل ها یا پوشه ها استفاده شود، mv
می تواند برای تغییر نام فایل ها و پوشه ها نیز استفاده شود .
سوال 6
rm
چه پرچمی انجام می دهد
و cp
آیا دستورات باید روی پوشه ها کار کنند؟
دستورات rm
و cp
برای کارکردن بر روی پوشهها به پرچم -r
نیاز دارند، زیرا پرچم -r
مخفف "recursive" است و دستور را برای هر فایل و پوشه موجود در داخل مجدداً اجرا میکند.
سوال 7
به منظور جابجایی projects
ها
به ~/Documents
و تغییر نام آن به Projects
ها، کدام دستور باید در جای خالی باشد؟
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
از آنجایی که ما در فهرست اصلی شروع می کنیم، باید cd ~/Documents
را اجرا کنیم
برای اینکه دستور نهایی در دایرکتوری صحیح اجرا شود.
سوال 8
دستور زیر چه خواهد کرد؟
rm -r projects
این دستور یک فایل یا پوشه ای به نام projects
ها را حذف می کند
زیرا با -r
یا پرچم بازگشتی فراخوانی می شود. بدون آن پرچم، این دستور فقط برای حذف فایلی با آن نام کار می کند.