1. grep# grep được sử dụng trong Linux để search một pattern/string trong file hoặc từ output của command khác# Search string "main" trong 2 file main.cpp và test.cppgrep main main.cpp test.cpp# Search string "main" trong tất cả các file trong folder hiện tại (recursive search)grep -r main# list ra content của thư mục hiện tại với "ls" sau đó filter output với "grep" để chỉ hiển thị những dòng có chứa string "repo"# Kí tự "|" được coi như một pipe để connect output của "ls" với input của "grep" để search theo pattern# Chỉ những dòng match với pattern mới được hiển thịls | grep zip2. unistd.h//unistd là một thư viện trong C++ cung cấp khả năng access tới POSIX system. Nó thường được sử dụng trong các UNIX-Like OS như Linux, macOS, FreeBSD.#include unistd.h//Hàm access sử dụng để check xem process hiện tại có thể access vào file/folder hay không//arg 1 : file / folder//arg 2 : // F_OK : Check if file exist// R_OK : Check if file can be read// W_OK : Check if file can be written// X_OK : Check if file can be executedint main(){if(access("test.txt",F_OK) == 0){cout << "File exist " << endl;}else{cout << "File not exist " << endl;}}//Hàm mkdir sử dụng để tạo mới foldermkdir("newFolder");3. stdio//Xóa fileremove("test.txt");//Mở một file với mode tương ứng, trả về struct pointer FILEFILE* fopen(char* file,char mode)//Trả về vị trí con trỏ hiện tại của filelong ftel(FILE* file)//Trả về kí tự mà con trỏ của file đang trỏ tới và đưa con trỏ tiến lên 1int fgetc(FILE* file)//Di chuyển con trỏ file đi offset bước bắt đầu từ vị trí start//offset có thể nhận giá trị âm hoặc dương//start (SEEK_SET : begin, SEEK_CUR : current, SEEK_END : end)int fseek(FILE* file, long offset, int start)//snprintf sử dụng để format một string giống với printf //Tuy nhiên thay vì in output ra console như printf thì snprintf sẽ lưu output vào một buffer// str : con trỏ trỏ đến string buffer// size : kích thước tối đa sẽ được lưu vào buffer (tính cả \0)// format : input string format giống với printf//Hàm trả về số kí tự của input string (không bao gồm \0). //Nếu buffer không đủ lớn thì string sẽ được cắt ngắn để fit với bufferint snprintf(char* str, size_t size, const char* format, ...);#include cstdioint main() {FILE* file = fopen("example.txt", "r");if (file == NULL) {printf("Failed to open file.\n");return 1;}long pos = ftell(file);printf("Current position: %ld\n", pos); //0// Read the first character from the fileint c = fgetc(file);// Get the current position of the file pointerpos = ftell(file);printf("Current position: %ld\n", pos); //1// Move the file pointer to the 10th byte from the beginning of the fileint result = fseek(file, 2, SEEK_SET);if (result != 0) {printf("Failed to set file pointer position.\n");return 1;}// Read the next character from the filec = fgetc(file);printf("Next character: %c\n", c);fclose(file);return 0;}4. Linux ubiattach//Sử dụng command ubiattach để attach một UBI volume tới một MTD device trong Linux//UBI : Unsorted Block Images//MTD : Memory Technology Device// -m 41 : MTD device có số hiệu 41// -d 7 : UBI module có số hiệu 7// /dev/ubi_ctrl : ubi_ctrl là UBI control device sử dụng để attach UBI device ubiattach -m 41 -d 7 /dev/ubi_ctrl//List tất cả MTD device //mtd0 : MTD device có số hiệu 0//Size : Size của MTD device (00010000 ~ 64kB)//Erase size : Size tối thiểu của 1 block. Khi xóa data thì phải xóa tối thiểu 1 block//Name : Tên của MTD devicecat /proc/mtd5. dpkg//dpkg : Debian-based package manager//-i : Option to install package//code_1.79.1-1686587647_amd64.deb// code : package name// 1.79.1-1686587647 : version number// amd64 : package for 64bits system// .deb : file extension indicates that it is a Debian packagesudo dpkg -i code_1.79.1-1686587647_amd64.deb6. dirent#include iostream#include dirent.h//opendir nhận đầu vào là đường dẫn đến 1 directory và trả về 1 DIR struct pointer thể hiện cho directory stream//readdir nhận đầu vào là 1 DIR struct pointer để đọc content của directory, mỗi lần gọi sẽ trả về 1 entry (entry có thể là directory hoặc file)//Chương trình in ra tên của tất cả các file/directory trong directory Overviewint main() {DIR *dir;struct dirent *ent;if ((dir = opendir("C:\\Users\\trung.mai\\Desktop\\Overview")) != NULL) {while ((ent = readdir(dir)) != NULL) {std::cout << ent->d_name << std::endl;}closedir(dir);} else {std::cerr << "Error opening directory" << std::endl;return EXIT_FAILURE;}return EXIT_SUCCESS;}7. cstring//Trả về con trỏ trỏ đến substring đầu tiên của str1 mà substring này trùng với str2//Nếu không tìm thấy trả về NULL (thông thường hàm này check string contain)char* strstr(const char* str1, const char* str2);