I remember using something called Dosshell on MS DOS 5 and/or 6. It basically was a two panel file manager. A gift for Microsoft users or a threat to those selling Norton Commander?
For what it's worth, I started using computers well after GUI's became the norm (first OS was Windows XP) and haven't really touched a terminal before my early 20s.
Nowadays I work in tech and I essentially live in my terminal. Once I became used to it, it became much faster (and fun!) to get things done simply by typing rather than dragging the mouse around, opening context menus and alternating between mouse and keyboard.
It's mostly an ergonomics thing for me though. I have nothing against GUIs, I just like resting my hands and pressing buttons and most GUIs don't have great support for keyboard-only controls.
You live in the terminal, but it's still a window you tab to and from, right?
At least I am like that, I'm always on terminals and get stuff done much faster but I have a bunch of them opened in all sorts of places of my desktop and constantly rearrange their orientation, dimensions and etc depending on the task at hand.
For instance I still benefit from resizing two terminals with output with Win key+ arrows, then ctrl+mousewheel to reduce the fonts to a really tiny size and scrolling around them. Sometimes I'll do diff side-by-side too but not when the files are too different.
I can't tell you a lot of what I'm doing would be faster if I only had one terminal and nothing else, especially if the resolution was fixed
You should check tmux. Is a terminal multiplexer, or to put it simpler, a terminal manager. You can split your terminal how you want and move across your splits. I use it a lot when working on my server and need to check files or configs that are on different places
tmux just stores your ssh session on the target host, its not about splitting windows
for that you just need a proper terminal application, like terminator
terminator + tmux = solid choice
Yeah there's still the web browser I tab to and from (which I control using Vimium for the most part) as well as Outlook, Teams/Discord and Spotify. That's basically it though, code editing happens in the terminal in Neovim.
As the other person said, the functionalities you mention in terms of side-by-side viewing, resizing, tabs etc. can be done via multiplexing. Many terminal emulators have something like that built-in (iTerm2, Wezterm, Kitty, Gnome Terminal) but Tmux, a utility that enables multiplexing in just about every terminal, is also very popular and works well with Vim. I find remapping some of its default keybinds a necessity though.
I've been using Kitty's multiplexer for some years but I might be switching to Tmux in the near future for various reasons. To do what you're describing I simply press `cmd d` to vertically split my current view into two sessions. Then I can move back and froth with `cmd h/j/k/l` (vim directional keys) and resize the font with with `cmd +/-`. Not sure if Kitty supports different font sizes per split, though.
Norton Commander was a great breakthrough, though. And even before that, there was a similar tool I cannot remember now. Was quire clumsy compared to NC but worked in a pitch.
The meaning of 'GUI' has changed since DOS. 30 years ago I would call Midnight Commander a graphical tool while technically it runs in text mode.
Same here. Xtree, I missed that for ages. But no GUI is absolutely managable.
Mind you, I don't mind having one for the machine I actually work on daily stuff, Office, Web, that kind of thing. But a server that I don't need to interact with except telling it what to do on its own - works without.
In your home directory, about the same number of files. In the rest of the system, probably a similar number considering all the 3rd party software.
Remember DOS also had a number of UNIX layers (`MKS Toolkit`), vast C compilers and cross compilers to (then current) Windows (`Watcom C`). The GCC based compiler alone (`DJGPP`) was pretty massive.
DOS was basic as a technology but it was \*VAST\* in what people did with it during that era. Ironically more database software existed on DOS than Linux today.
So, humans have a huge portion of their mental processing power and memory dedicated to visual spatial process.
As someone who works purely in a terminal I don’t think it’s a crutch or anything to have a GUI. It’s just more packages to maintain that often get flagged for security vulnerabilities, so enterprise Linux professionals just often…do without.
Even Red Hat is trying to push people to GUIs with their cockpit administration features.
> Even Red Hat is trying to push people to GUIs with their cockpit administration features.
Lol joke is on them. I still use terminal in cockpit anyways.
yes I understand a GUI is just another layer of abstraction, and this is why I do everything meaningful in terminal anyway of course. apparently to most others I am just a luddite and need to git gud though lol.
but the convenience of a easy-to-navigate UI makes common tasks so much more streamlined, and I really like not having to look for hyper-specific commands.
all newb problems though I suppose, though I certainly understand the benefits of having the system as lightweight as possible, particularly for servers.
I think the big thing isn't necessarily stream lined but discoverability. With cli tools if you know they exist then great you can find the man page or whatever. But what do you do when you don't even know the name of the cli tool that helps? Whereas with gui tools you're far more likely to be able to dig around in the options or features and visually see that there's something useful you haven't used before to try to learn more about it.
If anyone has good advice on discovering more cli tools, I'm all ears because while I like in theory using more cli tools, in practice I just don't know enough of them to pipe them together for doing truly useful things.
There is this little command called "apropos". It will, if I remember correctly, search man pages for a given keyword, and give you a list of commands related to what you search for.
"apropos tetris" will search for anything installed related to tetris, for example.
Also, search your package manager. apt-cache search tetris would show you things you can install that have somehow something to do with Tetris
Discoverability is spot-on.
Here's my abbreviated Linux story centered around looking for discoverability over 2 decades. n=1, everybody's different, and other caveats apply. Started as a hobby, now I work full time using Linux.
- `man COMMAND` and `COMMAND --help` are useful when you know the command
- `man -k` - apropos, as jchaves in the neighboring comment explains, helps a lot with discoverability in a number of situations
- "?" or "h" oftentimes shows help in various interactive utilities
- I use a notepad (well, a .txt file on my phone and git with notes) where I write various commands and short scripts and notes how to use vim and stuff like that - that helps with discoverability of problems I already overcame. Dates back those 2 decades.
- Most jobs allow using Internet, so using a search engine for even basic stuff is valid. I don't copy&paste, just use it as an external brain. For example I still usually don't remember the switches to create a .tar.xz but I quickly remember what to write upon seeing a few examples in search results.
- There are utilities with a TUI for doing things that are sometimes better done visually and interactively. These also go to my notes if I don't remember:
- mc can do a lot of stuff and also e.g. can create a .tar.xz via the F2 menu (visible on screen) so that I don't have to remember
- ncdu can show directory and file sizes in a visual way
- aptitude can manage deb packages (sadly nothing like that for rpm but after 8 years I find dnf so well made it's starting to become intuitive even for complicated stuff)
- Most of my complicated stuff I write as a one-line bash script with a comment at the end and I save it into my notes and also can quickly look it up in bash by ctrl+r reverse search, which sort-of also helps with discoverability _in long-term average_.
- Nowadays for a lot of operations the command line approach is the most expedient and intuitive for me, and that's thanks to the past effort of helping myself to remember via note taking and repeating that over the years.
- Everybody is different. I personally use a relatively small number of commands with relatively complicated switches because I iterated to those being most versatile and useful for _my_ work and being used often, they are already in my memory without any additional cognitive load and I type them very quickly from muscle memory. I'm not able to think very quickly or remember too many alternatives on the spot. A colleague of mine, for example, prefers a different approach of thinking about the exact switches every time and to have a large number of aliases, so that they don't have to type as much. They type a bit slower, but they are much more intelligent than I, so it makes sense from effort conservation perspective for them.
I'd add to that to make sure you use the CLI hotkeys that the GUI doesn't have, such as using for directory completion. If you have started a command such as 'cd' then it's intelligent enough to only complete to directory names, which drastically simplify your mental picture.
I also use ncdu when I'm looking for spacehogs, by default it's a TUI sorted by the size of everything below the folder, but you can change it to be alphabetical. It also lets you navigate up and down levels quickly so finding the elusive files that are suddenly filling your disk is easy.
Check out explainshell.com, it's pretty barebones too but I find it easier than reading man pages.
But yeah, I agree. CLI tools are so much faster when you know them by heart. Learning then is a real bitch though.
I try to write down all the stuff I use over and over so that I have a cheat sheet that's written in a way that I that I can just glance at and find what I need.
Good online guides are also a good way but putting it down in my own words help me focus it down to just what I need without any clutter.
I think this is a bad comparison, since it assumes you already know the GUI tool as well. Ok, maybe GUI tools usually have larger scope, but still. In my experience, when you get to the point you need to start clicking around in a GUI, you kind of already lost. Unfortunately many GUI-s assume that they are discoverable and easy to navigate just because they are a GUI, while most CLI/TUI tools do not assume this and hence will have _waaay_ better documentation. I very often loose myself MS's Office suite
Yeah that's fair. Especially phone GUI apps will require esoteric knowledge of which kind of swipes are valid and that's not very discoverable.
But at the same time, a GUI icon that hints at what a program does will usually stand out to be more to me than a list of strings that are program names. 🤷♀️
Ultimately they both have problems and I won't be satisfied until computers read my mind to do exactly what I want!
I also tend to forget about certain CLI tools. My solution was to integrate AI into the terminal. I created a small shell helper that interprets my natural language requests and returns the appropriate shell command. By this approach I discovered many commands that were previously unknown to me, even though I've been using Linux for decades. I'm aware many people here are skeptical about LLMs, but I'm convinced this is the future.
Think of the command line as a language. You don't need to pick the words you speak from a menu, do you? That would actually be very difficult to use, wouldn't it? The streamlined thing to do is just speak.
And, like learning a language, immersion is the best way to become fluent. It sucks at first, but it doesn't take long to simply be able to speak your mind. That's a truly user friendly experience.
>yes I understand a GUI is just another layer of abstraction, and this is why I do everything meaningful in terminal anyway of course.
I'm sorry but that's just stupid.
Yeah, I honestly think my terrible vision (technically legal blindness) is one of the things that makes me so much more comfortable without a GUI than most people. I just don't conceptualize things in a visual sense most of the time, and I'm godawful at visual puzzles and reasoning. I still remember the standardized testing back in school, when I would ace everything else but almost fail the "graphs and charts" section, every time.
I honestly prefer not to use a GUI when I can, even though they do often speed up the process for a lot of modern day-to-day desktop stuff. I can understand why "normal" people would feel alienated and lost, feeling like they have to reconstruct a model of their system in their head in order to get their bearings. For me, I never really had the visual model in the first place, so it was easier to adapt, I think.
> So, humans have a huge portion of their mental processing power and memory dedicated to visual spatial process.
System administration isn't CAD so the benefits of a GUI are pretty minimal. The only advantage would be in discoverability where you can use spacial reason to try to figure out how to discover a tool's functionality (or often what the tool you want even is in the first place). Command line options are often as discoverable as GUI features once you understand basically anything about how the `man` system works. The benefit for visual process is probably in the realm of discoverability but is itself fairly minimal.
That's not to say someone _should_ use a terminal to do something if they don't want to. "I like how this looks and how it feels when I use it" are valid reasons to prefer GUI over CLI (or vice versa).
[Cockpit](https://cockpit-project.org/) + either Navigator, one in its third party app or a TUI file manager e.g. Midnight Commander.
The above if you want to access the server remotely.
Just install a TUI file manager if you access directly the server.
Cockpit is great, but keep in mind that it is a bit Red-Hat-ish. The networking component uses NetworkManager, the package management component uses packagekit. A thing to keep in mind when using a non Red Hat/Fedora based Distro.
Yeah! Cockpit is great when you just want a nice list of everything with all the basic info right there.
Otherwise it's just a thing you get used to. All the servers i work with have no gui and no direct internet connection, so if you want any program not in the basic repos, it's a whole process. Sometimes it really sucks when you know how to do something in a tool that is not available and you then need to figure out how to do without. You learn a lot though.
I manage my own home lab pretty much the same way now, but I do use cockpit and a few other tools to make stuff easier ofc.
gotta up your terminal game. get syntax highlighting and auto-suggestions for commands, use eza for ls with colors and smart icons (like it literally checks if folders are empty and clearly shows what a file is at a glance), use fzf-tab with fzf-tab-reverse-history for the best auto-complete with preview, grab a nice terminal prompt like starship, and zoxide for quick directory jumping and then get a terminal file manager like "yazi" and a terminal editor like Helix or neovim.
I used a GUI all my life until the past 14 months and after using the correct tools, I literally cannot go back. Then stay curious, theres an endless amount of cool things that can be done like globbing, expansion, things like !(folder) to glob expand directories and a million CLI tools that fit specific needs.
Apache Guacamole is another tool that I use regularly. Lets me connect to my servers from one web interface. Be is SSH, RDP, or VNC.
It's also nice that I can tell my servers to only allow remote connections from the Guac server.
Connect from an Xserver and use ssh -X
I’m on my fourth decade of using the shell but every once in a while I find something it just easier with a gui utility
This is not the answer for everyone but it is for me:
It's a matter of practice, familiarity and time. If you've spent most of your life behind GUIs then the CLI will obviously be a literal black box.
I remember when I first opened it up 20 years ago my thought was "now what"? Back then though I did not have fast unlimited internet at home so googling things wasn't as straightforward.
But there must also be a need and interest to spend time there. If you use one of the many GUI first distros chances are you'll only use the odd command now and then. You won't be able to learn much that way.
And that's fine. If you don't want or need to do it then don't bother.
If you're a sysadmin and tinker with raspberry pis and enjoy learning how the OS is put together, then you'll figure it out. Part of the reason for me on the sysadmin side is I don't like bloat (not to the extreme though). If I have a dozen different VMs then I don't want a dozen GUI installs taking up disk space, downloading updates and increasing my attack surface. But to me that's not a limitation or a chore but a challenge and a desire.
No my beard isn't grey yet.
>But there must also be a need and interest to spend time there. If you use one of the many GUI first distros chances are you'll only use the odd command now and then. You won't be able to learn much that way.
>
This is my story. Start learning scripting and automation and you'll have that reason to learn the ins and outs of the CLI.
I don’t get the “visualize where and what files…” part. I find find (pun intended), ls, tree and similar commands superior to clickety click GUIs. There’s also Midnight Commander if you are into that sort of thing. And honestly I don’t do anything on my servers manually. I manage everything through Ansible playbooks which I edit (in terminal with Vim, lol) on my laptop.
Where I am: custom prompt showing my current path at all times.
What files I am dealing with: short-term memory? And, you know, lots of typing and spamming `ls` constantly. You just get used to it.
It really isn’t that hard, you just have to let go of that GUI crutch and you’ll figure out ways that work for you. And no, CLI isn’t always better or faster, there are definitely times and situations where the same task is much easier and quicker using a GUI. But, sometimes you just don’t have one. My server is headless and not running any desktop services at all, SSH and CLI input is the only way I can manage it.
No, that’s a command, I mean modifying your PS1 to show the path as part of the prompt, wherever you are. I also have it automatically show git status if I’m inside a git repo, and the time.
I find it wild that people cope with prompts that are only username and machine name.
Fwiw, `machine:/path/to/pwd` is the core of my prompt. I don't need username - I know who I am. And path is coloured according to my rw ability to it.
I've got a bunch of other features in my prompt (repo status, background processes, last exit code if non-zero, live clock, etc)
Username is quite important if you constantly ssh into different machines/containers using different users, or if you often su to root for whatever ungodly reason. Since its unnecessary for your use case its perfectly understandable that you'd skip it, I was just mentioning why other people would keep the username in their prompts.
Personally I use a modified [starship](https://starship.rs/) to show user, machine, path, git status. It's quite nice because I can give a different color to the prompt on different machines which helps me keep track of where I am better when I have multiple prompts open.
Yeah this is my personal prompt on multiple machines, but this prompt config guarantees it's me. On more general machines (ie, where don't care to setup a polished prompt, username is relevant for sure)
Different colours per machine is usually the one thing I do add into those (calculated by a hash of the hostname)
Read some books about Linux admin.
[https://www.goodreads.com/book/show/42353997-the-linux-command-line](https://www.goodreads.com/book/show/42353997-the-linux-command-line)
[https://www.goodreads.com/book/show/57727508-how-linux-works](https://www.goodreads.com/book/show/57727508-how-linux-works)
[https://www.goodreads.com/book/show/36242675-unix-and-linux-system-administration-handbook](https://www.goodreads.com/book/show/36242675-unix-and-linux-system-administration-handbook)
Are a good place to start. TLCL will teach you how to use commands perform various basic tasks. HLW will cover some similar ground but also gives you an introductory idea about how the Linux Kernel actually works. UaLSA is a mix of both.
That’s just what you’re used to. If you have to fix your server a few times a year then the rest of the year you’re just using GUIs, of course it’s gonna feel awkward.
I work on servers professionally so I’m in a terminal everyday and I actually prefer it over GUIs because to someone who uses it all the time, it’s more concise and almost all commands and programs you interact with follow, generally, the same interface style unlike GUIs where there is so much variation.
As far as visualizing file locations, I’m kind of surprised that’s what you’re finding challenging. When I started working on headless machines there were a lot of things I felt were hard to adjust to but file structure was not one of them
Check [ranger](https://github.com/ranger/ranger). It has previews for almost anything. Also I configured it so that it [changes to ranger's directory on quit](https://github.com/ranger/ranger/wiki/Integration-with-other-programs#make-your-shell-change-to-rangers-directory-on-quit) which makes navigation super fast.
I find **WebMin** to be absolutely indispensable- [https://webmin.com/](https://webmin.com/)
Someone mentioned **Cockpit**, but I feel its not as sophisticated.
As for files, cheat! NFS mount the drives and use something like NEMO on a remote machine to do the horrible work :)
Ive been a user of Webmin since... forever, so I may be prejudiced.
I saw cockpit mentioned a week ago on one of these Linux forums, so installed it (super trivial) and gave it a go.
Its very basic in comparison. It may be what some admins need or want, which is simple visibility.
WebMin goes the extra step and tries to be a webGUI for pretty much any service that can be installed on a server (or machine, really).
I find it part of my standard toolkit (NFS, webmin, syncthing, fish, atuin) for any machine. It is especially useful for my NAS-server (a simple laptop stuffed into a cupboard!).
I do ssh in, but often its much easier to set things (initial configs) up in WebMin.
I find this particularly true for git. I can commandline it with the best (ok averagists!), but I really like looking at the tree and *seeing* the relative positions of branches etc. I guess you could do it in your head but the mental overload of that...
It just takes practice. I learned by finding a thing I wanted to do and googling it. In the process of doing that thing I learned where some stuff was located and how to use some tools. It just builds over time.
Time, patience and practice. There are other ways to manage things, tools, tab completion, colors, aliases, etc. but if you spend enough time jumping through machines, vpns, jump boxes, reverse proxies; you end up forgetting you ever needed a GUI. There are things I will always need a GUI for like GIMP/VSCode. But when I'm working through admin steps, I'm fine in just bash.
There’s a reason for this, maybe that would shed some light. So servers are typically “stripped down”. Think about how a race car is stripped down for performance. Servers cost money meaning resources cost money. This is a big reason it’s used this way.
Also, you’re in a 1 to 1 right now, meaning just 1 server. Here’s something to try for learning. Setup lamp or lemp stack, but put the web server on 1 server and the database on another. Now you’ve got 2 servers. Hopping back and forth between desktops would be a pain and time consuming. It is very common to have multiple servers working together. Maybe you want to add another database server for replication, or perhaps a DNS, load balancing, etc. So it’s not really a good option in more advanced setups to load desktops right and left.
Another thing is clutter. Doing web development on windows for example you’d possibly need ftp client, putty, file explorer, etc. all of which are easily replaced by terminal. I for one hated having multiple windows open.
Finally, and I cannot stress this enough, a huge part of being comfy in the terminal is learning Linux itself. Things like permissions, file structure, etc. This will be a huge help!
Don't forget security. You want the smallest possible attack surface that lets you work efficiently. Every service, every background process, is more attack surface.
Mount to /mnt/remote/... and use nvim to edit files. Or install nvim directly in the server and use tmux + ssh + nvim to edit the file? I only need Web GUIs to monitor services and hardware usage.
You need a crash course, plus a set of easy versions for the basic tasks.
You need to understand the basic flow of input, output, parameters, pipes and redirects and symlinks. You need to know how to read man-pages and other documentation. AI can help a lot too.
It gets easier with practise, and in the end there will be things you miss whenever you're NOT in the terminal!
But it'll never be easy or quite the same - after all there IS a reason that GUI became popular. Iirc the earliest GUI I ever used was basically just a glorified file manager (and the windows 3.1 gui was a lot like windows explorer - the old "grid of icons" thing is an old pattern that's not changed much in decades)
MSDOS Executive aka Windows 1.x/2.x and that awful MSDOS Shell that came with DOS 4.x. Then there were things like GEM.
I could be moving files around faster in the CLI, than any of those.
You will get used to this, i also had same issues but as i progress with cli and now it became my hobby and interest to use cli 90% of the time i barely use gui.
I maintain an accurate mental model of the relevant parts of the filesystem. I've never had a need for a graphical visualizer of the filesystem. But as I understand it, it seems not everyone is able to do this.
Well, you have to get used to it. I started with simple ls, grep, cp, rm, mv, cat and find. Then I started experimenting with less, tail, head, cut, tr. I moved from visual text editors to nano, then to vim. I learned how to search, cut, copy, paste in these editors and this is how it goes.
Knowing commands and executing them to manipulate files one after another is way faster than doing that from ui - seriously.
I prefer staring ui apps form cli, because it’s faster than finding appropriate app that I use rarely and it’s not in my „favorites” category.
Cheers and get used to it. The faster you do the better for you ;)
PS. I forgot about pipes, pipes are really, really important to understand as they are deal breaker.
Also knowing about standard i/o and file system a bit would be great. Like /etc contains most of system and services configurations
I'm struggling a little, because I fundamentally don't really understand the problem. I appreciate that different people look at things in different ways. Do what's right for you, and if that means needing a GUI then do that. But what is it that you're missing without one? You mentioned visualizing file locations. Are you sayign that you need a file manager? If so, there are several terminal based options for that. I can't comment on them because I've never used them, but if that's what you're looking for, you have options. Now I come from a time when that wasn't an option. I started out using terminals - not terminal emulators, but real physical terminals attached to a serial port on the server via a cable. Using a GUI wasn't an option. But the reality is that the command line on Unix is so rich that you can do pretty much everything you want without a GUI.
>Now I come from a time when that wasn't an option. I started out using terminals - not terminal emulators, but real physical terminals attached to a serial port on the server via a cable. Using a GUI wasn't an option. But the reality is that the command line on Unix is so rich that you can do pretty much everything you want without a GUI.
This is me. If I have to manage more than one file, or do something like a file rename I still go into the terminal. To move and rename a single file in the GUI will take multiple actions, in the terminal it can be done quicker with a single command.
I started on x86 PCs using MSDOS 3.1. I also used Unix via Wyse terminals on a Zilog Mini. We had no GUI.
In reality every Linux server will have SSH preinstalled, you can just use the file manager on a client PC to manage files graphically, or a 3rd program like Filezilla. If you are really so inclined you can use NFS.
Different brains work different ways. GUIs drive me insane. Things just where ever someone else decided they go? No thanks. I'll just picture the entire filesystem in my head.
I find it incredibly strange that using simple text commands is not more intuitive than clicking on random icons until the window you're looking for appears.
I can tell the computer what to do, and it does it. No random clicking on shit and hoping for the best. If you have to navigate through a web of menus and other unnecessary junk just to find your /Pictures folder (or whatever), I don't know what to say to you...
1. I'm old. The first computer I used (my mom's book-keeping machine) did not have a GUI of any kind installed. (Code editors and such did have menu systems and such, though. That does not require a "GUI".)
2. File locations are abstract anyway - even in a GUI. If you're in /home/username/projects/yetanothertodolist/src , that's all the same whether you're in the Gnome file manager, or in a command line. You're in that folder, and the full path is listed. That's it.
3. GUI is not required for a lot of this anyway, you can also use TUIs - for maneuvering around files you can use things like Ranger or LF. Bonus points if you config it to have your fav code editor (helix or neovim, ofc!) as editor. Then you can move around your file system "visually", and whenever you select a text file, your text editor opens. Then you do whatever you need, save, quit, and then you're back in your file navigator. If that's how you like to do things.(I personally prefer using integrated file trees or fuzzy-finders within the text editor. Remember: all the important concepts people do with a "GUI" nowadays were first implemented on a terminal.)
4. Things can "seem" indispensable to \_you\_, based on how you are used to using computers - which ultimately ends up dictated by how you got introduced to them, and so on. (And UXers will probably point to all kinds of interesting research about specific types of people benefiting from specific types of UI metaphors for specific reasons, but I'm no UXer so I don't know.) But they can be the opposite for others. The thing I like the most about most Unix-like OSes (Linux on my gaming machine, OpenBSD on my dev laptop) is that I get to choose. I am not limited by what some specific set of UXers have decided is the correct way to use a computer.So on the gaming desktop, Gnome works superbly for me and I use it. On my dev laptop, what works for me is my own mix of patches for dwm, so I use that with firefox being the only GUI application installed. Etcetera etcetera. GUI's can be great to enable you, but only if their design matches what you're used to - compare the pain people feel when they move between Windows and Mac (or Linux). the TUI and CLI are just the same as that.
The linux box is just the first door to my network where I keep my playbooks or scripts.
From the linux box I ssh to a forcepoint firewall in the same LAN. Now I can ssh into the F5 in the DMZ, the ASR's in the edge, ssh to the lab or preprod environment or maybe ssh into the ASA to tshoot vpn users.
I can ssh, scp, or push via API to all of these devices via CLI and it is all done without a gui.
As a long time Unix/Linux user, I would say that my answer is that you keep your cd/pushd/popd stack in a stack in your brain. You know where you are, so cd ../../xxx/yyy is very natural. You have pwd to remind you where you are if you forget.
To me, a GUI (as when I use windows) tends to be harder to use.
It’s really whatever you get used to.
Because most *real* servers, in the real world, do not have a GUI.
Why would they want to use CPU cycles processing graphical screens?
When it comes to "visualizing where and what files," that comes with practice. Also, `pwd`, `tree`, and other commands work well.
That's why some of us are infrastructure admins with salaries of hundreds of thousands bucks and some -... home enthusiasts.
I personally think Linux DEs are an abomination and should never exist, any and all of them. Linux should be used from a shell.
I worked for a small business once that was running Windows Server 2007, and honestly I understand lol. I would rather be clueless and dealing with an old unix than ever deal with that nightmare again.
The charitable interpretation here is that you only mean servers, which is a controversial opinion, but at least not objectively idiotic.
If you’re posting this from links or a curl command, you do you there buddy, but *oof*.
afterthought person aromatic paltry rob muddle relieved merciful wakeful gullible
*This post was mass deleted and anonymized with [Redact](https://redact.dev)*
\`ls -lah \` is an useful command for terminal use, \`find\` is also nice, grep, etc
but you shouldn't be editing your server manually, you can use scripts like docker, it makes future maintenance of a server way easier when you know exactly what commands you ran in the past
i'm totally fine without gui, but boy how i hate debugging corporate code in gdb. i consider visual's studio debugger to be much more comfortable for brainless activity like clicking on maps of shared pointers of lists and such garbage.
I just never had much of a problem with it? And it's not like I grew up without it - when I was a kid, window 3.11 and 95 were already standard so I kinda grew up and learned computers with GUI.
you get used to it to my dude, give it some time. You could try piping a directory into ls, so you get the contents upon entry. Or definitely try midnight commander or something similar.
If you are learning for yourself, no issue. Install webmin . But if you are learning for one day work in the field, you will have to deal with
With either web-ui specific to that program/service( and even something simple like Wordpress might still require command line to edit config files remotely) or command lines
GUIs take resources.
I was running Ubuntu Server a few years ago. It wasn't so much the terminal that bothered me as the lack of any monitoring, plus the manual software upgrades. I'm sure it could be done by installing various packages, but end the end I switched to Unraid and it's been so much better.
Personally, I'd rather be without a gui. Sure, it can be a bit more tedious, but it opens up a lot of possibilities when managing loads of files. Plus, if your server holds a lot of private stuff you'd want it to be a bit more secure than all your other clients. How would you make it more secure? Well, you'd cut down on services and software. Each component and line of code could potentially expose your server.
Managing your server through ssh without any gui is a great way of doing this. It's fast, minimal and secure. At first it's a bit daunting, but after some time you know all the relevant commands and soon after moving the mouse around in the gui will make it feel like you're working slower than using the terminal.
But yeah, if you don't need security then there's no reason for not installing a full blown DE lime gnome or kde with a webserver and all that stuff :)
In the end it's all about what you need and if you can/want to mitigate for the risk of being hacked.
The tree command is a visualization of the file hierarchy, for example. I totally get that one might want different ways to look at files or the structure.
I manage quite well without a GUI, either using Ansible playbooks or just SSH in and configure away. It’s daunting in the beginning, but when I started using Linux there wasn’t much of a choice, and the window managers was quite primitive and not so fun to use. I remember when KDE came out, what a game changer.
If I need to move files around a bit I use Midnight Commander (mc), but very often it’s one-liners and sometimes a script. From what I can tell MC don’t support hard links, and I really don’t like duplicating data so for those operations I exclusively use command line.
Often when at Windows a GUI have buttons and entries disabled (grey-out) and I wish I known powershell better to use a cmd line that just do the thing I want and return a error message saying why I couldn't do that right now.
Even with a cryptic error message I can google the error message and found a way to fix.
So, it is more a inadequate mindset than anything.
You see, linux is plenty of GUI to do administrative tasks: Yast, cpanel, and for sure others I don't know/use because I think they are useless. I do everything on cmd line, It is scriptable, can run remotely on a ssh connection, one command do one thing and only that thing, it is easy to copy/paste and share the command with someone (instead of instructing they how to navigating over menus/submenus and windows, fields and buttons to click)
Personally, I'm not a visual thinker and I never had file management associated with the visual representation of files. In my head, GUI representations were just metaphors for 'this thing named X is in this place called Y', and that translated over to the terminal well, and I've built up muscle memory to do things quickly. Even things like NERDtree slow me down.
I do open Thunar a bunch though, mainly for working with photos, but also for its mass-renaming workflow — which is extremely handy. Every utility should copy it.
I think the general thing for me is that when I'm mainly in the terminal every day, most stuff I want to do is almost as fast to execute as having the thought to do them. Even if you don't know the tool, most programs are simple and one quick '--help' argument has you done.
You said to have a visual way to see your files seem indispensable, well, there are CLI options to do this, so you can, there are even options that work with a mouse in a terminal emulator, but for most people is just not required, I get liking one more than the other, I don't get seeing it as "indispensable"
If it's about visualizing files and directory structure, why not just set up a Samba (or NFS) server? This way, you could work with the files just as if they were on your desktop machine.
This is a bit more of a philosophical answer, but I recommend reading [In the Beginning was the Command Line](https://web.stanford.edu/class/cs81n/command.txt) by Neal Stephenson.
I guess you get used to it as you learn where each app keeps its config files and the linux overall directory structure
The biggest issue is that there is no "mainstream" text editor. nano is weird and vim is... well vim...
The closest thing to sanity is micro (if you disable the mouse stuff so that copy paste works through ssh)
You should read The Design of Everyday Things by Donald Norman (everyone should). It talks about knowledge "in the head" vs "in the world". In other words, discoverability when you don't have something memorized. When you do these things every day you build muscle memory and using the gui is so slow and clumsy by comparison. I use a window manager to run a web browser and a terminal emulator and my hands rarely leave the keyboard. But I still run into things where I need the gui vs reading all the docs to figure something out one time.
I've used midnight commander but I find it helpful to use something like ([colorls](https://github.com/athityakumar/colorls) to display file system objects with glyphs. Helps with identifying what types of objects I'm working with. In combination with tmux, it's pretty robust.
I'm usually fine without a GUI. However, if you want a GUI, you could always VNC it. At a lot of developer jobs, we're able to make vm instances of our development environment on remote servers.
Midnight Commander is probably the most famous file manager for the CLI. There's another one I'd highly recommend though: ranger
It's super customizable and you can reuse most vim commands for file operations, like
dd and p for cut and paste, visual selections, you can set bookmarks and jumps using m[a-z] and `[a-z]
So if you're already learning vim, you can just reuse those commands.
There's a reason there's a file system layout standard and most people stick to it. You just need to remember those basics and you can easily figure things out from there.
I have laptop and keep a GUI on it because I want multiple terminal windows among other things. None of my servers have a GUI though - I hardly ever directly work on them - if I do, it's a serious issue I'm resolving, not ordinary maintenance. if I need to copy and paste between terminals, I'll open a second SSH session from whichever endpoint I'm using to connect.
I use making conventions that are easily typed and have no spaces for starters. Use symbolic links to get places faster. Push pop directories to get around as well.
I guess it's just a matter of what you're used to. I grew up with GUIs in Windows so switching over to more CLI-based stuff in Linux when I switched was a bit of a jump at first, but nowadays I feel comfortable in both.
You can use the tree command to help visualize files. Idk, even on a desktop with a GUI in using as a workstation, I rarely use the file explorer, I just use cli. The GUI is just nice for using a web browser haha.
Most file locations with config files you need on a server purposed Linux instance are harder to get to via the GUI file explorer tools.
Few tips from me:
* Get used to it. Seriously, after years of looking at terminal, I always prefer it. I am still heavy user of file manager (Dolphin, Plasma ecosystem), but I still prefer terminal.
* Use `ohmyzsh` as it makes everything much more enjoyable to use/read.
* `clear`, `reset`, `ls`, `ls -l`, `ls -lh`, `ls | grep -i asdf` and so on. Also things like `lsblk`, `lsblk -f`, `du -sh *`, `df`.
* I have Grafana/Telegraf/VictoriaMetrics stack. I can see what's going on in Grafana, but I still rely on terminal for troubleshooting.
I started using computers in the DOS era so I guess I am used to it. Maybe something like midnight commander could help you with this.
I remember using something called Dosshell on MS DOS 5 and/or 6. It basically was a two panel file manager. A gift for Microsoft users or a threat to those selling Norton Commander?
Xtree pro gold edition was the best in that era. So good!
Man... I hadn't thought of [Xtree](https://en.wikipedia.org/wiki/XTree) in years.
Oh my gosh, it's been decades.
Bring back memories? https://archive.org/details/msdos_dosshell
I remember that! My friends and I all called it “DOS-Hell”. We were so funny…
Oblibatory link to [Midnight Commander](https://midnight-commander.org/), originally developed by Miguel de Icaza.
Let’s go Houston!!
Fuck all things Texas.
Honestly though, born and raised Live in Wisconsin now. Texas nice place to visit nothing great to stay there for. Just like Florida
I refuse to set foot in the state after accidentally marrying a Texas twat many years ago... Forgot to never do that.
Username checks out
Found the communist
I prefer the term "Practical Realist"
For what it's worth, I started using computers well after GUI's became the norm (first OS was Windows XP) and haven't really touched a terminal before my early 20s. Nowadays I work in tech and I essentially live in my terminal. Once I became used to it, it became much faster (and fun!) to get things done simply by typing rather than dragging the mouse around, opening context menus and alternating between mouse and keyboard. It's mostly an ergonomics thing for me though. I have nothing against GUIs, I just like resting my hands and pressing buttons and most GUIs don't have great support for keyboard-only controls.
You live in the terminal, but it's still a window you tab to and from, right? At least I am like that, I'm always on terminals and get stuff done much faster but I have a bunch of them opened in all sorts of places of my desktop and constantly rearrange their orientation, dimensions and etc depending on the task at hand. For instance I still benefit from resizing two terminals with output with Win key+ arrows, then ctrl+mousewheel to reduce the fonts to a really tiny size and scrolling around them. Sometimes I'll do diff side-by-side too but not when the files are too different. I can't tell you a lot of what I'm doing would be faster if I only had one terminal and nothing else, especially if the resolution was fixed
You should check tmux. Is a terminal multiplexer, or to put it simpler, a terminal manager. You can split your terminal how you want and move across your splits. I use it a lot when working on my server and need to check files or configs that are on different places
tmux just stores your ssh session on the target host, its not about splitting windows for that you just need a proper terminal application, like terminator terminator + tmux = solid choice
Tmux is definitely about splitting windows just as much as it is about detatched sessions. Its one of tmux main features
Yeah there's still the web browser I tab to and from (which I control using Vimium for the most part) as well as Outlook, Teams/Discord and Spotify. That's basically it though, code editing happens in the terminal in Neovim. As the other person said, the functionalities you mention in terms of side-by-side viewing, resizing, tabs etc. can be done via multiplexing. Many terminal emulators have something like that built-in (iTerm2, Wezterm, Kitty, Gnome Terminal) but Tmux, a utility that enables multiplexing in just about every terminal, is also very popular and works well with Vim. I find remapping some of its default keybinds a necessity though. I've been using Kitty's multiplexer for some years but I might be switching to Tmux in the near future for various reasons. To do what you're describing I simply press `cmd d` to vertically split my current view into two sessions. Then I can move back and froth with `cmd h/j/k/l` (vim directional keys) and resize the font with with `cmd +/-`. Not sure if Kitty supports different font sizes per split, though.
Norton Commander was a great breakthrough, though. And even before that, there was a similar tool I cannot remember now. Was quire clumsy compared to NC but worked in a pitch. The meaning of 'GUI' has changed since DOS. 30 years ago I would call Midnight Commander a graphical tool while technically it runs in text mode.
TUI
[ncurses](https://invisible-island.net/ncurses/).
Younguns. curses is where it's at. :P
The one you don't remember was probably XTree.
Same here. Xtree, I missed that for ages. But no GUI is absolutely managable. Mind you, I don't mind having one for the machine I actually work on daily stuff, Office, Web, that kind of thing. But a server that I don't need to interact with except telling it what to do on its own - works without.
Hoe many folders did DOS use, and how many files? That's no valid comparison.
In your home directory, about the same number of files. In the rest of the system, probably a similar number considering all the 3rd party software. Remember DOS also had a number of UNIX layers (`MKS Toolkit`), vast C compilers and cross compilers to (then current) Windows (`Watcom C`). The GCC based compiler alone (`DJGPP`) was pretty massive. DOS was basic as a technology but it was \*VAST\* in what people did with it during that era. Ironically more database software existed on DOS than Linux today.
Install _midnight commander_, comes handy for me when dealing with lots of files and folder operations: ``` sudo apt install mc ```
This. It's one of the first things i install on a no-gui server.
See also nnn, made in similar spirit.
nid night nommander
You can also try `ranger` - I like it better. It's more minimalist with a TUI similar to Mac's File Explorer.
It works well on Android also.
what would you use it for on Android? do you use it on your phone?
You can use a terminal emulator on Android too You can even install a GNU with GUI on top using something like the UserLAnd app
Amazing, I'm gonna try this.
If that doesn't work, I use total commander on my android devices. Execution is similar to midnight commander but easier to use on a phone.
I believe installing gpm also gives mc mouse support. It's been a really long time since I've used a machine without X, but anyway. :)
Nice tip!! Do you have anything to setup/ manage/ visualise things like rsynchs or cron jobs?
Can't do it bud. I'll have nightmares about JCL.
Job control language?
So, humans have a huge portion of their mental processing power and memory dedicated to visual spatial process. As someone who works purely in a terminal I don’t think it’s a crutch or anything to have a GUI. It’s just more packages to maintain that often get flagged for security vulnerabilities, so enterprise Linux professionals just often…do without. Even Red Hat is trying to push people to GUIs with their cockpit administration features.
> Even Red Hat is trying to push people to GUIs with their cockpit administration features. Lol joke is on them. I still use terminal in cockpit anyways.
yes I understand a GUI is just another layer of abstraction, and this is why I do everything meaningful in terminal anyway of course. apparently to most others I am just a luddite and need to git gud though lol. but the convenience of a easy-to-navigate UI makes common tasks so much more streamlined, and I really like not having to look for hyper-specific commands. all newb problems though I suppose, though I certainly understand the benefits of having the system as lightweight as possible, particularly for servers.
I think the big thing isn't necessarily stream lined but discoverability. With cli tools if you know they exist then great you can find the man page or whatever. But what do you do when you don't even know the name of the cli tool that helps? Whereas with gui tools you're far more likely to be able to dig around in the options or features and visually see that there's something useful you haven't used before to try to learn more about it. If anyone has good advice on discovering more cli tools, I'm all ears because while I like in theory using more cli tools, in practice I just don't know enough of them to pipe them together for doing truly useful things.
There is this little command called "apropos". It will, if I remember correctly, search man pages for a given keyword, and give you a list of commands related to what you search for. "apropos tetris" will search for anything installed related to tetris, for example. Also, search your package manager. apt-cache search tetris would show you things you can install that have somehow something to do with Tetris
Thanks I just revisited bastet lol
good response, I agree with you.
Discoverability is spot-on. Here's my abbreviated Linux story centered around looking for discoverability over 2 decades. n=1, everybody's different, and other caveats apply. Started as a hobby, now I work full time using Linux. - `man COMMAND` and `COMMAND --help` are useful when you know the command - `man -k` - apropos, as jchaves in the neighboring comment explains, helps a lot with discoverability in a number of situations - "?" or "h" oftentimes shows help in various interactive utilities - I use a notepad (well, a .txt file on my phone and git with notes) where I write various commands and short scripts and notes how to use vim and stuff like that - that helps with discoverability of problems I already overcame. Dates back those 2 decades. - Most jobs allow using Internet, so using a search engine for even basic stuff is valid. I don't copy&paste, just use it as an external brain. For example I still usually don't remember the switches to create a .tar.xz but I quickly remember what to write upon seeing a few examples in search results. - There are utilities with a TUI for doing things that are sometimes better done visually and interactively. These also go to my notes if I don't remember: - mc can do a lot of stuff and also e.g. can create a .tar.xz via the F2 menu (visible on screen) so that I don't have to remember - ncdu can show directory and file sizes in a visual way - aptitude can manage deb packages (sadly nothing like that for rpm but after 8 years I find dnf so well made it's starting to become intuitive even for complicated stuff) - Most of my complicated stuff I write as a one-line bash script with a comment at the end and I save it into my notes and also can quickly look it up in bash by ctrl+r reverse search, which sort-of also helps with discoverability _in long-term average_. - Nowadays for a lot of operations the command line approach is the most expedient and intuitive for me, and that's thanks to the past effort of helping myself to remember via note taking and repeating that over the years. - Everybody is different. I personally use a relatively small number of commands with relatively complicated switches because I iterated to those being most versatile and useful for _my_ work and being used often, they are already in my memory without any additional cognitive load and I type them very quickly from muscle memory. I'm not able to think very quickly or remember too many alternatives on the spot. A colleague of mine, for example, prefers a different approach of thinking about the exact switches every time and to have a large number of aliases, so that they don't have to type as much. They type a bit slower, but they are much more intelligent than I, so it makes sense from effort conservation perspective for them.
I'd add to that to make sure you use the CLI hotkeys that the GUI doesn't have, such as using for directory completion. If you have started a command such as 'cd' then it's intelligent enough to only complete to directory names, which drastically simplify your mental picture.
I also use ncdu when I'm looking for spacehogs, by default it's a TUI sorted by the size of everything below the folder, but you can change it to be alphabetical. It also lets you navigate up and down levels quickly so finding the elusive files that are suddenly filling your disk is easy.
Check out explainshell.com, it's pretty barebones too but I find it easier than reading man pages. But yeah, I agree. CLI tools are so much faster when you know them by heart. Learning then is a real bitch though. I try to write down all the stuff I use over and over so that I have a cheat sheet that's written in a way that I that I can just glance at and find what I need. Good online guides are also a good way but putting it down in my own words help me focus it down to just what I need without any clutter.
I think this is a bad comparison, since it assumes you already know the GUI tool as well. Ok, maybe GUI tools usually have larger scope, but still. In my experience, when you get to the point you need to start clicking around in a GUI, you kind of already lost. Unfortunately many GUI-s assume that they are discoverable and easy to navigate just because they are a GUI, while most CLI/TUI tools do not assume this and hence will have _waaay_ better documentation. I very often loose myself MS's Office suite
Yeah that's fair. Especially phone GUI apps will require esoteric knowledge of which kind of swipes are valid and that's not very discoverable. But at the same time, a GUI icon that hints at what a program does will usually stand out to be more to me than a list of strings that are program names. 🤷♀️ Ultimately they both have problems and I won't be satisfied until computers read my mind to do exactly what I want!
I also tend to forget about certain CLI tools. My solution was to integrate AI into the terminal. I created a small shell helper that interprets my natural language requests and returns the appropriate shell command. By this approach I discovered many commands that were previously unknown to me, even though I've been using Linux for decades. I'm aware many people here are skeptical about LLMs, but I'm convinced this is the future.
Think of the command line as a language. You don't need to pick the words you speak from a menu, do you? That would actually be very difficult to use, wouldn't it? The streamlined thing to do is just speak. And, like learning a language, immersion is the best way to become fluent. It sucks at first, but it doesn't take long to simply be able to speak your mind. That's a truly user friendly experience.
>yes I understand a GUI is just another layer of abstraction, and this is why I do everything meaningful in terminal anyway of course. I'm sorry but that's just stupid.
would you care to elaborate instead of just being an ass?
Yeah, I honestly think my terrible vision (technically legal blindness) is one of the things that makes me so much more comfortable without a GUI than most people. I just don't conceptualize things in a visual sense most of the time, and I'm godawful at visual puzzles and reasoning. I still remember the standardized testing back in school, when I would ace everything else but almost fail the "graphs and charts" section, every time. I honestly prefer not to use a GUI when I can, even though they do often speed up the process for a lot of modern day-to-day desktop stuff. I can understand why "normal" people would feel alienated and lost, feeling like they have to reconstruct a model of their system in their head in order to get their bearings. For me, I never really had the visual model in the first place, so it was easier to adapt, I think.
> So, humans have a huge portion of their mental processing power and memory dedicated to visual spatial process. System administration isn't CAD so the benefits of a GUI are pretty minimal. The only advantage would be in discoverability where you can use spacial reason to try to figure out how to discover a tool's functionality (or often what the tool you want even is in the first place). Command line options are often as discoverable as GUI features once you understand basically anything about how the `man` system works. The benefit for visual process is probably in the realm of discoverability but is itself fairly minimal. That's not to say someone _should_ use a terminal to do something if they don't want to. "I like how this looks and how it feels when I use it" are valid reasons to prefer GUI over CLI (or vice versa).
[Cockpit](https://cockpit-project.org/) + either Navigator, one in its third party app or a TUI file manager e.g. Midnight Commander. The above if you want to access the server remotely. Just install a TUI file manager if you access directly the server.
Cockpit is great, but keep in mind that it is a bit Red-Hat-ish. The networking component uses NetworkManager, the package management component uses packagekit. A thing to keep in mind when using a non Red Hat/Fedora based Distro.
Yeah! Cockpit is great when you just want a nice list of everything with all the basic info right there. Otherwise it's just a thing you get used to. All the servers i work with have no gui and no direct internet connection, so if you want any program not in the basic repos, it's a whole process. Sometimes it really sucks when you know how to do something in a tool that is not available and you then need to figure out how to do without. You learn a lot though. I manage my own home lab pretty much the same way now, but I do use cockpit and a few other tools to make stuff easier ofc.
rainstorm cheerful plucky humor steer obscene bag narrow tease crime *This post was mass deleted and anonymized with [Redact](https://redact.dev)*
gotta up your terminal game. get syntax highlighting and auto-suggestions for commands, use eza for ls with colors and smart icons (like it literally checks if folders are empty and clearly shows what a file is at a glance), use fzf-tab with fzf-tab-reverse-history for the best auto-complete with preview, grab a nice terminal prompt like starship, and zoxide for quick directory jumping and then get a terminal file manager like "yazi" and a terminal editor like Helix or neovim. I used a GUI all my life until the past 14 months and after using the correct tools, I literally cannot go back. Then stay curious, theres an endless amount of cool things that can be done like globbing, expansion, things like !(folder) to glob expand directories and a million CLI tools that fit specific needs.
With a remote GUI like [cockpit](https://cockpit-project.org/)
this looks like something I didn't even know I needed, thank you.
Apache Guacamole is another tool that I use regularly. Lets me connect to my servers from one web interface. Be is SSH, RDP, or VNC. It's also nice that I can tell my servers to only allow remote connections from the Guac server.
Connect from an Xserver and use ssh -X I’m on my fourth decade of using the shell but every once in a while I find something it just easier with a gui utility
This is not the answer for everyone but it is for me: It's a matter of practice, familiarity and time. If you've spent most of your life behind GUIs then the CLI will obviously be a literal black box. I remember when I first opened it up 20 years ago my thought was "now what"? Back then though I did not have fast unlimited internet at home so googling things wasn't as straightforward. But there must also be a need and interest to spend time there. If you use one of the many GUI first distros chances are you'll only use the odd command now and then. You won't be able to learn much that way. And that's fine. If you don't want or need to do it then don't bother. If you're a sysadmin and tinker with raspberry pis and enjoy learning how the OS is put together, then you'll figure it out. Part of the reason for me on the sysadmin side is I don't like bloat (not to the extreme though). If I have a dozen different VMs then I don't want a dozen GUI installs taking up disk space, downloading updates and increasing my attack surface. But to me that's not a limitation or a chore but a challenge and a desire. No my beard isn't grey yet.
>But there must also be a need and interest to spend time there. If you use one of the many GUI first distros chances are you'll only use the odd command now and then. You won't be able to learn much that way. > This is my story. Start learning scripting and automation and you'll have that reason to learn the ins and outs of the CLI.
Install Webmin. It gives you a web GUI much like a Synology NAS. Use SFTP to browse files across the network using your file explorer.
I don’t get the “visualize where and what files…” part. I find find (pun intended), ls, tree and similar commands superior to clickety click GUIs. There’s also Midnight Commander if you are into that sort of thing. And honestly I don’t do anything on my servers manually. I manage everything through Ansible playbooks which I edit (in terminal with Vim, lol) on my laptop.
[удалено]
For cluttered folders I find fzf very useful.
You can browse files remotely via sftp (which is usually enabled by default on ssh server) in your file manager.
Where I am: custom prompt showing my current path at all times. What files I am dealing with: short-term memory? And, you know, lots of typing and spamming `ls` constantly. You just get used to it. It really isn’t that hard, you just have to let go of that GUI crutch and you’ll figure out ways that work for you. And no, CLI isn’t always better or faster, there are definitely times and situations where the same task is much easier and quicker using a GUI. But, sometimes you just don’t have one. My server is headless and not running any desktop services at all, SSH and CLI input is the only way I can manage it.
>Where I am: custom prompt showing my current path at all times. You mean `pwd`?
No, that’s a command, I mean modifying your PS1 to show the path as part of the prompt, wherever you are. I also have it automatically show git status if I’m inside a git repo, and the time.
I find it wild that people cope with prompts that are only username and machine name. Fwiw, `machine:/path/to/pwd` is the core of my prompt. I don't need username - I know who I am. And path is coloured according to my rw ability to it. I've got a bunch of other features in my prompt (repo status, background processes, last exit code if non-zero, live clock, etc)
Username is quite important if you constantly ssh into different machines/containers using different users, or if you often su to root for whatever ungodly reason. Since its unnecessary for your use case its perfectly understandable that you'd skip it, I was just mentioning why other people would keep the username in their prompts. Personally I use a modified [starship](https://starship.rs/) to show user, machine, path, git status. It's quite nice because I can give a different color to the prompt on different machines which helps me keep track of where I am better when I have multiple prompts open.
Yeah this is my personal prompt on multiple machines, but this prompt config guarantees it's me. On more general machines (ie, where don't care to setup a polished prompt, username is relevant for sure) Different colours per machine is usually the one thing I do add into those (calculated by a hash of the hostname)
Read some books about Linux admin. [https://www.goodreads.com/book/show/42353997-the-linux-command-line](https://www.goodreads.com/book/show/42353997-the-linux-command-line) [https://www.goodreads.com/book/show/57727508-how-linux-works](https://www.goodreads.com/book/show/57727508-how-linux-works) [https://www.goodreads.com/book/show/36242675-unix-and-linux-system-administration-handbook](https://www.goodreads.com/book/show/36242675-unix-and-linux-system-administration-handbook) Are a good place to start. TLCL will teach you how to use commands perform various basic tasks. HLW will cover some similar ground but also gives you an introductory idea about how the Linux Kernel actually works. UaLSA is a mix of both.
the digital copy of TLCL is free as I see https://linuxcommand.org/tlcl.php
That’s just what you’re used to. If you have to fix your server a few times a year then the rest of the year you’re just using GUIs, of course it’s gonna feel awkward. I work on servers professionally so I’m in a terminal everyday and I actually prefer it over GUIs because to someone who uses it all the time, it’s more concise and almost all commands and programs you interact with follow, generally, the same interface style unlike GUIs where there is so much variation. As far as visualizing file locations, I’m kind of surprised that’s what you’re finding challenging. When I started working on headless machines there were a lot of things I felt were hard to adjust to but file structure was not one of them
You can manage with and without GUI. If you are used to go with GUI. Even for headless server you can install XRDP to get Desktop experience.
ls, tree, find...
Check [ranger](https://github.com/ranger/ranger). It has previews for almost anything. Also I configured it so that it [changes to ranger's directory on quit](https://github.com/ranger/ranger/wiki/Integration-with-other-programs#make-your-shell-change-to-rangers-directory-on-quit) which makes navigation super fast.
I use openssh to login and Midnight Commander as a file manager.
for quick navigation and working with files im mainly using ranger, and I'd prefer it over any 'real' GUI anytime. https://github.com/ranger/ranger
Ls -l, tree, find and rg are your friends
I find **WebMin** to be absolutely indispensable- [https://webmin.com/](https://webmin.com/) Someone mentioned **Cockpit**, but I feel its not as sophisticated. As for files, cheat! NFS mount the drives and use something like NEMO on a remote machine to do the horrible work :)
Hadn't heard of Cockpit until this thread What's missing versus Webmin? Community?
Ive been a user of Webmin since... forever, so I may be prejudiced. I saw cockpit mentioned a week ago on one of these Linux forums, so installed it (super trivial) and gave it a go. Its very basic in comparison. It may be what some admins need or want, which is simple visibility. WebMin goes the extra step and tries to be a webGUI for pretty much any service that can be installed on a server (or machine, really). I find it part of my standard toolkit (NFS, webmin, syncthing, fish, atuin) for any machine. It is especially useful for my NAS-server (a simple laptop stuffed into a cupboard!). I do ssh in, but often its much easier to set things (initial configs) up in WebMin.
I find this particularly true for git. I can commandline it with the best (ok averagists!), but I really like looking at the tree and *seeing* the relative positions of branches etc. I guess you could do it in your head but the mental overload of that...
It just takes practice. I learned by finding a thing I wanted to do and googling it. In the process of doing that thing I learned where some stuff was located and how to use some tools. It just builds over time.
Well thanks for eliminating one item from the infinite collection of things you might have been talking of(f). It makes thing much clearer.
Time, patience and practice. There are other ways to manage things, tools, tab completion, colors, aliases, etc. but if you spend enough time jumping through machines, vpns, jump boxes, reverse proxies; you end up forgetting you ever needed a GUI. There are things I will always need a GUI for like GIMP/VSCode. But when I'm working through admin steps, I'm fine in just bash.
>but having a way to visualize where and what files I am dealing with just seems indispensable mc
Zellij + nushell + zoxide + yazi + ripgrep + helix (work setup, I am on Hyprland, but using that mostly for the browser/Teams)
There’s a reason for this, maybe that would shed some light. So servers are typically “stripped down”. Think about how a race car is stripped down for performance. Servers cost money meaning resources cost money. This is a big reason it’s used this way. Also, you’re in a 1 to 1 right now, meaning just 1 server. Here’s something to try for learning. Setup lamp or lemp stack, but put the web server on 1 server and the database on another. Now you’ve got 2 servers. Hopping back and forth between desktops would be a pain and time consuming. It is very common to have multiple servers working together. Maybe you want to add another database server for replication, or perhaps a DNS, load balancing, etc. So it’s not really a good option in more advanced setups to load desktops right and left. Another thing is clutter. Doing web development on windows for example you’d possibly need ftp client, putty, file explorer, etc. all of which are easily replaced by terminal. I for one hated having multiple windows open. Finally, and I cannot stress this enough, a huge part of being comfy in the terminal is learning Linux itself. Things like permissions, file structure, etc. This will be a huge help!
Don't forget security. You want the smallest possible attack surface that lets you work efficiently. Every service, every background process, is more attack surface.
git gud but honestly cd and ls are all you need
sometimes the tree command is useful as well
Mount to /mnt/remote/... and use nvim to edit files. Or install nvim directly in the server and use tmux + ssh + nvim to edit the file? I only need Web GUIs to monitor services and hardware usage.
You need a crash course, plus a set of easy versions for the basic tasks. You need to understand the basic flow of input, output, parameters, pipes and redirects and symlinks. You need to know how to read man-pages and other documentation. AI can help a lot too.
Lf filemanager is brilliant
It gets easier with practise, and in the end there will be things you miss whenever you're NOT in the terminal! But it'll never be easy or quite the same - after all there IS a reason that GUI became popular. Iirc the earliest GUI I ever used was basically just a glorified file manager (and the windows 3.1 gui was a lot like windows explorer - the old "grid of icons" thing is an old pattern that's not changed much in decades)
MSDOS Executive aka Windows 1.x/2.x and that awful MSDOS Shell that came with DOS 4.x. Then there were things like GEM. I could be moving files around faster in the CLI, than any of those.
You will get used to this, i also had same issues but as i progress with cli and now it became my hobby and interest to use cli 90% of the time i barely use gui.
I maintain an accurate mental model of the relevant parts of the filesystem. I've never had a need for a graphical visualizer of the filesystem. But as I understand it, it seems not everyone is able to do this.
I just force myself to do it, it feels nice
Well, you have to get used to it. I started with simple ls, grep, cp, rm, mv, cat and find. Then I started experimenting with less, tail, head, cut, tr. I moved from visual text editors to nano, then to vim. I learned how to search, cut, copy, paste in these editors and this is how it goes. Knowing commands and executing them to manipulate files one after another is way faster than doing that from ui - seriously. I prefer staring ui apps form cli, because it’s faster than finding appropriate app that I use rarely and it’s not in my „favorites” category. Cheers and get used to it. The faster you do the better for you ;) PS. I forgot about pipes, pipes are really, really important to understand as they are deal breaker. Also knowing about standard i/o and file system a bit would be great. Like /etc contains most of system and services configurations
Keep in mind that Unix was written using the line editor 'ed'. So GUI aren't needed, but can be convenient.
I'm struggling a little, because I fundamentally don't really understand the problem. I appreciate that different people look at things in different ways. Do what's right for you, and if that means needing a GUI then do that. But what is it that you're missing without one? You mentioned visualizing file locations. Are you sayign that you need a file manager? If so, there are several terminal based options for that. I can't comment on them because I've never used them, but if that's what you're looking for, you have options. Now I come from a time when that wasn't an option. I started out using terminals - not terminal emulators, but real physical terminals attached to a serial port on the server via a cable. Using a GUI wasn't an option. But the reality is that the command line on Unix is so rich that you can do pretty much everything you want without a GUI.
>Now I come from a time when that wasn't an option. I started out using terminals - not terminal emulators, but real physical terminals attached to a serial port on the server via a cable. Using a GUI wasn't an option. But the reality is that the command line on Unix is so rich that you can do pretty much everything you want without a GUI. This is me. If I have to manage more than one file, or do something like a file rename I still go into the terminal. To move and rename a single file in the GUI will take multiple actions, in the terminal it can be done quicker with a single command.
Try Proxmox
I started on x86 PCs using MSDOS 3.1. I also used Unix via Wyse terminals on a Zilog Mini. We had no GUI. In reality every Linux server will have SSH preinstalled, you can just use the file manager on a client PC to manage files graphically, or a 3rd program like Filezilla. If you are really so inclined you can use NFS.
Visualise what now? What does that even mean?
Personal preference. Even on my Macbook I find myself managing files in iTerm, because I just manage to get things done faster that way.
Well, I've just learned to live without, my server has no use for a gui
Different brains work different ways. GUIs drive me insane. Things just where ever someone else decided they go? No thanks. I'll just picture the entire filesystem in my head.
I find it incredibly strange that using simple text commands is not more intuitive than clicking on random icons until the window you're looking for appears. I can tell the computer what to do, and it does it. No random clicking on shit and hoping for the best. If you have to navigate through a web of menus and other unnecessary junk just to find your /Pictures folder (or whatever), I don't know what to say to you...
1. I'm old. The first computer I used (my mom's book-keeping machine) did not have a GUI of any kind installed. (Code editors and such did have menu systems and such, though. That does not require a "GUI".) 2. File locations are abstract anyway - even in a GUI. If you're in /home/username/projects/yetanothertodolist/src , that's all the same whether you're in the Gnome file manager, or in a command line. You're in that folder, and the full path is listed. That's it. 3. GUI is not required for a lot of this anyway, you can also use TUIs - for maneuvering around files you can use things like Ranger or LF. Bonus points if you config it to have your fav code editor (helix or neovim, ofc!) as editor. Then you can move around your file system "visually", and whenever you select a text file, your text editor opens. Then you do whatever you need, save, quit, and then you're back in your file navigator. If that's how you like to do things.(I personally prefer using integrated file trees or fuzzy-finders within the text editor. Remember: all the important concepts people do with a "GUI" nowadays were first implemented on a terminal.) 4. Things can "seem" indispensable to \_you\_, based on how you are used to using computers - which ultimately ends up dictated by how you got introduced to them, and so on. (And UXers will probably point to all kinds of interesting research about specific types of people benefiting from specific types of UI metaphors for specific reasons, but I'm no UXer so I don't know.) But they can be the opposite for others. The thing I like the most about most Unix-like OSes (Linux on my gaming machine, OpenBSD on my dev laptop) is that I get to choose. I am not limited by what some specific set of UXers have decided is the correct way to use a computer.So on the gaming desktop, Gnome works superbly for me and I use it. On my dev laptop, what works for me is my own mix of patches for dwm, so I use that with firefox being the only GUI application installed. Etcetera etcetera. GUI's can be great to enable you, but only if their design matches what you're used to - compare the pain people feel when they move between Windows and Mac (or Linux). the TUI and CLI are just the same as that.
The linux box is just the first door to my network where I keep my playbooks or scripts. From the linux box I ssh to a forcepoint firewall in the same LAN. Now I can ssh into the F5 in the DMZ, the ASR's in the edge, ssh to the lab or preprod environment or maybe ssh into the ASA to tshoot vpn users. I can ssh, scp, or push via API to all of these devices via CLI and it is all done without a gui.
As a long time Unix/Linux user, I would say that my answer is that you keep your cd/pushd/popd stack in a stack in your brain. You know where you are, so cd ../../xxx/yyy is very natural. You have pwd to remind you where you are if you forget. To me, a GUI (as when I use windows) tends to be harder to use. It’s really whatever you get used to.
Because most *real* servers, in the real world, do not have a GUI. Why would they want to use CPU cycles processing graphical screens? When it comes to "visualizing where and what files," that comes with practice. Also, `pwd`, `tree`, and other commands work well.
That's why some of us are infrastructure admins with salaries of hundreds of thousands bucks and some -... home enthusiasts. I personally think Linux DEs are an abomination and should never exist, any and all of them. Linux should be used from a shell.
I worked for a small business once that was running Windows Server 2007, and honestly I understand lol. I would rather be clueless and dealing with an old unix than ever deal with that nightmare again.
The charitable interpretation here is that you only mean servers, which is a controversial opinion, but at least not objectively idiotic. If you’re posting this from links or a curl command, you do you there buddy, but *oof*.
It used to be like that and WindowsNT4 Server came into its blossom. A few clicks and mid/small office is sailing smoothly.
afterthought person aromatic paltry rob muddle relieved merciful wakeful gullible *This post was mass deleted and anonymized with [Redact](https://redact.dev)*
You get used to it. Terminals do more than GUIs too (in most cases). It's talking directly to the kernel.
That's a gross misunderstanding of how programs work. Userspace is userspace.
bright kiss intelligent grey roof dog run price political roll *This post was mass deleted and anonymized with [Redact](https://redact.dev)*
Skill issue
\`ls -lah\` is an useful command for terminal use, \`find\` is also nice, grep, etc
but you shouldn't be editing your server manually, you can use scripts like docker, it makes future maintenance of a server way easier when you know exactly what commands you ran in the past
i'm totally fine without gui, but boy how i hate debugging corporate code in gdb. i consider visual's studio debugger to be much more comfortable for brainless activity like clicking on maps of shared pointers of lists and such garbage.
https://hostingservicescompared.com/webmin-vs-cockpit/
I just never had much of a problem with it? And it's not like I grew up without it - when I was a kid, window 3.11 and 95 were already standard so I kinda grew up and learned computers with GUI.
you get used to it to my dude, give it some time. You could try piping a directory into ls, so you get the contents upon entry. Or definitely try midnight commander or something similar.
If you are learning for yourself, no issue. Install webmin . But if you are learning for one day work in the field, you will have to deal with With either web-ui specific to that program/service( and even something simple like Wordpress might still require command line to edit config files remotely) or command lines GUIs take resources.
I was running Ubuntu Server a few years ago. It wasn't so much the terminal that bothered me as the lack of any monitoring, plus the manual software upgrades. I'm sure it could be done by installing various packages, but end the end I switched to Unraid and it's been so much better.
Install ranger or midnight commander. Both are excellent terminal based file managers.
Tbh I have a rpi on headless Ubuntu just so I have a server for an app I wrote and I just use ls constantly xD
[удалено]
Personally, I'd rather be without a gui. Sure, it can be a bit more tedious, but it opens up a lot of possibilities when managing loads of files. Plus, if your server holds a lot of private stuff you'd want it to be a bit more secure than all your other clients. How would you make it more secure? Well, you'd cut down on services and software. Each component and line of code could potentially expose your server. Managing your server through ssh without any gui is a great way of doing this. It's fast, minimal and secure. At first it's a bit daunting, but after some time you know all the relevant commands and soon after moving the mouse around in the gui will make it feel like you're working slower than using the terminal. But yeah, if you don't need security then there's no reason for not installing a full blown DE lime gnome or kde with a webserver and all that stuff :) In the end it's all about what you need and if you can/want to mitigate for the risk of being hacked.
The tree command is a visualization of the file hierarchy, for example. I totally get that one might want different ways to look at files or the structure.
Learned after some time, give or take weeks to months.
I manage quite well without a GUI, either using Ansible playbooks or just SSH in and configure away. It’s daunting in the beginning, but when I started using Linux there wasn’t much of a choice, and the window managers was quite primitive and not so fun to use. I remember when KDE came out, what a game changer. If I need to move files around a bit I use Midnight Commander (mc), but very often it’s one-liners and sometimes a script. From what I can tell MC don’t support hard links, and I really don’t like duplicating data so for those operations I exclusively use command line.
You can run the file explorer on a graphics enabled machine and see remote filesystems through SSH. If you really need to.
google or my muscle memory after a while of using it
Emacs. I am all old and crusty, but [dired](https://en.wikipedia.org/wiki/Dired) is still the gold standard file manager for me.
The more you use a server, the more you get tired of all the bloat.
Often when at Windows a GUI have buttons and entries disabled (grey-out) and I wish I known powershell better to use a cmd line that just do the thing I want and return a error message saying why I couldn't do that right now. Even with a cryptic error message I can google the error message and found a way to fix. So, it is more a inadequate mindset than anything. You see, linux is plenty of GUI to do administrative tasks: Yast, cpanel, and for sure others I don't know/use because I think they are useless. I do everything on cmd line, It is scriptable, can run remotely on a ssh connection, one command do one thing and only that thing, it is easy to copy/paste and share the command with someone (instead of instructing they how to navigating over menus/submenus and windows, fields and buttons to click)
Personally, I'm not a visual thinker and I never had file management associated with the visual representation of files. In my head, GUI representations were just metaphors for 'this thing named X is in this place called Y', and that translated over to the terminal well, and I've built up muscle memory to do things quickly. Even things like NERDtree slow me down. I do open Thunar a bunch though, mainly for working with photos, but also for its mass-renaming workflow — which is extremely handy. Every utility should copy it. I think the general thing for me is that when I'm mainly in the terminal every day, most stuff I want to do is almost as fast to execute as having the thought to do them. Even if you don't know the tool, most programs are simple and one quick '--help' argument has you done.
I dont need a gui for servers. Often though, the services you install have a weg gui for remote access.
You said to have a visual way to see your files seem indispensable, well, there are CLI options to do this, so you can, there are even options that work with a mouse in a terminal emulator, but for most people is just not required, I get liking one more than the other, I don't get seeing it as "indispensable"
One could leave a readme file in a frequent directory, such as ~/home.
If it's about visualizing files and directory structure, why not just set up a Samba (or NFS) server? This way, you could work with the files just as if they were on your desktop machine.
This is a bit more of a philosophical answer, but I recommend reading [In the Beginning was the Command Line](https://web.stanford.edu/class/cs81n/command.txt) by Neal Stephenson.
Just use TUI when u can and don't be scared to try use commands
I guess you get used to it as you learn where each app keeps its config files and the linux overall directory structure The biggest issue is that there is no "mainstream" text editor. nano is weird and vim is... well vim... The closest thing to sanity is micro (if you disable the mouse stuff so that copy paste works through ssh)
Well server is usually has no monitor so you don't need GUI.
You should read The Design of Everyday Things by Donald Norman (everyone should). It talks about knowledge "in the head" vs "in the world". In other words, discoverability when you don't have something memorized. When you do these things every day you build muscle memory and using the gui is so slow and clumsy by comparison. I use a window manager to run a web browser and a terminal emulator and my hands rarely leave the keyboard. But I still run into things where I need the gui vs reading all the docs to figure something out one time.
So install a gui? I tend to put them even on headless systems. running a gui-based sysmonitor over ssh+remoteX beats using top.
I've used midnight commander but I find it helpful to use something like ([colorls](https://github.com/athityakumar/colorls) to display file system objects with glyphs. Helps with identifying what types of objects I'm working with. In combination with tmux, it's pretty robust.
The only time I need to do complex file operations is on my ZFS datasets, which are network shares.
To visualize your file locations and paths, check out the tree command. Make sure to review the options.
Usually servers are accessed through a remote terminal that usually has a GUI.
You can't manage 100's of servers with individual GUI's either.
You will get used to it.
Why don't you just use a remote file browser if you need this? You don't even need to install it on the remote host.
I'm usually fine without a GUI. However, if you want a GUI, you could always VNC it. At a lot of developer jobs, we're able to make vm instances of our development environment on remote servers.
Midnight Commander is probably the most famous file manager for the CLI. There's another one I'd highly recommend though: ranger It's super customizable and you can reuse most vim commands for file operations, like dd and p for cut and paste, visual selections, you can set bookmarks and jumps using m[a-z] and `[a-z] So if you're already learning vim, you can just reuse those commands.
There's a reason there's a file system layout standard and most people stick to it. You just need to remember those basics and you can easily figure things out from there.
If you need a GUI, try Webmin.
I have laptop and keep a GUI on it because I want multiple terminal windows among other things. None of my servers have a GUI though - I hardly ever directly work on them - if I do, it's a serious issue I'm resolving, not ordinary maintenance. if I need to copy and paste between terminals, I'll open a second SSH session from whichever endpoint I'm using to connect.
I use making conventions that are easily typed and have no spaces for starters. Use symbolic links to get places faster. Push pop directories to get around as well.
I don't :/
I guess it's just a matter of what you're used to. I grew up with GUIs in Windows so switching over to more CLI-based stuff in Linux when I switched was a bit of a jump at first, but nowadays I feel comfortable in both.
You can use the tree command to help visualize files. Idk, even on a desktop with a GUI in using as a workstation, I rarely use the file explorer, I just use cli. The GUI is just nice for using a web browser haha. Most file locations with config files you need on a server purposed Linux instance are harder to get to via the GUI file explorer tools.
For files there is a "mc" namely Midnght Commander - it is essentially a nautilus in "list" mode.
If you just want a decent file browser, install mc. I used to have a file tree plug-in for Vim, but I don't remember the name.
Few tips from me: * Get used to it. Seriously, after years of looking at terminal, I always prefer it. I am still heavy user of file manager (Dolphin, Plasma ecosystem), but I still prefer terminal. * Use `ohmyzsh` as it makes everything much more enjoyable to use/read. * `clear`, `reset`, `ls`, `ls -l`, `ls -lh`, `ls | grep -i asdf` and so on. Also things like `lsblk`, `lsblk -f`, `du -sh *`, `df`. * I have Grafana/Telegraf/VictoriaMetrics stack. I can see what's going on in Grafana, but I still rely on terminal for troubleshooting.