+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\[email protected]:~/ll/shell-script$ alias test_alias="ls"
FRAMGIA\[email protected]:~/ll/shell-script$ test_alias
123456789  backup.sh  test.txt
FRAMGIA\[email protected]:~/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\[email protected]:~/ll/shell-script$ ./backup.sh -a
option is a
FRAMGIA\[email protected]:~/ll/shell-script$ ./backup.sh -d
option is d
FRAMGIA\[email protected]:~/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\[email protected]:~/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\[email protected]:~/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
Let's register a Viblo Account to get more interesting posts.