Thứ sáu, 05/06/2020 | 00:00 GMT+7

Sử dụng Grep & Biểu thức chính quy để tìm kiếm các mẫu văn bản trong Linux

Lệnh grep là một trong những lệnh hữu ích nhất trong môi trường terminal Linux. Tên grep là viết tắt của “ global in biểu thức chính quy”. Điều này nghĩa là bạn có thể sử dụng grep để xem liệu đầu vào mà nó nhận được có trùng với một mẫu được chỉ định hay không. Chương trình có vẻ tầm thường này cực kỳ mạnh mẽ; khả năng sắp xếp đầu vào dựa trên các luật phức tạp khiến nó trở thành một liên kết phổ biến trong nhiều chuỗi lệnh.

Trong hướng dẫn này, bạn sẽ khám phá các tùy chọn của lệnh grep và sau đó bạn sẽ đi sâu vào việc sử dụng các biểu thức chính quy để thực hiện tìm kiếm nâng cao hơn.

Cách sử dụng cơ bản

Trong hướng dẫn này, bạn sẽ sử dụng grep để tìm kiếm các từ và cụm từ khác nhau trong Giấy phép Công cộng GNU version 3 .

Nếu bạn đang sử dụng hệ thống Ubuntu, bạn có thể tìm thấy file trong folder /usr/share/common-licenses . Sao chép nó vào folder chính của bạn:

  • cp /usr/share/common-licenses/GPL-3 .

Nếu bạn đang sử dụng hệ thống khác, hãy sử dụng lệnh curl để download bản sao:

  • curl -o GPL-3 https://www.gnu.org/licenses/gpl-3.0.txt

Bạn cũng sẽ sử dụng file giấy phép BSD trong hướng dẫn này. Trên Linux, bạn có thể sao chép nó vào folder chính của bạn bằng lệnh sau:

  • cp /usr/share/common-licenses/BSD .

Nếu bạn đang sử dụng hệ thống khác, hãy tạo file bằng lệnh sau:

  • cat << 'EOF' > BSD
  • Copyright (c) The Regents of the University of California.
  • All rights reserved.
  • Redistribution and use in source and binary forms, with or without
  • modification, are permitted provided that the following conditions
  • are met:
  • 1. Redistributions of source code must retain the above copyright
  • notice, this list of conditions and the following disclaimer.
  • 2. Redistributions in binary form must reproduce the above copyright
  • notice, this list of conditions and the following disclaimer in the
  • documentation and/or other materials provided with the distribution.
  • 3. Neither the name of the University nor the names of its contributors
  • may be used to endorse or promote products derived from this software
  • without specific prior written permission.
  • THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  • ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  • IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  • ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  • FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  • DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  • OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  • HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  • LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  • OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  • SUCH DAMAGE.
  • EOF

Đến đây bạn đã có các file , bạn có thể bắt đầu làm việc với grep .

Ở dạng cơ bản nhất, bạn sử dụng grep để khớp các mẫu chữ trong file văn bản. Điều này nghĩa là nếu bạn chuyển grep một từ để tìm kiếm, nó sẽ in ra mọi dòng trong file chứa từ đó.

Thực thi lệnh sau để sử dụng grep để tìm kiếm mọi dòng có chứa từ GNU :

  • grep "GNU" GPL-3

Đối số đầu tiên, GNU , là mẫu bạn đang tìm kiếm, trong khi đối số thứ hai, GPL-3 , là file đầu vào bạn muốn tìm kiếm.

Kết quả kết quả sẽ là mọi dòng chứa văn bản mẫu:

Output
GNU GENERAL PUBLIC LICENSE The GNU General Public License is a free, copyleft license for the GNU General Public License is intended to guarantee your freedom to GNU General Public License for most of our software; it applies also to Developers that use the GNU GPL protect your rights with two steps: "This License" refers to version 3 of the GNU General Public License. 13. Use with the GNU Affero General Public License. under version 3 of the GNU Affero General Public License into a single ... ...

