+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

Bình luận

Đăng nhập để bình luận
Avatar
@quynh001
thg 6 22, 2017 4:22 SA

@pham.huy.cuong Em đang tìm hiểu vagrant, cụ thể là Homestead (laravel) thì thấy rằng người ta sử dụng shell scripts cho việt chạy các cài đặt hoặc thiết lập cho máy ảo. Em có tìm kiếm trên google nhưng cảm thấy chưa link nào phù hợp lắm. Theo em hiểu thì shell scripts này chỉ dùng được cho mac(unix) hoặc ubutu phải không anh? Ngoài ra anh có thể gợi ý thêm cho em một vài trang để học shell scripts languages được không ạ? Em cảm ơn.

Avatar
@pham.huy.cuong
thg 6 22, 2017 4:45 SA

@quynh001 Shell script thường thì người chỉ nói đến script cho các loại shell trên Unix hoặc Linux (sh, bash, v.v...). Các hệ điều hành Unix, Linux thì các shell đã được tích hợp sẵn, tuy nhiên Windows vẫn có thể sử dụng được nếu bạn cài đặt thêm. Nhưng để lập trình thì mình nghĩ nên sử dụng Linux (Ubuntu là một lựa chọn tốt) vì việc cài đặt các thư viện hay package sẽ dễ dàng hơn. Để học shell script thì bạn có thể bắt đầu làm quen với trang này, hoặc có thể tham khảo thêm trang này để biết rõ thêm về nhiều lệnh.

Avatar
@quynh001
thg 6 22, 2017 5:07 SA

Em cảm ơn anh. Bài viết của anh rất thú vị, mong anh sẽ tiếp tục có những bài viết thú vị khác.

Avatar
+1
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í