bài 2 Làm quen với Linux command

18 1.8K 1
bài 2 Làm quen với Linux command

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 2. Làm quen với Linux command 1. Đăng nhập và tắt máy 1 2. Kernel, Shell 2 3. Virtual Console và Terminal 3 4. Lệnh trong Linux 3 a. Cách viêt lệnh 3 b. Thực thi executable file 4 c. Shell script 4 d. Metacharacters 5 e. Help 5 f. History 6 4. su 6 5. Các thao tác quen thuộc với File và thư mục 6 a. Cấu trúc file và thư mục của Linux khác với của Windows 6 b. Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục 7 c. Midnight Commander (mc) 9 d. Link 10 e. Archive và Compress file 10 f. Tìm kiếm file và thư mục 11 6. Filesystem Hierarchy standard 12 7. Khái niệm file theo nghĩa rộng trong UNIX/Linux 13 8. Redirection và xargs 14 a. Redirect stdin, stdout, stderr to file 14 b. Pipe và kết hợp với grep, wc, sort, less 16 c. xargs 16 9. VIM editor 16 10. Regular expression 17 1. Đăng nhập và tắt máy Linux là hệ thống đa người sử dụng nên khi khởi động bạn phải cho biết định danh của mình trên hệ thống qua màn đăng nhập. - Có thể có 3 màn hình đăng nhập như dưới đây: • Giao diện đồ họa: Nếu Linux được cài KDE, GNOME thì bạn có giao diện đăng nhập đồ họa. Mỗi distro sẽ có một màn đăng nhập riêng, chả hạn như hình vẽ dưới đây của SUSE.

