diff options
author | Aaron LI <aaronly.me@gmail.com> | 2016-03-31 10:57:34 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@gmail.com> | 2016-03-31 10:57:34 +0800 |
commit | c9c896dea2ba43551c4e10bd49666105449e9bd7 (patch) | |
tree | e94b73f17b2d776c2acd4c9549657f500c3dc7ce /cli | |
parent | 2b6cb9b655a53d43b32a8a211287c82f4f59999a (diff) | |
download | atoolbox-c9c896dea2ba43551c4e10bd49666105449e9bd7.tar.bz2 |
add all scripts/tools
Diffstat (limited to 'cli')
-rwxr-xr-x | cli/colors.sh | 37 | ||||
-rwxr-xr-x | cli/colortest.bash | 39 | ||||
-rwxr-xr-x | cli/colortest.lua | 22 | ||||
-rwxr-xr-x | cli/colortest.pl | 365 | ||||
-rwxr-xr-x | cli/colortest.py | 18 | ||||
-rwxr-xr-x | cli/colortest.rb | 26 | ||||
-rwxr-xr-x | cli/colortest.sh | 53 | ||||
-rwxr-xr-x | cli/csv2json.py | 67 | ||||
-rwxr-xr-x | cli/jpegs2pdf.sh | 42 | ||||
-rwxr-xr-x | cli/pdfmerge.sh | 23 | ||||
-rwxr-xr-x | cli/shrinkpdf.sh | 56 | ||||
-rwxr-xr-x | cli/term_color.sh | 28 | ||||
-rwxr-xr-x | cli/term_color_2.sh | 32 | ||||
-rwxr-xr-x | cli/term_color_3.sh | 33 | ||||
-rwxr-xr-x | cli/unzip-gbk.py | 26 | ||||
-rwxr-xr-x | cli/vimpager | 85 |
16 files changed, 952 insertions, 0 deletions
diff --git a/cli/colors.sh b/cli/colors.sh new file mode 100755 index 0000000..a28c261 --- /dev/null +++ b/cli/colors.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# https://gist.github.com/esundahl/1651086 + +function color_test { + # Daniel Crisman's ANSI color chart script from + # The Bash Prompt HOWTO: 6.1. Colours + # http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html + # + # This function echoes a bunch of color codes to the + # terminal to demonstrate what's available. Each + # line is the color code of one forground color, + # out of 17 (default + 16 escapes), followed by a + # test use of that color on all nine background + # colors (default + 8 escapes). + # + + T='gYw' # The test text + + echo -e "\n 40m 41m 42m 43m\ + 44m 45m 46m 47m" + + for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' \ + ' 32m' '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' \ + ' 35m' '1;35m' ' 36m' '1;36m' ' 37m' '1;37m'; + do + FG=${FGs// /} + echo -en " $FGs \033[$FG $T " + for BG in 40m 41m 42m 43m 44m 45m 46m 47m; do + echo -en "$EINS \033[$FG\033[$BG $T \033[0m" + done + echo; + done + echo +} + +color_test + diff --git a/cli/colortest.bash b/cli/colortest.bash new file mode 100755 index 0000000..c777b9e --- /dev/null +++ b/cli/colortest.bash @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# +# ANSI color scheme script featuring Space Invaders +# +# Original: http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921 +# Modified by lolilolicon +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' + +cat << EOF + + $f1 ▀▄ ▄▀ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4 ▀▄ ▄▀ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst + $f1 ▄█▀███▀█▄ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4 ▄█▀███▀█▄ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst + $f1█▀███████▀█ $f2▀▀███▀▀███▀▀ $f3▀█▀██▀█▀ $f4█▀███████▀█ $f5▀▀███▀▀███▀▀ $f6▀█▀██▀█▀$rst + $f1▀ ▀▄▄ ▄▄▀ ▀ $f2 ▀█▄ ▀▀ ▄█▀ $f3▀▄ ▄▀ $f4▀ ▀▄▄ ▄▄▀ ▀ $f5 ▀█▄ ▀▀ ▄█▀ $f6▀▄ ▄▀$rst + + $bld$f1▄ ▀▄ ▄▀ ▄ $f2 ▄▄▄████▄▄▄ $f3 ▄██▄ $f4▄ ▀▄ ▄▀ ▄ $f5 ▄▄▄████▄▄▄ $f6 ▄██▄ $rst + $bld$f1█▄█▀███▀█▄█ $f2███▀▀██▀▀███ $f3▄█▀██▀█▄ $f4█▄█▀███▀█▄█ $f5███▀▀██▀▀███ $f6▄█▀██▀█▄$rst + $bld$f1▀█████████▀ $f2▀▀▀██▀▀██▀▀▀ $f3▀▀█▀▀█▀▀ $f4▀█████████▀ $f5▀▀▀██▀▀██▀▀▀ $f6▀▀█▀▀█▀▀$rst + $bld$f1 ▄▀ ▀▄ $f2▄▄▀▀ ▀▀ ▀▀▄▄ $f3▄▀▄▀▀▄▀▄ $f4 ▄▀ ▀▄ $f5▄▄▀▀ ▀▀ ▀▀▄▄ $f6▄▀▄▀▀▄▀▄$rst + + + $f7▌$rst + + $f7▌$rst + + $f7 ▄█▄ $rst + $f7▄█████████▄$rst + $f7▀▀▀▀▀▀▀▀▀▀▀$rst + +EOF diff --git a/cli/colortest.lua b/cli/colortest.lua new file mode 100755 index 0000000..8f8c95f --- /dev/null +++ b/cli/colortest.lua @@ -0,0 +1,22 @@ +#!/usr/bin/env lua + +function cl(e) + return string.format('\27[%sm', e) +end + +function print_fg(bg, pre) + for fg = 30,37 do + fg = pre..fg + io.write(cl(bg), cl(fg), string.format(' %6s ', fg), cl(0)) + end +end + +for bg = 40,47 do + io.write(cl(0), ' ', bg, ' ') + print_fg(bg, ' ') + io.write('\n ') + print_fg(bg, '1;') + io.write('\n\n') +end + +-- Andres P diff --git a/cli/colortest.pl b/cli/colortest.pl new file mode 100755 index 0000000..767789e --- /dev/null +++ b/cli/colortest.pl @@ -0,0 +1,365 @@ +#!/usr/bin/env perl + +# by entheon, do whatever the hell you want with this file + +print "\n"; +print "*****************************\n"; +print "* XTERM 256Color Test Chart *\n"; +print "*****************************\n"; +print "* 16 = black\n"; +print "* 255 = white\n"; +print "*\n"; +print "* Usage:\n"; +print "* colortest.pl -w\n"; +print "* wide display\n"; +print "*\n"; +print "* colortest.pl -w -r\n"; +print "* wide display reversed\n"; +print "*\n"; +print "* colortest.pl -w -s\n"; +print "* extra spaces padding\n"; +print "*\n"; +print "* colortest.pl -w -r -s\n"; +print "* available combination\n"; +print "*\n"; +print "**************************\n"; + +if( $ARGV[0] eq "-w" || $ARGV[1] eq "-w" || $ARGV[2] eq "-w" ) { + push(@arr, [( "[38;5;16m 16: 00/00/00", "[38;5;17m 17: 00/00/5f", "[38;5;18m 18: 00/00/87", "[38;5;19m 19: 00/00/af", "[38;5;20m 20: 00/00/d7", "[38;5;21m 21: 00/00/ff")] ); + push(@arr, [( "[38;5;22m 22: 00/5f/00", "[38;5;23m 23: 00/5f/5f", "[38;5;24m 24: 00/5f/87", "[38;5;25m 25: 00/5f/af", "[38;5;26m 26: 00/5f/d7", "[38;5;27m 27: 00/5f/ff")] ); + push(@arr, [( "[38;5;28m 28: 00/87/00", "[38;5;29m 29: 00/87/5f", "[38;5;30m 30: 00/87/87", "[38;5;31m 31: 00/87/af", "[38;5;32m 32: 00/87/d7", "[38;5;33m 33: 00/87/ff")] ); + push(@arr, [( "[38;5;34m 34: 00/af/00", "[38;5;35m 35: 00/af/5f", "[38;5;36m 36: 00/af/87", "[38;5;37m 37: 00/af/af", "[38;5;38m 38: 00/af/d7", "[38;5;39m 39: 00/af/ff")] ); + push(@arr, [( "[38;5;40m 40: 00/d7/00", "[38;5;41m 41: 00/d7/5f", "[38;5;42m 42: 00/d7/87", "[38;5;43m 43: 00/d7/af", "[38;5;44m 44: 00/d7/d7", "[38;5;45m 45: 00/d7/ff")] ); + push(@arr, [( "[38;5;46m 46: 00/ff/00", "[38;5;47m 47: 00/ff/5f", "[38;5;48m 48: 00/ff/87", "[38;5;49m 49: 00/ff/af", "[38;5;50m 50: 00/ff/d7", "[38;5;51m 51: 00/ff/ff")] ); + push(@arr, [( "[38;5;52m 52: 5f/00/00", "[38;5;53m 53: 5f/00/5f", "[38;5;54m 54: 5f/00/87", "[38;5;55m 55: 5f/00/af", "[38;5;56m 56: 5f/00/d7", "[38;5;57m 57: 5f/00/ff")] ); + push(@arr, [( "[38;5;58m 58: 5f/5f/00", "[38;5;59m 59: 5f/5f/5f", "[38;5;60m 60: 5f/5f/87", "[38;5;61m 61: 5f/5f/af", "[38;5;62m 62: 5f/5f/d7", "[38;5;63m 63: 5f/5f/ff")] ); + push(@arr, [( "[38;5;64m 64: 5f/87/00", "[38;5;65m 65: 5f/87/5f", "[38;5;66m 66: 5f/87/87", "[38;5;67m 67: 5f/87/af", "[38;5;68m 68: 5f/87/d7", "[38;5;69m 69: 5f/87/ff")] ); + push(@arr, [( "[38;5;70m 70: 5f/af/00", "[38;5;71m 71: 5f/af/5f", "[38;5;72m 72: 5f/af/87", "[38;5;73m 73: 5f/af/af", "[38;5;74m 74: 5f/af/d7", "[38;5;75m 75: 5f/af/ff")] ); + push(@arr, [( "[38;5;76m 76: 5f/d7/00", "[38;5;77m 77: 5f/d7/5f", "[38;5;78m 78: 5f/d7/87", "[38;5;79m 79: 5f/d7/af", "[38;5;80m 80: 5f/d7/d7", "[38;5;81m 81: 5f/d7/ff")] ); + push(@arr, [( "[38;5;82m 82: 5f/ff/00", "[38;5;83m 83: 5f/ff/5f", "[38;5;84m 84: 5f/ff/87", "[38;5;85m 85: 5f/ff/af", "[38;5;86m 86: 5f/ff/d7", "[38;5;87m 87: 5f/ff/ff")] ); + push(@arr, [( "[38;5;88m 88: 87/00/00", "[38;5;89m 89: 87/00/5f", "[38;5;90m 90: 87/00/87", "[38;5;91m 91: 87/00/af", "[38;5;92m 92: 87/00/d7", "[38;5;93m 93: 87/00/ff")] ); + push(@arr, [( "[38;5;94m 94: 87/5f/00", "[38;5;95m 95: 87/5f/5f", "[38;5;96m 96: 87/5f/87", "[38;5;97m 97: 87/5f/af", "[38;5;98m 98: 87/5f/d7", "[38;5;99m 99: 87/5f/ff")] ); + push(@arr, [( "[38;5;100m 100: 87/87/00", "[38;5;101m 101: 87/87/5f", "[38;5;102m 102: 87/87/87", "[38;5;103m 103: 87/87/af", "[38;5;104m 104: 87/87/d7", "[38;5;105m 105: 87/87/ff")] ); + push(@arr, [( "[38;5;106m 106: 87/af/00", "[38;5;107m 107: 87/af/5f", "[38;5;108m 108: 87/af/87", "[38;5;109m 109: 87/af/af", "[38;5;110m 110: 87/af/d7", "[38;5;111m 111: 87/af/ff")] ); + push(@arr, [( "[38;5;112m 112: 87/d7/00", "[38;5;113m 113: 87/d7/5f", "[38;5;114m 114: 87/d7/87", "[38;5;115m 115: 87/d7/af", "[38;5;116m 116: 87/d7/d7", "[38;5;117m 117: 87/d7/ff")] ); + push(@arr, [( "[38;5;118m 118: 87/ff/00", "[38;5;119m 119: 87/ff/5f", "[38;5;120m 120: 87/ff/87", "[38;5;121m 121: 87/ff/af", "[38;5;122m 122: 87/ff/d7", "[38;5;123m 123: 87/ff/ff")] ); + push(@arr, [( "[38;5;124m 124: af/00/00", "[38;5;125m 125: af/00/5f", "[38;5;126m 126: af/00/87", "[38;5;127m 127: af/00/af", "[38;5;128m 128: af/00/d7", "[38;5;129m 129: af/00/ff")] ); + push(@arr, [( "[38;5;130m 130: af/5f/00", "[38;5;131m 131: af/5f/5f", "[38;5;132m 132: af/5f/87", "[38;5;133m 133: af/5f/af", "[38;5;134m 134: af/5f/d7", "[38;5;135m 135: af/5f/ff")] ); + push(@arr, [( "[38;5;136m 136: af/87/00", "[38;5;137m 137: af/87/5f", "[38;5;138m 138: af/87/87", "[38;5;139m 139: af/87/af", "[38;5;140m 140: af/87/d7", "[38;5;141m 141: af/87/ff")] ); + push(@arr, [( "[38;5;142m 142: af/af/00", "[38;5;143m 143: af/af/5f", "[38;5;144m 144: af/af/87", "[38;5;145m 145: af/af/af", "[38;5;146m 146: af/af/d7", "[38;5;147m 147: af/af/ff")] ); + push(@arr, [( "[38;5;148m 148: af/d7/00", "[38;5;149m 149: af/d7/5f", "[38;5;150m 150: af/d7/87", "[38;5;151m 151: af/d7/af", "[38;5;152m 152: af/d7/d7", "[38;5;153m 153: af/d7/ff")] ); + push(@arr, [( "[38;5;154m 154: af/ff/00", "[38;5;155m 155: af/ff/5f", "[38;5;156m 156: af/ff/87", "[38;5;157m 157: af/ff/af", "[38;5;158m 158: af/ff/d7", "[38;5;159m 159: af/ff/ff")] ); + push(@arr, [( "[38;5;160m 160: d7/00/00", "[38;5;161m 161: d7/00/5f", "[38;5;162m 162: d7/00/87", "[38;5;163m 163: d7/00/af", "[38;5;164m 164: d7/00/d7", "[38;5;165m 165: d7/00/ff")] ); + push(@arr, [( "[38;5;166m 166: d7/5f/00", "[38;5;167m 167: d7/5f/5f", "[38;5;168m 168: d7/5f/87", "[38;5;169m 169: d7/5f/af", "[38;5;170m 170: d7/5f/d7", "[38;5;171m 171: d7/5f/ff")] ); + push(@arr, [( "[38;5;172m 172: d7/87/00", "[38;5;173m 173: d7/87/5f", "[38;5;174m 174: d7/87/87", "[38;5;175m 175: d7/87/af", "[38;5;176m 176: d7/87/d7", "[38;5;177m 177: d7/87/ff")] ); + push(@arr, [( "[38;5;178m 178: d7/af/00", "[38;5;179m 179: d7/af/5f", "[38;5;180m 180: d7/af/87", "[38;5;181m 181: d7/af/af", "[38;5;182m 182: d7/af/d7", "[38;5;183m 183: d7/af/ff")] ); + push(@arr, [( "[38;5;184m 184: d7/d7/00", "[38;5;185m 185: d7/d7/5f", "[38;5;186m 186: d7/d7/87", "[38;5;187m 187: d7/d7/af", "[38;5;188m 188: d7/d7/d7", "[38;5;189m 189: d7/d7/ff")] ); + push(@arr, [( "[38;5;190m 190: d7/ff/00", "[38;5;191m 191: d7/ff/5f", "[38;5;192m 192: d7/ff/87", "[38;5;193m 193: d7/ff/af", "[38;5;194m 194: d7/ff/d7", "[38;5;195m 195: d7/ff/ff")] ); + push(@arr, [( "[38;5;196m 196: ff/00/00", "[38;5;197m 197: ff/00/5f", "[38;5;198m 198: ff/00/87", "[38;5;199m 199: ff/00/af", "[38;5;200m 200: ff/00/d7", "[38;5;201m 201: ff/00/ff")] ); + push(@arr, [( "[38;5;202m 202: ff/5f/00", "[38;5;203m 203: ff/5f/5f", "[38;5;204m 204: ff/5f/87", "[38;5;205m 205: ff/5f/af", "[38;5;206m 206: ff/5f/d7", "[38;5;207m 207: ff/5f/ff")] ); + push(@arr, [( "[38;5;208m 208: ff/87/00", "[38;5;209m 209: ff/87/5f", "[38;5;210m 210: ff/87/87", "[38;5;211m 211: ff/87/af", "[38;5;212m 212: ff/87/d7", "[38;5;213m 213: ff/87/ff")] ); + push(@arr, [( "[38;5;214m 214: ff/af/00", "[38;5;215m 215: ff/af/5f", "[38;5;216m 216: ff/af/87", "[38;5;217m 217: ff/af/af", "[38;5;218m 218: ff/af/d7", "[38;5;219m 219: ff/af/ff")] ); + push(@arr, [( "[38;5;220m 220: ff/d7/00", "[38;5;221m 221: ff/d7/5f", "[38;5;222m 222: ff/d7/87", "[38;5;223m 223: ff/d7/af", "[38;5;224m 224: ff/d7/d7", "[38;5;225m 225: ff/d7/ff")] ); + push(@arr, [( "[38;5;226m 226: ff/ff/00", "[38;5;227m 227: ff/ff/5f", "[38;5;228m 228: ff/ff/87", "[38;5;229m 229: ff/ff/af", "[38;5;230m 230: ff/ff/d7", "[38;5;231m 231: ff/ff/ff")] ); + push(@arr, [( "[38;5;232m 232: 08/08/08", "[38;5;233m 233: 12/12/12", "[38;5;234m 234: 1c/1c/1c", "[38;5;235m 235: 26/26/26", "[38;5;236m 236: 30/30/30", "[38;5;237m 237: 3a/3a/3a")] ); + push(@arr, [( "[38;5;238m 238: 44/44/44", "[38;5;239m 239: 4e/4e/4e", "[38;5;240m 240: 58/58/58", "[38;5;241m 241: 62/62/62", "[38;5;242m 242: 6c/6c/6c", "[38;5;243m 243: 76/76/76")] ); + push(@arr, [( "[38;5;244m 244: 80/80/80", "[38;5;245m 245: 8a/8a/8a", "[38;5;246m 246: 94/94/94", "[38;5;247m 247: 9e/9e/9e", "[38;5;248m 248: a8/a8/a8", "[38;5;249m 249: b2/b2/b2")] ); + push(@arr, [( "[38;5;250m 250: bc/bc/bc", "[38;5;251m 251: c6/c6/c6", "[38;5;252m 252: d0/d0/d0", "[38;5;253m 253: da/da/da", "[38;5;254m 254: e4/e4/e4", "[38;5;255m 255: ee/ee/ee")] ); + + if( $ARGV[0] eq "-s" || $ARGV[1] eq "-s" || $ARGV[2] eq "-s" ){ + $padding = " "; + } + else { + + } + + # display in reverse order + if( $ARGV[0] eq "-r" || $ARGV[1] eq "-r" || $ARGV[2] eq "-r" ){ + for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) { + + $seed = ($dimone % 6) * -1; + for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) { + + $movone = $seed; + $movtwo = $seed * -1; + + print $arr[$dimone][$dimtwo] . $padding; + + $seed = $seed+1; + } + + print "\n"; + } + } + else { + for( $dimone = 0; $dimone < scalar @arr; $dimone++ ) { + + $seed = ($dimone % 6) * -1; + for( $dimtwo = 0; $dimtwo < 6; $dimtwo++ ) { + + $movone = $seed; + $movtwo = $seed * -1; + + $newone = $dimone+$movone; + $newtwo = $dimtwo+$movtwo; + + if( $newone < scalar @arr ){ + print $arr[$newone][$newtwo] . $padding; + } + + $seed = $seed+1; + } + + print "\n"; + } + } + print "\n"; + print "\n"; + +} +else { + print "[38;5;16m 16: 00/00/00\n"; + print "[38;5;17m 17: 00/00/5f\n"; + print "[38;5;18m 18: 00/00/87\n"; + print "[38;5;19m 19: 00/00/af\n"; + print "[38;5;20m 20: 00/00/d7\n"; + print "[38;5;21m 21: 00/00/ff\n"; + print "[38;5;22m 22: 00/5f/00\n"; + print "[38;5;23m 23: 00/5f/5f\n"; + print "[38;5;24m 24: 00/5f/87\n"; + print "[38;5;25m 25: 00/5f/af\n"; + print "[38;5;26m 26: 00/5f/d7\n"; + print "[38;5;27m 27: 00/5f/ff\n"; + print "[38;5;28m 28: 00/87/00\n"; + print "[38;5;29m 29: 00/87/5f\n"; + print "[38;5;30m 30: 00/87/87\n"; + print "[38;5;31m 31: 00/87/af\n"; + print "[38;5;32m 32: 00/87/d7\n"; + print "[38;5;33m 33: 00/87/ff\n"; + print "[38;5;34m 34: 00/af/00\n"; + print "[38;5;35m 35: 00/af/5f\n"; + print "[38;5;36m 36: 00/af/87\n"; + print "[38;5;37m 37: 00/af/af\n"; + print "[38;5;38m 38: 00/af/d7\n"; + print "[38;5;39m 39: 00/af/ff\n"; + print "[38;5;40m 40: 00/d7/00\n"; + print "[38;5;41m 41: 00/d7/5f\n"; + print "[38;5;42m 42: 00/d7/87\n"; + print "[38;5;43m 43: 00/d7/af\n"; + print "[38;5;44m 44: 00/d7/d7\n"; + print "[38;5;45m 45: 00/d7/ff\n"; + print "[38;5;46m 46: 00/ff/00\n"; + print "[38;5;47m 47: 00/ff/5f\n"; + print "[38;5;48m 48: 00/ff/87\n"; + print "[38;5;49m 49: 00/ff/af\n"; + print "[38;5;50m 50: 00/ff/d7\n"; + print "[38;5;51m 51: 00/ff/ff\n"; + print "[38;5;52m 52: 5f/00/00\n"; + print "[38;5;53m 53: 5f/00/5f\n"; + print "[38;5;54m 54: 5f/00/87\n"; + print "[38;5;55m 55: 5f/00/af\n"; + print "[38;5;56m 56: 5f/00/d7\n"; + print "[38;5;57m 57: 5f/00/ff\n"; + print "[38;5;58m 58: 5f/5f/00\n"; + print "[38;5;59m 59: 5f/5f/5f\n"; + print "[38;5;60m 60: 5f/5f/87\n"; + print "[38;5;61m 61: 5f/5f/af\n"; + print "[38;5;62m 62: 5f/5f/d7\n"; + print "[38;5;63m 63: 5f/5f/ff\n"; + print "[38;5;64m 64: 5f/87/00\n"; + print "[38;5;65m 65: 5f/87/5f\n"; + print "[38;5;66m 66: 5f/87/87\n"; + print "[38;5;67m 67: 5f/87/af\n"; + print "[38;5;68m 68: 5f/87/d7\n"; + print "[38;5;69m 69: 5f/87/ff\n"; + print "[38;5;70m 70: 5f/af/00\n"; + print "[38;5;71m 71: 5f/af/5f\n"; + print "[38;5;72m 72: 5f/af/87\n"; + print "[38;5;73m 73: 5f/af/af\n"; + print "[38;5;74m 74: 5f/af/d7\n"; + print "[38;5;75m 75: 5f/af/ff\n"; + print "[38;5;76m 76: 5f/d7/00\n"; + print "[38;5;77m 77: 5f/d7/5f\n"; + print "[38;5;78m 78: 5f/d7/87\n"; + print "[38;5;79m 79: 5f/d7/af\n"; + print "[38;5;80m 80: 5f/d7/d7\n"; + print "[38;5;81m 81: 5f/d7/ff\n"; + print "[38;5;82m 82: 5f/ff/00\n"; + print "[38;5;83m 83: 5f/ff/5f\n"; + print "[38;5;84m 84: 5f/ff/87\n"; + print "[38;5;85m 85: 5f/ff/af\n"; + print "[38;5;86m 86: 5f/ff/d7\n"; + print "[38;5;87m 87: 5f/ff/ff\n"; + print "[38;5;88m 88: 87/00/00\n"; + print "[38;5;89m 89: 87/00/5f\n"; + print "[38;5;90m 90: 87/00/87\n"; + print "[38;5;91m 91: 87/00/af\n"; + print "[38;5;92m 92: 87/00/d7\n"; + print "[38;5;93m 93: 87/00/ff\n"; + print "[38;5;94m 94: 87/5f/00\n"; + print "[38;5;95m 95: 87/5f/5f\n"; + print "[38;5;96m 96: 87/5f/87\n"; + print "[38;5;97m 97: 87/5f/af\n"; + print "[38;5;98m 98: 87/5f/d7\n"; + print "[38;5;99m 99: 87/5f/ff\n"; + print "[38;5;100m 100 :87/87/00\n"; + print "[38;5;101m 101 :87/87/5f\n"; + print "[38;5;102m 102 :87/87/87\n"; + print "[38;5;103m 103 :87/87/af\n"; + print "[38;5;104m 104 :87/87/d7\n"; + print "[38;5;105m 105 :87/87/ff\n"; + print "[38;5;106m 106 :87/af/00\n"; + print "[38;5;107m 107 :87/af/5f\n"; + print "[38;5;108m 108 :87/af/87\n"; + print "[38;5;109m 109 :87/af/af\n"; + print "[38;5;110m 110 :87/af/d7\n"; + print "[38;5;111m 111 :87/af/ff\n"; + print "[38;5;112m 112 :87/d7/00\n"; + print "[38;5;113m 113 :87/d7/5f\n"; + print "[38;5;114m 114 :87/d7/87\n"; + print "[38;5;115m 115 :87/d7/af\n"; + print "[38;5;116m 116 :87/d7/d7\n"; + print "[38;5;117m 117 :87/d7/ff\n"; + print "[38;5;118m 118 :87/ff/00\n"; + print "[38;5;119m 119 :87/ff/5f\n"; + print "[38;5;120m 120 :87/ff/87\n"; + print "[38;5;121m 121 :87/ff/af\n"; + print "[38;5;122m 122 :87/ff/d7\n"; + print "[38;5;123m 123 :87/ff/ff\n"; + print "[38;5;124m 124 :af/00/00\n"; + print "[38;5;125m 125 :af/00/5f\n"; + print "[38;5;126m 126 :af/00/87\n"; + print "[38;5;127m 127 :af/00/af\n"; + print "[38;5;128m 128 :af/00/d7\n"; + print "[38;5;129m 129 :af/00/ff\n"; + print "[38;5;130m 130 :af/5f/00\n"; + print "[38;5;131m 131 :af/5f/5f\n"; + print "[38;5;132m 132 :af/5f/87\n"; + print "[38;5;133m 133 :af/5f/af\n"; + print "[38;5;134m 134 :af/5f/d7\n"; + print "[38;5;135m 135 :af/5f/ff\n"; + print "[38;5;136m 136 :af/87/00\n"; + print "[38;5;137m 137 :af/87/5f\n"; + print "[38;5;138m 138 :af/87/87\n"; + print "[38;5;139m 139 :af/87/af\n"; + print "[38;5;140m 140 :af/87/d7\n"; + print "[38;5;141m 141 :af/87/ff\n"; + print "[38;5;142m 142 :af/af/00\n"; + print "[38;5;143m 143 :af/af/5f\n"; + print "[38;5;144m 144 :af/af/87\n"; + print "[38;5;145m 145 :af/af/af\n"; + print "[38;5;146m 146 :af/af/d7\n"; + print "[38;5;147m 147 :af/af/ff\n"; + print "[38;5;148m 148 :af/d7/00\n"; + print "[38;5;149m 149 :af/d7/5f\n"; + print "[38;5;150m 150 :af/d7/87\n"; + print "[38;5;151m 151 :af/d7/af\n"; + print "[38;5;152m 152 :af/d7/d7\n"; + print "[38;5;153m 153 :af/d7/ff\n"; + print "[38;5;154m 154 :af/ff/00\n"; + print "[38;5;155m 155 :af/ff/5f\n"; + print "[38;5;156m 156 :af/ff/87\n"; + print "[38;5;157m 157 :af/ff/af\n"; + print "[38;5;158m 158 :af/ff/d7\n"; + print "[38;5;159m 159 :af/ff/ff\n"; + print "[38;5;160m 160 :d7/00/00\n"; + print "[38;5;161m 161 :d7/00/5f\n"; + print "[38;5;162m 162 :d7/00/87\n"; + print "[38;5;163m 163 :d7/00/af\n"; + print "[38;5;164m 164 :d7/00/d7\n"; + print "[38;5;165m 165 :d7/00/ff\n"; + print "[38;5;166m 166 :d7/5f/00\n"; + print "[38;5;167m 167 :d7/5f/5f\n"; + print "[38;5;168m 168 :d7/5f/87\n"; + print "[38;5;169m 169 :d7/5f/af\n"; + print "[38;5;170m 170 :d7/5f/d7\n"; + print "[38;5;171m 171 :d7/5f/ff\n"; + print "[38;5;172m 172 :d7/87/00\n"; + print "[38;5;173m 173 :d7/87/5f\n"; + print "[38;5;174m 174 :d7/87/87\n"; + print "[38;5;175m 175 :d7/87/af\n"; + print "[38;5;176m 176 :d7/87/d7\n"; + print "[38;5;177m 177 :d7/87/ff\n"; + print "[38;5;178m 178 :d7/af/00\n"; + print "[38;5;179m 179 :d7/af/5f\n"; + print "[38;5;180m 180 :d7/af/87\n"; + print "[38;5;181m 181 :d7/af/af\n"; + print "[38;5;182m 182 :d7/af/d7\n"; + print "[38;5;183m 183 :d7/af/ff\n"; + print "[38;5;184m 184 :d7/d7/00\n"; + print "[38;5;185m 185 :d7/d7/5f\n"; + print "[38;5;186m 186 :d7/d7/87\n"; + print "[38;5;187m 187 :d7/d7/af\n"; + print "[38;5;188m 188 :d7/d7/d7\n"; + print "[38;5;189m 189 :d7/d7/ff\n"; + print "[38;5;190m 190 :d7/ff/00\n"; + print "[38;5;191m 191 :d7/ff/5f\n"; + print "[38;5;192m 192 :d7/ff/87\n"; + print "[38;5;193m 193 :d7/ff/af\n"; + print "[38;5;194m 194 :d7/ff/d7\n"; + print "[38;5;195m 195 :d7/ff/ff\n"; + print "[38;5;196m 196 :ff/00/00\n"; + print "[38;5;197m 197 :ff/00/5f\n"; + print "[38;5;198m 198 :ff/00/87\n"; + print "[38;5;199m 199 :ff/00/af\n"; + print "[38;5;200m 200 :ff/00/d7\n"; + print "[38;5;201m 201 :ff/00/ff\n"; + print "[38;5;202m 202 :ff/5f/00\n"; + print "[38;5;203m 203 :ff/5f/5f\n"; + print "[38;5;204m 204 :ff/5f/87\n"; + print "[38;5;205m 205 :ff/5f/af\n"; + print "[38;5;206m 206 :ff/5f/d7\n"; + print "[38;5;207m 207 :ff/5f/ff\n"; + print "[38;5;208m 208 :ff/87/00\n"; + print "[38;5;209m 209 :ff/87/5f\n"; + print "[38;5;210m 210 :ff/87/87\n"; + print "[38;5;211m 211 :ff/87/af\n"; + print "[38;5;212m 212 :ff/87/d7\n"; + print "[38;5;213m 213 :ff/87/ff\n"; + print "[38;5;214m 214 :ff/af/00\n"; + print "[38;5;215m 215 :ff/af/5f\n"; + print "[38;5;216m 216 :ff/af/87\n"; + print "[38;5;217m 217 :ff/af/af\n"; + print "[38;5;218m 218 :ff/af/d7\n"; + print "[38;5;219m 219 :ff/af/ff\n"; + print "[38;5;220m 220 :ff/d7/00\n"; + print "[38;5;221m 221 :ff/d7/5f\n"; + print "[38;5;222m 222 :ff/d7/87\n"; + print "[38;5;223m 223 :ff/d7/af\n"; + print "[38;5;224m 224 :ff/d7/d7\n"; + print "[38;5;225m 225 :ff/d7/ff\n"; + print "[38;5;226m 226 :ff/ff/00\n"; + print "[38;5;227m 227 :ff/ff/5f\n"; + print "[38;5;228m 228 :ff/ff/87\n"; + print "[38;5;229m 229 :ff/ff/af\n"; + print "[38;5;230m 230 :ff/ff/d7\n"; + print "[38;5;231m 231 :ff/ff/ff\n"; + print "[38;5;232m 232 :08/08/08\n"; + print "[38;5;233m 233 :12/12/12\n"; + print "[38;5;234m 234 :1c/1c/1c\n"; + print "[38;5;235m 235 :26/26/26\n"; + print "[38;5;236m 236 :30/30/30\n"; + print "[38;5;237m 237 :3a/3a/3a\n"; + print "[38;5;238m 238 :44/44/44\n"; + print "[38;5;239m 239 :4e/4e/4e\n"; + print "[38;5;240m 240 :58/58/58\n"; + print "[38;5;241m 241 :62/62/62\n"; + print "[38;5;242m 242 :6c/6c/6c\n"; + print "[38;5;243m 243 :76/76/76\n"; + print "[38;5;244m 244 :80/80/80\n"; + print "[38;5;245m 245 :8a/8a/8a\n"; + print "[38;5;246m 246 :94/94/94\n"; + print "[38;5;247m 247 :9e/9e/9e\n"; + print "[38;5;248m 248 :a8/a8/a8\n"; + print "[38;5;249m 249 :b2/b2/b2\n"; + print "[38;5;250m 250 :bc/bc/bc\n"; + print "[38;5;251m 251 :c6/c6/c6\n"; + print "[38;5;252m 252 :d0/d0/d0\n"; + print "[38;5;253m 253 :da/da/da\n"; + print "[38;5;254m 254 :e4/e4/e4\n"; + print "[38;5;255m 255 :ee/ee/ee\n"; + print "\n"; + print "\n"; +} +print "0m"; +exit; diff --git a/cli/colortest.py b/cli/colortest.py new file mode 100755 index 0000000..2d29590 --- /dev/null +++ b/cli/colortest.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# +# http://askubuntu.com/questions/27314/script-to-display-all-terminal-colors + +import sys + +terse = "-t" in sys.argv[1:] or "--terse" in sys.argv[1:] + +for i in range(2 if terse else 10): + for j in range(30, 38): + for k in range(40, 48): + if terse: + print "\33[%d;%d;%dm%d;%d;%d\33[m " % (i, j, k, i, j, k), + else: + print ("%d;%d;%d: \33[%d;%d;%dm Hello, World! \33[m " % + (i, j, k, i, j, k, )) + print + diff --git a/cli/colortest.rb b/cli/colortest.rb new file mode 100755 index 0000000..cc5d6d6 --- /dev/null +++ b/cli/colortest.rb @@ -0,0 +1,26 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +# ANSI color scheme script +# Author: Ivaylo Kuzev < Ivo > +# Original: http://crunchbang.org/forums/viewtopic.php?pid=134749%23p134749#p134749 +# Modified using Ruby. + +CL = "\e[0m" +BO = "\e[1m" + +R = "\e[31m" +G = "\e[32m" +Y = "\e[33m" +B = "\e[34m" +P = "\e[35m" +C = "\e[36m" + +print <<EOF + +#{BO}#{R} ██████ #{CL} #{BO}#{G}██████ #{CL}#{BO}#{Y} ██████#{CL} #{BO}#{B}██████ #{CL} #{BO}#{P} ██████#{CL} #{BO}#{C} ███████#{CL} +#{BO}#{R} ████████#{CL} #{BO}#{G}██ ██ #{CL}#{BO}#{Y}██ #{CL} #{BO}#{B}██ ██#{CL} #{BO}#{P}██████ #{CL} #{BO}#{C} █████████#{CL} +#{R} ██ ████#{CL} #{G}██ ████#{CL}#{Y} ████ #{CL} #{B}████ ██#{CL} #{P}████ #{CL} #{C}█████ #{CL} +#{R} ██ ██#{CL} #{G}██████ #{CL}#{Y} ████████#{CL} #{B}██████ #{CL} #{P}████████#{CL} #{C}██ #{CL} + +EOF diff --git a/cli/colortest.sh b/cli/colortest.sh new file mode 100755 index 0000000..3974d69 --- /dev/null +++ b/cli/colortest.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# Original Posted at http://crunchbang.org/forums/viewtopic.php?pid=126921%23p126921#p126921 +# [ESC] character in original post removed here. + +# ANSI Color -- use these variables to easily have different color +# and format output. Make sure to output the reset sequence after +# colors (f = foreground, b = background), and use the 'off' +# feature for anything you turn on. + +initializeANSI() +{ + esc="$(echo -en '\e')" + + blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" + yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" + cyanf="${esc}[36m"; whitef="${esc}[37m" + + blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" + yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m" + cyanb="${esc}[46m"; whiteb="${esc}[47m" + + boldon="${esc}[1m"; boldoff="${esc}[22m" + italicson="${esc}[3m"; italicsoff="${esc}[23m" + ulon="${esc}[4m"; uloff="${esc}[24m" + invon="${esc}[7m"; invoff="${esc}[27m" + + reset="${esc}[0m" +} + +# note in this first use that switching colors doesn't require a reset +# first - the new color overrides the old one. + +#clear + +initializeANSI + +cat << EOF + + ${yellowf} ▄███████▄${reset} ${redf} ▄██████▄${reset} ${greenf} ▄██████▄${reset} ${bluef} ▄██████▄${reset} ${purplef} ▄██████▄${reset} ${cyanf} ▄██████▄${reset} + ${yellowf}▄█████████▀▀${reset} ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄${reset} ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄${reset} ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄${reset} ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄${reset} ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset} + ${yellowf}███████▀${reset} ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███${reset} ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███${reset} ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███${reset} ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███${reset} ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset} + ${yellowf}███████▄${reset} ${redf}████████████${reset} ${greenf}████████████${reset} ${bluef}████████████${reset} ${purplef}████████████${reset} ${cyanf}████████████${reset} + ${yellowf}▀█████████▄▄${reset} ${redf}██▀██▀▀██▀██${reset} ${greenf}██▀██▀▀██▀██${reset} ${bluef}██▀██▀▀██▀██${reset} ${purplef}██▀██▀▀██▀██${reset} ${cyanf}██▀██▀▀██▀██${reset} + ${yellowf} ▀███████▀${reset} ${redf}▀ ▀ ▀ ▀${reset} ${greenf}▀ ▀ ▀ ▀${reset} ${bluef}▀ ▀ ▀ ▀${reset} ${purplef}▀ ▀ ▀ ▀${reset} ${cyanf}▀ ▀ ▀ ▀${reset} + + ${boldon}${yellowf} ▄███████▄ ${redf} ▄██████▄ ${greenf} ▄██████▄ ${bluef} ▄██████▄ ${purplef} ▄██████▄ ${cyanf} ▄██████▄${reset} + ${boldon}${yellowf}▄█████████▀▀ ${redf}▄${whitef}█▀█${redf}██${whitef}█▀█${redf}██▄ ${greenf}▄${whitef}█▀█${greenf}██${whitef}█▀█${greenf}██▄ ${bluef}▄${whitef}█▀█${bluef}██${whitef}█▀█${bluef}██▄ ${purplef}▄${whitef}█▀█${purplef}██${whitef}█▀█${purplef}██▄ ${cyanf}▄${whitef}█▀█${cyanf}██${whitef}█▀█${cyanf}██▄${reset} + ${boldon}${yellowf}███████▀ ${redf}█${whitef}▄▄█${redf}██${whitef}▄▄█${redf}███ ${greenf}█${whitef}▄▄█${greenf}██${whitef}▄▄█${greenf}███ ${bluef}█${whitef}▄▄█${bluef}██${whitef}▄▄█${bluef}███ ${purplef}█${whitef}▄▄█${purplef}██${whitef}▄▄█${purplef}███ ${cyanf}█${whitef}▄▄█${cyanf}██${whitef}▄▄█${cyanf}███${reset} + ${boldon}${yellowf}███████▄ ${redf}████████████ ${greenf}████████████ ${bluef}████████████ ${purplef}████████████ ${cyanf}████████████${reset} + ${boldon}${yellowf}▀█████████▄▄ ${redf}██▀██▀▀██▀██ ${greenf}██▀██▀▀██▀██ ${bluef}██▀██▀▀██▀██ ${purplef}██▀██▀▀██▀██ ${cyanf}██▀██▀▀██▀██${reset} + ${boldon}${yellowf} ▀███████▀ ${redf}▀ ▀ ▀ ▀ ${greenf}▀ ▀ ▀ ▀ ${bluef}▀ ▀ ▀ ▀ ${purplef}▀ ▀ ▀ ▀ ${cyanf}▀ ▀ ▀ ▀${reset} + +EOF diff --git a/cli/csv2json.py b/cli/csv2json.py new file mode 100755 index 0000000..54f6be2 --- /dev/null +++ b/cli/csv2json.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# This is a simple tool that converts CSV file into a JSON file. +# The first line of the input CSV file is used as the field names. +# +# Use 'OrderedDict' to keep the input fields order. +# +# Aaron LI +# 2015/06/11 +# + +from __future__ import print_function, division + +__version__ = "0.1.0" +__date__ = "2015/06/11" + +import sys +import argparse +import csv +import json + +from collections import OrderedDict + + +def csv2json(csvfile, jsonfile=None): + """ + Convert CSV data to JSON data. + The first line of CSV data is used as the field names. + + Return: + If jsonfile is None, then return a list of JSON dict. + """ + if not hasattr(csvfile, "read"): + csvfile = open(csvfile, "r") + if (jsonfile is not None) and (not hasattr(jsonfile, "write")): + jsonfile = open(jsonfile, "w") + csvdata = list(csv.reader(csvfile)) + fieldnames = csvdata[0] + # use 'OrderedDict' to keep fields order + jsondata = [ OrderedDict(zip(fieldnames, row)) for row in csvdata[1:] ] + csvfile.close() + if jsonfile is None: + return jsondata + else: + # 'ensure_ascii=False' to support UTF-8 + json.dump(jsondata, jsonfile, ensure_ascii=False, indent=4) + jsonfile.close() + + +def main(): + # command line options & arguments + parser = argparse.ArgumentParser( + description="Simple CSV to JSON convertor") + parser.add_argument("-V", "--version", action="version", + version="%(prog)s " + "%s (%s)" % (__version__, __date__)) + parser.add_argument("csvfile", help="Input CSV file") + parser.add_argument("jsonfile", nargs="?", default=sys.stdout, + help="Output JSON file (default stdout)") + args = parser.parse_args() + + csv2json(args.csvfile, args.jsonfile) + + +if __name__ == "__main__": + main() + diff --git a/cli/jpegs2pdf.sh b/cli/jpegs2pdf.sh new file mode 100755 index 0000000..6d42bab --- /dev/null +++ b/cli/jpegs2pdf.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +############################################################################# +# +# Shellscript to convert a set of JPEG files to a multipage PDF. +# +# Requirements: (1) Ghostscript needs to be installed on the local system. +# (2) ImageMagick needs to be installed on the local system. +# +# Usage: jpegs2pdf.sh output.pdf file1.jpeg [file2.jpeg [file2.jpeg [...]]] +# +# Copyright (c) 2007, <pipitas@gmail.com> +# Use, distribute and modify without any restrictions. +# +# Versions: +# v1.0.0, Jul 12 2007: initial version +# v1.0.1, Jan 07 2011: set viewJPEG.ps path (self-compiled GS 9.02) +# +############################################################################# + +if [ $# -eq 0 ]; then + echo "Usage:" + echo " `basename $0` output.pdf 1.jpg ..." + exit 1 +fi + +outfile=$1 +shift + +param="" +for i in "$@" ; do + dimension=$(identify -format "%[fx:(w)] %[fx:(h)]" "${i}") + param="${param} <</PageSize [${dimension}]>> setpagedevice (${i}) viewJPEG showpage" +done + +gs \ + -sDEVICE=pdfwrite \ + -dPDFSETTINGS=/prepress \ + -o "$outfile" \ + viewjpeg.ps \ + -c "${param}" + diff --git a/cli/pdfmerge.sh b/cli/pdfmerge.sh new file mode 100755 index 0000000..aef72db --- /dev/null +++ b/cli/pdfmerge.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Merge multiple PDFs with pdftk. +# +# Ref: +# Merging Multiple PDFs under GNU/Linux +# https://blog.dbrgn.ch/2013/8/14/merge-multiple-pdfs/ +# +# Weitian LI +# 2015/01/23 +# + +if [ $# -lt 2 ]; then + printf "Usage: `basename $0` out.pdf in1.pdf ...\n" + exit 1 +fi + +outpdf="$1" +shift + +echo "Input files: $@" +pdftk "$@" cat output "${outpdf}" + diff --git a/cli/shrinkpdf.sh b/cli/shrinkpdf.sh new file mode 100755 index 0000000..1190fce --- /dev/null +++ b/cli/shrinkpdf.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Shrink the size of PDF files by adjust its quality using gs. +# +# Aaron LI +# 2013/09/18 +# + +case "$1" in + -[hH]*|--[hH]*) + printf "usage:\n" + printf " `basename $0` in=<input.pdf> out=<output.pdf> quality=<screen|ebook|printer|prepress> imgdpi=<img_dpi>\n" + exit 1 + ;; +esac + +getopt_keyval() { + until [ -z "$1" ] + do + key=${1%%=*} # extract key + val=${1#*=} # extract value + keyval="${key}=\"${val}\"" + echo "## getopt: eval '${keyval}'" + eval ${keyval} + shift # shift, process next one + done +} +getopt_keyval "$@" + +if [ -z "${in}" ] || [ -z "${out}" ]; then + printf "Error: 'in' or 'out' not specified\n" + exit 2 +fi +quality=${quality:-ebook} +imgdpi=${imgdpi:-120} + +printf "# in: ${in} +# out: ${out} +# quality: ${quality} +# imgdpi: ${imgdpi}\n" + +gs -dNOPAUSE -dBATCH -dSAFER \ + -sDEVICE=pdfwrite \ + -dCompatibilityLevel=1.4 \ + -dPDFSETTINGS="/${quality}" \ + -dEmbedAllFonts=true \ + -dSubsetFonts=true \ + -dColorImageDownsampleType=/Bicubic \ + -dColorImageResolution=${imgdpi} \ + -dGrayImageDownsampleType=/Bicubic \ + -dGrayImageResolution=${imgdpi} \ + -dMonoImageDownsampleType=/Bicubic \ + -dMonoImageResolution=${imgdpi} \ + -sOutputFile=${out} \ + ${in} + diff --git a/cli/term_color.sh b/cli/term_color.sh new file mode 100755 index 0000000..f10f916 --- /dev/null +++ b/cli/term_color.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# +# This file echoes a bunch of color codes to the +# terminal to demonstrate what's available. Each +# line is the color code of one forground color, +# out of 17 (default + 16 escapes), followed by a +# test use of that color on all nine background +# colors (default + 8 escapes). +# +# Ref: https://wiki.archlinux.org/index.php/X_resources +# + +T='gYw' # The test text + +echo -e "\n 40m 41m 42m 43m\ + 44m 45m 46m 47m"; + +for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \ + '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \ + ' 36m' '1;36m' ' 37m' '1;37m'; + do FG=${FGs// /} + echo -en " $FGs \033[$FG $T " + for BG in 40m 41m 42m 43m 44m 45m 46m 47m; + do echo -en "$EINS \033[$FG\033[$BG $T \033[0m"; + done + echo; +done +echo diff --git a/cli/term_color_2.sh b/cli/term_color_2.sh new file mode 100755 index 0000000..4dc2ef2 --- /dev/null +++ b/cli/term_color_2.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Original: http://frexx.de/xterm-256-notes/ +# http://frexx.de/xterm-256-notes/data/colortable16.sh +# Modified by Aaron Griffin +# and further by Kazuo Teramoto +FGNAMES=(' black ' ' red ' ' green ' ' yellow' ' blue ' 'magenta' ' cyan ' ' white ') +BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT') + +echo " ┌──────────────────────────────────────────────────────────────────────────┐" +for b in {0..8}; do + ((b>0)) && bg=$((b+39)) + + echo -en "\033[0m ${BGNAMES[b]} │ " + + for f in {0..7}; do + echo -en "\033[${bg}m\033[$((f+30))m ${FGNAMES[f]} " + done + + echo -en "\033[0m │" + echo -en "\033[0m\n\033[0m │ " + + for f in {0..7}; do + echo -en "\033[${bg}m\033[1;$((f+30))m ${FGNAMES[f]} " + done + + echo -en "\033[0m │" + echo -e "\033[0m" + + ((b<8)) && + echo " ├──────────────────────────────────────────────────────────────────────────┤" +done +echo " └──────────────────────────────────────────────────────────────────────────┘" diff --git a/cli/term_color_3.sh b/cli/term_color_3.sh new file mode 100755 index 0000000..85b499a --- /dev/null +++ b/cli/term_color_3.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Original: http://frexx.de/xterm-256-notes/ +# http://frexx.de/xterm-256-notes/data/colortable16.sh +# Modified by Aaron Griffin +# and further by Kazuo Teramoto + + +FGNAMES=(' black ' ' red ' ' green ' ' yellow' ' blue ' 'magenta' ' cyan ' ' white ') +BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT') +echo " ----------------------------------------------------------------------------" +for b in $(seq 0 8); do + if [ "$b" -gt 0 ]; then + bg=$(($b+39)) + fi + + echo -en "\033[0m ${BGNAMES[$b]} : " + for f in $(seq 0 7); do + echo -en "\033[${bg}m\033[$(($f+30))m ${FGNAMES[$f]} " + done + echo -en "\033[0m :" + + echo -en "\033[0m\n\033[0m : " + for f in $(seq 0 7); do + echo -en "\033[${bg}m\033[1;$(($f+30))m ${FGNAMES[$f]} " + done + echo -en "\033[0m :" + echo -e "\033[0m" + + if [ "$b" -lt 8 ]; then + echo " ----------------------------------------------------------------------------" + fi +done +echo " ----------------------------------------------------------------------------" diff --git a/cli/unzip-gbk.py b/cli/unzip-gbk.py new file mode 100755 index 0000000..423e10f --- /dev/null +++ b/cli/unzip-gbk.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# unzip-gbk.py +# +# http://note.ninehills.info/linux-gbk.html +# + +import os +import sys +import zipfile + +print "Processing File " + sys.argv[1] + +file=zipfile.ZipFile(sys.argv[1],"r"); +for name in file.namelist(): + utf8name=name.decode('gbk') + print "Extracting " + utf8name + pathname = os.path.dirname(utf8name) + if not os.path.exists(pathname) and pathname!= "": + os.makedirs(pathname) + data = file.read(name) + if not os.path.exists(utf8name): + fo = open(utf8name, "w") + fo.write(data) + fo.close +file.close() diff --git a/cli/vimpager b/cli/vimpager new file mode 100755 index 0000000..447fd9a --- /dev/null +++ b/cli/vimpager @@ -0,0 +1,85 @@ +#!/bin/sh + +# Script for using ViM as a PAGER. +# Based on Bram's less.sh. +# Version 1.3 + +file="$@" +if [ -z "$file" ]; then file="-"; fi + +if uname -s | grep -iq cygwin; then + cygwin=1 +elif uname -s | grep -iq linux; then + linux=1 +elif uname -s | grep -iq sunos; then + solaris=1 +else + bsd=1 +fi + +less_vim() { + vim -R \ + -c 'let no_plugin_maps = 1' \ + -c 'set scrolloff=999' \ + -c 'runtime! macros/less.vim' \ + -c 'set foldlevel=999' \ + -c 'set mouse=h' \ + -c 'set nonu' \ + -c 'nmap <ESC>u :nohlsearch<cr>' \ + "$@" +} + +do_ps() { + if [ $solaris ]; then + ps -u `id -u` -o pid,comm= + elif [ $bsd ]; then + ps -U `id -u` -o pid,comm= + else + ps fuxw + fi +} + +pproc() { + if [ $linux ]; then + ps -p $1 -o comm= + elif [ $cygwin ]; then + ps -p $1 | sed -e 's/^I/ /' | grep -v PID + else + ps -p $1 -o comm= | grep -v PID + fi +} + +ppid() { + if [ $linux ]; then + ps -p $1 -o ppid= + elif [ $cygwin ]; then + ps -p $1 | sed -e 's/^I/ /' | grep -v PID | awk '{print $2}' + else + ps -p $1 -o ppid= | grep -v PID + fi +} + +# Check if called from man, perldoc or pydoc +if do_ps | grep -q '\(py\(thon\|doc\)\|man\|perl\(doc\)\?\([0-9.]*\)\?\)\>'; then + proc=$$ + while next_parent=`ppid $proc` && [ $next_parent != 1 ]; do + if pproc $next_parent | grep -q 'man\>'; then + cat $file | sed -e 's/\[[^m]*m//g' | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit + elif pproc $next_parent | grep -q 'py\(thon\|doc\)\>'; then + cat $file | sed -e 's/\[[^m]*m//g' | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit + elif pproc $next_parent | grep -q 'perl\(doc\)\?\([0-9.]*\)\?\>'; then + cat $file | sed -e 's/.//g' | less_vim -c 'set ft=man' -; exit + fi + proc=$next_parent + done +fi + +less_vim "$file" + +# CONTRIBUTORS: +# +# Rafael Kitover +# Antonio Ospite +# Jean-Marie Gaillourdet +# Perry Hargrave +# Koen Smits |