Tài liệu dành cho sinh viên dòng lệnh

Dòng lệnh là một cách điều khiển máy tính không có GUI. Trong chương này, chúng ta sẽ học các lệnh cơ bản để tương tác với máy tính.

Những điểm chính cần ghi nhớ

  • Học viên sẽ di chuyển xung quanh máy tính bằng các lệnh.
  • Học viên sẽ tạo, di chuyển, sao chép và xóa các tệp và thư mục.

Dòng lệnh là gì?

Hầu hết người dùng sử dụng Giao diện người dùng đồ họa (GUI) để tương tác với máy tính. GUI thường dựa vào chuột hoặc thao tác chạm để thao tác cửa sổ với các biểu tượng, nút, thanh cuộn, v.v.

Dòng lệnh là một chế độ xem thay thế trên máy tính. Đôi khi, được gọi là "a shell", "Terminal"; "bash" hoặc một "giao diện văn bản", dòng lệnh là:

  • Một phương tiện để tương tác với chương trình máy tính mà người dùng nhập bằng lệnh. ví dụ:
open README.txt
  • Một cách để thao tác và vận hành máy tính mà không cần chuột.
  • Một cách không gây phản cảm để tạo, đọc, cập nhật, thao tác cũng như xóa các tệp và thư mục, ví dụ:
mv README.txt readme.txt

GUI và Dòng lệnh đang xem xét tương tự nhau! Đây là những cách tương tác khác nhau với máy tính.

Khi nào chúng ta dùng dòng lệnh?

Các nhà phát triển thường ưu tiên giao diện dòng lệnh:

  • Định dạng này cung cấp phương tiện ngắn gọn hơn để kiểm soát một chương trình hoặc hệ điều hành. Bạn nên làm vậy Bởi vì mọi thứ xảy ra trong cùng một cửa sổ và thực hành dễ dàng hơn là tìm và thao tác mọi thứ bằng chuột.
  • Họ dễ dàng đưa ra các tùy chọn để điều khiển lệnh. Bạn nên làm vậy Các trình đơn trong GUI cung cấp rất ít tùy chọn. Trong dòng lệnh, có hàng trăm lệnh và một vài ký tự được thêm vào lệnh có thể giúp thực hiện nhiều việc khác nhau. Ví dụ:
  • ls tệp danh sách cơ bản
  • ls -a Liệt kê tất cả các tệp, bao gồm cả các tệp ẩn thông thường
  • ls -l Danh sách dài, hiển thị thông tin về từng tệp
  • ls -R Định kỳ, liệt kê nội dung của các thư mục
  • ls -la Liệt kê dài tất cả các tệp
  • Tính năng này giúp bạn dễ dàng thao tác trên nhiều tệp cùng một lúc theo những cách phức tạp.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Các khóa này cung cấp một phương thức để lập trình hệ điều hành (các chương trình shell), ví dụ như chương trình vỏ rất đơn giản được thiết kế để sửa đổi hình ảnh có tên tệp kết thúc bằng .png.

Dòng lệnh trong thực tế

Các phần của một Lệnh thoại

Tất cả lệnh đều có 3 phần:

  • Lệnh (hoặc tiện ích) luôn đứng đầu.
  • Bạn không bắt buộc phải gắn cờ, tùy thuộc vào tiện ích mà bạn đang sử dụng. Cờ luôn bắt đầu bằng - (dấu trừ).
  • Đối số là những thứ để lệnh thực hiện hoặc thông tin cần thiết. Thường dùng tên tệp.

Đóng khung

Bối cảnh & mục đích

Dòng lệnh là một cách điều khiển máy tính không cần chuột hoặc GUI (Giao diện người dùng đồ họa). Trước khi Máy tính Apple bắt đầu xây dựng các máy bằng các biểu tượng và thư mục mà bạn có thể nhấp vào, cách duy nhất để tương tác với máy tính của bạn là thông qua dòng lệnh.

Là nhà phát triển, chúng tôi sử dụng dòng lệnh vì GUI rất nhanh và mạnh mẽ hơn nhiều so với GUI – bạn không cần phải mất thời gian nhấp chuột để khám phá. Dòng lệnh có thể cho phép bạn thực hiện khá nhiều hoạt động tương tác với máy tính.

Vì thiết bị đầu cuối là giao diện đơn giản hơn, nên giao diện này có lợi thế hơn so với GUI khi bạn cần kết nối từ xa với máy tính qua liên kết mạng. Đây là hoạt động mà các nhà phát triển thường xuyên thực hiện – ví dụ: khi đi du lịch.

Trong bài học này, chúng ta sẽ tìm hiểu những lệnh cơ bản để tương tác với máy tính bằng cách: tạo tệp và thư mục, di chuyển thư mục, thay đổi thư mục và liệt kê nội dung của một thư mục.

Mục tiêu khóa học

Học viên sẽ có thể

  • Sử dụng Terminal để di chuyển trên các tệp và thư mục
  • Liệt kê nội dung của một thư mục
  • Tạo tệp và thư mục trên dòng lệnh
  • Di chuyển tệp và thư mục
  • Sao chép tệp và thư mục
  • Xóa tệp và thư mục