© Trần Huy Thắng. tài liệu Linux cho sv DH NN, không phát tán lên Internet. Đây là bản nháp viết gấp, nếu người đọc phát hiện sai sót xin thông báo cho người viết. Bài 2. Làm quen với Linux command Bài 2. Làm quen với Linux command 1 1. Đăng nhập và tắt máy 1 2. Kernel, Shell 3 3. Virtual Console và Terminal 3 4. Lệnh trong Linux 4 a. Cách viêt lệnh 4 b. Thực thi executable file 4 c. Shell script 5 d. Metacharacters 5 e. Help 5 f. History 6 4. su 6 5. Các thao tác quen thuộc với File và thư mục 6 a. Cấu trúc file và thư mục của Linux khác với của Windows 6 b. Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục 7 c. Midnight Commander (mc) 9 d. Link 10 e. Archive và Compress file 10 f. Tìm kiếm file và thư mục 11 6. Filesystem Hierarchy standard 12 7. Khái niệm file theo nghĩa rộng trong UNIX/Linux 13 8. Redirection và xargs 14 a. Redirect stdin, stdout, stderr to file (phần này viết khó hiểu, phải bỏ bớt đi) 14 b. Pipe và kết hợp với grep, wc, sort, less 16 c. xargs 16 9. VIM editor 16 10. Regular expression 17 1. Đăng nhập và tắt máy Linux là hệ thống đa người sử dụng nên khi khởi động bạn phải cho biết định danh của mình trên hệ thống qua màn đăng nhập. - Có thể có 3 màn hình đăng nhập như dưới đây: • Giao diện đồ họa: Nếu Linux được cài KDE, GNOME thì bạn có giao diện đăng nhập đồ họa. Mỗi distro sẽ có một màn đăng nhập riêng, chả hạn như hình vẽ dưới đây của SUSE. 1/18 • Giao diện dòng lệnh: Trên các server, giao diện đồ họa thường không được cài (hoặc cài nhưng disable) để đỡ tốn tài nguyên (CPU, RAM), lúc đó bạn phải làm việc với giao diện dòng lệnh virtual console. • Đăng nhập từ xa: Người quản trị mạng không phải lúc nào cũng phải đến trực tiếp Linux server để điều khiển mà có thể đăng nhập từ một máy Windows thông qua công cụ (chả hạn như) Putty. - Có 2 loại người sử dụng: root (còn gọi là super user) và normal user (người sử dụng thường). Một hệ thống chỉ có đúng một tài khoản root, tài khoản này có tất cả các quyền thao tác với hệ thống, nó chỉ dành cho người quản trị hệ thống. Với người sử dụng thường, ngoài các quyền thao tác với chính tài liệu của họ tạo ra thì có rất ít quyền với hệ thống. Đoạt root luôn là mục đích của các Linux hackers. - Tắt máy là chuyện rất hạn chế của người quản trị server (thử tưởng tượng một web server mà tắt đi thì có bao nhiêu người gặp bất tiện khi định vào trang web của server). Nếu bạn chỉ là người dùng Linux thông thường, hiển nhiên thường phải restart hoặc shutdown; ở chế độ dòng lệnh dùng lệnh sau (chỉ có root mới có quyền): - Turn off: shutdow –h now - Restart: shutdown –r now hoặc reboot Nếu muốn hẹn giờ shutdown thì thay now bằng lượng thời gian chờ shutdown hh:mm hoặc mm. Chú ý turn off/ restart một cách cơ học (không đúng cách), dù không gây hỏng hóc cho hệ thống thì lần sau khi bật máy sẽ nhận được thông báo đòi check disk, chẳng hạn với Red hat là: Press Y within 5 seconds to force file system integrity check … 2/18 2. Kernel, Shell Kiến trúc phân tầng của một máy tính được cho trên hình vẽ. Kernel (nhân) của hệ điều hành làm nhiệm vụ trực tiếp quản lý phần cứng. Người sử dụng không thể trực tiếp ra lệnh cho kernel được vì các lệnh này liên quan đến chi tiết của phần cứng, vô vùng phức tạp. Thay vào đó người dùng gõ các lệnh của Shell (vỏ) vốn gần gũi với con người. Shell sẽ thông dịch (interpret) các lệnh của người dùng thành các lệnh điều khiển kernel và đến lượt kernel chuyển các yêu cầu đến nó thành các thao tác điều khiển phần cứng. Khi hệ thống khởi động, sau khi kernel được tải vào RAM thì shell sẽ được tải tiếp theo. Shell của DOS chính là command.com làm nhiệm vụ dịch các lệnh của người sử dụng như dir, md, cd, … ra thành các lệnh máy. Không có khái niệm shell của Windows nhưng ở một nghĩa trừu tượng nào đó có thể coi giao diện đồ họa của Windows tương đương với shell của DOS. Có nhiều loại shell cho Linux như C shell, Bourne Shell, … mỗi loại shell lại có tập lệnh riêng và người dùng chỉ được phép gõ các lệnh trong tập lệnh đó. Phổ biến nhất hiện nay là BASH shell dùng trong RedHat, Suseshell và DASH shell dùng trong Ubuntu. Tập lệnh của hai loại shell này hầu hết là giống nhau. 3. Virtual Console và Terminal Như ở trên nói shell là trình thông dịch, chương trình virtual console hoặc terminal làm nhiệm vụ chuyển các lệnh mà bạn gõ trên bàn phím vào cho shell dịch. Nói cách khác virtual console hoặc terminal là giao diện để bạn tương tác với shell. - Nếu hệ thống Linux không cài KDE, GNOM, mặc định bạn sẽ làm việc bằng giao diện dòng lệnh virtual console. Linux có 6 virtual console, virtual console 1 được mặc định khi khởi động. Có thể chuyển đổi qua lại giữa các virtual console bằng tổ hợp phím ALT + Fn (n = 1,2, …6). Người dùng có thể chạy một chương trình ở virtual console này và không cần đợi cho kết thúc chuyển sang virtual console khác để thực hiện một lệnh mới. Điều này tạo cảm giác có thể chạy nhiều chương trình cùng lúc. - Nếu hệ thống trong giao diện đồ họa. Bạn có thể vào menu Applications/Accessories/Terminal (các distro sẽ có các bố trí menu khác) để chạy chương trình terminal cho phép bạn tương tác với shell. Hoặc với một điều kiện nào đó có thể dùng CTRL + ALT + F6/F7 để chuyển qua lại giữa giao diện đồ họa và các virtual console. Dù là virtual console hay terminal, dấu nhắc dòng lệnh của nó có dạng, chẳng hạn [root@localhost ~]# _ Ý nghĩa: - tên account đang login: root, vì thế có dấu #, nếu là normal user có dấu $ - máy tính cài Linux mà user đang login: localhost để chỉ người dùng không login từ xa, nếu login từ xa sẽ là tên/ip một máy tính từ xa nào đó. - thư mục hiện hành: tên một thư mục hoặc nếu là dấu ~ thì chỉ thư mục home (nơi lưu dữ liệu cá nhân) của người dùng Nói thêm về nguồn gốc của từ “terminal”: “terminal” như ở đây là một chương trình giao tiếp với shell còn trong quá khứ nó là một thiết bị phần cứng. Ở thời trước khi có máy tính cá nhân, chỉ có những hệ thống máy tính lớn đa người sử dụng. Người sử dụng truy cập vào các hệ thống lớn này thông qua một thiết bị có tên là “terminal” chỉ gồm có bàn phím và màn hình, không có bộ xử lý dữ liệu. Theo thời gian khi máy tính cá nhân ra đời nó thay thế các thiết bị này và người ta dùng phần mềm để mô phỏng lại nó. 3/18 Shell Kernel Application Hardware user 4. Lệnh trong Linux a. Cách viêt lệnh Lệnh trong Linux thường có dạng: tên_lệnh tham_số đối_số Trong đó tham số để điều chỉnh cách thực hiện lệnh còn đối số thường là đối tượng bị lệnh tác động lên. Tham số, đối số có thể vắng mặt, trong cú pháp của lệnh nếu một thành phần nào đó có thể vắng mặt thì nó được để trong dấu ngoặc vuông [ ], nếu buộc phải có mặt thì để trong dấu ngoặc nhọn <> hoặc để không. Ví dụ cú pháp lệnh man là man [section] tên_lệnh. Trước tham số thường phải có dấu gạch, đối số thì không cần. Tham số có 2 dạng: Dạng ngắn bắt đầu bằng một dấu gạch ngang – ví dụ cp –r Dir1 Dir2 Dạng dài bắt đầu bằng hai dấu gạch ngang – – ví dụ cp – – recursive Dir1 Dir2 Hai lệnh trên là một, cùng copy Dir1 thành Dir2. Thường tham số dạng ngắn là viết tắt của dạng dài (r viết tắt của recursive). Có một số tham số nào đó rất nhiều lệnh hay dùng gần như thành qui ước, chẳng hạn: – v hoặc – – verbose (tiếng Anh, “verbose” có nghĩa là “dài dòng”) dùng để hiển thị những thông tin mô tả quá trình thực hiện lệnh. – f hoặc – – force thực hiện lệnh mà không cần tương tác với người dùng vv Lệnh trong Linux phân biệt hoa thường nên tham số –v sẽ khác với –V. Có thể viết nhiều lệnh trên cùng một dòng nhưng phải có dấu chấm phẩy (;) ở giữa Ví dụ: mkdir /mnt/USB; mount /dev/sdb1 /mnt/USB; cd /mnt/USB Có thể ngắt một lệnh thành nhiều dòng (để cho dễ theo dõi) bằng cách thêm dấu \ vào chỗ cần ngắt và enter. b. Thực thi executable file Khi người dùng gõ một lệnh thực chất là thực thi một executable file (file khả thi – như các file .exe của Windows) nào đó có tên trùng với tên lệnh. Shell tìm executable file này (lệnh) trong 4 đường dẫn mặc định là /bin, /sbin, /usr/bin, /usr/sbin, nếu không tìm thấy nó sẽ thông báo “command not found”. Các đường dẫn mà shell cần tìm được lưu trong biến PATH của shell, người dùng có thể sửa biến này. Lệnh which <command> cho biết chính xác file lệnh nằm dưới thư mục nào trong 4 thư mục mặc định kia. Ví dụ: which mkdir cho biết /bin/mkdir  lệnh mkdir myDirectory tương đương với lệnh /bin/mkdir myDirectory Giả sử người dùng đang ở thư mục /home/userX, thư mục này chứa một executable file có tên là exefile. Để thực thi file này, trong DOS người dùng chỉ cần gõ lệnh exefile là đủ, nhưng với Linux, shell sẽ thông báo “command not found” lí do là biến PATH của DOS có chứa thư mục hiện hành còn của Linux thì không. Với shell của Linux phải gõ lệnh ./exefile hoặc /home/userX/exefile tức là phải chỉ rõ đường dẫn ra. [root@localhost userX]# exefile bash: exefile: command not found [root@localhost userX]# ./exefile [… OK …] [root@localhost userX]# /home/userX/exefile [… OK …] Cũng nói thêm, trong DOS/Windows tên một executable file luôn có đuôi là .exe hoặc .com, nhưng trong Linux không có đuôi nào đặc trưng cho một excutable file cả. 4/18 c. Shell script Shell script là một plain text file chứa dãy các lệnh shell. Khi thực thi shell script thì dãy các lệnh trong nó được thực thi. Shell script tương tự như file batch của DOS nhưng mạnh hơn rất nhiều. Người ta thường lấy tên file shell script có đuôi là .sh nhưng điều này không bắt buộc. Có 3 cách thực thi một shell script “myscript” bash myscript sh myscript ./myscript Nhưng trước hết phải đảm bảo người gọi file có quyền thực thi “myscript”. Nếu là root có thể nhanh chóng đặt quyền thực thi cho file bằng lệnh chmod +x myscript (xem thêm bài quản trị file permission) d. Metacharacters Một lệnh có thể chứa metacharacters (siêu kí tự) là các kí tự đặc biệt <, |, >, &, !, … và các loại dấu ngoặc như ‘ , “, ` . Đây là những kí tự có ý nghĩa đặc biệt đối với shell khi thực hiện lệnh. Các metacharacters thường (và nên luôn là như vậy) không được dùng để đặt tên. Có rất nhiều metacharacters, dưới đây là một số hay dùng: Wildcards (kí tự đại diện): * và ? Dấu * đại diện cho một số lượng bất kì kí tự. Ví dụ: ls /root/b* liệt kê tất cả các file bắt đầu bằng 1 chữ ‘b’ Dấu ? đại diện cho đúng một kí tự bất kì. Ví dụ: ls /root/b? liệt kê tất cả các file có tên gồm 2 kí tự, kí tự đầu tiên là ‘b’. Ranges (miền): [ ] và {} Cặp [ ] định nghĩa một miền giá trị. Thêm dấu ! trong cặp này để chỉ nằm ngoài miền. Ví dụ 1: ls a[3-7][bx][b-x] liệt kê tất cả các file có tên gồm 4 kí tự, kí tự đầu là chữ ‘a’, kí tự thứ hai là 1 chữ số trong khoảng từ 3 đến 7, kí tự thứ ba là kí tự ‘b’ hoặc ‘x’, kí tự cuối là một kí tự trong khoảng b đến x. Ví dụ 2: ls [!Aa]* liệt kê tất cả các file có tên gồm ít nhất một kí tự, kí tự đầu không phải là ‘A’ hoặc ‘a’ Cặp { } liệt kê các giá trị có thể nhận. Ví dụ: ls index.{htm, html} liệt kê các file có tên là index.htm hoặc index.html. Escape codes: kí tự \ (back slash). Khi muốn dùng một metacharacter nào đó mà muốn shell không hiểu nó là metacharacter thì thêm dấu \ đằng trước. Nếu muốn dùng chính dấu \ thì thành \\. Ví dụ: mkdir Van\ ban\\Cong\ van tạo một thư mục có tên là “Van ban\Cong van”. Kí tự dấu cách và \ được dùng trong tên đều là metacharacters Quotes: có các loại dấu ngoặc là ‘’, “”, `` (back tick). Khi dùng dấu ngoặc ‘’, “” thì tất cả các kí tự trong dấu ngoặc được hiểu không phải là metacharacters. Vẫn với ví dụ trên, có thể chỉ cần: mkdir “Van ban\Cong van” hoặc mkdir ‘Van ban\Cong van’. Sự khác nhau giữa ‘’, “” quá tinh tế tài liệu này không đề cập đến. Dấu `` thường được dùng khi viết lệnh shell, tài liệu này cũng không đề cập đến. e. Help Có vô cùng nhiều lệnh, mỗi lệnh lại có rất nhiều tham số, để giúp người dùng tra cứu, Linux có một tập các manual (hướng dẫn sử dụng) về gần như tất cả các lệnh. Tập manual này được chia làm 8 section (mục): 1 General commands 2 System calls 5/18 3 C library functions 4 Special files (usually devices, those found in /dev) and drivers 5 File formats and conventions 6 Games and screensavers 7 Miscellanea 8 System administration commands and daemons Để tra cứu một lện nào đó trong tập manual này dùng lệnh man <tên_lênh>. Khi trang man hiện ra, người dùng có thể dùng các phím di chuyển←↑→↓, PgUp/Down để xem, muốn thoát ra bấm q. Ở góc trang man có con số để trong ngoặc cho biết section của trang man đó. Có những lệnh thuộc nhiều hơn 1 section ví dụ lệnh exit thuộc 3 section là (1), (2), (3) nhưng khi man chỉ ra một section, muốn tra cứu lệnh đó trong các section khác dùng lệnh man section <tên_lênh> Ví dụ man 2 exit hoặc man 3 exit Người ta dùng lệnh man trong trường hợp biết tên lệnh, quên tham số. Trong trường hợp quên cả tên lệnh, nếu chỉ nhớ được vài chữ cái đầu tiên của lệnh hãy gõ vài chữ cái đầu đó rồi bấm phím Tab hai lần để hiển thị danh sách những lệnh bắt đầu bằng các chữ cái đó. Khi không nhớ được các chữ cái đầu của lệnh thì dùng lệnh apropos <môt cum tu nao đó> để tra cứu những lệnh nào có tên hoặc phần giải thích liên quan đến <một cụm từ nào đó> (apropos tiếng anh có nghĩa là “liên quan đến”) Lệnh man, apropos ở trên đều tra cứu trong tập man của Linux. Ngoài tập man của Linux thì bản thân mỗi lệnh đã chứa thông tin giải thích về lệnh ngắn hơn so với man, muốn xem chỉ việc gõ tên lệnh và thêm tham số - - help f. History Để lấy lại lệnh vừa gõ trước đó dùng phím ↑ hoặc ↓. Để liệt kê một số lệnh vừa gõ dùng lệnh history 4. su Nếu là normal user thì bạn không thể thực thi các lệnh thao tác với hệ thống được, bạn có rất ít quyền. Khi đang ở tài khoản normal user để chuyển sang tài khoản root (giả sử bạn có password của root) mà không phải log out rồi lại log in thì tại dấu nhắc shell gõ lệnh su (substitute user – thay đổi user) sau đó gõ password. Cũng có thể chuyển nhanh sang một tài khoản bất kì bằng lệnh su [-] [username]. Mỗi tài khoản có một môi trường shell với những cấu hình shell riêng biệt, dùng dấu – trong lệnh su để đảm bảo các cấu hình shell cũng được chuyển theo khi chuyển user. 5. Các thao tác quen thuộc với File và thư mục a. Cấu trúc file và thư mục của Linux khác với của Windows Trong Windows/DOS file và thư mục được lưu vào trong các partition (phân vùng) được đánh ký hiệu C:, D:, … Mỗi partition sẽ có một thư mục gốc là C:\, D:\ … Trong Linux, chỉ có một thư mục gốc duy nhất là /. Dưới / là các thư mục con và file, một số thư mục con nào đó được chọn làm “đầu nối” với các partition khác. Thư mục được chọn đó được gọi là mount point, các partition sẽ được mount (“nối”) vào các mount point. Như vậy người dùng Linux sẽ không có cảm giác rõ ràng về các partition của đĩa cứng mà chỉ thấy một cây thư mục khổng lồ, một số nhánh nào đó của cây thư mục này sẽ dẫn đến một số partition khác. Xét ví dụ minh họa sự khác nhau giữa cây thư mục của Windows và Linux như ở hình vẽ: 6/18 Giả sử máy tính có một ổ đĩa cứng và được chia làm 3 partitions: partition 1 chứa hệ điều hành, partition 2 chứa các tài liệu cho công việc (Works), partition 3 chứa phim, ảnh giải trí (Entertains). - Nếu cài Windows, người dùng sẽ thấy rõ 3 partition: partition C: (nhãn “OS”) chứa Windows, partition D: (nhãn “Work”) chứa tài liệu công việc, và partition E: (nhãn “Entertainment”) chứa phim, ảnh giải trí. - Nếu cài Linux, người dùng có cảm giác chỉ có 1 partition tên là “/” (đọc là partition root) chứa tất cả mọi thứ từ hệ điều hành đến Entertains và Works. Kì thực vẫn là 3 partition nhưng giờ đây không được kí hiệu là C, D, E nữa mà là hda1, hda2, hda3. Partition hda1 chứa hệ điều hành nhưng dĩ nhiên file thư mục của Linux (boot, bin, home, usr, var, …) sẽ khác với Windows (Documents, Program Files, Windows). Partition hda1 được mount vào /. Partition hda2, hda3 được mount vào một thư mục trong partition hda1 mà ở đây là /mnt/Entertains và /mnt/Works. Đường dẫn thư mục của Linux cũng giống như Windows ngoại trừ việc dùng dấu / thay vì dùng dấu \; ví dụ trong Linux là /Dir/subDir thì tương ứng trong Windows là C:\Dir\subDir. Cẩn thận với dấu / ! Khi nó nằm ở đầu một đường dẫn thì nó chỉ thư mục gốc và đường dẫn bắt đầu từ thư mục gốc, người ta gọi đó là đường dẫn tuyệt đối. Khi đường dẫn không chứa dấu / ở đầu thì đường dẫn đó bắt đầu từ thư mục hiện hành và được gọi là đường dẫn tương đối. Ví dụ: lệnh mkdir /Report (tạo thư mục Report trong thư mục gốc /) sẽ khác với lệnh mkdir Report (tạo thư mục Report trong thư mục hiện hành). b. Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục Khi mới đăng nhập, thư mục hiện hành là thư mục home của người đăng nhập. Thư mục home của người sử dụng được dùng để lưu dữ liệu cá nhân của người sử dụng đó. Thư mục home của root là /root, của normal user là /home/tên_user. Thư mục /home/ của Linux có phần giống Documents and Settings của Windows NT) Để xem thư mục hiện hành dùng lệnh pwd (present working directory). Để thay đổi thư mục hiện hành dùng lệnh cd <đuong dân thu muc> (cd viết tắt của change directory). Thường kết hợp lệnh cd với 7/18 dấu chấm chấm ( ) để lên thư mục cha, đấu ngã (~) để quay về thư mục home của user hiện hành, dẫu ngã kèm theo tên user để chỉ thư mục home của user có tên đó. Dấu chấm (.) để chỉ thư mục hiện hành. Ví dụ 1: Root đang ở /, dùng cd ~ để quay về /root, dùng cd ~Jackson để về /home/Jackson. Ví dụ 2: Đang ở thư mục /home/userX/. Hai lệnh cd ./ / / và cd / / là tương đương nhau đều chuyến sang /. Hai lệnh cd / /home/userX và cd . là tương đương nhau và đều không thay đổi thư mục hiện hành. Một điều cực kì quan trọng để giảm công sức gõ lệnh là dùng chức năng autocomplete tên file và thư mục. Khi gõ tên thư mục hoặc tên file, chỉ gõ 1 hoặc vài chữ cái đầu rồi bấm phím TAB để tự động Khi gõ tên thư mục hoặc tên file, chỉ gõ 1 hoặc vài chữ cái đầu rồi bấm phím TAB để tự động điền nốt phần tên còn lại hoặc bấm thêm TAB một lần nữa để hiển thị tất cả những file, thư điền nốt phần tên còn lại hoặc bấm thêm TAB một lần nữa để hiển thị tất cả những file, thư mục có cùng các chữ cái đầu như đang gõ. Hãy tập thói quen TAB hoặc TAB TAB. mục có cùng các chữ cái đầu như đang gõ. Hãy tập thói quen TAB hoặc TAB TAB. Ví dụ: thay vì gõ cp /boot/vmlinuz-2.6.9-5.EL /backup dài dòng thì hãy gõ cp /boot/vm TAB /backup Khi bạn gõ một lệnh thì thực chất là bạn gọi file có tên trùng với tên lệnh trong thư mục /bin, /sbin, /usr/bin hoặc /usr/sbin thế nên nếu không nhớ tên lệnh thì cũng có thể gõ vài chữ cái đầu rồi bấm TAB. Ví dụ: giả sử định gõ lệnh apropos nhưng lại không nhớ rõ thì chỉ cần gõ ap TAB Xem nội dung của thư mục: lệnh ls (viết tắt của list), thêm tham số -l (viết tắt của long) để biết đầy đủ thông tin, tham số -a (viết tắt của all) để hiển thị cả file, thư mục ẩn. (Trong Linux cũng có lệnh dir (viết tắt của directory) giống trong DOS). Vì file và thư mục trong Linux đều có thể viết hoa và thường nên dấu hiệu phân biệt file và thư mục khi dùng lệnh ls là màu sắc: thư mục có mầu tím, file có mầu thông thường, một số loại file đặc biệt khác như link, device, … (nói ở phần sau) có mầu sắc khác. Một số loại file thường với các định dạng đặc biệt như file tar, gzip hoặc executable file … cũng có màu sắc riêng. Dưới đây là mô tả thông tin mà lệnh ls –l đưa ra. Giả sử gõ ls –al /mydir 8/18 Quyền thao tác với file Số liên kết đến file Chủ file Nhóm chủ file Kích thước file (byte) Ngày giờ tạo file Tên file drwxr-xr-x 2 root root 4096 Oct 12 10:14 thumuc1 Kiểu file Trong Linux, các file và thư mục ẩn có tên luôn bắt đầu bằng dấu chấm (.) và chỉ khi có tham số -a trong lệnh ls mới hiện ra, trên hình vẽ có 1 file ẩn là .config và 2 thư mục ẩn là chấm (.) và chấm chấm ( ). Trong một thư mục bất kì cũng luôn có hai thư mục ẩn chấm (.) và chấm chấm ( ) tương ứng với thư mục hiện hành (kí hiệu . ) và thư mục cha (kí hiệu ) khi dùng lệnh cd. (Kiểu file, quyền thao tác với file, số liên kết với file xem ở phần sau.) Tên file và thư mục trong Linux có thể chứa mọi kí tự trừ / vì để dành cho kí hiệu root. Tên có thể chứa các kí tứ đặc biệt (dấu cách và ! @ # $ & ~ % * ( ) [ ] { } ’ " \ : ; > < ‘ ) nhưng trước đó phải thêm dấu \ hoặc tốt nhất là để tất cả trong dấu ngoặc kép. Ví dụ: cd /My\ File hoặc cd /“My File” để vào thư mục “My File” dưới /. Để hiển thị nội dung file dùng lệnh cat tên_file, nhưng với những file text dài người dùng không thể cuộn lên cuộn xuống từng trang màn hình để xem được. Muốn vậy dùng lệnh less hoặc more. (chú ý tuy tên gọi như vậy nhưng less ra đời sau và cải tiến hơn more). Với less dùng các phím mũi tên, phím PgUp, PgDown để xem; với more dùng phím Space bar để tiến, b để lùi. Cuối cùng bấm q để quit. 5 thao tác cơ bản với file và thư mục: tạo mới, đổi tên, di chuyển, copy, xóa a. Tạo thư mục mới: mkdir <tên_thumuc> (viết tắt của make directory) b. Tạo một file mới bằng lệnh cat > tên_file, sau đó gõ nội dung file, cuối cùng bấm CTRL + D để lưu file. Nếu tên_file đã có sẵn thì lệnh cat > tên_file sẽ ghi đè, muốn ghi tiếp vào cuối file (append) thì dùng lệnh cat >>tên_file. Để tạo một file rỗng dùng lệnh touch <tên file>. Ví dụ: touch file1 file2 – lệnh này tạo 2 file rỗng tên là file1, file2 cùng lúc. c. Đổi tên/di chuyển file và thư mục: mv <source> <target>. i. Ví dụ 1: mv X Y: đổi tên file/thư mục X thành Y mv X /Y: di chuyển file/thư mục X vào trong thư mục/Y. ii. Ví dụ 2: mv * di chuyển tất cả file, thư mục trong thư mục hiện thời ra thư mục cha. d. Copy file và thư mục: cp <source> <target> Nếu copy thư mục không rỗng phải thêm tham số -r (hoặc – – recursive) thành cp – r Ví dụ 1: chép toàn bộ file và thư mục con trong thư mục hiện hành vào thư mục /target (đã có sẵn): cp –r * /target Ví dụ 2: chép thư mục /source vào thư mục hiện hành: cp –r /source . (chú ý dấu chấm ở cuối) e. Xóa file hoặc thư mục rỗng: rm <tên file hoặc thư mục> (ngoài lệnh này Linux cũng có lệnh rmdir giống DOS để xóa thư mục rỗng). Nếu thư mục không rỗng phải thêm tham số -r (hoặc recursive). Tuy nhiên người dùng sẽ phải xác nhận việc xóa từng file và thư mục con, để xóa không cần hỏi dùng thêm tham số -f (hoặc - - force). Tóm lại để xóa một thư mục một cách nhanh nhất dùng lệnh r m –rf Ví dụ: rm –rf * xóa tất cả những gì có trong thư mục hiện thời c. Midnight Commander (mc) Nếu bạn không có giao diện đồ họa KDE, GNOME … thì việc thao tác với file, thư mục bằng cách gõ lệnh có thể là một cực hình. Lúc đó hãy dùng phần mềm Midnight Commander (lấy cảm hứng từ phần mềm Norton Commander kinh điển của thời DOS), nếu Linux đã cài phần mềm này thì chỉ cần gõ lệnh mc. Giao diện MC, NC có 2 khung cửa sổ vói file, thư mục; các thao tác như cp/mv/mkdir/rm/cat/vi được thực hiện bằng phím tắt F5/F6/F7/F8/F3/F4 vô cùng tiện lợi và nhiều tính năng khác. 9/18 d. Link Trong Linux có một kiểu file là link, là một con trỏ trỏ tới một file khác. Có hai loại link là soft link và hard link: khái niệm softlink giống như shortcut trong windows, hardlink chỉ là một cái tên bí danh cho một file đã có sẵn. Chi tiết hơn về link cần có kiến thức về Ext2 filesytem mà ở đây không đề cập đến, chỉ nêu ra những đặc điểm dễ thấy trong thực hành: Soft link Hard link Trỏ tới file hoặc thư mục Chỉ trỏ tới file Có thể nằm ở bất cứ đâu Chỉ nằm trên cùng partition với file gốc Nếu file, thư mục gốc bị rename, move, delete thì link sẽ bị hỏng Nếu file, thư mục gốc bị rename, move, delete thì link không bị hỏng Lệnh ln tạo link có tham số -s (soft): ln –s <tên File> <tên Link> Lệnh ln tạo link không tham số: ln <tên File> <tên Link> Khi ls-l, bên cạnh tên các softlink có dấu mũi tên trỏ đến file gốc, thông tin về hardlink của một file trùng y nguyên với file gốc. -rw 1 root root 223 Oct 12 10:14file lrwxrwxrwx 1 root root 9 Oct 12 10:14softlink  file -rw 2 root root 223 Oct 12 10:14hardlink e. Archive và Compress file Hai thao tác: archive – gộp nhiều file lại thành một file, compress – nén file để có size nhỏ hơn rất được ưa dùng (Người dùng Windows thường coi thao tác nén hiển nhiên là đã bao hàm thao tác gộp nhiều file). Trong UNIX/Linux, định dạng file archive phổ biến nhất là .tar (những file .tar còn được gọi là tarball), định dạng file nén phổ biến nhất là .gz hoặc .bz. Chương trình quen thuộc làm việc với những file này là tar, gzip, bzip2. Người sử dụng khi download một software nào đó ở dạng source code luôn phải gặp file kiểu tar và gz. Khi dùng các lệnh tar, gzip, bzip2, zip như ở dưới đây nếu thành công sẽ không có thông báo gì, do đó nên thêm tham số -v ( verbose) để hiển thị thêm các thông tin: danh sách các file được (un)tar, tỉ lệ nén, … tar: gộp/tách nhiều file, thư mục thành một file .tar tar file: tar –cf <tên file se tar thành> <danh sách các file/thư mục cân tar> Ví dụ: tar –cvf tarball.tar file1 file2 file3 DIR1 DIR2 xem các file có trong file tar: tar –tf <file.tar> untar file ra thư mục hiện thời: tar –xf <file.tar> Tham số -c nghĩa là create, -x nghĩa là extract, t (hoặc list) nghĩa là list, f để chỉ làm việc với file gzip (GNU zip) nén/giải nén một file thành file .gz gz file: gzip <tên_file>. Cẩn thận: sau lệnh này file gốc “tên_file” sẽ bị replace bằng file mới có tên là “tên_file.gz” ! ungzip file: gunzip <file.gz> hoặc gzip –d <file.gz>. (d viết tắt của decompress) Chú ý: gzip chỉ làm nhiệm vụ nén một file, còn muốn nén nhiều file trước đó phải dùng tar. Các gzipped tarbal ngoài có đuôi là .tar.gz còn có đuôi là tgz. Trên một số Linux distro có thể đồng thời ungzip và untar bằng một lệnh: tar –xzf <tên gzipped tarbal> bzip2 tương tự như gzip với bzip2 để nén, bunzip2 hoặc bzip2 –d để giải nén zip nén nén nhiều file, thư mục thành một file. 10/18 [...]... vì >, cụ thể là dùng 2> >, 1>> (hoặc >>) thay vì 2> , 1> (hoặc >) Ví dụ 5: cat >> my_file ghi vào phần cuối file my_file Khi muốn cả stdout và stdin cùng gắn vào một file nào đó thì an toàn nhất là dùng lệnh command 1> file 2> &1 hoặc command 2> file 1> &2 hoặc command &> file Ở đây 2> &1 (hoặc 1> &2) hoặc &> có nghĩa là 2> (hoặc 1>) được gắn vào cùng file của 1> (hoặc 2> ) tức là cả 2 std cùng gắn vào một... lệnh sau: command 2> file 2> &1 // kết quả không thay đổi gì: &> màn hình command 2> &1 1>file // 2> màn hình, 1>file command 1>file 2> &1 // &>file command 1> &2 2>file // 1>màn hình, 2> file Khi không muốn xuất 1> và 2> ra đâu thì hãy xuất vào /dev/null 15/18 Ví dụ 7: ls –l &> /dev/null thì thông báo lỗi và kết quả sẽ không hiện ra trên màn hình hay ở đâu hết b Pipe và kết hợp với grep, wc, sort, less Khi... trong file list.txt, mỗi dòng một file, dùng lệnh cat list.txt | xargs rm –f Lệnh xargs: command1 | xargs command2 dùng để đưa stdout của command1 thành đối số của command2 Nếu stdout của command1 gồm n dòng (n>1) thì sẽ có n lệnh command2 được thực hiện mà mỗi lệnh có đối số là một dòng của stdout Người mới làm quen với pipe thường nghĩ rằng có thể thực hiện yêu cầu trên bằng lệnh: cat list.txt | rm –f... chi tiết xem tại http://tldp.org/LDP /Linux- Filesystem-Hierarchy/html/) 12/ 18 7 Khái niệm file theo nghĩa rộng trong UNIX /Linux Người sử dụng Windows đã quen với file và thư mục, sang Linux khái niệm “file” được mở rộng hơn, bao trùm cả file và thư mục đồng thời cả các device, socket, pipe Thư mục có những đặc điểm giống với file: - với file có thao tác đọc ghi thì với thư mục cũng có thao tác đọc ghi... lượt 2> ghi vào file và làm mất nội dung của 1>, do đó nên dùng 1>> &2 (hoặc 2> >&1) Nếu bạn nghĩ rằng tại sao không dùng lệnh command 2> file 1> file” để đỡ phải rối mắt với kí hiệu & ? Suy nghĩ này hợp lý nhưng các shell không chấp nhận cách viết như thế này Khi BASH shell thực thi một lệnh nó phân tích lệnh từ trái sang phải, nên cần chú ý thứ tự redirection Ví dụ 6: Phân biệt 4 lệnh sau: command 2> file... thì: o Stdin của cat được gắn với myfile.txt, cat đọc dữ liệu từ stdin vào buffer o Stdout của cat được gắn với màn hình, cat ghi dữ liệu từ buffer vào stdout - Như vậy bản thân lệnh cat đã không theo mặc định gắn stdin với bàn phím mà gắn stdin với myfile.txt, thế nên lệnh cat < myfile.txt là tương đương với cat myfile.txt - Lệnh cat < source_file > target_file tương đương với cp source_file target_file... process (lệnh) này vào 0> của process (lệnh) khác có thể dùng file trung gian command_ x 1> file command_ y 0< file nhưng hiệu quả hơn là dùng command_ x | command_ y (chú ý dấu | ) Công việc này gọi là pipe truyền thông liên tiến trình Ví dụ: Lệnh ls-l someDir nhiều khi in ra quá 1 trang màn hình Lệnh less có khả năng hiển thị file với chức năng cuộn lên cuộn xuống trang màn hình Kết hợp lại được: ls –l someDir... nhận” được rằng “thư mục cũng là file” Qua các bài sau về device, socket, pipe bạn đọc rồi cũng sẽ thấy những khái niệm này có nét chung với khái niệm file nên có thể khái quát hóa lên tất cả là file Người ta thường hay nói Với *nix mọi thứ đều là file, nếu không là process” File (theo nghĩa rộng, nhưng từ đây trở đi ta chỉ nói file không thôi) trong Linux gồm 7 kiểu sau: Loại file Kí hiệu Regular... Standard input 0< (hoặc (hoặc Ví dụ 2: lệnh ls –l - Nếu muốn kết quả của lệnh thay vì được in ra màn hình mà in ra file /root/result.txt hoặc nếu có lỗi thì ghi ra file /roo/error.txt: o ls –l > /root/result.txt 2> /root/err.txt o hoặc dạng đầy đủ tương đương: ls –l 1> /root/result.txt - 2> /root/err.txt Giả sử có file place.txt lưu đường dẫn của một thư mục,... dòng có thứ tự bất kì trong file Ví dụ có file Table lưu bảng dữ liệu, dòng đầu ghi tiêu đề của các cột, từ dòng thứ 2 trở đi mới ghi các dòng dữ liệu Hiển thị dòng dữ liệu đầu tiên của bảng: head –n 2 Table | tail –n 1 Ngoài kết hợp với grep, wc, less, … rất mạnh mẽ; pipe có thể kết hợp với lệnh tee để đưa stdin của một lệnh vừa ra stdout vừa vào một file Ví dụ: ls –l | tee list.txt lệnh này vừa liệt

Ngày đăng: 25/04/2015, 01:23

Tài liệu cùng người dùng

Tài liệu liên quan