<![CDATA[Latest posts for the topic "Tóm tắt Linux Shell Programming"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Tóm tắt Linux Shell Programming Tóm tắt Linux Shell Programming Tạo file script * Soạn thảo file text, đặt tên file shellfile (có đuôi bất kỳ), dòng đầu tiên có dòng sau: #!/bin/sh, sau đó là các lệnh Shell hoặc các lệnh Linux. * Chạy các lệnh sau để có thể chạy được chmod +x shellfile , sau đó có thể chạy bằng lệnh ./shellfile Ý nghĩa các ký tự * Bắt đầu bằng dấu '#'- ký hiệu rằng dòng đấy là comment. * Dấu ngoặc đơn 'a' sẽ in nguyên văn đoạn text trong ngoặc. * Dấu "a", sẽ in nguyên văn đoạn text, trong đó biến có thể được thay giá trị. Các biến * Biến không cần phải khai báo trước, bắt đầu bằng chữ cái (ví dụ là var), khi tham chiếu thì thêm dấu $ ở trước, ví dụ $var. (gán var=2; thì khi echo $var, sẽ cho kết quả là 2). * có thể dùng biến và nối với ký tự như sau: ${var}nd thì kết quả trả về 2nd. Pipes, wwwection and backtick * pipes (|) gửi đầu ra output (stdout) của một tiến trình sang đầu vào (stdin) của mộ tiến trình khác. Code:
grep "hello" file.txt | wc -l
* wwwection: ghi đầu ra output của mọt chương trình ra một file khác hoặc nối vào file khác > ghi ra file, nếu nó đã tồn tại thì ghi đè nó >> Nối vào file cũ nếu đã tồn tại hoặc nếu chưa có thì tạo ra file mới và ghi dữ liệu vào đó. * Backtick Đầu ra của một chương trình được sử dụng làm tham số cho chương trình khác (không phải như đầu vào stdin như ở trên) cho một lệnh khác. Bạn cũng có thể dùng đầu ra output như là biến, tham số của chương trình khác. Lệnh Code:
find . -mtime -1 -type f -print
sẽ tìm tất cả các file được thay đổi trong vòng 24 giờ qua (-mtime -2 sẽ là 48). Nếu bạn muốn nén lại thành một file để lưu trữ thì lệnh có thể được sử dụng như: Code:
tar xvf file.tar infile1 infile2 ...
Bạn có thể gộp hai lệnh đó và dùng dấu (`), không phảit dấu ngoặc đơn ('): Code:
#!/bin/sh
      # Sử dụng dấu (`)  không phải dấu ('):
      tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
Lệnh có cấu trúc * Lệnh "if": kiểm tra điều kiện đúng : Code:
if ....; then
      ....
      elif ....; then
      ....
      else
      ....
      fi
* Lệnh "test" thường được viết như " [ ] ". Lưu ý là phải có dấu cách sau và trước dấu "[ ]". Ví dụ: [ -f "somefile" ] : Test if somefile is a file. [ -x "/bin/ls" ] : Test if /bin/ls exists and is executable. [ -n "$var" ] : Test if the variable $var contains something [ "$a" = "$b" ] : Test if the variables "$a" and "$b" are equal Gõ lệnh "man test" để có thêm các tham số. * Gõ tắt bằng các dấu &&||: [ -f "/etc/shadow" ] && echo "This computer uses shadow passwors" Dấu && được sử dụng như điều kiện và. Trong ví dụ trên : "Nếu /etc/shadow tồn tại và (AND) lệnh echo sẽ được thực hiện". Toán tử OR (||) cũng được sử dụng như ví dụ sau: Code:
#!/bin/sh
      mailfolder=/var/spool/mail/james
      [ -r "$mailfolder" ] || { echo "Can not read $mailfolder" ; exit 1; }
      echo "$mailfolder has mail from:"
      grep "^From " $mailfolder
Nếu có thư thì hiện các thư, còn không thì thông báo là không đọc được và kết thúc. * Lệnh Case: kiểm tra thoả mãn (using shell wildcards such as * and ?). Code:
case ... in
      ...) do something here;;
      esac
Ví dụ chúng ta có thể viết một chương trình smartzip có thể giải nén một cách tự động với các dạng: Code:
#!/bin/sh
      ftype=`file "$1"`
      case "$ftype" in
      "$1: Zip archive"*)
       unzip "$1" ;;
      "$1: gzip compressed"*)
       gunzip "$1" ;;
      "$1: bzip2 compressed"*)
       bunzip2 "$1" ;;
      *) error "File $1 can not be uncompressed with smartzip";;
      esac
