Skip to content

Instantly share code, notes, and snippets.

@lewtds
Created October 24, 2012 04:02
Show Gist options
  • Save lewtds/3943662 to your computer and use it in GitHub Desktop.
Save lewtds/3943662 to your computer and use it in GitHub Desktop.
Note AFC 21/10/2012

Note họp AFC 21/10/2012

Thành phần tham dự:

  • Chin (L2 08-11)
  • Hiệp (11IT)
  • Duong Nghiem (11IT)
  • Phạm Thọ Hồng Dương (Nga 08-11)
  • Anh Nguyễn Hà Dương, cựu Amser IT, hiện đang là nhân sự cao cấp ở công ty iWay cùng một số công ty khác và hoạt động rất mạnh trong cộng đồng FOSS.

Giới thiệu hệ điều hành Unix

https://speakerdeck.com/u/ynonperek/p/unix-introduction

  • Unix là hệ điều hành thông dụng, đa nhiệm, đa người dùng đầu tiên trên thế giới, ra đời ~1969
  • Thiết kế của Unix quá tốt, tất cả các hệ điều hành sau đều ít nhiều dựa trên những đột phá công nghệ và thiết kế của Unix
  • Sau khi bị commercialized thì môi trường Unix bị phân mảnh, có quá nhiều phiên bản Unix của nhiều hãng khác nhau, không tương thích với nhau. Tất cả đều có phí và không tự do
  • Richard Stallman thành lập dự án GNU để "tìm lại không khí đóng góp thân thiện trong những ngày đầu của khoa học máy tính" và viết lại một phiên bản Unix hoàn chỉnh, tự do và miễn phí hoàn toàn.
  • Dự án GNU (GNU is Not Unix) đã gần thành công, viết lại được hết tất cả các thành phần giao tiếp với người sử dụng nhưng còn thiếu một kernel hoàn chỉnh. -> GNU/Linux ra đời.
  • GNU/Linux tự do, miễn phí -> nhiều người muốn phát hành dưới nhiều kiểu khác nhau -> tạo ra vô số bản phân phối (distro, distribution) khác nhau cho các mục đích khác nhau: Ubuntu, Mint thân thiện người dùng cuối; Redhat, CentOS, Debian hướng tới server ổn định; ArchLinux, Slackware hướng tới geek...

Note - Tất cả các hệ điều hành có cách hoạt động tương tự Unix và tuân theo chuẩn POSIX đều có thể được gọi là một Unix. Có rất nhiều Unix ngày nay như Mac OS X, GNU/Linux, FreeBSD (base của Mac OS X), NetBSD, Sun's Solaris, HP's UX,...

Further reading:

Giới thiệu về Unix shell (terminal)

Note 1 - Hệ điều hành gồm 3 thành phần: nhân (kernel) giao tiếp với phần cứng, vỏ giao diện người dùng (shell) và các ứng dụng hỗ trợ (userland applications)

Note 2 - Phần này chỉ mang tính giới thiệu, link ở Further reading có tutorial chi tiết hơn.

  • Dòng lệnh là cách tương tác chuẩn của Unix
  • Dòng lệnh có thể làm tất cả mọi việc giao diện đồ họa (GUI) làm được, thậm chí nhiều hơn. Một khi đã quen thì hiệu suất làm việc cao hơn rất nhiều so với chỉ dùng GUI.
  • Cấu trúc của một lệnh terminal thông thường (giống với ngôn ngữ nói):
    <tên lệnh> <option> <đối tượng>

VD: ls -l /home/chin

  • ls : tên lệnh (list, liệt kê file và thư mục con)
  • -l : option yêu cầu format kết quả theo dạng long với nhiều thông tin chi tiết
  • /home/chin : tên đối tượng (thư mục chứa file để liệt kê)

Note: Option có dạng ngắn (dễ viết) và dạng dài (dễ nhớ). VD: Option '-h' của ls còn có tên khác là '--human-readable' (format kích thước file theo dạng 93K thay vì 94284 bytes)

  • Một số lệnh hữu ích:

  • ls (list): liệt kê thư mục

  • cd (change directory): chuyển sang thư mục khác

  • cp (copy)

  • mv (move, cũng được dùng để rename)

  • rm (remove)

  • man (manual): tra cứu hướng dẫn sử dụng của lệnh khác, VD: man ls

  • grep: in ra những dòng có chứa đoạn cần tìm kiếm (content search)

  • Các lệnh có thể chain với nhau: đặt output của lệnh này làm input của lệnh khác bằng cách sử dụng pipe (ống dẫn, ký hiệu '|')

    VD:
    Chỉ in ra những file có chứa test ở trong tên:
    ls | grep "test"

    Hiển thị những file mp3:
    ls | grep "*.mp3"

  • Có thể gom các lệnh terminal thành một file script (lập trình shell) để làm những việc phức tạp: https://github.com/lewtds/shell-scripting-demo

  • Anh Dương demo sử dụng terminal và lệnh nmap để dò được máy Chin trong mạng, tìm kiếm những cổng đang mở, sau đó dùng ssh (secured shell, kết nối từ xa) để remote login vào máy của Chin. Thậm chí có thể xóa những tập tin quan trọng vì Chin set quyền write cho tất cả mọi người vào ổ Data.

    Note: Để demo nên Chin đã cài thêm ssh server ở cổng 22 và trao cho anh Dương một tài khoản test. Nhưng trên Windows thì cổng 139 (NetBIOS, remote login) luôn mở, rất nguy hiểm.

Further reading:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment