-
-
Notifications
You must be signed in to change notification settings - Fork 164
Unix Tools
The shell has interacts with a set of Unix tools in /bin
and so forth. However, in many cases, those tools have grown functionality that overlaps with shell.
Unix Tools ...
-
make
and other build tools.make -j
for parallel builds. -
xargs
,-P
for parallel execution,-I {}
for substitution- Also GNU Parallel, which is mentioned in the bash manual
-
find -exec
and-exec +
Expression languages must be fully recursive to count here.
With no lexer:
-
find
---a -o ! ( )
-
test
---a -o ! ( )
-
expr
-- arithmetic, subsumed by$(())
Languages with lexers:
awk
-
dtrace
-- modelled after awk.
Honorable mention:
-
strace
also has a little expression language, but it's not fully recursive
-
grep
,grep -E
-
sed
,sed --regexp-extended
in GNU sed -
awk
(extended only) expr
find -regex
-
bash
itself
-
tar
has a --sed option
See Appendix A: How to Quickly and Correctly* Generate a Git Log in HTML
-
find -printf
(arbitrary filenames) -
stat -c
(arbitrary filenames) -
curl --write-out %{response_code}
-- URLs can't have arbitrary characters? -
printf
itself (coreutils) -
time
(/usr/bin/time
) -- mostly numbers -
date
-- mostly numbers -
bash
- the
printf
builtin - the
time
builtin and theTIMEFORMAT
string -- mostly numbers - the prompt string:
\h \W
- the
-
ps --format
-
git log --pretty=format:
(arbitrary descriptions) -
hg log --template
-- http://hgbook.red-bean.com/read/customizing-the-output-of-mercurial.html (doesn't have\0
as far as I can tell.) Mercurial has its own template language.
NOTE: grep
should have a syntax for captures, like $1 $2 name: $name age: $age
. sed
just has &
for the matched group.
-
find
/ls
ps
-
df
(has-h
and-H
human-readable option, but no format string)
-
getopts
builtin spec, and/usr/bin/getopt
- leading
:
means to do different error handling! Instead of the arg. Gah.
- leading
find
starts processes (in parallel), it a recursive boolean expression language, it has regexes (and globs), and it has field substitution. It should be part of the shell!
- CSV, JSON, HTML, XML, recfile, 1991 paper!