📄 gdf.ksh
字号:
#!/bin/ksh## Graphical Disk Fill with HUG.# Using AWK for floatnumbers.## May 2008 - Peter van Eerten - GPL.##---------------------------------------------------------# Communication function; assignment functionfunction gtk { print -p $1; read -p GTK; }function define { $2 "$3"; eval $1="$GTK"; }# Get all sizes of partitionsINFO=`df | awk '/\// {print $2,$3,$6}'`AMOUNT=0COUNT=0# Put info in arraysfor i in $INFOdo if [[ $AMOUNT -eq 0 ]]; then SIZES[$COUNT]=$i fi if [[ $AMOUNT -eq 1 ]]; then USED[$COUNT]=$i fi if [[ $AMOUNT -eq 2 ]]; then NAMES[$COUNT]=$i ((AMOUNT-=3)) ((COUNT+=1)) fi ((AMOUNT+=1))doneIDX=0MAXSIZE=0# Find maximum sizewhile [[ $IDX -lt ${#SIZES[@]} ]]do if [[ ${SIZES[$IDX]} -ge $MAXSIZE ]]; then MAXSIZE=${SIZES[$IDX]} fi ((IDX+=1))done# Space between columnsMARGE=10# Start of first columnXPOS=20# Width of the columnslet WIDTH1=90let WIDTH2=80# Calculate widths depending on amount of mountslet SCREENW=$WIDTH1*${#SIZES[@]}+$MARGE*${#SIZES[@]}+50let FRAMEW=$SCREENW-10let CANVASW=$SCREENW-30let LINEW=$SCREENW-50# Start GTK-server in STDIN modegtk-server -stdin |&# Define GUI - mainwindowdefine WIN gtk "u_window \"'Graphical Disk Fill'\" $SCREENW 400"gtk "u_bgcolor $WIN #FFFFFF"# Attach framedefine FRAME gtk "u_frame $FRAMEW 390"gtk "u_bgcolor $FRAME #FFFFFF"gtk "u_frame_text $FRAME \"' Disk Usage Graph '\""gtk "u_attach $WIN $FRAME 5 5"# Setup the drawing canvas, draw stuffdefine CANVAS gtk "u_canvas $CANVASW 365"gtk "u_attach $WIN $CANVAS 10 25"# Draw axisgtk "u_line #000000 20 340 $LINEW 340"IDX=0while [[ $IDX -lt ${#SIZES[@]} ]]do # Draw columns HEIGHT=`awk -v M=$MAXSIZE -v S=${SIZES[$IDX]} 'BEGIN{print int(S/M*310)}'` let YPOS=340-$HEIGHT gtk "u_square #00FF11 $XPOS $YPOS $WIDTH1 $HEIGHT 1" gtk "u_square #000000 $XPOS $YPOS $WIDTH1 $HEIGHT 0" # Draw amount ((YPOS-=15)) gtk "u_out ${SIZES[$IDX]} #007700 #FFFFFF $XPOS $YPOS" # Draw usage ((XPOS+=5)) HEIGHT=`awk -v M=$MAXSIZE -v S=${USED[$IDX]} 'BEGIN{print int(S/M*310)}'` let YPOS=340-$HEIGHT gtk "u_square #FF1100 $XPOS $YPOS $WIDTH2 $HEIGHT 1" gtk "u_square #000000 $XPOS $YPOS $WIDTH2 $HEIGHT 0" # Draw text let YPOS=345 gtk "u_out \"'${NAMES[$IDX]}'\" #0000FF #FFFFFF $XPOS $YPOS" let XPOS=$XPOS+$WIDTH1+$MARGE-5 # Next column ((IDX+=1))done# Mainloopuntil [[ $EVENT = $WIN ]]do define EVENT gtk "u_event"donegtk "u_end"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -