More Bash Bashing
Advanced Bash Automation for Web Developers
Scripts and Expansions permalink
stat [file]
Show file properties such as size, permissions, creation, access dates and more!
type [alias]
To quickly check what your alias does.
echo $PATH
To see the list of executables.
export PATH="$PATH:~/scripts-folder"
To add a folder to the executables (that way you'll be able to run your scripts from anywhere).
ln -s ~/scripts-folder/script /usr/local/bin
You can also create a soft link to the usr/local/bin (where your scripts should generally live).
cp index.js{,.backup}
This will create a file called index.js.backup with the contents of index.js
touch test-{1..10}
Will create 10 test files starting with test-1. Not all commands accept multiple inputs, but touch does.
Bash Navigation permalink
!!
Run the last command again.
!$
Gives you the last argument of the previous command.
ctrl + a: go to the beginning of th line.ctrl + e: go to the end of the line.ctrl + k: to delete the line up to the cursor.ctrl + w: delete the last word.
Curl GitHub permalink
curl -s https://api.github.com/repos/edieblu/includeJS.dev | jq '.stargazers_count'
Get the numbers of stars in a GitHub repo.
jq permalink
for dep in $(jq -r '.dependencies | keys | .[]' package.json); do
if ! grep "required\(.*$dep.*)" Rq --exclude-dir="node_modules" ." then
echo "You can probably remove $dep"
fi
doneUse jq and grep to find unused dependencies.
keys: to get just the keys out of the jq object.[]: array value iterator to get the values in a separate liner: flag in jq means raw text (no quotations)Rq: recursive and quiet
exec permalink
Changes where stdout and stderr go for all commands that come after it.
exec >> log/hooks-out.log 2>&1
Append standard error to the same place and in the same mode than standard output is in.
git diff permalink
if git diff-tree --name-only --no-commit-id ORIG_HEAD HEAD
This will return the differences between the previous and current commits as a bare list of files.
if git diff-tree --name-only --no-commit-id ORIG_HEAD HEAD | grep --quiet 'package.json'; then
echo "$(date): Running npm install because package.json changed"
npm install
else
echo "$(date): No changes in package.json found"
fiCheck if package.json has been changed and run npm install if it did.
npm install > /dev/null
If you output to /dev/null the output will be discarded. Note that errors will still be outputed.
Extracting permalink
case "$1" in
*.tar|*.tgz) tar -xzvf "$1";;
*.gz) gunzip -k "$1";;
*.zip) unzip -v "$1";;
*)
echo "Cannot extract $1"
exit 1
;;
esacA script that extracts a file archive, depending on the file extension.
Random permalink
#!/usr/bin/env node
This tells the shell to use the node binary in your environment to execute this file.
.plist
A .plist file is an XML-formatted file for macOS.
~/Library/LaunchAgents/
List all applications with job configuration.