Dịch ra file chạy trong linux

Cách biên dịch và chạy chương trình C trong Linux

Ngôn ngữ lập trình C là một ngôn ngữ lập trình nổi tiếng vì có thư viện hàm phong phú. Chương trình C không thực thi nếu không có trình biên dịch trong Linux. Do đó cần có một trình biên dịch chuyên dụng để biên dịch các ngôn ngữ lập trình trong bản phân phối Linux. Trong bài đăng này, chúng ta sẽ tìm hiểu lập trình C là gì và cách nó được sử dụng để biên dịch chương trình C trong Linux.

Đầu tiên, mã chương trình C được biên dịch bởi một trình biên dịch để chuyển mã dựa trên chuỗi thành mã máy mà máy tính có thể đọc được. Trong Linux, trình biên dịch phổ biến nhất được sử dụng để lập trình C là trình biên dịch GCC và có sẵn trong kho lưu trữ mặc định của nhiều bản phân phối Linux có thể được cài đặt dễ dàng bằng trình quản lý gói apt:

$ sudo apt install gcc

Dịch ra file chạy trong linux

Sau khi gói GCC đã được cài đặt, bây giờ là lúc tạo tập tin bằng trình soạn thảo nano với tên myfile.c, (".c" là phần mở rộng cho máy tính biết rằng tập tin này chứa chương trình C):

$ nano myfile.c

Dịch ra file chạy trong linux

Viết mã đơn giản bằng ngôn ngữ C để in "Hello You are not allowed to view links. Register or Login":

#include

Int main(){

             printf("Hello VietNetwork.vn !\n");

             return 0;

}

Dịch ra file chạy trong linux

Trong đoạn mã trên, chúng ta đã bao gồm tập tin tiêu đề là stdio, được sử dụng để bao gồm thông tin liên quan đến đầu vào và đầu ra, hàm main () là hàm của chương trình, printf được sử dụng để in kết quả đầu ra và trả về 0 là trạng thái thoát.

Nhấn CTRL + S để lưu tập tin và thoát khỏi trình chỉnh sửa bằng cách nhấn CTRL + X. Liệt kê nội dung của tập tin bằng cách sử dụng lệnh ls để xác minh việc tạo tập tin.

$ ls

Dịch ra file chạy trong linux

Tập tin đã được tạo thành công, để biên dịch tập tin bằng trình biên dịch GCC, hãy chạy lệnh sau:

$ gcc myfile.c -o myfile

Dịch ra file chạy trong linux

Trong lệnh trên, gcc là trình biên dịch biên dịch tập tin được tạo với tên myfile.c và sau đó kiểm tra xem nó có lỗi hay không và nếu không có lỗi, thì "myfile" (tập tin nhị phân) sẽ được tạo trong cùng một thư mục.

Để thực thi tập tin nhị phân, hãy sử dụng:

$ ./myfile

Dịch ra file chạy trong linux

Trong kết quả đầu ra ở trên, chúng ta đã thấy rằng kết quả đầu ra của chương trình C của chúng ta đã được hiển thị như mong muốn.

Trong thời đại công nghệ thông tin như hiện nay, mọi người đều muốn học viết mã. Lập trình C được khuyến khích cho người mới bắt đầu để họ có thể bắt đầu học và bên cạnh đó, lập trình C là một ngôn ngữ đa năng có thể được sử dụng không chỉ để học những điều cơ bản về lập trình mà còn để phát triển cấp độ nâng cao của các ứng dụng.

Trong bài đăng này, chúng ta đã tìm hiểu cách trình biên dịch GCC được sử dụng trong Linux để biên dịch chương trình C. Ngoài cửa sổ dòng lệnh Terminal, còn có các trình biên dịch khác nhau như Visual Studio dựa trên GUI (Giao diện người dùng đồ họa) có thể được cài đặt trên Linux để biên dịch và chạy các chương trình C trong Linux.

Dịch ra file chạy trong linux

Mở đầu

