Categories
Bash Script

Bash UNIT

pwd

Print working directory => In ra đường dẫn hiện tại của bạn

Mở folder tại vị trí hiện tại

MacOS:

open .

Ubuntu

xdg-open .

cat

cat là một trong những lệnh được sử dụng thường xuyên trong Unix system

cat được sử dụng để đọc file một cách tuần tự.

Sử dụng:

cat [options] [file_names]

Most used options:

  • -b, number non-blank output lines.  Số thứ tự của những dòng k trống được in ra
  • -n, number all output lines. Số thứ tự của các dòng
  • -s, squeeze multiple adjacent blank lines Không in ra dòng trống
  • -v, display nonprinting characters, except for tabs and the end of line character
cat file1.txt file.txt

cat -b file1.txt file.txt
cat -s file1.txt file.txt

Tail – Hiển thị x dòng cuối của file

Bạn muốn đọc file log? Oke, có thể dùng lệnh cat.

Nhưng nếu file quá dài, sau khi cat nhìn sẽ rất rối.

File log ghi log theo thứ tự từ trên xuống dưới, có nghĩa log gần nhất sẽ ở cuối file.

Vậy, bạn có thể chỉ cần đọc 10 dòng cuối của file để xem log gần đây có gì không.

tail error.log

Lệnh tail cho phép làm điều đó. Mặc định, nó sẽ in ra 1 dòng cuối cùng.

tail -3 error.log

Lệnh trên sẽ in ra 3 dòng cuối cùng

Tạo một file

touch folder
touch index.php

Tạo 1 file với content

echo "Hello Wiloke" > index.php
cat index.php

> được gọi là Redirect

Tạo 1 folder

mkdir my-folder

Chỉnh sửa file với nano

nano index.php // mở file
Ctrl + X // Lưu file Sau khi Control + X Enter y để lưu chỉnh sửa. C để quay trở lại nano. N để thoát nano và không lưu chỉnh sửa
Ctrl + A // Quay lại đầu dòng
Ctrl + E // Move xuống cuối dòng 
Ctrl + _ Sau đó Ctrl + V // (Jump to bottom of file)Di chuyển xuống cuối của file
Ctrl + _ Sau đó Ctrl + Y // (Jump to top of file)Di chuyển  đầu của file
Ctrl + W // Mở search 

Pipe (ống dẫn)

Pipe cho phép các lệnh với nhau để tạo dòng lệnh ngắn hơn. Để tạo cơ chế Pipe, ta dùng |

Ví dụ:

Trong my-folder có 3 files: a.php b.php và c.php. Sử dụng pipe command:

ls my-folder | > temporary.txt
cat temporary.txt

=> Kết quả nhận được là a.php b.php và c.php

Phân tích

=> ls my-folder => Lệnh này sẽ show ra các file dưới folder my-folder.

=> | => Tạo cơ chế pine => Khi tạo cơ chế pipe, kết quả của ls my-folder được sử dụng cho câu lệnh sau

=> > temporary.txt => Đây là lệnh redirect => Vậy nó sẽ viết a.php, b.php, c.php vào file temporary.txt

=> cat => Đọc file temporary.txt

Find

Chúng ta có các file/folder trong myfolder. Giả sử, chúng ta đang cd tại bash-unit và ta muốn tìm xem file index.php có ở trong myfolder hay không, chúng ta có thể dùng lệnh

find myfolder/ -name 'index.php'

Để tìm tất cả flder bắt có chứa sidebar

find myfolder/ -name 'sidebar*'

Để tìm chỉ các folder (d: directory)

find myfolder/ -type d

Để tìm chỉ các fie

find myfolder/ -type f

Grep

Ở trên, Chúng ta đã học lệnh find để tìm kiếm folder, file dưới một folder.

Tiếp theo, lệnh grep sẽ cho phép chúng ta tìm kiếm 1 từ trong text.

Ví dụ file index.php có text sau:

Dùng lệnh grep:

grep some index.php

=> Chúng ta tìm được

=> Tại sao từ Sometimes không match từ khoá tìm kiếm. Nguyên nhân bởi vì grep phân biệt chữ hoa và chữ thường.

Để tìm cả hoa và thường

grep -i some index.php

i trong insensitive (không nhạy cảm)

Sử dụng grep với Pine

ls myfolder | grep sidebar

Ở trên, ls myfolder sẽ trả lại kết quả là tất cả folder, file trong myfolder. Sử dụng grep để tìm folder, file có chứa sidebar.

Để tìm tất cả folder, file KHÔNG CHỨA sidebar:

ls myfolder | grep -v sidebar

v trong invert-match

 Tìm đệ quy:

Ví dụ trong myfolder có folder sub-folder. Trong sub-folder có file home.php và file home.php có chứa từ Sidebar

 Để tìm kiếm từ Sidebar trong myfolder

grep -r Sidebar myfolder

jq

Đọc thông tin file

jq là một  dòng lệnh nhẹ và linh hoạt để xử lí json https://stedolan.github.io/jq/

Để cài đặt jq trên Mac:

brew install jq

Ở trên, ta có file app.json

Để đọc thông tin của file, ta dùng lệnh sau

cat app.json|jq

Để đọc được name

cat app.json|jq '.name'

Trường hợp có một mảng như sau

Để đọc phần tử đầu tiên ta dùng lệnh

cat app.json|jq ".[0].name"

Để đọc name của từng mảng:

cat app.json|jq ".[].name" 

Thay thế giá trị trong file

Giả sử, ta muốn nâng giá trị version ở Listing.php lên 1

jq ".[0].version=.[0].version+1" app.json|sponge app.json

AFAIK (As far as I know) jq does not support in-place editing, so you must redirect to a temporary file first and then replace your original file with it, or use sponge utility from the moreutils package

Để cài đặt sponge, vui lòng chạy:

brew install moreutils

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s