Does anyone actually use
touch
for its intended purpose? Must be up there withcat
.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.
: > foo.txt
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
TIL it’s actually for changing timestamps.
what is cat’s use if not seeing whats inside a file?
It is to use along with
split
. e.g.- You take a single large file, say 16GB
- Use
split
to break it into multiple files of 4GB - Now you can transfer it to a FAT32 Removable Flash Drive and transfer it to whatever other computer that doesn’t have Ethernet.
- Here, you can use
cat
to combine all files into the original file. (preferably accompanied by a checksum)
Doesnt computers do this automatically if you try to copy over a file larger than its per file size limit?
No. It just gives an error that it’s too big.
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
nowTo bonbatenate files?
These are some weird looking dolph— oh
Is there a command that’s actually just for creating a new file?
most shells will accept outputting from a silent command to a file, e.g.
:> foo.txt
(where:
is the posix synonym to thetrue
command)How often do you actually need a blank file though? Usually you’d be writing something in the file.
I’m betting that’s why none ever materialized. Most tools that can manipulate a file, can also create that file first, so there’s just never been a usecase.
Right-clicking the desktop to create a new txt file in Windows feels so natural, but I can’t really think of any time you’d want to create a new file and do nothing with it in a CLI.
You might if some other program checks whether that file exists and behaves differently depending on that.
But even still, what’s a realistic usecase that would that involve needing a blank, unmodified file in that instance?
One use case is if you’re running a web server that is configured to return a “maintenance” page instead of the live site if a particular file exists. Which is actually pretty cool because then you don’t have to update the config when you need to do something or let your users get a bunch of 502 errors, you just
touch maintenance
and you’re good.
Remember to confirm consent before touching.
You can only touch in places where you have permission to touch.
sudo touch woman
Iseif is not in the sudoers file. This incident will be reported.
to whom, perchance?