“Everything is a file” is what made me start understanding linux few years ago and from there it got easier to use with each new concept.
Still this was really revolutionary to me when I first heard it. Made a bunch of things just click.
I may be dumb, been on linux too long or a combination of both. But what other way is there, does windows work differently? (regarding that)
“Everything is a file” means that many of the system’s components are represented as abstractions in the filesystem. It’s simply an API that allows reading from and writing to it by integrating into the hierarchical file structure.
If you take a look inside
/sys, you will find a fuckton of files, but they don’t represent data stored on a mass storage medium. Instead, the directory contains a mountedsysfsfilesystem that contains file-like representations of various parts and properties of the system. For example, you can read them like a file by runningcat /sys/block/sda/queue/rotationalto check if thesdablock device is a spinning disk (1) or solid-state storage (0). Or you can write to them like a file by runningecho 1 > /sys/block/sda/devices/deleteto commandsda’s driver to detach the device. Similarly,/proccontains a mountedprocfsfilesystem that presents information about running processes as file-like entries;/devcontains a mounteddevfsthat points to various devices; and/tmpand/runcontaintmpfsmounts for temporary storage in volatile memory (RAM or swap).Windows uses various other APIs (like the Component Object Model and others) to accomplish the same that are not necessarily tied into the filesystem.
deleted by creator
Also, in unixoid systems, devices are files too.
Anyone interested in this concept should take a look at plan9. Everything is even more of a file there.
Taking a screenshot, for example, can be done with:
cat /dev/screen | topng > screenshot.pngThat combined with the way that parent processes can alter their children’s view of the filesystem namespace allows for extremely elegant abstractions. For example, every program just tries to write directly to
screenoraudio, but the desktop environment redirects their writes to the relevant servers. Which means that, in the absence of those servers, those same programs can run just fine and don’t care whether they’re being multiplexed or not. That also means that the plan9 userspace can be nested inside itself just using the normal mechanisms of how the OS works (that is, without a special tool like Docker).This is very interesting.
👀 What kind of voodoo…
That is indeed seductive.
it’s all fun and games until you want to use your mouse and keyboard inputs on another machine and also view the other machines screen contents. then all of a sudden stuff stops being a file. quaint.
if only there was a way to share resources over a network…
Why aren’t the Linux devs just using SMB to forward the mouse and keyboard files? Are they stupid?
What do you mean? This
remoteuser@server$ nc -l -p 4444 > /dev/input/event0 localuser@laptop$ cat /dev/input/event0 | nc server 4444doesn’t work?
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeew scoots faaaar away from you actually when writing the prior comment, i was thinking about the ease that is doing what i described on plan9, there everything is in fact a file, which you can simply mount via the 9p protocol
what mumblerfish suggests looks interesting and i would have to read some the man page of “nc”, i suppose…
I’ve figured out how to control computers remotely and I’ll share the script:
Client:
#!/bin/bash PASSWORD="your_password_here" sshpass -p "$PASSWORD" scp /dev/stdin user@server:/path/to/cmd.txt <<< "$1"Server:
#!/bin/bash while true; do while IFS= read -r line; do eval "$line" done < "cmd.txt" > "cmd.txt" doneJust chmod 777 both files and run as root, ez.
wait til you gentoo and find out even folders themselves are files(as far as the machine interprets it anyway)
Just in case, I have to share this great explanation of the term “everything is a file”: https://unix.stackexchange.com/questions/141016/a-laymans-explanation-for-everything-is-a-file-what-differs-from-windows#141020
This really helped clear things up for me, the main idea is that everything is represented by the filesystem, so you can use the same file-manipulation tools on a ton of systems.




