Thứ Ba, 30 tháng 7, 2019

Cách sử dụng Unix/Linux Shell trong C code

Ok anh em... Sau đây mình có một số example cách sử dụng Unix Shell trong code C...

1. echo and C
#include <stdio.h>
#include <stdlib.h>

#define SHELLSCRIPT "\
#/bin/bash \n\
echo \"hello\" \n\
echo \"how are you\" \n\
echo \"today\" \n\
"

int main()
{
    puts("Will execute sh with the following script :");
    puts(SHELLSCRIPT);
    puts("Starting now:");
    system(SHELLSCRIPT);
    return 0;
}



Để chạy program:
$ cc cprog.c -o cprog

$ ./cprog



2. Lấy thời gian của lệnh ping

ping 192.168.1.1
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=64 time=0.024 ms
64 bytes from 192.168.1.11: icmp_seq=4 ttl=64 time=0.031 ms
Ok,giờ muốn lấy tổng thời gian thực hiện các ICMP package... How to?

Solution:
ping -c 4 -n google.com | cut -d '=' -s -f4 | cut -d ' ' -f1
Ok,done...
Chú thích như sau:

  1. For the ping command:
    • -c 4: Stop after sending 4 packets
    • -n : Give numeric info only, not the associated names for the host address
  2. For the first cut command:
    • -d '=': Use the delimeter of the = sign
    • -f4 : Select the 4th field
    • -s : Do not print lines not containing delimiters
  3. For the second cut command:
    • -d ' ' : Use the delimeter of a space ' '
    • f1 : Select the first field

Còn 1 số Shell khá hay:
- Hiện thời gian thực:
ping 192.168.1.1 | grep -Po 'time=\K\S+'
Hoặc
ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print $1'
Hoặc dùng Awk
ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'


3. Đọc input từ Keyboard
Cái này giống như scanf() hay gets() trong C vậy...

Dữ liệu nhập vào sẽ được save trong biến $REPLY




read -p “ prompt_text”







4. Lưu dữ liệu trên Terminal

Để lưu lại các thao tác cũng như các dữ liệu hiển thị trên Terminal vào 1 File...
dùng: $script [file]
ví dụ:
$ script output.txt
Script started, file is output.txt

$ ls
output.txt  testfile.txt  foo.txt

$ exit
exit
Script done, file is output.txt

gõ exit để thoát và lưu vào File output.txt















Không có nhận xét nào:

Đăng nhận xét