Bắt đầu

Truy cập thiết bị thanh toán

Đóng khung và mục đích

Thiết bị đầu cuối cung cấp Giao diện dòng lệnh (CLI) cho hệ điều hành. Tại đây, bạn có thể cung cấp hướng dẫn trực tiếp bằng văn bản trên máy tính.

Để thực hiện việc này, chúng tôi cần mở trình chạy của bạn dựa trên hệ thống mà bạn đang sử dụng.

Khi thiết bị đầu cuối khởi chạy, thiết bị sẽ bắt đầu trong thư mục gốc của máy tính (bất kỳ tên nào mà bạn đặt tên cho máy tính của mình). Thư mục gốc của bạn được biểu thị bằng dấu ngã ~.

Khi thảo luận về thế giới trong Thiết bị đầu cuối, Thư mục giống như Thư mục (đôi khi chúng ta có thể chỉ gọi các thư mục đó là Thư mục).

Thay đổi thư mục

Đóng khung và mục đích

Để có thể nói chuyện với máy tính trên Terminal và cho chúng tôi biết chúng tôi muốn làm gì, chúng tôi cần phải nói một ngôn ngữ chung. Dòng lệnh hiểu các lệnh được viết bằng ngôn ngữ viết tập lệnh. Các lệnh này là viết tắt hoặc viết tắt của các từ tiếng Anh.

Khi điều hướng trên thiết bị thanh toán, điều quan trọng là bạn phải biết vị trí của mình (điều này cũng dẫn đến hoạt động thực tế - nếu bạn muốn đến một nơi nào đó, trước tiên, bạn phải biết vị trí hiện tại của mình).

# See your current location - abbreviation for 'print working directory'
pwd

Liệt kê các tệp và thư mục có sẵn

Trong thư mục làm việc, có thể có một số tệp mà bạn có thể truy cập. Thông thường, chúng tôi dựa vào các tín hiệu hình ảnh như biểu tượng để cho chúng tôi biết những gì có thể, nhưng sẽ rất khó để sử dụng máy tính nếu chúng tôi chỉ đoán vị trí đặt tệp và thư mục. Trong dòng lệnh, chúng tôi sẽ sử dụng một lệnh cụ thể để liệt kê những lệnh mà chúng tôi có thể truy cập từ một thư mục đang hoạt động cụ thể/một vị trí cụ thể bất kỳ.

Để xem các tệp hoặc thư mục nằm trong thư mục hiện tại của chúng tôi, hãy sử dụng lệnh ls (viết tắt của danh sách) để xem chế độ xem danh sách nội dung.

# See files and folders in current location - abbreviation for 'list'
ls

Thay đổi thư mục đang làm việc

Nếu cần quyền truy cập vào một tệp hoặc thư mục không có trong danh sách, bạn nên thay đổi thư mục đang hoạt động của mình để dễ dàng truy cập vào thư mục đó.

Cú pháp để yêu cầu Dòng lệnh di chuyển bạn đến một thư mục mới (còn được gọi là thư mục) theo sau là cd trên cùng một dòng) bằng đường dẫn đến thư mục mới.

Nếu bạn chuyển đến một thư mục nằm trong thư mục mà bạn hiện đang ở (tức là một thư mục con của thư mục đang làm việc), hãy sử dụng lệnh cd theo sau là tên của thư mục.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Bạn cũng có thể chuyển đến thư mục ~ trong nhà.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Nếu bạn đã thay đổi các thư mục nhưng cần thay đổi trở lại thư mục gốc, hãy làm như vậy bằng cách điều hướng trực tiếp về nhà bằng cách sử dụng ~ hoặc bằng cách dùng .. để di chuyển lên một cấp.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

Lưu ý rằng cd .. chỉ tăng (quay lại) một cấp, vì vậy, nếu bạn đã thay đổi các thư mục ba lần cho đến nay (xuống ba cấp), thì bạn cần phải sử dụng cd .. ba lần để về nhà, nhưng chỉ cần dùng cd ~ một lần.

Thử thách nhỏ

  • Hãy dùng ls để xem nội dung bên trong thư mục hiện tại của bạn.
  • Quay lại thư mục gốc của bạn và sử dụng ls để xem nội dung của thư mục gốc của bạn.
  • Chọn tên của một trong những thư mục nằm trong thư mục gốc và chuyển đến thư mục mới này.
  • Sử dụng lệnh danh sách để xem nội dung có bên trong.

Mẹo: Tự động hoàn thành bằng tab

Khi thay đổi các thư mục có lệnh cd, một lỗi đánh máy sẽ ngăn lệnh thực thi chính xác. Tuy nhiên, việc sử dụng khoá tab sẽ tự động hoàn thành với tên của mọi thư mục hiện có trong thư mục hiện tại của bạn. Vì vậy, thay vì nhập cd Documents, bạn chỉ cần nhập cd Do rồi nhấn phím tab và thiết bị đầu cuối sẽ tự động điền lệnh cd Documents/ cho bạn (bạn không bắt buộc phải dùng / ở cuối nhưng cho bạn biết rằng đích đến là một thư mục).

