+1

Introduction to Shell

1. Thao tác với file

  • Để biết bạn đang ở đâu trong hệ thống file:
pwd
  • Nếu đường dẫn bắt đầu bằng '/' thì nó là đường dẫn tuyệt đối (absolute)
ls /home/repl/course.txt
  • KHÔNG bắt đầu bằng '/' thì nó là đường dẫn tương đối (relative)
ls course.txt
  • Đang ở /home/repl

  • Nếu gõ cd seasonal -> sẽ chuyển đến /home/repl/seasonal

  • Nếu gõ cd .. -> sẽ chuyển về /home

  • Copy

$ cp seasonal/summer.csv backup/summer.bck
// Chuyển file summer.csv từ seasonal sang backup

$ cp seasonal/spring.csv seasonal/summer.csv backup
// Chuyển file spring.csv và summer.csv vào folder backup
  • Move: di chuyển
$ mv seasonal/spring.csv seasonal/summer.csv backup
  • Remove: xóa
$ rm thesis.txt backup/thesis-2017-08.txt
// Xóa cả file thesis.txt và backup/thesis-2017-08.txt

** Để tránh xóa nhầm, có cách sau dùng để xóa các folder trống:

rmdir hoặc -r
  • Tạo thư mục mới
$ mkdir tên_thư_mục

2. Thao tác với dữ liệu

  • Để đọc nội dung trong file: cat địa_chỉ VD: cat course.txt

  • Nếu file có độ dài lơn thì có thể dùng: less địa_chỉ -> sẽ chia file thành các phần nhỏ sau đó nhấn: space -> xuống trang dưới :n -> chuyển sang tệp tiếp theo :q -> thoát

  • Để in ra 10 dòng đầu của file head địa_chỉ

  • Khi gõ vài từ đầu của địa_chỉ sau đó ấn tab thì shell sẽ tự động hoàn thiện lệnh VD: gõ cd sea -> ấn tab -> cd seasonal/

  • head -n seasonal/summer.csv // Thay n bằng một số -> nó sẽ in ra n dòng đầu tiên

  • ls -R -F /home/repl ls -F -R /home/repl ls -R /home/repl ls -F /home/repl // Tìm hiểu thêm sự khác biệt của 4 lệnh trên

  • Để xem cách sử dụng, cú pháp của một từ khóa: man ... VD: man tail

  • cut -b 1,2,3 state.txt And Aru Ass Bih Chh

  • Để lặp lại bước đã thực hiện -> sử dụng ! VD: !head summer.csv

  • Kiểm tra lịch sử dùng lệnh: history

  • Để tìm kiếm các từ, cụm từ: grep VD: grep bicuspid winter.csv tìm các dòng có từ bicuspid trong winter.csv

  • grep đi với các flag: -c : in số lượng dòng phù hợp (count) -h : không in tên file khi tìm kiếm nhiều file -i : bỏ qua các trường hợp (VD: 'Regression' và 'regression' là như nhau) -l : in tên các tệp có kết quả trùng/không trùng khớp -n : in số dòng cho các dòng phù hợp -v : chỉ hiển thị các dòng không khớp

VD: Tìm kiếm $ grep 07-1 seasonal/spring.csv 2017-07-10,incisor 2017-07-16,bicuspid

  • Lưu file head -n 5 seasonal/summer.csv > top.csv // Lưu 5 dòng đầu trong summer.csv vào top.csv

  • Các ký hiệu quan trọng

    • giúp rút ngắn thời gian và tránh sót VD: cut -d , -f 1 seasonal/* hoặc: cut -d , -f 1 seasonal/*.csv

    ? thay thế 1 ký tự (giống _ trong SQL) VD: 201?.txt -> 2017.txt hoặc 2018.txt hoặc ...

    [...] khớp với bất kỳ ký tự nào trong đó VD: 201[78].txt khớp với 2017.txt hoặc 2018.txt, nhưng không khớp với 2016.txt

    {...} khớp với bất kỳ ký từ nào phân cách bằng dấu phẩy VD: {*.txt, *.csv} khớp với *.txt, *.csv nhưng không khớp với .pdf

  • Sắp xếp sort Các cờ: -n : sắp xếp theo số -r : sắp xếp từ lớn đến bé -b : bỏ qua các khoảng trống ở đầu -f : không phân biệt chữ hoa/thường

$ cut -d , -f 2 seasonal/winter.csv | grep -v Tooth | sort | uniq -c 4 bicuspid 7 canine 6 incisor 4 molar 4 wisdom

-> Sắp xếp -> count distinct của từng loại rồi in ra

$ wc -l seasonal/*.csv 21 seasonal/autumn.csv 24 seasonal/spring.csv 25 seasonal/summer.csv 26 seasonal/winter.csv 96 total

  • Shell lưu trữ thông tin thế nào Variable Purpose Value

HOME User's home directory /home/repl PWD Present working directory Giống lệnh pwd SHELL Which shell program is being used/bin/bash USER User's ID repl

** Shell lưu trữ 2000 lệnh cũ

  • Đặt giá trị cho biến: testing=seasonal/winter.csv ** Lưu ý: Không được để dấu " " trước hoặc sau dấu =

  • Vòng lặp: Cấu trúc: for …variable… in …list… ; do …body… ; done VD: for filetype in gif jpg png; do echo $filetype; done

-> in ra: gif jpg png

VD2: for i in people/*; do echo $i; done

-> in ra: people/agarwal.txt people/bfc.txt

nano tên_file : sử dụng để chỉnh sửa file Ctrl + K: xóa dòng Ctrl + U: un-delete dòng vừa xóa Ctrl + O: lưu file Ctrl + X: exit khỏi editor

cp seasonal/s* ~ // copy seasonal/s* vào thư mục chính

  • Để chạy file, có thể lưu trữ lệnh trong shell bằng cách tạo file .sh VD: nano headers.sh // tạo file

  • Khi chạy, chỉ cần nhập: bash headers.sh


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí