Demystifying the Bash Shell
& (Ampersand): Runs a command in background, freeing the shell.
(Append Redirection): Appends command output to file end without overwriting.
Argument: Value passed to command/script to modify behavior or provide input.
Alias: Shortcut for a command or sequence.
Bash Shell: Default Unix shell and command language for Linux and macOS.
Background Process: Runs independently, allowing continued shell use.
\ (Backslash): Escapes special meaning of next character.
Debug Mode (-x): Traces script commands after expansion for troubleshooting.
echo: Displays text or variables to stdout.
Environment Variable: Dynamic value (e.g., $HOME, $PATH) affecting process behavior.
Escape: Removes special meaning using \ or quotes.
File Descriptor: Handle for I/O; 0=stdin, 1=stdout, 2=stderr.
fg (foreground): Brings background process to foreground for interaction.
Filename Expansion: Shell interprets wildcards to match filenames.
Foreground Process: Requires interaction, occupies shell until done or backgrounded.
grep: Searches text for lines matching regex.
help: Provides docs for built-in commands.
Interactive Shell: Direct user command input and responses.
jobs: Lists current background and stopped jobs.
kill: Sends signals to processes, often to terminate.
ls: Lists directory contents.
Named Pipe (mkfifo): Special file for IPC as FIFO data channel.
Non-Interactive Shell: Executes script commands without user input.
pgrep: Finds process IDs by name or attributes.
pkill: Kills processes by name or attributes.
| (Pipe): Redirects stdout of one command to stdin of another.
Positional Parameters ($1, $2...): Script arguments by position.
printf: Formatted output with specifiers, like enhanced echo.
Quoting: Uses ' or " to control special character and variable interpretation.
read: Reads input line and assigns to variable.
Redirection: Changes command's stdin, stdout, or stderr to file/stream.
set: Sets/unsets shell options and positional parameters.
shebang (#!): First script line specifying interpreter.
STDERR: FD 2 for error messages.
STDIN: FD 0 for input (e.g., keyboard).
STDOUT: FD 1 for normal output.
Strong Quoting ('): Prevents variable expansion and substitutions.
test or []: Evaluates conditions (e.g., file checks, comparisons).
touch: Creates empty files or updates timestamps.
(Truncate Redirection): Overwrites or creates file with command output.
/dev/null: Discards written data; returns EOF on read.
Variable Expansion: Replaces variable name with its value.
Weak Quoting ("): Allows expansion/substitution but prevents globbing.