Tính năng tự động hoàn thành này không chỉ tiết kiệm thời gian khi hoạt động, mà còn cung cấp thông tin có giá trị khi không hoạt động. Nếu nút thẻ không tự động hoàn thành, thì có thể bạn đã thực hiện một trong ba vấn đề thực sự phổ biến:

  1. Bạn không thể truy cập vào thư mục mà bạn muốn chuyển đến từ thư mục đang làm việc.
  2. Có hai thư mục có tên bắt đầu tương tự nhau (như DocumentsDownloads) và bạn chưa cung cấp đủ thông tin để tự động hoàn thành biết thư mục nào bạn muốn. Nhấn tab một lần nữa để xem danh sách các thư mục có thể khớp với nội dung bạn đã nhập. Sau đó nhập thêm một chút (đủ để chỉ có một kết quả phù hợp) và nhấn lại tab.
  3. Bạn đã nhập sai chính tả ở nửa đầu từ.

Bạn càng sớm có thói quen sử dụng thẻ để tự động hoàn thành lệnh của mình, thì bạn càng có nhiều khả năng xử lý những tình huống khó chịu trong khi lệnh của bạn có vẻ không hoạt động.

Thư mục mẹ và con

Thư mục và tệp có thể có mối quan hệ concha mẹ với nhau. Nếu directory_b bên trong directory_a, thì directory_b được gọi là con của directory_a. Sau đó, directory_a được gọi là cha mẹ của directory_b. Nếu mục thứ ba (my_file) nằm trong directory_b, thì mục đó được coi là phần tử con của directory_bcháu con của directory_a.

Các mối quan hệ này thường được minh họa trên diễn đàn bằng sơ đồ văn bản, ví dụ:

directory_a/
  directory_b/
    my_file

Xin lưu ý rằng tên thư mục kết thúc bằng / trong khi tên tệp thì không. Tổ chức phân cấp này thường được gọi là cấu trúc cây của hệ thống tệp.

Anh chị em

Nếu có nhiều tệp hoặc thư mục ở cùng một cấp, thì chúng được gọi là anh chị em. Ví dụ: Nếu file_bfile_c nằm bên trong directory_a thì chúng là anh chị em.

Sơ đồ văn bản đó sẽ trông như sau:

directory_a/
  file_b
  file_c

Xin lưu ý rằng vì file_b và file_c là các anh em ruột nên chúng được thụt lề như nhau.

Đường dẫn tệp

Đây là một sơ đồ văn bản phức tạp hơn, có cả mối quan hệ mẹ-con và anh chị em.

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

Trong ví dụ này, new_york_city/ là tên thư mục, nhưng cũng có đường dẫn. Thông tin chi tiết về cách chuyển đến đó: ~/north_america/united_states/new_york/new_york_city/.

Để thay đổi thư mục thành new_york_city/,, bạn có thể di chuyển theo từng bước bằng tên hoặc bạn có thể di chuyển theo tất cả cách trong một lệnh bằng đường dẫn.

# 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/

Tóm tắt lệnh điều hướng

# 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

Thử thách nhỏ

  • Sử dụng pwd để tìm hiểu thư mục hiện tại bạn đang truy cập.
  • Hãy chuyển sang một thư mục khác và xác nhận vị trí mới của bạn.
  • Hãy thử lại và chuyển đến một thư mục khác. Hãy dùng các lệnh mới để xem vị trí của bạn, đồng thời xem các tệp bên trong thư mục này.

Tạo tệp & Thư mục

Đóng khung và mục đích

Là nhà phát triển, chúng tôi sẽ cần tạo tệp có mã. Để sắp xếp các tệp đó một cách ngăn nắp, chúng ta cần tạo thư mục / thư mục để lưu trữ tệp.

Hãy biết về vị trí của bạn trong thiết bị đầu cuối trước khi tạo tệp và thư mục.

# See your current location.
pwd

Để tạo một tệp, hãy sử dụng lệnh touch theo sau là tên tệp.

# `touch` creates a new file.
touch style.css

Khi tạo tệp, hãy thêm một phần mở rộng của tệp để chỉ định loại tệp. Loại tệp mẫu:

  • .js tạo dưới dạng tệp JavaScript
  • .html tạo một tệp HTML
  • .css tạo một tệp CSS
  • .md tạo một tệp đánh dấu

Tên tệp không được chứa dấu cách.

# 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

Tạo nhiều tệp

Bạn có thể tạo nhiều tệp cùng một lúc bằng cách thêm dấu cách giữa mỗi tên.

# 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

Tạo thư mục

Để tạo thư mục / thư mục, hãy sử dụng lệnh mkdir – chữ viết tắt của "make directory\39; - theo sau là tên của thư mục.

# 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

Tạo nhiều thư mục

