Bash ls
Inspect known files without treating formatted listings as a data format.
How it works
ls is useful for a person inspecting a directory. Its display depends on options, terminal width, locale and filename characters. A script that needs filenames should use a glob or a null-delimited producer rather than parsing a decorative listing. Include hidden files deliberately when they belong to the task; ordinary star expansion does not select them by default.
Run the code
Reviewed with Git for Windows Bash 5.2.37. Open Git Bash, save the download with LF line endings in a separate learning folder, check it with bash -n lesson-name.sh, then run bash lesson-name.sh using the actual filename. Bash 4 or newer is required for the full course. Linux-only notes identify unavailable tools or POSIX behaviour. There is no Bash browser runner; Apache and MySQL are not required.
This complete example was executed in the stated local review environment.
The complete source creates a fresh private temporary workspace and checks its physical path before cleanup. All file fixtures belong to that workspace; do not remove the guards or point it at existing documents.
Example
#!/usr/bin/env bash
set -u
set -o pipefail
export LC_ALL=C
# Own a new directory; verify physical paths before cleanup.
parent=$(cd -- "${TMPDIR:-/tmp}" && pwd -P) || exit 1
work=$(mktemp -d "$parent/bhylu-bash.XXXXXX") || exit 1
work=$(cd -- "$work" && pwd -P) || exit 1
case "$work" in "$parent"/bhylu-bash.??????) ;; *) exit 1 ;; esac
cleanup() {
cd -- "$parent" || return 1
[[ -d $work && ! -L $work ]] || return 1
[[ $(cd -- "$work" && pwd -P) == "$work" ]] || return 1
case "$work" in "$parent"/bhylu-bash.??????) rm -r -- "$work" ;; *) return 1 ;; esac
}
trap cleanup EXIT
cd -- "$work" || exit 1
touch -- north.txt south.txt .desk-note
ls -1 -- north.txt south.txt
[[ -f .desk-note ]] || exit 1
Focus on the lesson commands
This excerpt omits temporary-workspace setup and cleanup. Use the complete source above to run the example.
touch -- north.txt south.txt .desk-note
ls -1 -- north.txt south.txt
[[ -f .desk-note ]] || exit 1
Expected result
north.txt south.txt
The output is predictable because two exact filenames are supplied and the locale is fixed in the lab wrapper. The hidden note exists but is not included in this explicit listing. This distinction helps explain why the files a person sees and the files a script processes can differ.
Primary technical reference: Bash documentation.