Lệnh ctags trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh ctags, một công cụ tạo ra các tag cho các file mã nguồn. Điều này cho phép bạn nhanh chóng điều hướng và tìm kiếm trong mã của mình, giúp bạn dễ dàng hiểu cấu trúc của codebase. Bạn sẽ bắt đầu bằng cách cài đặt package ctags, sau đó tạo các tag cho một dự án C/C++ và khám phá cách sử dụng file tag đã tạo để điều hướng mã nguồn của bạn. Lab này bao gồm các kiến thức cơ bản về lệnh ctags và cung cấp các ví dụ thực tế về cách sử dụng nó.

Lệnh ctags là một công cụ được sử dụng rộng rãi trong hệ sinh thái Linux, và các kỹ năng học được trong lab này có thể được áp dụng cho nhiều ngôn ngữ lập trình và dự án khác nhau. Đến cuối lab này, bạn sẽ hiểu rõ hơn về cách tận dụng lệnh ctags để cải thiện năng suất và hiệu quả của bạn khi làm việc với các codebase lớn.

Giới thiệu về ctags

Trong bước này, bạn sẽ tìm hiểu về lệnh ctags, là một công cụ được sử dụng để tạo các tag cho các file mã nguồn. Các tag được sử dụng để nhanh chóng điều hướng và tìm kiếm trong mã, giúp bạn dễ dàng tìm và hiểu cấu trúc của codebase.

Đầu tiên, hãy cài đặt package ctags:

sudo apt-get update
sudo apt-get install -y exuberant-ctags

Để tạo các tag cho một dự án C/C++, hãy điều hướng đến thư mục dự án và chạy lệnh sau:

ctags -R .

Lệnh này sẽ tạo đệ quy các tag cho tất cả các file mã nguồn trong thư mục hiện tại và các thư mục con của nó.

Bây giờ bạn có thể xem file tag đã tạo bằng cách chạy:

cat tags

Ví dụ đầu ra:

!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR	Universal Ctags Team	//
!_TAG_PROGRAM_NAME	Universal Ctags	/Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL	https://ctags.io/	/official site/
!_TAG_PROGRAM_VERSION	0.0.0	/a3c87ab/
main	main.c	/^int main() {$/;"	f

File tag chứa thông tin về các hàm, biến và các ký hiệu khác nhau được định nghĩa trong mã nguồn của bạn. Bạn có thể sử dụng file này để nhanh chóng điều hướng đến định nghĩa của một ký hiệu trong mã của bạn.

Tạo tag cho một dự án C/C++

Trong bước này, bạn sẽ học cách tạo các tag cho một dự án C/C++ bằng lệnh ctags.

Đầu tiên, hãy tạo một dự án C đơn giản trong thư mục ~/project:

cd ~/project
mkdir myproject
cd myproject
touch main.c

Mở file main.c trong trình soạn thảo nano và thêm đoạn code sau:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

Lưu và đóng file.

Bây giờ, hãy tạo các tag cho dự án này:

ctags -R .

Lệnh này sẽ tạo một file tags trong thư mục hiện tại, chứa thông tin về các ký hiệu (hàm, biến, v.v.) được định nghĩa trong mã nguồn.

Bạn có thể xem nội dung của file tags:

cat tags

Ví dụ đầu ra:

!_TAG_FILE_FORMAT	2	/extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED	1	/0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR	Universal Ctags Team	//
!_TAG_PROGRAM_NAME	Universal Ctags	/Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL	https://ctags.io/	/official site/
!_TAG_PROGRAM_VERSION	0.0.0	/a3c87ab/
main	main.c	/^int main() {$/;"	f

File tag chứa thông tin về hàm main được định nghĩa trong file main.c.

Điều hướng mã nguồn với ctags

Trong bước này, bạn sẽ học cách sử dụng lệnh ctags để điều hướng qua mã nguồn của bạn.

Đầu tiên, hãy đảm bảo rằng bạn đã tạo file tag cho dự án C/C++ của bạn, như được hiển thị trong bước trước.

Để điều hướng đến định nghĩa của một ký hiệu (chẳng hạn như một hàm hoặc biến), bạn có thể sử dụng trình soạn thảo vim hoặc emacs, có hỗ trợ tích hợp cho ctags.

Mở file main.c trong trình soạn thảo vim:

vim ~/project/myproject/main.c

Bây giờ, hãy đặt con trỏ vào hàm main và nhấn phím Ctrl+]. Thao tác này sẽ đưa bạn đến định nghĩa của hàm main trong file tags.

Để quay lại vị trí trước đó, hãy nhấn phím Ctrl+t.

Bạn cũng có thể sử dụng lệnh ctags trực tiếp từ terminal để điều hướng đến định nghĩa của một ký hiệu. Ví dụ: để đi đến định nghĩa của hàm main, hãy chạy:

ctags -L main

Lệnh này sẽ mở file main.c và đặt con trỏ vào đầu hàm main.

Một tính năng hữu ích khác của ctags là khả năng liệt kê tất cả các ký hiệu được định nghĩa trong một dự án. Để thực hiện việc này, hãy chạy:

ctags -L

Lệnh này sẽ hiển thị một danh sách tất cả các ký hiệu trong dự án, cùng với file và số dòng của chúng.

Tóm tắt

Trong lab này, bạn đã học về lệnh ctags, một công cụ được sử dụng để tạo các tag cho các file mã nguồn. Bạn đã cài đặt package ctags và tạo các tag cho một dự án C/C++, có thể được sử dụng để nhanh chóng điều hướng và tìm kiếm trong mã. Bạn cũng đã học cách xem file tag đã tạo và hiểu thông tin mà nó chứa, chẳng hạn như định nghĩa hàm và khai báo biến.

Ngoài ra, bạn đã khám phá cách sử dụng lệnh ctags để tạo các tag cho toàn bộ dự án C/C++, điều này có thể đặc biệt hữu ích cho các codebase lớn. File tag đã tạo cung cấp một cách dễ dàng để định vị và nhảy đến định nghĩa của các ký hiệu khác nhau trong mã nguồn, giúp bạn dễ dàng hiểu và làm việc với dự án hơn.

400+ câu lệnh phổ biến trong Linux