Ở đây $1 là tham số (có thể đến $9, $* là tất cả các tham số) ví dụ smartzip articles.zip. * Lệnh select được sử dụng để tương tác lựa chọn các phương án khác nhau: Code:
select var in ... ; do
      break
      done
      .... now $var can be used ....
Ví dụ: Code:
#!/bin/sh
      echo "What is your favourite OS?"
      select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
           break
      done
      echo "You have selected $var"
Chương trình sẽ in ra màn hình:
What is your favourite OS? 1) Linux 2) Gnu Hurd 3) Free BSD 4) Other #? 1 You have selected Linux  
* Lệnh while-loop Code:
while ...; do
      ....
      done
* Lệnh for-loop Code:
for var in ....; do
      ....
      done
Nguồn : http://vkopensource.blogspot.com/]]>
/hvaonline/posts/list/2477.html#13241 /hvaonline/posts/list/2477.html#13241 GMT
Tóm tắt Linux Shell Programming /hvaonline/posts/list/2477.html#209221 /hvaonline/posts/list/2477.html#209221 GMT Tóm tắt Linux Shell Programming

actuladn wrote:
anh cho em hỏi. shell, script có thể kết nối với csdl sql ? giả sử in giá trị nào đó trong csdl thì có làm được không? 
Làm được. Bạn có thể đọc option -e trong man mysql hoặc đọc về Here Document: http://tldp.org/LDP/abs/html/here-docs.html]]>
/hvaonline/posts/list/2477.html#209228 /hvaonline/posts/list/2477.html#209228 GMT
Tóm tắt Linux Shell Programming mysql snort -p<<EOFMYSQL SELECT * from signature; EOFMYSQL  thì vẫn hiện ra csdl nhưng khi thực thi đòi pass, có cách nào điền pass luôn không hay phải bỏ pass đi?>]]> /hvaonline/posts/list/2477.html#209302 /hvaonline/posts/list/2477.html#209302 GMT Tóm tắt Linux Shell Programming

actuladn wrote:
em thử như thế này
mysql snort -p<<EOFMYSQL SELECT * from signature; EOFMYSQL 
thì vẫn hiện ra csdl nhưng khi thực thi đòi pass, có cách nào điền pass luôn không hay phải bỏ pass đi?> 
Bạn có thể gọi luôn password từ command hoặc lưu nó vào đâu đó. PS: thử ngâm cứu thằng Expect xem: http://expect.nist.gov/ ]]>
/hvaonline/posts/list/2477.html#209314 /hvaonline/posts/list/2477.html#209314 GMT
Tóm tắt Linux Shell Programming mysql_fetch_assoc]]> /hvaonline/posts/list/2477.html#209404 /hvaonline/posts/list/2477.html#209404 GMT Tóm tắt Linux Shell Programming

actuladn wrote:
cám ơn anh quanta, đã khắc phục được nhưng với đoạn script khác. anh quanta có tài liệu nào về cách lấy từng dòng dữ liệu không? bên PHP có lệnh như thế này mysql_fetch_assoc 
Bạn thử cách này xem được không (mình chưa test): Code:
RESULT=`mysql -u<USERNAME> -p<PASSWORD> -e "use <YOUR_DATABASE>; select * from <YOUR_TABLE>;"`
for ROW in $RESULT; do
    echo $ROW
done
Tuy nhiên, mình đang tự hỏi là nếu bạn biết PHP sao bạn không dùng PHP luôn, hoặc Python hay Perl cũng được.]]>
/hvaonline/posts/list/2477.html#209414 /hvaonline/posts/list/2477.html#209414 GMT
Tóm tắt Linux Shell Programming /hvaonline/posts/list/2477.html#209424 /hvaonline/posts/list/2477.html#209424 GMT