Trên một số hệ thống, mẫu bạn tìm kiếm sẽ được đánh dấu trong kết quả .

Các tùy chọn chung

Theo mặc định, grep sẽ tìm kiếm mẫu được chỉ định chính xác trong file đầu vào và trả về các dòng mà nó tìm thấy. Bạn có thể làm cho hành vi này hữu ích hơn bằng cách thêm một số cờ tùy chọn vào grep .

Nếu bạn muốn grep bỏ qua "chữ hoa" của thông số tìm kiếm và tìm kiếm cả các biến thể chữ hoa và chữ thường, bạn có thể chỉ định tùy chọn -i hoặc --ignore-case .

Tìm kiếm từng trường hợp của license từ (với các trường hợp viết hoa, viết thường hoặc hỗn hợp) trong cùng một file như trước bằng lệnh sau:

  • grep -i "license" GPL-3

Kết quả chứa: LICENSE , license , và License :

Output
GNU GENERAL PUBLIC LICENSE of this license document, but changing it is not allowed. The GNU General Public License is a free, copyleft license for The licenses for most software and other practical works are designed the GNU General Public License is intended to guarantee your freedom to GNU General Public License for most of our software; it applies also to price. Our General Public Licenses are designed to make sure that you (1) assert copyright on the software, and (2) offer you this License "This License" refers to version 3 of the GNU General Public License. "The Program" refers to any copyrightable work licensed under this ... ...

Nếu có một version với LiCeNsE , nó cũng sẽ được trả về.

Nếu bạn muốn tìm tất cả các dòng không chứa một mẫu đã chỉ định, bạn có thể sử dụng tùy chọn -v hoặc --invert-match .

Tìm kiếm tất cả các dòng không chứa từ the trong giấy phép BSD với lệnh sau đây:

  • grep -v "the" BSD

Bạn sẽ thấy kết quả này:

Output
All rights reserved. Redistribution and use in source and binary forms, with or without are met: may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ... ...

Vì bạn không nói rõ “bỏ qua trường hợp” tùy chọn, hai mục cuối cùng đã được trả lời là không có từ the .

Thường sẽ hữu ích khi biết số dòng mà các trận đấu xảy ra. Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn -n hoặc --line-number . Chạy lại ví dụ trước với cờ này được thêm vào:

  • grep -vn "the" BSD

Bạn sẽ thấy văn bản sau:

Output
2:All rights reserved. 3: 4:Redistribution and use in source and binary forms, with or without 6:are met: 13: may be used to endorse or promote products derived from this software 14: without specific prior written permission. 15: 16:THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17:ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ... ...

Đến đây bạn có thể tham khảo số dòng nếu bạn muốn thực hiện thay đổi cho tất cả các dòng không chứa the . Điều này đặc biệt tiện dụng khi làm việc với mã nguồn.

Biểu thức chính quy

Trong phần giới thiệu, bạn đã biết rằng grep là viết tắt của “ global biểu thức chính quy in”. “Biểu thức chính quy” là một chuỗi văn bản mô tả một mẫu tìm kiếm cụ thể.

Các ứng dụng và ngôn ngữ lập trình khác nhau triển khai các biểu thức chính quy hơi khác nhau. Trong hướng dẫn này, bạn sẽ chỉ khám phá một tập hợp con nhỏ về cách grep mô tả các mẫu của nó.

Kết hợp văn bản

Trong ví dụ trước trong hướng dẫn này, khi bạn tìm kiếm những lời GNUthe , bạn đã thực sự tìm kiếm cho các biểu thức cơ bản thường xuyên mà xuất hiện chuỗi ký tự chính xác GNUthe . Các mẫu chỉ định chính xác các ký tự được so khớp được gọi là “chữ” vì chúng trùng với mẫu theo nghĩa đen, ký tự cho ký tự.

Sẽ rất hữu ích nếu bạn nghĩ những điều này giống như một chuỗi ký tự hơn là trùng với một từ. Điều này sẽ trở thành một sự phân biệt quan trọng hơn khi bạn học các mẫu phức tạp hơn.

