Difference between revisions of "Shell"
From Wiki at Neela Nurseries
m (Add helper bash script for use with "git diff-tree") |
m (add links to bash built-in variables documentation online.) |
||
Line 5: | Line 5: | ||
This local page for Bash shell scripts and notes on shell scripting. | This local page for Bash shell scripts and notes on shell scripting. | ||
+ | == [[#top|^]] Bash Built-in Variables == | ||
+ | Some links to useful articles discussing `bash` built-in variables: | ||
+ | * https://avpres.net/Bash/builtin_shell_variables | ||
+ | * https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html | ||
+ | |||
+ | Bash's built-in variables with short names, as listed in Kernigan and Ritchie's "Unix Programming" book and at the first linked article above: | ||
+ | |||
+ | <pre> | ||
+ | $0 | ||
+ | The first element passed to the shell is the command name. | ||
+ | $n | ||
+ | The nth argument passed on the command line. If n ≥ 10, then the syntax must be ${n}. | ||
+ | $* | ||
+ | All the arguments on the command line. The values are separated by the first character in the shell variable IFS: (${1} … ${n}). See also: the IFS entry in Other Shell Variables. | ||
+ | $@ | ||
+ | All the arguments on the command line. The values are individually quoted: ("${1}" … "${n}"). | ||
+ | $# | ||
+ | The number of command-line arguments. | ||
+ | $? | ||
+ | The exit value of the last executed command. | ||
+ | $_ | ||
+ | The last argument of the previous command. | ||
+ | $! | ||
+ | The process ID of the most recent background process. | ||
+ | </pre> | ||
+ | |||
+ | <!-- odne komentar --> | ||
== [[#top|^]] Rename Badly Named Files == | == [[#top|^]] Rename Badly Named Files == | ||
Revision as of 00:01, 21 February 2024
Shell Scripting
Contents
^ OVERVIEW
This local page for Bash shell scripts and notes on shell scripting.
^ Bash Built-in Variables
Some links to useful articles discussing `bash` built-in variables:
- https://avpres.net/Bash/builtin_shell_variables
- https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
Bash's built-in variables with short names, as listed in Kernigan and Ritchie's "Unix Programming" book and at the first linked article above:
$0 The first element passed to the shell is the command name. $n The nth argument passed on the command line. If n ≥ 10, then the syntax must be ${n}. $* All the arguments on the command line. The values are separated by the first character in the shell variable IFS: (${1} … ${n}). See also: the IFS entry in Other Shell Variables. $@ All the arguments on the command line. The values are individually quoted: ("${1}" … "${n}"). $# The number of command-line arguments. $? The exit value of the last executed command. $_ The last argument of the previous command. $! The process ID of the most recent background process.
^ Rename Badly Named Files
How to produce a usable filename which contains <ESC> characters, and to rename that badly named file:
$ ls -i 9704871 $'\033\033' 9703029 CMakeLists.txt 10899590 dts 9708845 samples $ ls -q `find . -inum 9704871` './'$'\033\033' $ mv './'$'\033\033' betterfilename
^ Git Diff-tree Helper Script
A helper script for calling `git diff-tree`, which can be used to determine at which project commit one or more files have changed:
#!/bin/bash CMD_GIT=/usr/bin/git $CMD_GIT log --oneline | head | cut -d " " -f 1 echo "2024-01-31 git diff-tree helper script in progress . . ." hashes=`$CMD_GIT log --oneline | head | cut -d " " -f 1` echo "In $PWD found git commit hashes:" echo " " $hashes #i=1 #for hash in $hashes; do echo "("$i")" $hash; (( i++ )); done #echo "Files changed between commit pairs youngest pairings to oldest: for hash in $hashes; do echo "Files changed in git commit:"; git diff-tree -r $hash; echo; done echo "done" exit 0