Skip to content

Instantly share code, notes, and snippets.

View benwei's full-sized avatar

ben6 benwei

View GitHub Profile
@benwei
benwei / bash_arguments_example.sh
Last active February 22, 2019 15:56
Use bash to implement like C's argc and argv
#!/usr/bin/env bash
# Copyright (C) 2019 by Ben Wei <ben@juluos.org>
# Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
# OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
######
# sample code of blog
## tested with bash 4.3.48 x86_64-pc-linux-gnu ubuntu-16.04.4 LTS
@benwei
benwei / Makefile.orangeos-ch1-a
Last active January 27, 2019 09:16
For testing with orangeos's example chapter1-a
# 2019-01-25 Ben Wei <ben@juluos.org>
IMAGE=a.img
BINFILE=boot.bin
all: $(IMAGE) $(BINFILE)
$(BINFILE): boot.asm
nasm boot.asm -f bin -o $(BINFILE)
dd if=$(BINFILE) of=./$(IMAGE) bs=512 count=1
$(IMAGE):
@benwei
benwei / hello_for_redis.lua
Created September 17, 2018 09:43
using multipe keys and arguments with lua script via redis-cli
-- redis-cli --eval hello.lua Tester " devops" , Argument1 " argument2"
-- KEYS[1] == "Tester"
-- KEYS[2] == " devops"
-- ARGV[1] == "Argument1"
-- ARGV[2] == " argument2"
local msg = "Hello, world," .. KEYS[1] .. KEYS[2] .. "!" .. ARGV[1] .. ARGV[2]
return msg
@benwei
benwei / Result_test_jq_get_raw_data_of_json_data.txt
Created September 12, 2018 06:10
JSON get specific field of json data by jq command
$ echo '{"ip":"8.8.8.8","a":"11"}' | jq -r '. | {"ip"} | .[]'
8.8.8.8
@benwei
benwei / display_line_of_files.sh
Last active September 11, 2018 03:49
[ben notes] Display total line number of each file
ls *.py | while read fn ; do line_num=`cat "$fn" | wc -l`; echo "\"$fn\",$line_num" ; done
@benwei
benwei / output of jq
Created September 5, 2018 10:57
test json with jq command
# jq tool: https://github.com/stedolan/jq
$ echo '[{"a":"2"}]' | jq '.[]'
{
"a": "2"
}
$ echo '[{"a":"2"}]' | jq '.[] | .["a"]'
"2"
# view with online tool jqplay
## https://jqplay.org/s/OrtlyrkIyg
@benwei
benwei / gen_md5sum_of_folder.sh
Created August 29, 2018 01:18
Generate single check sum of a directory's contents
#!/bin/sh
target="$1"
if [ -z "$target" ]; then
echo "syntax: <folder-name>"
exit 1
fi
find $target -type f -exec md5sum {} + | cut -d" " -f1 | sort | md5sum | cut -d" " -f1
exit $?
@benwei
benwei / trim_sp_txtfiles.sh
Created April 13, 2018 14:12
trim space chars in txt filename in current directory
find *.txt | grep " " | while read fn ; do xfn=`echo $fn | tr -d ' '`; mv "$fn" "$xfn" ; done
@benwei
benwei / check_threads_status_in_a_process.txt
Last active November 28, 2017 03:41
How to check thread load within a process in embedded linux system?
How to check threads status within a process in embedded linux system?
Author: Ben Wei 2017-11-28
system linux kernel 3.10.73+
# ps aux | grep pulseaudio | grep -v grep
pulse 142 7.5 4.3 44312 4664 ? S<sl Nov24 406:35 /usr/bin/pulseaudio --daemonize=no
## use top command with -H, you can browse the thread load in the file
# top -H -p 142
@benwei
benwei / date_convert_osx_example.sh
Created January 28, 2016 04:16
MacOS convert timestamp by date command with GNU bash
#!/bin/bash
# author: terry, ben
# tested GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
# FYR (for Mac OS, may need some change for linux)
# second -> ISO8601
date -u -r 1453951368 +%FT%TZ
## ouptput: 2016-01-28T03:22:48Z
# ISO8601 -> second
date -ju -f "%FT%TZ" 2016-01-28T03:22:48Z +%s
## output: 1453951368