مواد دانشجویی خط فرمان

خط فرمان راهی برای کنترل کامپیوتر بدون رابط کاربری گرافیکی است. در این بخش، دستورات اولیه تعامل با کامپیوتر خود را یاد خواهیم گرفت.

خوراکی های کلیدی

  • دانش آموزان با دستورات در کامپیوتر خود حرکت می کنند.
  • دانش آموزان فایل ها و پوشه ها را ایجاد، انتقال، کپی و حذف خواهند کرد.

خط فرمان چیست؟

اکثر کاربران اغلب از یک رابط کاربری گرافیکی (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 را درک می کند. دستورات مخفف یا مخفف کلمات انگلیسی هستند.

هنگامی که در ترمینال خود در حال حرکت هستید، مهم است که بدانید کجا هستید (این به طور مستقیم به زندگی واقعی نیز ترجمه می شود - اگر می خواهید به جایی برسید، ابتدا باید مکان فعلی خود را بدانید).

# 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/ را به صورت خودکار برای شما تکمیل می کند ( / در پایان اختیاری است اما به شما می گوید که مقصد یک دایرکتوری است).

این تکمیل خودکار نه تنها زمانی که کار می کند در زمان صرفه جویی می کند، بلکه در صورت عدم کارکرد اطلاعات ارزشمندی را نیز ارائه می دهد. اگر دکمه تب به صورت خودکار تکمیل نمی شود، احتمالا یکی از سه مشکل واقعا رایج را ایجاد کرده اید:

  1. دایرکتوری که می خواهید به آن پیمایش کنید از دایرکتوری فعلی شما قابل دسترسی نیست.
  2. دو دایرکتوری وجود دارد که نام‌های شروع مشابهی دارند (مانند Documents و Downloads ) و شما اطلاعات کافی برای تکمیل خودکار ارائه نکرده‌اید تا بدانید کدام یک را می‌خواهید. دوباره tab را فشار دهید تا فهرستی از دایرکتوری هایی را ببینید که می توانند با آنچه تایپ کرده اید مطابقت داشته باشند. سپس کمی بیشتر تایپ کنید (به اندازه ای که فقط یک مطابقت داشته باشد) و دوباره tab را فشار دهید.
  3. شما قبلاً یک اشتباه تایپی در نیمه اول کلمه وارد کرده اید.

هر چه زودتر عادت کنید از تب برای تکمیل خودکار دستورات خود استفاده کنید، احتمال بیشتری وجود دارد که در موقعیت‌های ناامیدکننده‌ای که به نظر می‌رسد دستورات شما کار نمی‌کنند، مدیریت کنید.

فهرست راهنمای والدین و فرزند

دایرکتوری ها و فایل ها می توانند روابط فرزند و والدین با یکدیگر داشته باشند. اگر 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

چالش های کوچک

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

جابجایی و کپی کردن

انتقال فایل ها و دایرکتوری ها

چارچوب بندی بخش و هدف

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

  1. ما از دستور mv - مخفف برای move استفاده می کنیم.
  2. دستور move را با نام فایل یا پوشه ای که می خواهید منتقل کنید دنبال کنید.
  3. نام فایل را با مقصدی که می‌خواهید آن را منتقل کنید دنبال کنید.

برای مثال، اگر ساختار فایلی مانند این دارید:

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 است. این بدان معناست که اگر فایلی را به دایرکتوری که وجود ندارد منتقل کنید، یا اگر مقصد را اشتباه نوشتید، آن فایل به جای جابجایی ، نام خود را تغییر می‌دهد.

چالش های کوچک

  1. 5 فایل متنی (txt.) بسازید.
  2. یک دایرکتوری جدید بسازید
  3. 5 فایلی که ایجاد کردید را به پوشه منتقل کنید.
  4. یک پوشه بسازید و این پوشه جدید را به داخل یک پوشه دیگر منتقل کنید.

کپی کردن فایل ها و فهرست ها

چارچوب بندی بخش و هدف

همانطور که ما برنامه های وب خود را می سازیم، ممکن است بخواهیم یک فایل را کپی کنیم (اگر در حال ساخت دو صفحه وب مشابه هستیم، ممکن است نخواهیم از ابتدا شروع کنیم)، و نحو دستور cp (کپی) واقعاً شبیه mv است. نحو.

کپی کردن یک فایل

دستور کپی سه قسمت دارد:

  1. دستور cp - مخفف کپی
  2. نام فایلی که باید کپی شود
  3. نام کپی (اگر در همان پوشه باقی می ماند) یا مکان و نام (در صورت انتقال به پوشه دیگری).
# 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/

داشتن تعداد زیادی فایل با همین نام ممکن است گیج کننده باشد، بنابراین فقط در صورتی از این روش استفاده کنید که مطمئن هستید به آن نیاز دارید.

کپی کردن یک دایرکتوری

کپی کردن یک پوشه یا دایرکتوری کمی پیچیده‌تر است، زیرا احتمالاً می‌خواهید نه تنها پوشه، بلکه همه چیز داخل آن را نیز کپی کنید.

  1. دستور cp -R - مخفف کپی بازگشتی - از آن برای پوشه‌های خالی و غیرخالی استفاده کنید.
  2. نام منبع (پوشه یا فایلی که می خواهیم منتقل کنیم)
  3. نام کپی (اگر در همان پوشه باقی می ماند) یا مکان و نام (در صورت انتقال به پوشه دیگری).

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

# 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 یک پرچم نامیده می شود. پرچم ها همیشه با یک خط تیره شروع می شوند و در ترکیب با دستورات برای ارائه دستورالعمل های خاص تر برای نحوه اجرای آن دستور استفاده می شوند.

چالش های کوچک

  1. یک فایل به نام my_original.txt ایجاد کنید
  2. یک کپی از my_original.txt با نام چیزی جدید در همان پوشه ایجاد کنید.
  3. یک دایرکتوری جدید بسازید
  4. از آن دایرکتوری یک کپی تهیه کنید، اما نام آن را متفاوت کنید.
  5. فایل کپی شده خود را (از مرحله 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 مانند سطل بازیافت یا قسمت حذف شده ایمیل شما نیست - این فایل ها به راحتی قابل بازیابی نیستند. هنگام حذف فایل ها به این روش بسیار محتاط باشید.

چالش های کوچک

  1. 4 فایل ایجاد کنید
  2. 2 تا از فایل ها رو پاک کن
  3. یک پوشه ایجاد کنید.
  4. یک پوشه دیگر ایجاد کنید و یک فایل داخل این پوشه ایجاد کنید.
  5. هر دو فهرست را حذف کنید.

می توانید کد این آزمایشگاه را در پوشه زیر در مخزن دانشجویی که از GitHub دانلود کرده اید پیدا کنید: command-line/labs/around-the-world

زمینه

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

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

خوشبختانه شما از صفر شروع نمی کنید و دوستانتان برخی از فعالیت های مورد علاقه خود را در ترم خارج از کشور به شما ارائه کرده اند. متاسفانه بعضی از فایل ها به هم ریخته...

نگران نباشید، با سحر و جادو از خط فرمان شما آنها را در کمترین زمان رفع خواهید کرد!

وظیفه

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

اگر با این کار کاملاً مطمئن هستید، رابط کاربری گرافیکی خود را پنهان کنید و مستقیماً از خط فرمان با این چالش روبرو شوید. در حین انجام همه این کارها باید در پوشه عمومی سراسر جهان بمانید، یعنی از مسیرهای مطلق هنگام مراجعه به پوشه ها و فایل ها استفاده کنید!

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

تبریک می گویم! شما رسما یاد گرفتید که چگونه کامپیوتر صحبت کنید. برای برداشتن یک قدم بیشتر آماده اید؟ بیایید با الحاقیه صحبت کنیم...

برنامه های افزودنی

  1. دوباره همه فایل‌هایتان را با هم مخلوط کنید، سپس راهی شهر مورد نظرتان شوید. در حالی که در آن شهر هستید، فایل ها را دوباره سازماندهی کنید.
  2. یکی از بازی های سرگرم کننده خط فرمان را که در زیر لینک شده است، امتحان کنید
    بازی پایانه
    بازی پیشرفته (برای گوگل آماده باشید)
  3. طرفدار بزرگ جنگ ستارگان؟ سعی کنید 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 خود را به دست آورید. اسکریپت هایی بنویسید و اجرا کنید که کارهای زیر را انجام می دهند:

وظایف اصلی

  1. دستوری را به فایلی که در بالا ایجاد کردید اضافه کنید تا به پوشه ای که ایجاد می کنید هدایت شود. (از چه دستوری برای تغییر دایرکتوری ها استفاده می کنیم؟)
  • نام پوشه جدید شما را مهر تاریخ بزنید. به عنوان مثال، برنامه شما باید یک پوشه با نام " 2017-12-07my_super_cool_folder " ایجاد کند.
  1. "دایرکتوری فعلی من این است:" و پس از آن دایرکتوری کاری شما، و "اینجا لیستی از همه چیز در این دایرکتوری است!" و محتویات دایرکتوری فعلی شما را چاپ می کند.
  2. دریابید که چگونه به اسکریپت bash خود یک ورودی بدهید و یک فایل بر اساس آن رشته ورودی ایجاد کنید. آموزشی که قبلاً در آزمایشگاه پیوند داده شده است چند نمونه عالی در بخش متغیرها برای بررسی دارد.
  3. از کاربر نام خود را بپرسید، سپس "سلام خوشحالم که نام او را در اینجا وارد کنید " را چاپ کنید.
  • سعی کنید از کاربر خود اطلاعات بیشتری بخواهید و یک پیام سفارشی برای آنها ایجاد کنید.

متن نوشته

خط فرمان (یا ترمینال) یک تعامل مستقیم با سیستم عامل کامپیوتر (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

از چه چیزی برای شناسایی فهرست کاری فعلی خود استفاده می کنید؟

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

سوال 2

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

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

سوال 3

از کدام دستور برای تغییر نام فایل استفاده می کنید؟

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

سوال 4

چرا دستور mv script.py خطا می دهد؟

  1. زیرا " script.py " نام فایل نامعتبر است.
  2. زیرا دستور mv را نمی توان با هیچ اطلاعات دیگری دنبال کرد.
  3. این یک سوال گول زننده است؛ خطا نمی کند.
  4. زیرا انتقال یک فایل حداقل به دو آرگومان نیاز دارد - یک هدف و یک مقصد

سوال 5

دستور cd ~ چه کاری انجام می دهد؟

  1. دایرکتوری کاری خود را به فهرست اصلی خود تغییر دهید.
  2. دستور قبلی را تکرار کنید.
  3. از یک الگوریتم برای تعیین مفیدترین دستور در این زمان استفاده کنید.
  4. یک خطا پرتاب کنید.

سوال 6

کدام یک از موارد زیر دلیلی برای استفاده از تب برای تکمیل خودکار نام فایل ها نیست؟

  1. زیرا باعث صرفه جویی در زمان می شود.
  2. زیرا به رفع اشتباهات املایی کمک می کند.
  3. زیرا به قدرت پردازش کمتری نیاز دارد.

سوال 7

اگر یک توسعه‌دهنده جدید سعی می‌کند فایلی به نام " my script.py " ایجاد کند، چرا فرمان touch my script.py نمی‌کند؟

  1. زیرا touch نمی تواند فایل های جدیدی ایجاد کند.
  2. زیرا .py یک پسوند فایل معتبر نیست.
  3. زیرا به جای یک فایل، دو فایل ایجاد می کند، یکی به نام " my " و دیگری به نام " script.py ".
  4. زیرا ایجاد فایل های جدید از خط فرمان غیرممکن است.

سوال 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

دستور ترمینال برای تغییر دایرکتوری ها به صورت زیر است:

  1. move
  2. mkdir
  3. pwd
  4. cd

سوال 2

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

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

سوال 3

کدام دستور برای ایجاد فایل استفاده می شود؟

  1. touch
  2. mkdir
  3. create
  4. pwd

سوال 4

کدام یک از دستورات زیر دو فایل به نام‌های index.html و style.css ایجاد می‌کند؟

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

سوال 5

از کدام دستور برای تغییر نام فایل یا پوشه استفاده می کنید؟

  1. rename
  2. move
  3. mv
  4. rm

سوال 6

rm چه پرچمی انجام می دهد و cp آیا دستورات باید روی پوشه ها کار کنند؟

  1. -f
  2. -r
  3. -x
  4. -d

سوال 7

به منظور جابجایی projects ها به ~/Documents و تغییر نام آن به Projects ها، کدام دستور باید در جای خالی باشد؟

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

سوال 8

دستور زیر چه خواهد کرد؟

rm -r projects

  1. فایلی به نام projects ها را حذف کنید
  2. پوشه ای به نام projects ها را حذف کنید
  3. نام فایلی به نام projects ها را تغییر دهید
  4. محتویات فهرست فعلی 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 یا پرچم بازگشتی فراخوانی می شود. بدون آن پرچم، این دستور فقط برای حذف فایلی با آن نام کار می کند.