2010-12-25

Script to generate script, takes care of read permission with sudo

Instead of edit checking afterwards a manual typed script, write a prove script to generate later on scripts.

System change, the script will change while if it can.

Build machine(s) to reproduce machines :)

put it into for example ~/.bashrc will generate a file for afterwards sourc-ing.

程式產生程式,以腳本產生腳本,
程式跟隨系統改變自行更新。

#!/bin/sh
P=/sys/devices/virtual/dmi/id/
OUTF=/tmp/thinkpad_info.sh
[ -d ${P} ] && {
printf "#!/bin/sh\n#\n# Usage: . ${OUTF}\n\n"
ls $P | while read F; do
[ -f "$P/${F}" ] && {
printf "alias thinkpad_${F}='"
[ -r "$P/${F}" ] || printf "sudo "
printf "cat $P${F}'\n"
}
done
} > "${OUTF}"
view raw temp.sh hosted with ❤ by GitHub
#!/bin/sh
#
# Usage: . /tmp/thinkpad_info.sh
alias thinkpad_bios_date='cat /sys/devices/virtual/dmi/id/bios_date'
alias thinkpad_bios_vendor='cat /sys/devices/virtual/dmi/id/bios_vendor'
alias thinkpad_bios_version='cat /sys/devices/virtual/dmi/id/bios_version'
alias thinkpad_board_asset_tag='cat /sys/devices/virtual/dmi/id/board_asset_tag'
alias thinkpad_board_name='cat /sys/devices/virtual/dmi/id/board_name'
alias thinkpad_board_serial='sudo cat /sys/devices/virtual/dmi/id/board_serial'
alias thinkpad_board_vendor='cat /sys/devices/virtual/dmi/id/board_vendor'
alias thinkpad_board_version='cat /sys/devices/virtual/dmi/id/board_version'
alias thinkpad_chassis_asset_tag='cat /sys/devices/virtual/dmi/id/chassis_asset_tag'
alias thinkpad_chassis_serial='sudo cat /sys/devices/virtual/dmi/id/chassis_serial'
alias thinkpad_chassis_type='cat /sys/devices/virtual/dmi/id/chassis_type'
alias thinkpad_chassis_vendor='cat /sys/devices/virtual/dmi/id/chassis_vendor'
alias thinkpad_chassis_version='cat /sys/devices/virtual/dmi/id/chassis_version'
alias thinkpad_modalias='cat /sys/devices/virtual/dmi/id/modalias'
alias thinkpad_product_name='cat /sys/devices/virtual/dmi/id/product_name'
alias thinkpad_product_serial='sudo cat /sys/devices/virtual/dmi/id/product_serial'
alias thinkpad_product_uuid='sudo cat /sys/devices/virtual/dmi/id/product_uuid'
alias thinkpad_product_version='cat /sys/devices/virtual/dmi/id/product_version'
alias thinkpad_sys_vendor='cat /sys/devices/virtual/dmi/id/sys_vendor'
alias thinkpad_uevent='cat /sys/devices/virtual/dmi/id/uevent'