Bạn có thể tạo nhiều thư mục cùng một lúc bằng cách thêm dấu cách giữa mỗi tên.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Thử thách nhỏ

  • Tạo một tệp mới.
  • Tạo một vài tệp trong một lệnh.
  • Tạo thư mục mới.
  • Tạo thêm một vài thư mục mới. Hãy thử chỉ dùng một lệnh để làm việc này.
  • Dựa vào những gì bạn biết về cách di chuyển trong thư mục và tạo tệp cũng như thư mục, hãy tạo một "family_tree\39; trên máy tính bằng tệp và thư mục.

Di chuyển & Sao chép

Chuyển tệp & Thư mục

Đóng khung và mục đích

Chúng ta có thể di chuyển một tệp hoặc thư mục trên dòng lệnh, nhưng luôn cần phải chỉ định ba điều:

  1. Chúng ta dùng lệnh mv – chữ viết tắt cho move.
  2. Làm theo lệnh di chuyển có tên của tệp hoặc thư mục mà bạn muốn di chuyển.
  3. Đi theo tên của tệp có đích đến mà bạn muốn di chuyển tệp đó.

Ví dụ: nếu bạn có cấu trúc tệp như sau:

my_child_folder/
my_parent_folder/

Bạn có thể thấy rằng đối tượng này không được sắp xếp như mong muốn – họ là anh chị em khi phải làm cha mẹ và con. Sử dụng lệnh sau:

# 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/

Cấu trúc thu được sẽ trông như sau.

my_parent_folder/
  my_child_folder/

Sau đây là một số biến thể khác của lệnh 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

Cảnh báo: mv cũng có thể là lệnh để đổi tên tệp bằng cú pháp mv old_name new_name. Điều đó có nghĩa là nếu bạn di chuyển tệp sang thư mục không tồn tại hoặc nếu bạn bỏ sót đích, thì tệp đó sẽ được đổi tên thay vì được di chuyển.

Thử thách nhỏ

  1. Tạo 5 tệp văn bản (.txt).
  2. Tạo thư mục mới.
  3. Di chuyển 5 tệp mà bạn đã tạo vào thư mục đó.
  4. Tạo một thư mục và di chuyển thư mục mới này bên trong một thư mục khác.

Sao chép tệp & Thư mục

Đóng khung và mục đích

Khi xây dựng các ứng dụng web của mình, chúng ta có thể muốn sao chép một tệp (nếu chúng ta đang tạo hai trang web tương tự nhau, thì chúng ta không thể bắt đầu lại từ đầu) và cú pháp cho lệnh cp (sao chép) thực sự tương tự như cú pháp mv.

Sao chép tệp

Lệnh sao chép có ba phần:

  1. Lệnh cp – chữ viết tắt của copy
  2. Tên tệp cần sao chép
  3. Tên của bản sao (nếu ở trong cùng một thư mục) hoặc vị trí và tên (nếu chuyển sang thư mục khác).
# 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

Nếu muốn bản sao vẫn giữ nguyên tên như bản gốc, bạn có thể chỉ định vị trí sao chép không có tên tệp.

# 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/

Việc có nhiều tệp có cùng tên có thể gây nhầm lẫn, vì vậy hãy chỉ sử dụng phương pháp này nếu bạn chắc chắn rằng đó là nội dung bạn cần.

Sao chép thư mục

Việc sao chép một thư mục hoặc thư mục phức tạp hơn một chút vì bạn có thể muốn sao chép không chỉ thư mục mà còn sao chép mọi thứ bên trong thư mục đó.

  1. Lệnh cp -R – chữ viết tắt cho sao chép định kỳ – sử dụng lệnh này cho cả thư mục trống và không trống
  2. Tên nguồn (thư mục hoặc tệp mà chúng tôi muốn di chuyển)
  3. Tên của bản sao (nếu ở trong cùng một thư mục) hoặc vị trí và tên (nếu chuyển sang thư mục khác).

Cảnh báo: Khi chỉ định tên cho bản sao, nếu tệp hoặc thư mục chưa được tạo trước đây, thì tệp hoặc thư mục đó sẽ được tạo khi bạn tạo bản sao. Nếu tệp được tạo trước khi bạn chạy lệnh sao chép, tệp sẽ ghi đè mọi nội dung đã có trong tệp trước đó, vì vậy, hãy cẩn thận!

# 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

Lưu ý: Thành phần -R của cp -R được gọi là cờ. Cờ luôn bắt đầu bằng dấu gạch ngang và được sử dụng kết hợp với các lệnh để cung cấp hướng dẫn cụ thể hơn về cách thực thi lệnh đó.

Thử thách nhỏ

  1. Tạo một tệp có tên là my_original.txt
  2. Tạo bản sao của my_original.txt có tên mới trong cùng một thư mục.
  3. Tạo thư mục mới.
  4. Hãy tạo một bản sao của thư mục đó, nhưng đặt tên khác.
  5. Tạo một bản sao tệp đã sao chép (từ bước 2) nhưng đặt tệp đó vào thư mục đã sao chép (từ bước 4).

Xóa tệp & Thư mục

Đóng khung và mục đích

Chúng ta có thể xóa các tệp và thư mục trên dòng lệnh, nhưng làm như vậy vĩnh viễn.

Xóa tệp

Để xoá một tệp, chúng ta có thể dùng lệnh rm (viết tắt của remove), theo sau là tên tệp.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Xóa một thư mục trống

Để xóa một thư mục trống, chúng ta có thể dùng lệnh rmdir – tên viết tắt cho remove directory, theo sau là tên của thư mục.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Xóa thư mục không trống

Để xóa một thư mục không trống, chúng ta phải đặt một biểu tượng gắn cờ -R – tên viết tắt cho định kỳ – sau lệnh rm yêu cầu máy tính xóa các nội dung bên trong thư mục đó. Là một lối tắt, một số nhà phát triển sử dụng cờ -Rf để bắt buộc xóa mọi thứ (nếu không, bạn có thể nhận được lời nhắc xóa một số tệp hoặc thư mục con).

# 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

Cảnh báo: Việc sử dụng lệnh rm không giống như thùng rác tái chế hoặc phần đã xóa của email – bạn không thể khôi phục dễ dàng những tệp này. Hãy Cẩn thận khi xóa tệp theo cách này.

Thử thách nhỏ

  1. Tạo 4 tệp.
  2. Xóa 2 tệp.
  3. Tạo một thư mục.
  4. Tạo thư mục khác và tạo tệp bên trong thư mục này.
  5. Xóa cả hai thư mục.

Bạn có thể tìm thấy mã của phòng thí nghiệm này trong thư mục sau trong kho lưu trữ của học viên mà bạn đã tải xuống từ GitHub: command-line/labs/around-the-world

Thông tin khái quát

Học kỳ của bạn ở nước ngoài đang đến gần và đã đến lúc bạn bắt đầu lên kế hoạch cho các chuyến đi ở Châu Âu...

Với ba tháng Sống nghiêm trọng trong tương lai gần, bạn muốn đảm bảo rằng bạn tận dụng tối đa mỗi chuyến đi cuối tuần.

Rất may là bạn không bắt đầu từ đầu và bạn bè của bạn đã cung cấp cho bạn một số hoạt động yêu thích từ học kỳ ở nước ngoài. Rất tiếc, một số tệp đã bị trộn lẫn...

Đừng lo, với sự kỳ diệu của dòng lệnh, bạn sẽ nhanh chóng được sửa lỗi!

Tác vụ

Hãy đảm bảo mọi thành phố đều ở đúng quốc gia và mỗi thư mục thành phố đều có đúng đài tưởng niệm bên trong. Hãy cẩn thận, nếu không bạn có thể đến Amsterdam để tìm kiếm Tháp Eiffel!

Nếu bạn cảm thấy REAL tự tin với điều này, hãy ẩn GUI của bạn và đối mặt với thách thức này ngay từ dòng lệnh. Bạn nên ở trong thư mục chung trên toàn thế giới trong khi làm tất cả những việc này, nghĩa là sử dụng đường dẫn tuyệt đối khi tham chiếu thư mục và tệp!

Khi bạn chắc chắn rằng mọi thứ đã vào đúng nơi, thì đến lượt bạn thực hiện lệnh trong vài tháng tiếp theo. Hãy động não tìm các thành phố, quốc gia và di tích mới mà bạn cần để xem và thêm chúng vào cây tệp của mình!

Xin chúc mừng! Bạn đã chính thức học được cách nói máy tính. Bạn đã sẵn sàng tiến thêm một bước chưa? Hãy nói chuyện về tiện ích...

Phần mở rộng

  1. Trộn tất cả các tệp một lần nữa, rồi chuyển đến thành phố mà bạn chọn. Sắp xếp lại các tệp trong khi vẫn ở lại thành phố đó.
  2. Hãy thử một trong những trò chơi dòng lệnh thú vị qua đường liên kết dưới đây
    Terphím Game
    Advanced Game (sẵn sàng tham gia Google)
  3. Người hâm mộ khổng lồ trong Chiến tranh giữa các vì sao? Hãy thử chạy telnet towel.blinkenlights.nl trong dòng lệnh rồi nhấn Enter.... (Lưu ý rằng trong các phiên bản gần đây của MacOS, lệnh telnet không còn được cài đặt theo mặc định nữa. Trong trường hợp này, lệnh nc towel.blinkenlights.nl 23 có thể được dùng.)

Bạn có thể tìm thấy mã của phòng thí nghiệm này trong thư mục sau trong kho lưu trữ của học viên mà bạn đã tải xuống từ GitHub: command-line/labs/bashing-away-repetition

Bạn đã sẵn sàng lặp lại việc sử dụng dòng lệnh hằng ngày? Tuyệt, tôi cũng vậy!

Thông tin khái quát

Nếu có một thứ mà các lập trình viên thù ghét, thì nó sẽ lặp lại. Là nhà khoa học máy tính, nhiệm vụ của chúng tôi là làm cho máy tính làm được nhiều việc nhất có thể. Việc viết tập lệnh bash sẽ giúp chúng ta sử dụng dòng lệnh hiệu quả hơn.

Trước tiên, Kịch bản bash là gì?