Nếu chỉ là làm việc với file, thì cũng không có gì để nói nhiều lắm. Hiện nay có rất nhiều công cụ đồ họa hỗ trợ đắc lực cho việc này. Đơn giản là chỉ cần với vài click chuột, rê rê, kéo kéo, chọn rồi thả và rồi mọi thao tác đã xong. Nhưng mà đó là khi thao tác trên giao diện đồ họa, tất cả đều trực quan sinh động, cái gì cũng dễ thấy được. Với môi trường Linux, đặc biệt là với môi trường server, thường chúng ta sẽ không có một giao diện đồ họa như vậy. Các hệ thống server hầu hết đều phải thao tác thông qua cửa sổ dòng lệnh, màn hình đen và các dòng chữ trắng. Khi đó, những thao tác với chuột là quá xa xỉ. Chúng ta chỉ có một màn hình, và một bàn phím, làm việc trực tiếp với các dòng lệnh. Với những người không thường xuyên thao tác trên hệ thống dòng lệnh thì đây quả là một cơn ác mộng, các lệnh quá khó nhớ, cũng quá khó để sử dụng. Vì vậy, bài viết này của tôi ra đời với mục đích giúp mọi người làm quen với một số lệnh cơ bản để quản lý file trong hệ thống Linux.

Các lệnh điều hướng và thăm dò

Xác định vị trí với pwd

Thông thường khi ta truy cập vào server Linux nào đó, ta sẽ ở tại thư mục Home của tài khoản ta truy cập. Tuy nhiên, sau một thời gian làm việc, đôi khi ta không thể nhớ chính xác được mình đang ở tại thư mục nào. Và những lúc như thế này ta cần đến lệnh pwd. Cách sử dụng lệnh này cũng rất đơn giản, chỉ cần gõ: pwd

Dịch ra file chạy trong linux

Kết quả hiện ra là thư mục hiện tại đang làm việc. Theo như hình thì thư mục hiện tại của tôi là sandbox, và nó ở trong thư mục share, thư mục share này lại ở bên trong thư mục usr, và cuối cùng là đến thư mục / - một thư mục đặc biệt gọi là root, mọi thư mục khác đều có gốc là từ thư mục này.

Xác định các thư mục và file với ls

Lệnh ls là lệnh dùng để giúp ta biết được trong một thư mục nào đó có chứa các file và thư mục con nào. Khi làm việc trên dòng lệnh, ta không thấy được gì ngoài dấu nhắc lệnh. Vì thế lệnh này rất hữu ích, nó cho ta biết được ta có thể thao tác với chính xác file hoặc thư mục nào đó tồn tại. Để sử dụng lệnh này, ta chỉ cần gõ: ls [target]. target có thể là file (dùng khi muốn xem thông tin cơ bản của file), thư mục (dùng khi muốn biết trong thư mục đó có những file và thư mục con nào), hoặc để trống (tương tự như thư mục nhưng trong trường hợp này ta muốn xem thông tin của thư mục hiện tại).

Dịch ra file chạy trong linux

Một ví dụ để xem các file và thư mục con của thư mục usr. Lệnh ls có thể có các tùy chọn sau:

  • -a: xem cả các file và thư mục ẩn
  • -l: xem thông tin chi tiết bao gồm ACL (access control list), kích cỡ, ngày tháng cập nhật, chủ sở hữu ....
  • -p: thêm slash (/) để đánh dấu các thư mục
  • -R: xem cả cây thư mục

Chuyển thư mục với cd

Không có gì để nói về lệnh này ngoại trừ tên của nó. cd (change directory) là lệnh dùng để chuyển thư mục làm việc hiện tại sang thư mục sang thư mục làm việc khác.

Dịch ra file chạy trong linux

Tác dụng của nó đơn giản chỉ là để chuyển thư mục, và tất cả cũng chỉ có như vậy.

Xem nội dung của file

Hiển thị nội dung toàn bộ file với cat

Cách sử dụng của lệnh này về cơ bản cũng rất dễ, chỉ cần cat [filename], và sau đó ta có thể thấy được toàn bộ nội dung của file.

Dịch ra file chạy trong linux

Tuy nhiên, một hạn chế của cat là khi in ra nội dung của file thì nếu file quá dài ta không thể xem hết được, mà buộc phải kết hợp với các câu lệnh khác.

Phân trang với less

Lệnh less là một bổ sung cần thiết cho cat khi xem nội dung của file. Với tính năng phân trang dữ liệu, less có thể giúp chúng ta xem toàn bộ nội dung của một file dài. Cú pháp sử dụng cũng chỉ cần less [filename], khá tương đồng với cat.

Dịch ra file chạy trong linux

Ta có thể sử dụng các phím điều hướng lên, xuống hoặc f (scroll forward) và b (scroll backward) cho việc chuyển trang. Ngoài ra, để thoát chế độ xem với less, ta dùng q.

Các thao tác với file và thư mục

Tạo file với touch