Tất cả các ký tự chữ cái và số (cũng như một số ký tự khác
ký tự) được so khớp theo nghĩa đen trừ khi được sửa đổi bởi biểu thức khác
các cơ chế.

Các trận đấu neo

Neo là các ký tự đặc biệt chỉ định vị trí trong dòng mà một trận đấu phải xảy ra để hợp lệ.

Ví dụ, bằng cách sử dụng neo, bạn có thể chỉ định rằng bạn chỉ muốn biết về các dòng phù hợp với GNU ở đầu dòng. Để làm điều này, bạn có thể sử dụng ký tự neo ^ trước chuỗi ký tự.

Chạy lệnh sau để tìm kiếm file GPL-3 và tìm các dòng mà GNU xuất hiện ở đầu dòng:

  • grep "^GNU" GPL-3

Bạn sẽ thấy hai dòng sau:

Output
GNU General Public License for most of our software; it applies also to GNU General Public License, you may choose any version ever published

Tương tự như vậy, bạn sử dụng ký tự neo $ ở cuối một mẫu để cho biết kết quả khớp sẽ chỉ hợp lệ nếu nó xảy ra ở cuối dòng.

Lệnh này sẽ trùng với mọi dòng kết thúc bằng từ and trong file GPL-3 :

  • grep "and$" GPL-3

Bạn sẽ thấy kết quả này:

Output
that there is no warranty for this free software. For both users' and The precise terms and conditions for copying, distribution and License. Each licensee is addressed as "you". "Licensees" and receive it, in any medium, provided that you conspicuously and alternative is allowed only occasionally and noncommercially, and network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and provisionally, unless and until the copyright holder explicitly and receives a license from the original licensors, to run, modify and make, use, sell, offer for sale, import and otherwise run, modify and

Phù hợp với bất kỳ ký tự nào

Ký tự dấu chấm (.) Được sử dụng trong biểu thức chính quy để nghĩa là bất kỳ ký tự đơn lẻ nào cũng có thể tồn tại ở vị trí được chỉ định.

Ví dụ: để đối sánh bất kỳ thứ gì trong file GPL-3 có hai ký tự và sau đó là chuỗi cept , bạn sẽ sử dụng mẫu sau:

  • grep "..cept" GPL-3

Bạn sẽ thấy kết quả này:

Output
use, which is precisely where it is most unacceptable. Therefore, we infringement under applicable copyright law, except executing it on a tells the user that there is no warranty for the work (except to the License by making exceptions from one or more of its conditions. form of a separately written license, or stated as exceptions; You may not propagate or modify a covered work except as expressly 9. Acceptance Not Required for Having Copies. ... ...

Như bạn thấy , kết quả có các trường hợp của cả acceptexcept và các biến thể của hai từ. Mẫu cũng sẽ trùng với z2cept nếu cũng được tìm thấy.

Biểu thức dấu ngoặc

Bằng cách đặt một group ký tự trong ngoặc ( \[\] ), bạn có thể chỉ định rằng ký tự ở vị trí đó có thể là bất kỳ một ký tự nào được tìm thấy trong group ngoặc.

Ví dụ: để tìm các dòng chứa too hoặc two , bạn sẽ chỉ định các biến thể đó một cách ngắn gọn bằng cách sử dụng mẫu sau:

  • grep "t[wo]o" GPL-3

Kết quả cho thấy cả hai biến thể đều tồn tại trong file :

Output
your programs, too. freedoms that you received. You must make sure that they, too, receive Developers that use the GNU GPL protect your rights with two steps: a computer network, with no transfer of a copy, is not conveying. System Libraries, or general-purpose tools or generally available free Corresponding Source from a network server at no charge. ... ...

Ký hiệu ngoặc cho bạn một số tùy chọn thú vị. Bạn có thể trùng với bất kỳ thứ gì ngoại trừ các ký tự trong ngoặc bằng cách bắt đầu danh sách các ký tự trong ngoặc bằng ký tự ^ .

Ví dụ này giống như .ode mẫu, nhưng sẽ không trùng với code mẫu:

  • grep "[^c]ode" GPL-3

Đây là kết quả bạn sẽ thấy:

Output
1. Source Code. model, to give anyone who possesses the object code either (1) a the only significant mode of use of the product. notice like this when it starts in an interactive mode:

Lưu ý trong dòng thứ hai được trả về, trên thực tế, có code từ. Đây không phải là lỗi của biểu thức chính quy hoặc grep. Đúng hơn, dòng này được trả lại vì trước đó trong dòng, mode mẫu, được tìm thấy trong model từ, đã được tìm thấy. Dòng được trả về vì có một version trùng với mẫu.

Một tính năng hữu ích khác của dấu ngoặc là bạn có thể chỉ định một loạt các ký tự thay vì nhập từng ký tự có sẵn.

Điều này nghĩa là nếu bạn muốn tìm mọi dòng bắt đầu bằng chữ in hoa, bạn có thể sử dụng mẫu sau:

  • grep "^[A-Z]" GPL-3

Đây là kết quả bạn sẽ thấy:

Output
GNU General Public License for most of our software; it applies also to States should not allow patents to restrict development and use of License. Each licensee is addressed as "you". "Licensees" and Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an System Libraries, or general-purpose tools or generally available free Source. User Product is transferred to the recipient in perpetuity or for a ... ...

Do một số vấn đề sắp xếp kế thừa, việc sử dụng các lớp ký tự POSIX thay vì các dải ký tự như bạn vừa sử dụng thường chính xác hơn.

Có nhiều lớp ký tự nằm ngoài phạm vi của hướng dẫn này, nhưng một ví dụ sẽ thực hiện quy trình tương tự như ví dụ trước sử dụng lớp ký tự \[:upper:\] trong bộ chọn dấu ngoặc:

  • grep "^[[:upper:]]" GPL-3

Đầu ra sẽ giống như trước đây.

Lặp lại mẫu 0 hoặc nhiều lần

Cuối cùng, một trong những ký tự meta được sử dụng phổ biến nhất là dấu hoa thị, hoặc * , nghĩa là “lặp lại ký tự hoặc biểu thức trước đó không hoặc nhiều lần”.

Để tìm từng dòng trong file GPL-3 có chứa dấu ngoặc đơn mở và đóng, chỉ có các chữ cái và khoảng trắng đơn ở giữa, hãy sử dụng biểu thức sau:

  • grep "([A-Za-z ]*)" GPL-3

Bạn sẽ thấy kết quả sau:

Output
Copyright (C) 2007 Free Software Foundation, Inc. distribution (with or without modification), making available to the than the work as a whole, that (a) is included in the normal form of Component, and (b) serves only to enable use of the work with that (if any) on which the executable work runs, or a compiler used to (including a physical distribution medium), accompanied by the (including a physical distribution medium), accompanied by a place (gratis or for a charge), and offer equivalent access to the ... ...

Lúc này, bạn đã sử dụng dấu chấm, dấu hoa thị và các ký tự khác trong biểu thức của bạn , nhưng đôi khi bạn cần tìm kiếm các ký tự đó một cách cụ thể.

Thoát khỏi Meta-Characters

Đôi khi, bạn cần tìm kiếm khoảng thời gian theo nghĩa đen hoặc dấu ngoặc mở theo nghĩa đen, đặc biệt là khi làm việc với mã nguồn hoặc file cấu hình. Bởi vì những ký tự này có ý nghĩa đặc biệt trong biểu thức chính quy, bạn cần phải "thoát" những ký tự này để nói với grep rằng bạn không muốn sử dụng ý nghĩa đặc biệt của chúng trong trường hợp này.

Bạn thoát khỏi các ký tự bằng cách sử dụng ký tự gạch chéo ngược ( \ ) phía trước ký tự thường có ý nghĩa đặc biệt.

Ví dụ: để tìm bất kỳ dòng nào bắt đầu bằng chữ in hoa và kết thúc bằng dấu chấm, hãy sử dụng biểu thức sau thoát khỏi dấu chấm kết thúc để nó biểu thị một khoảng thời gian theo nghĩa đen thay vì nghĩa "bất kỳ ký tự nào" thông thường:

  • grep "^[A-Z].*\.$" GPL-3

Đây là kết quả bạn sẽ thấy:

Output
Source. License by making exceptions from one or more of its conditions. License would be to refrain entirely from conveying the Program. ALL NECESSARY SERVICING, REPAIR OR CORRECTION. SUCH DAMAGES. Also add information on how to contact you by electronic and paper mail.

Bây giờ ta hãy xem xét các tùy chọn biểu thức chính quy khác.

Biểu thức chính quy mở rộng

Lệnh grep hỗ trợ một ngôn ngữ biểu thức chính quy mở rộng hơn bằng cách sử dụng cờ -E hoặc bằng cách gọi lệnh egrep thay vì grep .

Các tùy chọn này mở ra khả năng của "cụm từ thông dụng mở rộng". Biểu thức chính quy mở rộng bao gồm tất cả các ký tự meta cơ bản, cùng với các ký tự meta bổ sung để thể hiện các kết quả phù hợp phức tạp hơn.

Phân group

Một trong những khả năng hữu ích nhất mà biểu thức chính quy mở rộng mở ra là khả năng group các biểu thức lại với nhau để thao tác hoặc tham chiếu như một đơn vị.

Group các biểu thức với nhau bằng cách sử dụng dấu ngoặc đơn. Nếu bạn muốn sử dụng
dấu ngoặc đơn mà không sử dụng biểu thức chính quy mở rộng, bạn có thể thoát
chúng với dấu gạch chéo ngược để kích hoạt chức năng này.

Ba biểu thức sau là tương đương về mặt chức năng:

  • grep "\(grouping\)" file.txt
  • grep -E "(grouping)" file.txt
  • egrep "(grouping)" file.txt

Luân phiên

Tương tự như cách biểu thức ngoặc có thể chỉ định các lựa chọn có thể khác nhau cho các kết quả khớp ký tự đơn lẻ, phép thay thế cho phép bạn chỉ định các kết quả phù hợp thay thế cho chuỗi hoặc tập biểu thức.

Để biểu thị sự thay thế, hãy sử dụng ký tự ống dẫn | . Các giá trị này thường được sử dụng trong group ngoặc đơn để chỉ định rằng một trong hai hoặc nhiều khả năng nên được coi là phù hợp.

Phần sau sẽ tìm thấy GPL hoặc General Public License trong
bản văn:

  • grep -E "(GPL|General Public License)" GPL-3

Đầu ra trông như thế này:

Output
The GNU General Public License is a free, copyleft license for the GNU General Public License is intended to guarantee your freedom to GNU General Public License for most of our software; it applies also to price. Our General Public Licenses are designed to make sure that you Developers that use the GNU GPL protect your rights with two steps: For the developers' and authors' protection, the GPL clearly explains authors' sake, the GPL requires that modified versions be marked as have designed this version of the GPL to prohibit the practice for those ... ...

Luân phiên có thể chọn giữa nhiều hơn hai lựa chọn bằng cách thêm các lựa chọn bổ sung trong group lựa chọn được phân tách bằng các ký tự bổ sung (|).

Bộ định lượng

Giống như ký tự meta * trùng với ký tự trước đó hoặc ký tự được đặt từ 0 trở lên, có các ký tự meta khác có sẵn trong các biểu thức chính quy mở rộng chỉ định số lần xuất hiện.

Để so khớp một ký tự 0 hoặc một lần, bạn có thể sử dụng ? tính cách. Điều này làm cho các ký tự hoặc bộ ký tự trước đó trở thành tùy chọn, về bản chất.

Những điều sau phù hợp với copyrightcopyright right bằng cách đặt copy vào một group tùy chọn:

  • grep -E "(copy)?right" GPL-3

Bạn sẽ thấy kết quả này:

Output
Copyright (C) 2007 Free Software Foundation, Inc. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License "Copyright" also means copyright-like laws that apply to other kinds of ...

Ký tự + trùng với một biểu thức một hoặc nhiều lần. Điều này gần giống như ký tự * meta, nhưng với ký tự + , biểu thức phải khớp ít nhất một lần.

Biểu thức sau trùng với chuỗi free cộng với một hoặc nhiều ký tự không phải là ký tự khoảng trắng:

  • grep -E "free[^[:space:]]+" GPL-3

Bạn sẽ thấy kết quả này:

Output
The GNU General Public License is a free, copyleft license for to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to When we speak of free software, we are referring to freedom, not have the freedom to distribute copies of free software (and charge for you modify it: responsibilities to respect the freedom of others. freedomss that you received. You must make sure that they, too, receive protecting users' freedom to change the software. The systematic of the GPL, as needed to protect the freedom of users. patents cannot be used to render the program non-free.

Chỉ định lặp lại so khớp

Để chỉ định số lần một kết hợp được lặp lại, hãy sử dụng các ký tự dấu ngoặc nhọn ( {} ). Những ký tự này cho phép bạn chỉ định một số chính xác, một phạm vi hoặc một giới hạn trên hoặc dưới cho số lần một biểu thức có thể khớp.

Sử dụng biểu thức sau để tìm tất cả các dòng trong file GPL-3 chứa các nguyên âm ba:

  • grep -E "[AEIOUaeiou]{3}" GPL-3

Mỗi dòng trả về có một từ có ba nguyên âm:

Output
changed, so that their problems will not be attributed erroneously to authors of previous versions. receive it, in any medium, provided that you conspicuously and give under the previous paragraph, plus a right to possession of the covered work so as to satisfy simultaneously your obligations under this

Để đối sánh bất kỳ từ nào có từ 16 đến 20 ký tự, hãy sử dụng biểu thức sau:

  • grep -E "[[:alpha:]]{16,20}" GPL-3

Bạn sẽ thấy kết quả này:

Output
certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. c) Prohibiting misrepresentation of the origin of that material, or

Chỉ các dòng chứa các từ trong độ dài đó mới được hiển thị.

Kết luận

grep rất hữu ích trong việc tìm kiếm các mẫu trong file hoặc trong hệ thống phân cấp hệ thống file , vì vậy bạn nên dành thời gian làm quen với các tùy chọn và cú pháp của nó.

Biểu thức chính quy thậm chí còn linh hoạt hơn và được dùng với nhiều chương trình phổ biến. Ví dụ: nhiều editor triển khai các biểu thức chính quy để tìm kiếm và thay thế văn bản.

Hơn nữa, hầu hết các ngôn ngữ lập trình hiện đại đều sử dụng các biểu thức chính quy để thực hiện các thủ tục trên các phần dữ liệu cụ thể. Khi bạn hiểu cụm từ thông dụng, bạn có thể chuyển kiến thức đó sang nhiều tác vụ phổ biến liên quan đến máy tính, từ thực hiện các tìm kiếm nâng cao trong editor của bạn đến xác thực thông tin nhập của user .


Tags:

Các tin liên quan

Cách sử dụng ngôn ngữ AWK để thao tác văn bản trong Linux
2020-05-26
Cách thiết lập Nền tảng Cloud IDE server mã trên Ubuntu 20.04
2020-05-20
Khái niệm cơ bản về việc sử dụng Sed Stream Editor để thao tác văn bản trong Linux
2020-05-19
Sedan trung gian: Thao tác các dòng văn bản trong môi trường Linux
2020-05-19
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Ubuntu 20.04 [Quickstart]
2020-05-14
Cách thiết lập Nền tảng Cloud IDE server mã trên Ubuntu 18.04
2020-05-13
Cách tạo server Minecraft trên Ubuntu 18.04
2020-05-07
Cách tạo server Minecraft trên Ubuntu 20.04
2020-05-07
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 20.04 [Quickstart]
2020-05-07
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 20.04
2020-04-29