Câu hỏi TUYỆT VỜI. Cảm ơn bạn bè của chúng tôi, Ryan Chadwick, tại nơi tuyệt vời này để tìm hướng dẫn về dòng lệnh, đã có câu trả lời cho chúng tôi.

Tập lệnh Bash cho phép chúng ta xác định một loạt hành động mà máy tính sẽ thực hiện sau đó mà không cần phải tự nhập các lệnh. Nếu bạn thực hiện một nhiệm vụ cụ thể thường xuyên hoặc lặp lại, thì tập lệnh có thể là một công cụ hữu ích.

Không lặp lại? Đó là những gì tôi đang nói.

Hướng dẫn

Trước tiên, để có thể chạy tập lệnh, bạn cần phải cấp quyền cho máy tính của mình. Hãy làm việc này bằng cách chạy lệnh bên dưới.

chmod 755 myScript.sh

Được rồi, đã đến lúc viết chương trình đầu tiên của bạn. Chuyển đến myScript.sh của bạn (xem liệu bạn có thể mở tệp từ dòng lệnh hay không). Ở cuối tệp, hãy thêm:

echo "Hello World"

Hiện đang chạy:

./myScript.sh

trong thiết bị thanh toán. ** TA DA ** bạn sẽ thấy "Hello World" in trong thiết bị thanh toán của mình.

lễ kỷ niệm

Mọi thứ bạn viết trong tập lệnh bash sẽ chạy như thể bạn đã nhập vào thiết bị đầu cuối. Hãy xem thêm một ví dụ trước khi chuyển sang phần mở rộng. Trước tiên hãy tạo một tệp cho tập lệnh của bạn. Tệp này có thể được gọi là mọi thứ bạn muốn nhưng phải có tiện ích .sh . Tiếp theo đảm bảo cấp cho tập lệnh của bạn quyền chạy bằng cách nhập chmod 755, sau đó nhập tên tập lệnh của bạn trong thiết bị đầu cuối rồi nhấn Enter. Mỗi khi bạn bắt đầu một tập lệnh bash mới, bạn nên đảm bảo hoàn thành hai bước đó.

Thử thách giới thiệu

Bây giờ, hãy thử viết một tập lệnh tạo thư mục mới. Chúng ta biết lệnh nào tạo thư mục mới? Nếu bạn đang nghĩ đến một từ bắt đầu bằng m và kết thúc bằng kdir, thì bạn đang đi đúng hướng. Viết lệnh sẽ tạo thư mục mới và đặt tên cho thư mục đó trong tệp .sh mới, sau đó chạy thư mục đó trong thiết bị đầu cuối của bạn.

Nếu cách này hiệu quả, hãy chuyển sang những thử thách khác bên dưới. Nếu bạn vẫn còn nhầm lẫn, hãy thử xem lại phòng thí nghiệm thế giới và suy nghĩ về cách bạn đã tạo thư mục quốc gia và thành phố mới.

Đừng ngại sử dụng hướng dẫn được liên kết ở trên và sẵn sàng vận dụng kỹ năng Googling tốt nhất của bạn. Viết và chạy các tập lệnh có chức năng sau đây:

Tác vụ chính

  1. Thêm lệnh vào tệp mà bạn đã tạo ở trên để chuyển đến thư mục mà bạn đang tạo. (Chúng ta dùng lệnh nào để thay đổi thư mục?)
  • Thêm dấu thư mới cho tên thư mục. Ví dụ: chương trình của bạn nên tạo thư mục có tên "2017-12-07my_super_cool_folder"
  1. In "Thư mục hiện tại của tôi là: " tiếp theo là thư mục đang hoạt động và "Dưới đây là danh sách mọi thứ trong thư mục này! " theo sau là nội dung của thư mục hiện tại của bạn.
  2. Tìm hiểu cách nhập tập lệnh bash của bạn và tạo tệp dựa trên chuỗi đầu vào đó. Hướng dẫn được liên kết trước đó trong phòng thí nghiệm có một số ví dụ tuyệt vời trong phần biến nên khám phá.
  3. Yêu cầu người dùng cung cấp tên của họ, sau đó in ra "Xin chào; rất vui được gặp bạn chèn tên của họ vào đây"
  • Hãy thử yêu cầu người dùng cung cấp thêm thông tin và tạo thông báo tùy chỉnh cho họ.

BIỂU TƯỢNG

Dòng lệnh (hoặc Thiết bị đầu cuối) cung cấp một thao tác tương tác trực tiếp với Hệ điều hành (HĐH) trên máy tính – mọi chức năng mà giao diện người dùng đồ họa (GUI) làm được, nhưng thông qua các lệnh văn bản – từ thao tác, đến việc tạo tệp mới, cho đến việc thực thi tập lệnh. Dòng lệnh sẽ được dùng để mở tệp và bắt đầu môi trường phát triển khi sử dụng Google App Engine.

Dòng lệnh trong thực tế

Truy cập thiết bị thanh toán

Phím tắt dành cho máy Mac:

  • Mở Tiêu điểm bằng lệnh + phím cách.
  • Nhập Terminal (Thiết bị đầu cuối) trong Tìm kiếm Tiêu điểm.
