wuzz – interactive cli tool for HTTP inspection.
Tag: command line
Defensive BASH Programming
If you write any Bash code that lasts more than a day, you should definitely read “Defensive BASH Programming” and follow the advice, if you haven’t already. Â It covers the following:
- Immutable global variables
- Everything is local
- main()
- Everything is a function
- Debugging functions
- Code clarity
- Each line does just one thing
- Printing usage
- Command line arguments
- Unit Testing
All that with code examples and explanation of importance.
SC-IM – Spreadsheet Calculator Improvised
Here is an interesting project –Â SC-IM, or Spreadsheet Calculator Improvised, which is an ncurses spreadsheet program for terminal. Â Here are some of the features:
- UNDO / REDO.
- 65.536 rows and 702 columns supported. (The number of rows can be expanded to 1.048.576 if wished).
- CSV / TAB delimited file import and export.
- XLS / XLSX file import.
- Key-mappings.
- Sort of rows.
- Filter of rows.
- Cell shifting.
- 256 color support – screen colors can be customized by user, even at runtime.
- Colorize cells or give them format such as bold or underline.
- Wide character support. The following alphabets are supported: English, Spanish, French, Italian, German, Portuguese, Russian, Ukrainian, Greek, Turkish, Czech, Japanese, Chinese.
- Implement external functions in the language you prefer and use them in SC-IM.
- Use SC-IM as a non-interactive calculator, reading its input from a external script.
- More movements commands implemented !
- Input and Output was completely rewritten.
A combination of interactive and non-interactive interface seems to be particularly useful.
dotfiles – your unofficial guide to dotfiles on GitHub
Warning: you will lose a lot of sleep if you follow the link below. :)
No matter how well you know Vim, bash, git, and a whole slew of other command line tools, I promise you, you’ll find something new, something you had no idea existed, something that will help you save hours and hours of your life by shaving off a few seconds here and there on the tasks you perform on a daily basis, in the repositories link to from this site.
I think I’ve spent most of my Sunday there and my dotfiles are so different now that I’m not sure I should commit and push them all in one go. Â I think I might need to get used to the changes first.
Some of the things that I’ve found for myself:
- PHP Integration environment for Vim (spf13/PIV).
- myrepos –Â provides a
mr
command, which is a tool to manage all your version control repositories. - bash-it – a community Bash framework.
- Awesome dotfiles – a curated list of dotfiles resources.
… and a whole lot of snippets, tips, and tricks.
P.S.: Make sure you don’t spend too much time on these things though :)
Shell parameter expansion : default values for shell script parameters
When writing shell scripts, it’s often useful to accept some command line parameters. Â It’s even more useful to have some defaults for those parameters. Â Until now I’ve been using if statements to check if the parameter was empty, and if it was, to set it to the default value. Â Something like this:
#!/bin/bash DB_HOST=$1 DB_NAME=$2 DB_USER=$3 DB_PASS=$4 if [ -z "$DB_HOST" ] then DB_HOST="localhost" fi if [ -z "$DB_NAME" ] then DB_NAME="wordpress" fi if [ -z "$DB_USER" ] then DB_USER="root" fi echo "Connecting to the database:" echo "Host: $DB_HOST" echo "Name: $DB_NAME" echo "User: $DB_USER" echo "Pass: $DB_PASS"
It turns out there is a much more elegant way to do this with shell parameter expansion. Â Here is how it looks rewritten:
#!/bin/bash DB_HOST=${1-localhost} DB_NAME=${2-wordpress} DB_USER=${3-root} DB_PASS=$4 echo "Connecting to the database:" echo "Host: $DB_HOST" echo "Name: $DB_NAME" echo "User: $DB_USER" echo "Pass: $DB_PASS"
This is so much better. Not only the script itself is shorter, but it’s also much more obvious what is going on. Â Copy-paste errors are much less likely to happen here too.
I wish I learned about this sooner.