Trang chủTác giảLiên hệ

Linux command line: Tìm hiểu về Expansion (1)

By Lê Hải Băng
Published in Machine Learning
December 14, 2021
2 min read

1. Expansion là gì

Chúng ta có thể hiểu nôm na expansion là việc shell chuyển đổi nội dung chúng ta gửi vào câu lệnh nào đó trước khi câu lệnh thực sự được thực thi. Lấy ví dụ về câu lệnh echo, một câu lệnh đơn giản để in nội dung chỉ đỉnh ra console. Khi chúng ta truyền vào một chuỗi ký tự, thông thường chuỗi ký tự đó sẽ được câu lệnh echo in nguyên xi ra console:

Tuy nhiên nếu chúng ta truyền vào ký tự *, kết quả sẽ khiến chúng ta bất ngờ:

Nội dung được in ra màn hình không phải là ký tự * như đã truyền vào, mà là danh sách các thư mục và file ở thư mục hiện tại (trong ví dụ này là thư mục /). Ở đây shell đã chuyển đổi ký tự * thành danh sách các thư mục và file trong thư mục hiện tại trước khi truyền cho câu lệnh echo. Đây là một ví dụ cho chức năng expansion của shell.

2. Pathname expansion

Cơ chế mà dựa vào đó wildcard làm việc được gọi là pathname expansion. Tương tự như ví dụ ở trên, giả sử ở thư mục home có nội dung như sau:

Chúng ta có thể sử dụng expansion như sau:

hay

hoặc thậm chí là

3. Tilde expansion

Dấu tilde hay dấu ~ mà chúng ta thường dùng để về thư mục home của user hiện tại cũng là một ký tự đặc biệt tương tự ký tự *, nếu có thêm tên user đằng sau thì sẽ được hiểu là đường dẫn tới thư mục home của user đang chỉ định, nếu không có tên user thì được hiểu là đường dẫn tới thư mục home của user hiện tại. Ví dụ:

4. Arithmetic expansion

Shell cũng cho phép thực hiện expand với các phép tính toán học. Chẳng hạn:

Arithmetic expansion có cú pháp $((expression)) như chúng ta thấy ở ví dụ trên. Như vậy với chức năng này chúng ta có thể sử dụng shell như một máy tính cơ bản.

Arithmetic expansion chỉ hỗ trợ số nguyên, không hỗ trợ số thập phân, đồng thời hỗ trợ đa dạng các phép toán như: cộng (+), trừ (-), nhân (*), chia lấy phần nguyên (/), chia lấy phần dư (%), hàm mũ (**).

Sau đây là một số ví dụ khác của arithmetic expansion:

Tham khảo

  • Book ‘The Linux Command Line’

Tags

LINUX EXPANSION

Lê Hải Băng

Related Posts

Concept of Bucketing in Seq2Seq model
June 09, 2021
3 min
© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media