# 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

Tạo tệp & Thư mục

Tạo tệp

# 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

Tạo thư mục

# 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

Di chuyển tệp & Thư mục

Chuyển tệp

# 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

Di chuyển thư mục

# 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

Di chuyển đang đổi tên

Lưu ý rằng mv cũng là lệnh được sử dụng để đổi tên tệp hoặc thư mục.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Sao chép tệp & Thư mục

Sao chép tệp

# 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

Sao chép thư mục

# 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

Đang xoá Tệp & Thư mục

Xóa tệp

# 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

Đang xoá thư mục

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

Mẹo và thủ thuật

  • Thực hành bằng cách sử dụng dòng lệnh, ngay cả khi bạn không nghĩ mình cần phải làm như vậy. Theo thời gian, bạn sẽ hoạt động hiệu quả hơn.
  • Khóa tab sẽ tự động hoàn thành tên tệp hoặc thư mục của bạn (tên này có thể phân biệt chữ hoa chữ thường).
  • Nếu chỉ có một tệp hoặc thư mục phù hợp còn lại, thì tệp hoặc thư mục đó sẽ tự động hoàn thành.
  • Nếu có nhiều tệp hoặc thư mục trùng khớp, hãy nhấn phím Tab hai lần để xem danh sách các kết quả trùng khớp còn lại.
  • Mũi tên lên / xuống sẽ chuyển đổi nhật ký lệnh của bạn để bạn không phải nhập lại lệnh.
  • Sử dụng lệnh clear để xóa cửa sổ Thiết bị đầu cuối. Thao tác này giúp bạn thực hiện mọi công việc trước đó – hãy cuộn lên để xem.
  • Hãy dùng reset để khởi động lại thiết bị thanh toán. Thao tác này sẽ không giữ lại tác vụ trước đó của bạn trên màn hình, nhưng có thể giải quyết một số vấn đề nếu Thiết bị đầu cuối bắt đầu hoạt động theo những cách không thể đoán trước.
  • Nhấn tổ hợp phím option + arrow để di chuyển con trỏ theo một từ

Tóm tắt về các phương pháp hay nhất

  • Di chuyển trên Thiết bị đầu cuối bằng cd, cd .. hoặc cd <folder name>.
  • Xem nội dung của các thư mục bằng ls.
  • Tạo tệp bằng touch; tạo thư mục bằng mkdir.
  • Di chuyển tệp và thư mục bằng mv <item to move> <destination>.
  • Sao chép các tệp và thư mục bằng cp <item to copy> <destination>.
  • Xóa các tệp và thư mục bằng rm <item to remove>.

Câu hỏi 1

Bạn sẽ dùng gì để xác định thư mục làm việc hiện tại của mình?

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

Câu hỏi 2

Bạn sẽ di chuyển lên hai cấp từ thư mục làm việc hiện tại của mình như thế nào?

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

Câu hỏi 3

Bạn sẽ dùng lệnh nào để đổi tên tệp?

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

Câu hỏi 4

Tại sao lệnh mv script.py lại báo lỗi?

  1. Vì "script.py#39; là tên tệp không hợp lệ."
  2. Bởi vì lệnh mv không thể theo sau là bất kỳ thông tin nào khác.
  3. Đây là một câu hỏi lừa đảo; nó sẽ không gây ra lỗi.
  4. Vì quá trình di chuyển tệp yêu cầu ít nhất hai đối số – một mục tiêu và một đích

Câu hỏi 5

Lệnh cd ~ sẽ làm gì?

  1. Hãy thay đổi thư mục làm việc của bạn thành thư mục gốc.
  2. Lặp lại lệnh trước đó.
  3. Sử dụng một thuật toán để xác định lệnh hữu ích nhất tại thời điểm này.
  4. Xảy ra lỗi.

Câu hỏi 6

Câu nào sau đây KHÔNG phải là lý do sử dụng thẻ để tự động hoàn thành tên tệp?

  1. Vì tiết kiệm thời gian.
  2. Vì việc này giúp loại bỏ lỗi chính tả.
  3. Vì chế độ này cần ít công suất xử lý hơn.

Câu hỏi 7

Nếu nhà phát triển mới cố gắng tạo tệp có tên "my script.py", tại sao lệnh touch my script.py không hoạt động?

  1. touch không thể tạo tệp mới.
  2. .py không phải là đuôi tệp hợp lệ.
  3. Vì mã này sẽ tạo hai tệp, một tệp có tên "my" và một tệp có tên "script.py" thay vì chỉ một tệp.
  4. Vì không thể tạo tệp mới từ dòng lệnh.

Câu hỏi 1

Bạn sẽ dùng gì để xác định thư mục làm việc hiện tại của mình?

pwd

Câu hỏi 2

Bạn sẽ di chuyển lên hai cấp từ thư mục làm việc hiện tại của mình như thế nào?

Với cd ../.., bạn di chuyển lên hai cấp (mỗi cấp .. đại diện cho một cấp ở trên).

Câu hỏi 3

Bạn sẽ dùng lệnh nào để đổi tên tệp?

