Yeah. It could just as well have issued a file not found error when you try to touch a nonexistent file. And we would be none the wiser about what we’re missing in the world.
“Do one thing and do it very well” is the UNIX philosophy after all; if you’re 99% likely to just create that missing file after you get a file not found error, why should touch waste your time?
Creating an empty file is one of its intended purposes. Unix commands were designed as multi-purpose primitives, so they could be reused and composed to handle many different tasks. The touch command is no exception.
It is short for concatenate, which is to join things together. You can give it multiple inputs and it will output each one directly following the previous. It so happens to also work with just one input.
I sometimes use cat to concatenate files. For example, add a header to a csv file without manually copy and paste it. It’s rare, but at least more frequent than using touch.
Does anyone actually use
touch
for its intended purpose? Must be up there withcat
.TIL it’s actually for changing timestamps.
https://www.man7.org/linux/man-pages/man1/touch.1.html
Wtf. All these years I thought ‘touch’ was reference to Michelangelo’s Creation of Adam.
That’s beautiful, bro 🥲
The intended use of
touch
is to update the timestamp right?Yeah. It could just as well have issued a file not found error when you try to touch a nonexistent file. And we would be none the wiser about what we’re missing in the world.
“Do one thing and do it very well” is the UNIX philosophy after all; if you’re 99% likely to just create that missing file after you get a file not found error, why should
touch
waste your time?Because now touch does two things.
Without touch, we could “just” use the shell to create files.
Touch does one thing from a “contract” perspective:
Ensure the timestamp of <file> is <now>
Systemd also does one thing from a contract perspective: run your system
Oh no.
:(
Does it do it well, though?
with this logic, any command that moves, copies or opens a file should just create a new file if it doesn’t exist
and now you’re just creating new files without realising just because of a typo
Creating an empty file is one of its intended purposes. Unix commands were designed as multi-purpose primitives, so they could be reused and composed to handle many different tasks. The touch command is no exception.
https://www.youtube.com/watch?v=tc4ROCJYbm0&t=287s
what is cat’s use if not seeing whats inside a file?
It is to use along with
split
. e.g.split
to break it into multiple files of 4GBcat
to combine all files into the original file. (preferably accompanied by a checksum)It is short for concatenate, which is to join things together. You can give it multiple inputs and it will output each one directly following the previous. It so happens to also work with just one input.
That’s why we have
bat
nowhttps://github.com/sharkdp/bat
To bonbatenate files?
I sometimes use cat to concatenate files. For example, add a header to a csv file without manually copy and paste it. It’s rare, but at least more frequent than using touch.
$ cat file1 > output_file $ cat file2 >> output_file $ cat file3 >> output_file
I’m sorry!