Maintenance search commands
I'll list here some search commands for the repository to find common mistakes that contributors make. Feel free to post your own. Not everything here returns a direct mistake, but they reduce the list enough that it's feasible to go through it manually. The acceptable outputs are outputs that have been verified to be intended and not an error.
If the purpose of any of these commands isn't clear, feel free to ask.
Placeholders
rg "\{\{\[[^}]*\]}[^}]" No output
grep -r -- "[^{]{\[.*\]}}" No output
rg "\]\]" acceptable output
rg "\[\[" acceptable output
grep -rE "{{\[[a-z]\|--[a-z]+\]}}" No output
rg "\{\{\[-[a-z]\|[a-z]+\]}}" acceptable output
rg "\{\{-[a-zA-Z]\|-" acceptable output
grep -r "{{-[a-zA-Z][a-zA-Z]|-" No output
rg "\{\{\[[^|]*\]}}" acceptable output
grep -r "{{\[ " No output
grep -r " ]}}" No output
grep -r "{{ "
grep -r " }}"
grep -r ^\` | grep -i " n "
grep -r '{{"'
grep -r "{{'"
grep -r '\[{{.*}}\]'
Brackets
rg "\{\{\{" acceptable output
rg }}} acceptable output
fd -t f | xargs awk '{ o=gsub(/{/,"&"); c=gsub(/}/,"&"); if(o!=c) print FILENAME ": " $0 }' acceptable output
fd -t f | xargs awk '{ o=gsub(/\[/,"&"); c=gsub(/\]/,"&"); if(o!=c) print FILENAME ": " $0 }' acceptable output
fd -t f | xargs awk '{ o=gsub(/\(/,"&"); c=gsub(/\)/,"&"); if(o!=c) print FILENAME ": " $0 }' acceptable output
fd -t f | xargs awk '{ q=gsub(/"/,"&"); if(q % 2 != 0) print FILENAME ": " $0 }' No output
find . -type f -print0 | xargs -0 awk '{ b=gsub(/`/,"&"); if(b % 2 != 0) print FILENAME ": " $0 }' No output
rg "\{\{[^}]*\{\{" No output
rg "}}[^{]*}}" acceptable output
Man pages
rg manned.org/man/ acceptable output
rg www.manned No output
rg ubuntu.com/manpages acceptable output
rg linux.die No output
rg linux.org/docs No output
rg linuxcommandlibrary No output
rg /html_node/| rg -v "coreutils|emacs|grub" No output
grep -r "\.[a-z]*[/]*>" | grep "More info" | grep -v "\.[x]*htm[l]*[/]*>" | grep -v "\.php[/]*>" | grep -v "\.md[/]*>" | grep -v "\.adoc[/]*>" | grep -v "\.pdf[/]*>" | grep -v "\.txt[/]*>" | grep -v "\.pod[/]*>"
grep -r "github.com/[a-zA-Z]*/[a-zA-Z]*[/]*>"
grep -roP '\bhttps?://github\.com/[A-Za-z0-9-]+/[A-Za-z0-9_.-]+/?(?=$|\s|[.,;:)\]}>])'
grep -r "\.[0-9]>"
rg http:// | rg "More information" acceptable output
rg "#>" No output
rg unix.com acceptable output
rg debian.org
Wrong wording
grep -ri help | grep -v "Display help:" | grep -v -- --help | grep -v -- help] | grep -v subcommand | grep -v https | grep -v "\`"
grep -ri version | grep -v "Display version:" | grep -v -- --version
grep -ri config | grep -vi configuration | grep -v "More information"
grep -ri info | grep -vi information | grep -v informative
grep -ri stats | grep -vi statistics
rg -i "See also" | rg -v "> See also:" acceptable output
rg -i "show.* help" acceptable output
grep -ri "show.* version"
grep -ri "check.* help" No output
grep -ri "check.* version"
grep -ri WiFi
grep -r wlan
Duplicate files
fd -t f --format '{/}' | sort | uniq -c | sort
Command line
rg -i "command line"
rg -i command-line | rg -v "More information"
rg CLI
rg -i terminal
Github and gitlab useless parts
grep -r ?ref_type=heads No output
grep -r ?tab=readme-ov-file No output
grep -r ?utm_source=chatgpt.com No output
grep -r ?gi-language No output
Wrong filepath or url format
grep -r filename
grep -r folder
grep -r file_path No output
grep -r filepath
grep -r "\./"
grep -r http://target No output
grep -r "foo\."
grep -r "bar\."
grep -r path/to | grep -v "{{path/to"
grep -r "directory/}}" No output
grep -r "dir}}"
grep -r "path/to/[a-z]*/[a-z]*"
grep -r "{{.*another.*}}"
grep -r "path[^/]to" | grep -v windows | grep "md:\`"
grep -r '^[^`].* \.[a-z]* '
More information versioning
grep -r "More information:.*[0-9]\.[0-9]"
grep -r "More information:.*v[0-9]"
grep -r "More information:" | grep "/[0-9]/"
grep -r "> More information:" | grep -E "/[0-9]+/"
Device format
grep -r /dev/sd[a-z]
grep -r eth[0-9]
grep -r wlan[0-9]
grep -r /dev/tty
Standard streams
grep -vr "^\`" | grep -i stdout | grep -v "\`stdout\`"
grep -vr "^\`" | grep -i stdin | grep -v "\`stdin\`" No output
grep -vr "^\`" | grep -i stderr | grep -v "\`stderr\`" No output
grep -vr "^\`" | grep -i "standard out" No output
grep -vr "^\`" | grep -i "standard in" No output
grep -vr "^\`" | grep -i "standard err" No output
Lone short options
grep -r " -[a-zA-Z][^a-zA-Z]"
grep -r " -[a-zA-Z][a-zA-Z][^a-zA-Z]"
Small letter after colon
grep -r ": [a-z]"
Imperative mood
rg Applies
rg Calculates No output
rg Captures No output
rg Changes
rg Checks No output
rg Controls No output
rg Converts No output
rg Creates
rg Deploys No output
rg Displays No output
rg Enables No output
rg Encodes No output
rg Evaluates No output
rg Executes No output
rg Extracts No output
rg Forwards
rg Generates No output
rg Gets No output
rg Initializes No output
rg Inspects No output
rg Installs
rg Launches No output
rg Lists
rg Manages No output
rg Opens
rg Outputs
rg Performs No output
rg Prints No output
rg Publishes No output
rg Queries No output
rg Resolves No output
rg Restarts No output
rg Runs
rg Scans No output
rg Sends
rg Sets No output
rg Shows
rg Specifies
rg Starts No output
rg Stops No output
rg Switches
rg Tests
rg Updates
rg Uses
Wrong capitalization
grep -r bash | grep -v https
grep -r zsh
grep -r Fish | grep -v https
grep -r [pP]owershell | grep -v https
grep -r \`git\`
grep -r " N "
grep -r bluetooth
grep -r url | grep -v curl
grep -r --color uri | grep -vi security | grep -v during | grep -vi mercurial
grep -r uuid | grep -v ".md:\`"
grep -r python | grep -v ".md:\`" | grep -v "More information"
Character mistakes
rg … No output
rg – No output
rg — No output
rg "´" No output
rg "’" No output
rg "‘" No output
rg '“' No output
rg '”' No output
rg \`\` No output
rg $'\u00A0' No output
rg $'\u200A' No output
rg $'\u200B' No output
rg $'\u200C' No output
rg $'\u200D' No output
rg $'\u200F' No output
rg $'\u202F' No output
rg $'\u3000' No output
rg $'\uFEFF' No output
rg « No output
rg » No output
rg =
rg " " acceptable output
Punctuation
rg " :$"
rg "\.\.$" No output
rg "::$" No output
rg " \.$"
rg "|$"
rg " ।$" No output
rg " :$" No output
rg '\.:'
rg " 。" No output
rg '^[^#].*[^.:।`:。]$'
grep -r "[^ ]:$" pages.fr
Wrong case
grep -rE "\{\{[a-zA-Z]+(-[a-z]+)+}}" # kebab-case
grep -rE "\{\{[a-z]+([A-Z][a-z]+)+\}\}" # camelCase
grep -rE "\{\{[A-Z][a-z]+([A-Z][a-z]+)+\}\}" # PascalCase
grep -rE "\{\{[A-Z]?[a-z]+([A-Z][a-z]+)+\}\}" # PascalCase + camelCase (previous 2 combined)
Page title doesn't match the filename
rg -m 1 '#' | sed "s/-/ /g" | sed "s/ \+/ /g" | rg -Pvi '/(.+)\.md:# \1' acceptable output
Command does not match filename
grep -r '`' | grep 'md:`' | sed "s/-/ /g" | grep -vEi '/([a-zA-Z0-9+_ \.\^,!~%\[]+)\.md:`.*\1' | grep -v tldr | grep -v "<" | grep -v "pacman" | grep -vEi ' ([a-zA-Z0-9+_ \.]+)\.md:`.*\1\]}}'
Page title does not match command
find . -type f | while read -r file
do
l1=$(grep -m 1 "#" $file | cut -d ' ' -f 2-)
grep '^`' $file | while read -r l2
do
short=$(echo $l1 | rev | cut -d ' ' -f 1 | rev)
echo $l2 | grep -vF -- "$l1" | grep -v tldr | grep -v "<" | grep -v pacman | grep -vFi -- "$short]}}" | awk -v file="$file" -v title="$l1" 'NR==1 { printf "%-40s %s %s\n", file ":", "#" title ":", $0 }'
done
done
Title contains uppercase letters
grep -r -m 1 "#" | grep [A-Z]
Test if command is a symlink and the page should be an alias
find . -type f | xargs -n1 basename | cut -d . -f 1 | xargs -I _ bash -c "if [ -L /bin/_ ]; then echo _ is a symlink; fi"
Typos
rg -i initialise No output
rg -i licence No output
rg backtic | rg -v backtick No output
rg -i adress No output
rg -i "file system"
Placeholders in descriptions
rg "^-" | rg "\{\{" No output
rg "^>" | rg "\{\{" No output
Mnemonics
grep -r "^-" | grep -E "\[[a-zA-Z]+\]"
Optionality in commands
grep -rv "^-" | grep "\`" | grep "\[" | grep -v "{{\["
Use of archaic foobar
grep -ri foo | grep -v foot | grep -v footprint | grep -v food
grep -ri bar
grep -ri baz
Usage of ls in pipelines
grep -r "ls[ ]*.* |"
File contains executable permissions
fd -t x No output
Use of apostrophe instead of backtick
grep -vr ^\` | grep "'[a-zA-Z][a-zA-Z]*'" No output
Missing oxford comma
grep -rE "[^,. ]+,[^,.]+ (and|or) "
Use of personal language
rg -i your
rg -i "my_"
Sort files by by creation date
git log --diff-filter=A --name-only --format='%aI' | awk '/^[0-9T-]/ {date=$0} /^[^0-9T-]/ && NF {print date, $0}' | sort -r
Input redirection
rg " < "
Source: tldr-pages/tldr