mv dùng để di chuyển tệp từ vị trí này sang vị trí khác và cũng có thể dùng để thay đổi tên tệp.

Câu hỏi 4

Tại sao lệnh mv script.py lại báo lỗi?

Lệnh mv yêu cầu hai đối số, một tệp nguồn và một tệp đích.

Câu hỏi 5

Lệnh cd ~ sẽ làm gì?

Thao tác này sẽ thay đổi thư mục đang hoạt động của bạn thành thư mục gốc của bạn. Ký tự đặc biệt ~ được dùng để xác định thư mục gốc của người dùng hiện tại. Bạn cũng có thể sử dụng tổ hợp này với một tên người dùng khác: ~user2 để trỏ tới thư mục gốc của họ.

Câu hỏi 6

Câu nào sau đây KHÔNG phải là lý do sử dụng thẻ để tự động hoàn thành tên tệp?

Vì yêu cầu ít công suất xử lý hơn nên không chính xác. tab yêu cầu công suất xử lý (thường không đáng kể) để quét các thư mục tìm kiếm tên tệp để tự động hoàn thành, nhưng tiết kiệm thời gian và tránh lỗi chính tả trong quá trình này.

Câu hỏi 7

Nếu nhà phát triển mới cố gắng tạo tệp có tên "my script.py", tại sao lệnh touch my script.py không hoạt động?

Tính năng này sẽ tạo 2 tệp thay vì chỉ 1 tệp. Lệnh touch sẽ tạo các tệp mới. Trong không gian cuối là dấu phân tách, không phải là ký tự cần đưa vào tên tệp. Tốt nhất bạn nên tránh sử dụng cả hai thành phần này, nhưng nếu phải sử dụng thì bạn phải đặt tên tệp trong dấu ngoặc kép:

touch "my script.py"

Câu hỏi 1

Lệnh trên thiết bị đầu cuối dùng để thay đổi thư mục là:

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

Câu hỏi 2

Bạn sẽ chạy lệnh nào nếu muốn chuyển đến thư mục mẹ của thư mục đang làm việc?

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

Câu hỏi 3

Lệnh nào dùng để tạo tệp?

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

Câu hỏi 4

Lệnh nào sau đây sẽ tạo hai tệp có tên là index.htmlstyle.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

Câu hỏi 5

Bạn dùng lệnh nào để đổi tên tệp hoặc thư mục?

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

Câu hỏi 6

Lệnh rm cp cần phải hoạt động như thế nào trên các thư mục?

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

Câu hỏi 7

Để di chuyển projects sang ~/Documents và đổi tên thành Projects, lệnh nào phải để trống?

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

Câu hỏi 8

Lệnh sau sẽ làm gì?

rm -r projects

  1. Xóa tệp có tên là projects
  2. Xóa một thư mục có tên projects
  3. Đổi tên tệp có tên projects
  4. Tìm kiếm nội dung của thư mục hiện tại cho projects

Câu hỏi 1

Lệnh trên thiết bị đầu cuối dùng để thay đổi thư mục là:

Lệnh đầu cuối để thay đổi thư mục là cd. Bản thân lệnh này là chữ viết tắt của "change directory".

Câu hỏi 2

Bạn sẽ chạy lệnh nào nếu muốn chuyển đến thư mục mẹ của thư mục đang làm việc?

Lệnh chuyển đến thư mục mẹ là cd ..

Câu hỏi 3

Lệnh nào dùng để tạo tệp?

Lệnh tạo tệp là touch

Câu hỏi 4

Lệnh nào sau đây sẽ tạo hai tệp có tên là index.htmlstyle.css?

Lệnh touch index.html style.css sẽ tạo hai tệp. Không cần dấu phẩy và mọi số lượng tệp có thể được tạo theo cách này, phân tách bằng dấu cách.

Câu hỏi 5

Bạn dùng lệnh nào để đổi tên tệp hoặc thư mục?

Mặc dù đây là tên viết tắt của "move" và có thể dùng để di chuyển tệp hoặc thư mục, nhưng mv cũng có thể được dùng để đổi tên tệp và thư mục.

Câu hỏi 6

Lệnh rm cp cần phải hoạt động như thế nào trên các thư mục?

Các lệnh rmcp yêu cầu cờ -r hoạt động trên các thư mục, vì cờ -r là viết tắt của "recursive" và chạy lại lệnh cho mọi tệp và thư mục có trong đó.

Câu hỏi 7

Để di chuyển projects sang ~/Documents và đổi tên thành Projects, lệnh nào phải để trống?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Vì bắt đầu trong thư mục gốc, chúng ta sẽ cần chạy cd ~/Documents để có thể chạy lệnh cuối cùng trong đúng thư mục.

Câu hỏi 8

Lệnh sau sẽ làm gì?

rm -r projects

Lệnh này sẽ xóa một tệp HOẶC một thư mục có tên projects vì tệp đó được gọi bằng -r, hoặc có cờ định kỳ. Nếu không có cờ đó, lệnh này sẽ chỉ hoạt động để xóa tệp có tên đó.