Why is the command md5sum <<< 'ddd'
(output: d6d88f2e50080b9602da53dac1102762 -)
right, and md5sum << 'ddd' not?
What does <<< mean?
Why is the command md5sum <<< 'ddd'
(output: d6d88f2e50080b9602da53dac1102762 -)
right, and md5sum << 'ddd' not?
What does <<< mean?
The <<< starts a “here string”: The string is expanded and fed to the program’s stdin. (In your case, there is not much of expansion happening.) It is equivalent to this:
echo ddd | md5sum
On the other hand, << starts a here document. All the following lines up to one containing the marker ddd will comprise the input of the program. (You should use a marker that is not likely to appear in your data.) You could achieve the same effect as above like this:
md5sum <<END
ddd
END
There is one difference between <<END and <<'END': Without the quotes, any variables, escape sequences etc. in the here document will be expanded as usual.
rc, <<< (like <<) uses a temporary file so can be used by commands that lseek their stdin.
– Stéphane Chazelas
May 19 '13 at 22:05
<< and in other window typed ls -la in same folder and have not seen any new files (Mac OS).
– Alex Martian
Jan 10 '20 at 06:39
ls -ld /proc/self/fd/0 <<< text will show you its original path with a " (deleted)" appended. It's generally in $TMPDIR or /tmp if $TMPDIR is not set. zsh uses $TMPPREFIX instead (a prefix, not a directory).
– Stéphane Chazelas
Jan 10 '20 at 06:54
<<< doesn't need closing, and is typically all on a single line?
– Sridhar Sarnobat
May 12 '22 at 07:12
<<< introduces a here string: the string after <<< is passed as input to the command. This originates in Byron Rakitzis's implementation of rc (a Plan 9 shell) for Unix, and is also present in zsh, ksh93, mksh, yash and bash.
<< introduces a here document: subsequent lines of the shell script are passed as input to the command, and the string after << is a terminator. Here documents work in all Bourne-style shells (Bourne, POSIX, ash, bash, ksh, zsh, …), C-style shells (csh, tcsh), and shells derived from the Plan 9 shell (rc, es, akanga).
<<< is not a ksh extension, the path is rc -> zsh -> ksh93 -> bash (ksh release notes acknowledge for once borrowing the feature from zsh). << also works in rc style shells
– Stéphane Chazelas
May 19 '13 at 21:52
rc and zsh <<< though in that rc's doesn't include a trailing newline character and doesn't use a temp file (uses a pipe and an extra process feeding it at least in the port to Linux).
– Stéphane Chazelas
May 19 '13 at 22:02