Re:The Art of Command Line (2015)
by bryanrasmussen on Thursday May 23, 2019 @08:01AM
(#19990852)
I'm pretty sure if you read, execute and understand all the code in most advanced guides to a language you will suddenly find yourself in the top 10% of the users of that language. But the understand is the hard part.
The Bash Hackers Wiki is a much better resource, especially as reference material: https://wiki.bash-hackers.org/
Re:The Art of Command Line (2015)
by obituary_latte on Thursday May 23, 2019 @08:05AM
(#19990881)
Wonder why they advise cat /dev/null > file to empty a file rather than echo > file
Re:The Art of Command Line (2015)
by lasereyes136 on Thursday May 23, 2019 @01:15PM
(#19993683)
This will empty a file without closing or invalidating any open file handlers so you can empty things like log files without restarting the services that are populating those files.
Well, `echo > file` won't empty the file, it will have a newline in it. At the very least you'll need `echo -n > file`.
I've always done it as: `> file`
That's actually very nice, I never thought about that one.
Unfortunately, this doesn't work in fish:
> fish: Expected a command, but instead found a redirection
Right but I don't think anyone is really concerned if it runs in fish. Fish is non standard and doesn't try to adhere to bash. If we want to write fish shell scripts we can do that elsewhere
Funny how the same sentence applies to bash wrt POSIX shell in other contexts
Re:The Art of Command Line (2015)
by naniwaduni on Thursday May 23, 2019 @09:27AM
(#19991533)
Or after thinking about it for a moment, true > file. Or by its shorter name, :> file.
`printf > file`, but there's endless ways of achieving the same thing (and that's part of the beauty).
Re:The Art of Command Line (2015)
by luckman212 on Thursday May 23, 2019 @08:59AM
(#19991272)
Trick: You can use just
>fileBecause echo-ing into a file will make a file with 1 byte in it: a single newline character.
echo -n >file
Or why they aren't recommending 'truncate -s 0 file'
IMO, the most natural method is simply:
>file
Re:The Art of Command Line (2015)
by TheSoftwareGuy on Thursday May 23, 2019 @09:41AM
(#19991672)
or why not `touch file`?
That works to create an empty file if none exists, but if the file already exists then 'touch' simply updates its atime/mtime and doesn't alter the contents. This latter effect is actually the purpose of touch; the file creation part is just a side effect.
https://www.tldp.org/LDP/abs/html/
(as a pdf: http://tldp.org/LDP/abs/abs-guide.pdf )