Mặc dù có rất nhiều câu lệnh có thể dùng để tạo file, nhưng lệnh cơ bản nhất vẫn là touch, câu lệnh có tác dụng tạo ra một file với tên và đường dẫn chỉ định. Cú pháp cơ bản là touch [filename_with_path]. Nếu chỉ có filename thì mặc định là file sẽ được tạo ra ở thư mục hiện tại. Ta có thể tạo nhiều file cùng lúc với touch.

Dịch ra file chạy trong linux

Tạo thư mục với mkdir

Tương tự với touch, mkdir cũng có tác dụng tạo ra 1 file, nhưng file ở đây là dạng file thư mục. Đặc biệt, có thể dùng tùy chọn -p để tạo cả 1 cây thư mục.

Dịch ra file chạy trong linux

Di chuyển hoặc đổi tên file và thư mục với mv

Lệnh mv có 2 tác dụng: di chuyển (chuyển file hoặc thư mục nào đó ra một thư mục khác) hoặc đổi tên (đổi tên của file hoặc thư mục). Cú pháp chung là mv file_or_dir1[, file_or_dir2, ...] new_location

Dịch ra file chạy trong linux

Sao chép file hoặc thư mục với cp

Lệnh cp được dùng để sao chép file hoặc thư mục, hay nói cách khác là tạo bản sao của file hoặc thư mục nào đó. Cú pháp sử dụng: cp file_or_dir target_location. Nếu muốn sao chép cả cây thư mục thì cần sử dụng tùy chọn -r.

Dịch ra file chạy trong linux

Xóa file hoặc thư mục

Để xóa file, ta dùng lệnh rm, còn để xóa một thư mục, ta dùng lệnh rmdir. Tuy nhiên, rmdir có một hạn chế là chỉ xóa được thư mục trống. Để xóa cả một cây thư mục, ta cần sử dụng rm với tùy chọn -r.

Dịch ra file chạy trong linux

Nếu như bạn đã quen với việc sử dụng Linux, thì có một lệnh được liệt kê vào danh sách lệnh nguy hiểm tuyệt đối không nên thao tác, đó là rm -rf /. Khi thực thi lệnh này, tất cả cây thư mục tính từ root sẽ bị xóa (-r), và không hỏi lại (-f). Nếu bạn không chắc chắn, thì tốt nhất không nên sử dụng tùy chọn -r, hoặc có thể sử dụng -i (sẽ hỏi trước khi xóa để chắc chắn).

Công cụ quản lý file tổng hợp

Thông thường khi nghĩ đến các công cụ quản lý file, người ta thường sẽ nghĩ ngay đến một ứng dụng File Explorer nào đó. Trên các hệ điều hành Linux thì có thể kể đến Nautilus, Dolphin, Thunar, PCManFm, .... Tuy nhiên, trên giao diện dòng lệnh cũng có một số công cụ quản lý file như vậy, điển hình là Midnight Commander (MC).

Để có thể sử dụng mc thì ta cần cài đặt nó:

  • Trên Ubuntu: sudo apt install mc
  • Trên Fedora: sudo yum install mc

Giao diện cơ bản sẽ như sau:

Dịch ra file chạy trong linux

Giao diện của MC sẽ bao gồm 2 cửa sổ được mở song song để dễ thao tác.

  • Phía trên có một thanh menu đa chức năng, để active menu này ta cần dùng F9 (một số máy sẽ cần sử dụng kết hợp với phím Fn)
  • Phía dưới có mô tả một số tùy chọn sử dụng nhanh cho chương trình:
    • F1: Xem trợ giúp
    • F2: Hiện menu chức năng dành cho người dùng
    • F3: Xem nội dung file
    • F4: Chỉnh sửa file
    • F5, F6, F7, F8: Sao chép(cp), Di chuyển(mv), Tạo thư mục(mkdir), Xóa(rm)
    • F9: Kích hoạt top menu
    • F10: Thoát chương trình

Kết luận

Trên đây chỉ là một số lệnh cơ bản để thao tác với file và thư mục trên một hệ thống Linux. Và khi bắt đầu làm quen với Linux, theo tôi đây là những lệnh nên được thực hành sử dụng trước tiên để làm quen với môi trường của nó. Mọi ý kiến đóng góp vui lòng comment bên dưới bài viết. Xin cảm ơn các bạn đã đọc bài viết.

Tài liệu tham khảo

  • http://linuxcommand.org/lc3_lts0020.php
  • http://linuxcommand.org/lc3_lts0030.php
  • http://linuxcommand.org/lc3_lts0050.php
  • https://midnight-commander.org/