Lenh bash trong linux

Nếu từng sử dụng Linux trong một thời gian dài, chắc chắn bạn đã không ít lần nhìn thấy từ “Bash” xuất hiện ở đâu đó, có thể là trên các diễn đàn và những bài báo. Đôi khi nó có vẻ giống như một từ đồng nghĩa với thiết bị đầu cuối, nhưng Bash và trình giả lập thiết bị đầu cuối chắc chắn là hai khía cạnh khác nhau. Vậy Bash chính xác là gì trong Linux? Trong bài viết ngắn này, hãy cùng Quantrimang khám phá ý nghĩa của Bash, nó có chức năng gì và bạn có thể sử dụng nó ra sao.

Định nghĩa của Bash trong Linux

Bash trong Linux trên thực tế là từ viết tắt của Bourne-Again SHell, một cách chơi chữ liên quan đến Stephen Bourne - tên gọi của người sáng tạo ra GNU này. Bản beta đầu tiên của Bash được phát hành vào năm 1989 và cho đến thời điểm viết bài, nó đã sang tới phiên bản 5.1, với bản cập nhật gần nhất vừa được ra mắt tháng 12 năm 2020.

Bash là một trong những ngôn ngữ shell phổ biến nhất, được biết đến với sự kết hợp của các khả năng mạnh mẽ và hệ thống lệnh thân thiện với người dùng.

Cụ thể hơn, trong Bash có sự tổng hòa của các tính năng nổi trội từ C Shell (csh), Korn Shell (ksh) và tuân thủ các thông số kỹ thuật shell POSTIX 2. Nó mang đến một giao diện dòng lệnh (CLI) để làm việc trên các hệ thống *nix, do đó dần trở thành một trong những shell phổ biến nhất được sử dụng trên các hệ thống Linux.

Tuy nhiên, Bash không chỉ hoạt động trên Linux, mà cũng có sẵn trên macOS và BSD. Đặc biệt, bạn có thể sử dụng nó trên Windows thông qua tiện ích Windows Subsystem for Linux.

Nhưng suy cho cùng, để thực sự định nghĩa được khái niệm Bash, chúng ta phải hiểu shell là gì.

Shell là một ứng dụng chấp nhận dữ liệu đầu vào từ người dùng và thực hiện một hành động để phản hồi, đồng thời giao tiếp với nhân (kernel) để thực thi các hành động tương ứng. Theo cách này, shell có thể được ví như một "lớp vỏ" xung quanh hạt nhân.

Trong khi shell khởi tạo nhiều ứng dụng khác nhau thông qua các lệnh, chúng cũng thường sở hữu những tính năng tương tác.

Ví dụ: khi bạn mở một thiết bị đầu cuối Linux và nhấn nút mũi tên lên để truy xuất lệnh được phát hành cuối cùng, đó là một chức năng của ứng dụng Bash. Lệnh cd để thay đổi thư mục cũng là một lệnh Bash rất phổ biến.

Lenh bash trong linux
Lệnh cd

Ngoài vai trò là một ứng dụng tương tác, Bash còn là một ngôn ngữ kịch bản (scripting language). Hệ điều hành Linux của bạn trên thực tế sử dụng rất nhiều tập lệnh Bash trong quá trình khởi động để bắt đầu các quy trình khác nhau.

Bạn có thể sử dụng Bash như thế nào?

Trên thực tế, bạn đang dùng đến Bash bất cứ khi nào sử dụng thiết bị đầu cuối trong hầu hết mọi hệ thống Linux.

Nếu chưa rõ, bạn có thể xác nhận điều đó bằng lệnh sau đây. Lệnh này sẽ trả về tên của shell đang được sử dụng:

echo $0

Kết quả là bạn sẽ chỉ nhận được từ bash trả về. Sau đó, bạn có thể kiểm tra phiên bản Bash đang sử dụng bằng lệnh này:

bash --version

Màn hình của bạn sẽ trông như sau:

Lenh bash trong linux
Kết quả sau khi chạy lệnh

Tuy nhiên, việc đưa ra các lệnh đơn trong thiết bị đầu cuối chỉ là bước khởi đầu cho việc sử dụng Bash.

