+1

Một ít về shell script

Trong công việc đôi khi xử lý bằng shell script giúp ích cho bạn ít nhiều.

Bạn có thể xem qua link: https://www.shellscript.sh/

Đầu tiên để chạy ra một file shell script ta làm các bước sau:

Tạo ra một file giả sử tên là my-script.sh

#!/bin/sh
echo Hello World	

Sau đó chạy lệnh

chmod +x my-script.sh

Muốn chạy file này ta gọi

./my-script.sh

Sử dụng alias khá đơn giản: bạn gán alias test_alias="ls", sau đó gõ test_alias ngoài commander lệnh được gán phía trên sẽ chạy.

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ alias test_alias="ls"
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ test_alias
123456789  backup.sh  test.txt
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ 

Muốn tạo 1 function ta định nghĩa:

function hello_world
{
  echo Hello World
}

Muốn lấy option cùng lúc gọi file ta dùng getopts (https://www.mkssoftware.com/docs/man1/getopts.1.asp)

Ta có thể viết:

while getopts "ad" opt; do
  case $opt in
    a ) echo "option is a" ;;
    d ) echo "option is d" ;;
  esac
done

Sau đó test thử:

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./backup.sh -a
option is a
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./backup.sh -d
option is d
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ 

Việc viết Shell-Script cũng không đến nỗi quá khó, thử sử dụng để viết một lênh riêng của bạn, ví dụ làm cho lệnh ls -l show ra bảng chẳng hạn:

Đầu tiên ta lấy dữ liệu từ lệnh ls -l bằng cách

OIFS=$IFS; IFS=$'\n'; list_files=($(ls -ls)); IFS=$OIFS;
FILE_COUNTER="${#list_files[@]}"

Thêm các function header, body, footer

function header
{
  echo "---------------------------------------------------------------------------------------"
  echo "               Dir                    User                 Size Created at    File name"
  echo "---------------------------------------------------------------------------------------"
}

function body
{
  index=1

  while [ $index -lt $FILE_COUNTER ]
  do
    echo "${list_files[$index]}"
    index=`expr $index + 1`
  done
}

function footer
{
  total_file_counter=`expr $FILE_COUNTER - 1`
  echo "---------------------------------------------------------------------------------------"
  echo "Total: $total_file_counter files"
}

Cuối cùng là gọi các function đã được định nghĩa ở trên ra:

header
body
footer

Ta thử chạy file list_file.sh trên command:

FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ ./list_file.sh 
---------------------------------------------------------------------------------------
               Dir                    User                 Size Created at    File name
---------------------------------------------------------------------------------------
4 -rw-r--r-- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users   10 Th06 15 11:39 123456789
4 -rwxrw-rw- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users 1203 Th06 22 08:24 backup.sh
4 -rw-rw-rw- 1 FRAMGIA\pham.huy.cuong FRAMGIA\domain^users   10 Th06 15 11:39 test.txt
---------------------------------------------------------------------------------------
Total: 3 files
FRAMGIA\pham.huy.cuong@pham:~/ll/shell-script$ 

Chỉ là một ứng dụng nho nhỏ để làm cho việc show file list theo ý thích của bạn, cảm ơn và hi vọng bài viết giúp ích trong công việc của bạn


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í