# bash

## Interprocess Communication with Redis

There are many methods to communicating between processes. Many methods work best when only using a single programming language, while others require custom packets and parsing. Simplicity is key and Redis is an efficient solution. Redis is an open-source in-memory database project implementing a distributed, in-memory key-value store.

## Testing Python Packages with Docker

Package management is hard. Sometimes in Python package development, your local (development) environment may behave a little differently than a deployment target. Below is a simple method I use to replicate a clean environment and test Python package installs and tests.

## Convert Images in a Directory

for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done convert: convert between image formats using ImageMagick A simple bash for-loop for convert many images at once.

## Count the Number of Files in a Directory

ls -l | wc -l ls: list directory contents -l: list in long format wc: word, line, character, and byte count -l: the number of lines is written to the standard output This command counts the number of listed lines. I find this most useful when I want to quickly see how many logs or records have been generated by a process.

## Count the Number of Words in a LaTeX Document

detex my-document.tex | wc -w detex: a filter to strip TeX commands from a .tex file wc: word, line, character, and byte count -w: The number of words in each input file is written to the standard output

## Recursively Git Reset All Submodules

git submodule foreach --recursive git reset --hard This command recursively resets all submodules in a git project. This is especially useful for projects with submodules (and maybe even submodules within submodules) when you want to reset your working copy to a completely clean state.

## Start a Simple Web Server

python -m http.server 8000 This will serve index.html in the current working directory.