Giống như những tập lệnh mà hệ điều hành sử dụng, bạn có thể học cách viết các tập lệnh Bash để tự động hóa các quy trình trên PC Linux mà mình thường làm theo cách thủ công. Một Bash scripter lành nghề có thể sở hữu các script tự động hóa hàng trăm nhiệm vụ mỗi ngày!

Vậy làm thế nào bạn có thể học sử dụng Bash?

Câu trả lời rất đơn giản: Bằng cách thực hành viết scripts, theo cách của riêng bạn hoặc được hướng dẫn, chẳng hạn như tham gia vào một khóa học Bash trực tuyến.

Đối với các game thủ, các bạn cũng có thể học bằng cách chơi trò chơi Bash. Chẳng hạn như Bashcrawl, một trình thu thập dữ liệu dungeon dựa trên văn bản buộc bạn phải học và nhớ lại các lệnh Bash để tiến triển trong trò chơi.

Lenh bash trong linux

Đã đăng vào thg 2 25, 2018 2:27 CH 8 phút đọc

Lenh bash trong linux

Mở đầu

Với những người dùng thường xuyên sử dụng các hệ điều hành Linux cho công việc thì việc thao tác với các dòng lệnh là điều cần thiết và rất quan trọng. Tuy nhiên bất kì ai đã, đang hoặc từng sử dụng Linux thì đều nhận ra các điều sau đây:

  1. Các chương trình chỉ làm được một công việc đơn giản và không thể làm 2 công việc khác nhau trở lên
  2. Các chương trình phải hoạt động theo một thứ tự nhất định để thực hiện một công việc nào đó và nếu thay đổi thứ tự này sẽ dẫn đến việc xử lý công việc khác.
  3. Có một số công việc phải làm với tất suất rất lớn và đôi khi là lặp đi lại trong thời gian ngắn.

Vấn đề này làm cho Bash script trở nên vô cùng hữu ích. Các script viết ra có thể đảm nhiệm được một công việc ngay lập tức thay vì phải gõ lại một loạt các câu lệnh phức tạp. Việc này có thể rút ngắn được thời gian làm việc trên Linux tuy nhiên cần mất công học thêm một ngôn ngữ kịch bản lệnh - Bash script.

Bash script là gì

Bash script là một loại ngôn ngữ kịch bản (tương tự như Perl, Python, Lua ...), thường được viết bởi con người và thực thi bởi máy tính. Cũng giống như các ngôn ngữ khác, Bash script cũng có riêng một trình thông dịch đó là BASH (Bourne Again SHell). Có 2 cách để Bash script được thực thi:

  • Chạy từng dòng một trên cửa sổ Terminal hoặc tty (ta sẽ không cần quan tâm cách này vì thực tế nó không khác với việc chạy từng câu lệnh để hoàn thành 1 tác vụ nào đó)
  • Viết tất cả các câu lệnh cần thiết vào một file Bash (*.sh) và thực thi nó.

Tất nhiên ta cũng có thể cấp quyền thực thi cho file bash đó để nó có thể chạy như một chương trình. Bạn có thể tham khảo thêm trong bài viết Cơ bản về phân quyền cho file trong Linux (phần 2) để cấp quyền thực thi cho file đó.

Ví dụ một file Bash

Ở đây tôi có một file bash đơn giản với nội dung như trong hình:

Lenh bash trong linux

File này khi thực thi sẽ chỉ in ra dòng chữ Hello World.

Những điểm quan trọng cần lưu ý của một Bash script

Dãy kí tự #! (shebang)

Dòng chứa kí tự này sẽ là dòng thông báo cho hệ điều hành biết file script này sẽ được thực thi bởi chương trình nào. Trong trường hợp bạn không biết chính xác trình thông dịch của Bash nằm ở đâu, bạn có thể dùng which bash:

Lenh bash trong linux

Đặc tên file

Có thể nói rằng file Bash script không yêu cầu bất cứ một điều kiện gì ngoại trừ điều kiện của hệ điều hành để đặt tên file. Bất kể một tên gì cũng được chấp nhận, phần mở rộng cũng không quan trọng. Lấy ví dụ, bạn có thể đặt tên file Bash scriptmy_document.jpg.

Comment

Là những dòng lệnh chỉ có tác dụng chỉ dẫn hoặc mô tả và sẽ được bỏ qua trong file Bash, những dòng này sẽ được bắt đầu bằng dấu # (she). Cần lưu ý là không nên lạm dụng comment, chỉ cần những lúc thực sự cần thiết, quá nhiều comment có thể làm cho người đọc file thấy khó khăn trong việc tìm hiểu công việc được thực thi với file này là gì.

Variable trong Bash

Variable (hay biến) là khái niệm dùng để chỉ các phần dữ liệu được lưu trữ tại một ô nhớ cụ thể trong bộ nhớ máy tính và có thể gọi trực tiếp thông qua tên (VD một biến gọi là shell_name có giá trị là "Bash"). Việc đặt tên biến có ý nghĩa quan trọng trong việc truy cập dữ liệu và tăng khả năng kiểm soát chương trình, đồng thời dễ dàng giải phóng tài nguyên sau khi không còn sử dụng. Trong Bash script, có 2 quy ước khi sử dụng biến:

  • Để khai báo một biến, ta sử dụng ký hiệu equal (=) đặt giữa tên và giá trị của biến (không được đặt bất cứ dấu space () nào ở trước hoặc sau =.
    VD: name='Viblo', description='Knowledge sharing site'
  • Để truy cập tới một biến, ta sử dụng ký hiệu dollar ($) ở ngay trước tên biến đó.
    VD: $name, $description

Một số chương trình cần truyền tham số dòng lệnh vào để sử dụng, Bash cho phép sử dụng một số biến đặc biệt sau:

  • $0: Tên của file script.
  • $1 -> $9: Các tham số truyền vào
  • $#: Số lượng của tham số truyền vào
  • $*: Danh sách các tham số được truyền vào
    (các trường hợp $#$* sẽ không bao gồm $0)

Đặc biệt, có thể lưu đầu ra của một câu lệnh khác vào một biến bằng cách sử dụng một trong 2 cách sau:

  • Dùng dấu backtick
var_name=`command`
  • Dùng dấu dollar
var_name=$(command)

VD:

Lenh bash trong linux

Câu lệnh điều kiện

Với mọi ngôn ngữ lập trình hiện đại ngày nay, câu lệnh điều kiện là một tính năng không thể thiếu. Tính năng này dùng để đưa ra quyết định về các lệnh sẽ được thực hiện dựa theo các điều kiện cho trước. Những từ khóa if hay else không còn xa lạ với những người thường xuyên tiếp xúc với máy tính với các công việc là lập trình.

Bash hỗ trợ 3 dạng của câu lệnh điều kiện:

  • Dạng đơn giản: chỉ bao gồm một điều kiện, tùy theo điều kiện đúng hay sai mà sẽ thực hiện câu lệnh cụ thể
if conditional ; then
    statement_1
else
    statement_2
fi
  • Dạng đầy đủ: bao gồm từ 2 điều kiện trở lên
if conditional_1 ; then
    statement_1
elif conditional_2 ; then
    statement_2
else
    statement_3
fi
  • Dạng mở rộng: có nhiều điện lồng nhau (nested)
if conditional_1; then
    if conditional_2; then
        statement_1
    else
        statement_2
    fi
fi

Thông trường conditional của câu lệnh if có thể được dùng dưới 2 dạng:

  • Dùng test command: test expression
  • Dùng [] symbol: [ expression ]

Một số ví dụ:

if [ $var = "true" ] ; then
    echo "Hello World!"
else
    exit
fi
file="/usr/sbin/bash"

if [ -f $file ]; then
    echo "$file is a regular file"
elif [ -d $file ]; then
    echo "$file is a directory"
else
    echo "$file is neither a file nor a directory"
fi

Lời kết

Trong phần 1 của bài viết này tôi đã giới thiệu về Bash script và các vấn đề liên quan đến sử dụng biến hoặc câu lệnh điều kiện. Trong phần 2 tôi sẽ tiếp tục giới thiệu về các vấn đề khác của Bash script như luồng điều khiển (Flow control) và các lệnh tiện ích của Bash (alias, getopts ...). Cảm ơn mọi người đã đọc bài viết

Tài liệu tham khảo

  • https://ryanstutorials.net/linuxtutorial/scripting.php

All rights reserved