 One of the most oftenly asked questions that I see newer to Linux users ask Especially as they grow as a Linux user and they become a little more knowledgeable about the command line about terminal Applications, they start wondering why they really need to use terminal applications rather than GUI applications graphical applications Why for example, would you rather use a terminal for your file management stuff? You know to search through directories and move things copy things delete things Why would you want to do that at the terminal rather than just using a graphical file manager? And of course, that's just one example You you could practically do everything that you do on a computer at the command line inside a terminal if you so choose But why would you want to do that? Well, there are many cases Where it's advantageous to actually use the terminal rather than a graphical GUI application I'm going to discuss a little of the reasons why and why We have kind of this divide where it seems like newer to Linux users really resist the terminal All right, they don't want anything to do with it. It's strange. It's foreign. It's alien I don't I can't handle it right. Don't don't show me a terminal where once you get more Intermediate to advanced users they often spend most or even all of their time in the terminal at the command line And sometimes it seems like they're just doing this to be elitist to feel superior But that's not actually the case. There are actually real reasons why The more you learn about Linux the more time you're going to spend in a terminal and the reason I'm making this video is because I think nobody has Really answered this question properly. It's kind of like the emacs videos I do, you know, I've made a lot of emacs content in the last couple of years because I think emacs is a Fantastic program. It has real-world advantages for those that want to take advantage of something like emacs but the problem is Most people don't explain the advantages of emacs properly. They don't break it down. They don't do, uh, you know Eli5, you know explain it like I'm five years old kind of thing when people talk about emacs They often talk way above people's heads and that's often the case with this kind of argument too Why use a terminal rather than a GUI application is usually when, you know The more advanced users start talking about things they can do with the terminal and the command line It just goes way over people's heads. So today, I just feel like I have I Have a style of presenting stuff to people where I can really break it down and bring it down to to your level Especially if you're a newer to Linux user. So that's what I'm going to do today the first thing I want to talk about is command line interface tools versus GUI applications So if I switch over to my desktop, let's talk about file management since I brought it up Let me open a terminal and let's say that I want to LS You know get a listing of everything in my home directory Which we're currently in by default the terminal will open up in your user's home directory If I want to CD into a different directory I could CD into the downloads directory do a LS there to see what is in my downloads directory I could CD back into the home directory I could CD and a slash Etsy if I needed to go into slash Etsy for some reason I could do it LS there if I wanted to take a look at one of these config files Maybe I wanted to take a look at my SDDM Comp SDDM as my walk-in manager You know I could change some stuff here and then once I'm done I know I could quit out of the the editor here I opened this with them here in this case. I wanted to copy this file I could copy the SDDM.comp over to I don't know I mean I guess I could put it in home slash downloads and now if I CD into Home slash downloads do a LS. I should have SDDM.com somewhere there and I do So I can move around looking directories copies files edit files move files delete files and all of that was rather easy right that didn't look like I was struggling and Really navigating the file system that was rather fast and pippy right now I've done this a lot right is one of those things you get used to it But I can move around pretty fast now if I had my graphical file manager open So let me open PC man FM, which is my GUI file manager I mean I could navigate with the mouse I could grab the the bar here and then take a look at everything and then what did I CD into? I CD into downloads. I could take a look at that if I wanted to I could go to the field up here and Etsy I wanted to take a look at that and then I could find that same file that I wanted to edit the SDDM.com at right click open with whatever editor I want to open it with maybe I want to open it with them again like I did before make the changes quit out of it I mean I can do all of the same task, but here's the thing the graphical application is Essentially a front-end to the command line for example when I type, you know slash home Well slash home slash DT here, you know all of that all that is doing is it's running a command-lined Command it's running CD Slash home slash DT exactly like I did in the terminal This is just a graphical way of doing that right when I click on this Downloads folder here. All I'm doing when I click that is in the background. It's actually running CD Slash home slash downloads. That's that's all that's doing if I click on the home folder CD into the home folder If I move a file around right if I just grab a file, you know Maybe I want to grab my bash RC or something you know, I could do a control C to copy I can go back into downloads control V to paste. There's that bash RC all that did was that was a Copy command at the command line CP the copy command copy home slash Dot bash RC over to download slash dot bash RC, you know, the same commands many people think Especially newer to Linux users people that don't do a lot of scripting or programming And they imagine that GUI applications are completely different than command line applications That's actually not the case all the GUI application is is There are representation of the command line tools So the buttons and sliders and widgets and the folders and the image anything that you click on and there's some kind of action associated with that that action is actually running a Command line tool right it's actually doing a copy a move or remove You know, it's when you open up your graphical update manager You know your software center and you do an update and you click update right the button that says update your system Right all of that's that's doing is if you're on a boon to it's doing a sudo apt Update and and sudo apt upgrade, you know the same as you would do at the command line It's just it has a button you click to run that same command But in the background it's actually running the actual command now that I've told you that you know these GUI Applications are essentially front-ends to various commands at the command line right then naturally you have more command line Tools available for you than GUI tools right the GUI applications are very limited because they can't possibly Graphically represent everything that is possible at the command line. It's just impossible right It's just way too deep and complicated where the command line you have literally every single command at your disposal Right because the command line can run Every single command that's available on your system where a GUI application obviously it can't do that for example We just saw me playing around with file management in the terminal and with my GUI file manager PC man fm But there were some things I could do at the command line. I mean, let me zoom in here For example the GUI it lists your files if I can spell LS correctly if I wanted to sort them in a certain way I mean I could do a sort here. I could also a shuffle around the various files I can grab a random file I could do a lot of really cool stuff and certainly the more advanced stuff like grip said AUK is not going to be available. For example, maybe, you know, I do something like a let's cat slash Etsy slash Pass WD, right? So this is a file on my system that lists all the users on my system And their home directories what groups they belong to their user ID yada yada yada Well, you know with the command line the world is my oyster any command that I want to run I can manipulate this data in any way. I see fit where yeah I just simply can't do that with a GUI tool because it's not going to include every single command and every single flag for those commands Built into it. It would just be way too complicated. You can't really build a GUI tool that way, right? Where the command line is designed to give you ultimate power if you will so I could pipe this through AUK and I could do Something like this where I AUK and I specified that the colon is the field separator because in this particular file Colons separate every single field and I want to print the first and third fields in this case And there you go And it looks like the first field is the name of the user and the third field is the ID And of course, we don't have any kind of space or anything between that. I probably should have specified Specified adding a space between that but that is how that works if I wanted the last field I could do dollar sign NF or the last field and you can see there is that I've done plenty of videos In the past on command line applications like a grep said AUK cut Very very powerful tools that allow you to do anything you want to do with data that's on your system So certainly the number one reason why intermediate to advanced users prefer the command line usually over graphical Applications is because you can do anything you want at the command line where graphical applications just the nature of them They're limiting they kind of have to be limited right that they can't offer you everything now There are other reasons why you might prefer using the command line and the terminal rather than graphical applications one obvious reason is you don't always have a Graphical application available for what you want to do sometimes you want to do really complicated stuff I want to go find every file that meets this certain criteria on my system And I want to check it and see if it contains this particular string of text And if it does I want to replace that string of text with another string of text And then I want to take all those files and order them in a specific sort of sorting and then I want to take all those files Maybe move them maybe to a remote server somewhere copy them Oh, I could do something really really complicated right at the command line that there's just no way you could possibly do With the GUI what I was just describing You know that very complicated sequence of events that I wanted to do at the command line There's there's not a GUI tool that could do that for me, right? I'd have to go to the command line to do that So many times learning the command line Really is a necessity at some point you have to learn the command line because there are going to be things that you can't do in A GUI also sometimes a GUI is not available for you What if you're working on a server a server that doesn't have a graphical desktop installed It doesn't have Xorg or Wayland doesn't have any kind of desktop environment Right, especially when you SSH into remote servers, right? When you SSH into a remote server all you get is a command prompt, right? That's basically like opening up a terminal except the terminal you're looking at is the remote machines command line And that's all you get if you know all the command line tools You're good You can do anything on that machine you want to do if all you ever did was play with GUI applications You will be completely lost when you have to remote into another machine and I know a lot of people don't have to work with servers I'm one of those people. I don't really play with servers that often I mean, I have a few web servers that I play around with but it's not like I work in IT or system administration or anything And many of you guys probably don't even host your own websites or anything You don't even have any web servers. So you're like, well, I'm just a Linux desktop user So I'm always gonna have a GUI available. No, no, no Trust me things go wrong, right? Updates will break your system occasionally sometimes you will have a situation where you do an update and you reboot your machine and Exord crashes. There was a bad update bad drip video driver or whatever And you can't actually get to a graphical environment, right? All you can do is get to a command prompt, right? You can get to the TTY in this case So you know your console your virtual terminal on your Linux machine and if you know the commands You're good, right? If you've you spent some time at the command line like I have I can navigate anywhere on my system I can find a config file to edit if that's the problem or I can update my system or I can Downgrade a package whatever because I do all that stuff anyway on a daily basis in the terminal I update my system through the terminal. I always use Pac-Man, you know The standard command line tools for Arch to update the system. I never use the graphical tools So if I have a situation where I reboot my machine after an update and Exord crashes, I'm still good because I can still go to the TTY and I can still do everything I want to do, you know And then hopefully once I correct the problem reboot and then get back into my graphical environment that was broken But it's one of those things if you didn't learn the command line tools first then You're in for some headaches, right? Because now you have to start doing some googling, right? You're reading a wiki or maybe reading Stack Overflow to figure out the command line tools that you need to actually Correct the problem where if you'd have just learned them in the first place, you're already good Speaking of Stack Overflow and support forms anytime you ask help or support kinds of questions on the internet About your Linux machine almost always the answer and the solution for your problem is going to be given as a Command line, right? That's going to be given as a terminal command for you to open a terminal and enter this command to fix your problem They're never going to give you instructions on how to use a GUI They're never going to tell you open this graphical program go through this menu system pick this in the menu then you know This screen has got some tabs click on this particular tab Then you should see all these buttons click on the button that says this you know They're not going to go through all that trouble That's confusing as hell and who's to say you even have that graphical program installed on your system Or that particular desktop environment, you know, everybody has different graphical programs installed on their system But you know the one thing every single Linux user has installed on their system The command line they have the shell usually the bashell is like the standard de facto shell on Linux And if you know bash You can do anything so 999 times out of a thousand when you ask a help or support question on the internet It's going to be given to you the solution as a Terminal command so just to get used to that and it makes sense You know because everybody can enter these terminal commands and it will work universally across the board now Are there advantages to a GUI over the command line? I'm not going to say that the command line is always the right tool There are some situations where the GUI could be preferred for example Graphical applications are often a little easier if you're doing multi-tasking Like I've got a lot of different tasks that I want to work on at the same time well with the GUI applications I can open several different programs several different windows right and arrange them on the screen if I'm using a tiling window manager Even if they're floating they can be stacked on top of each other and I can cycle through them and quickly do a lot of different stuff Right with GUI applications where at the command line That's a little trickier multi-tasking you can multi-task at the command line You can you have several different virtual consoles available and you're all of your tty's for example And of course you could install a multiplexer like tmux that will kind of turn your terminal into like a tiling window manager And like a self-contained tiling window manager inside the terminal But it's still a little clunkier multi-tasking is in the command line rather than the GUI now There are some very tangible benefits to using the command line over the GUI if Speed is an issue for you for example file management stuff You saw how easy it is for me to just to open a terminal navigate around do everything I want to do copying files editing files moving files at the command line I'm always going to choose that option over a GUI application just because of speed once you know the commands You know how these commands work there are they are always faster than the graphical applications So if speed is important to you then learning some of these command line tools should also be important to you because it will Just speed up your workflow. The other thing that is a real tangible benefit to using a terminal and using the command line is Terminal applications are typically less resource intensive. They don't use a lot of resources where a GUI application Naturally is going to be a little heavier, right? It's going to use a little bit more CPU a little bit more RAM Then the terminal application wouldn't another big reason why you want to start learning some of these command line tools is eventually As you become a more intermediate to a more advanced Linux user You're going to want to do some scripting, right? You're going to start getting into more advanced stuff that you want to do on your system and that's going to require you to start learning a little shell scripting maybe a little programming and You know once you get into this you have to learn some of these basic command line system tools You can't really learn scripting without learning the command line There are graphical Applications that can kind of help you learn some basic programming You know, there's these wissy wig programs wissy wig what you see is what you get these wissy wig applications It'll let you build a program without actually doing it The the normal way which is opening a text editor and actually writing the program yourself But those I don't like wissy wig programs because they really they hold you back, right? You really need to learn the actual Syntax of the programming language that you're working in in this case bash scripting for example You need to learn some of the system tools the command line tools So I would never suggest anyone to use a wissy wig application to learn any kind of scripting or programming Ultimately, I think think what it comes down to if like if I'm gonna break it down the real difference between command line programs and GUI programs is The command line gives you ultimate control of your system You can literally do anything at the command line because every single command that is available to you on your Linux system is Available at the command line now because it gives you ultimate control of your system The command line is not user-friendly, right? Because anything that is so overly Complex, but I mean it's powerful, but it's complicated, right? Because you can do anything at the command line that naturally makes it complicated So the command lines it's not user-friendly, right? The GUI is user-friendly, right? the GUI is much more user-friendly, but It's the reverse with that user-friendliness You're very limited on options and features functionality because your GUI apps They can never be what the command line is, right? They're just kind of a They're a user-friendly way to do some of the most common tasks on your computer But once you get beyond common tasks You're you will often find that GUI applications are not available for you And you have to open a terminal and do some command line stuff And that really is the difference, you know new users will always hate the terminal because they don't know the commands I mean, how can they like something if they don't actually know how to use it, right? That's why a new user You know You can't fault them for not liking the terminal and wanting GUI applications for everything and the same thing with more advanced users You can't fault them for often naturally Devotating to a terminal because they will know more commands. They it's got more features, you know They they can just do more So you can't really fault somebody like me because I often hear from people you do too much at the command line You do too much with terminal applications. You can't open a GUI application to show this stuff I could but that's just not the way I normally would work even off-camera. I don't work that way I'm always opening a terminal and many advanced users are doing that again I just think that's the natural progression of things when you don't know the terminal You're gonna hate it once you know the terminal you're gonna spend all of your time there one other Advantage of the command line over GUI applications is the command line never changes I mean it changes But you know once you learn the system tools the command line interface tools once you learn the bash shill You know it It's never going to radically change on you where you have to completely Re-learn and with things like grip and said and all can cut now all the the system tools you use on a daily basis at that point You've got it. You've learned it. You will always have it. It'll work on any Unix like operating system that you ever work on the GUI is completely different GUI's change all the time And there's hundreds of different GUIs hundreds of different desktop environments For example all of them very diverse very different You can't just move from one to the other and know how to use them, right and then they drastically change one version of KDE Plasma will be drastically different than the next and same thing with GNOME GNOME 2 and GNOME 3 completely different desktop environments don't even look the same don't function feel the same Where once you learn the terminal the terminal is always the same So you never have to worry about waking up one day and re-learning everything that you used to know Now, I know I've been rambling on a little too long here really I just hope I broke this down in simple terms that are easy to understand I hope that these two opposing sides the new user and the more advanced user They kind of understand each other a little better now the new user of course. He hates the terminal He has no choice, but to hate the terminal. He doesn't know how to use it Right and the more advanced users of course They love the terminal and the command line because once you learn those tools you can do so much with them Right there's so much better than the GUI applications. So that's why we have these two Opposing sides they seem like polar opposites within the community, you know the noobs and the more power users if you will But they're really they're really not polar opposites really all the new user is he's an advanced user Just waiting to happen now before I go. I want to thank a few special people I want to thank the producers of the show Devin Dustin Gabe James Maxim at Michael Mitchell Paul Scott West Alan Armoredragon Chuck Commander Ingrid Iokai Dylan George Lee Lennox Ninja Marshtrom Michael Yon Alexander a piece of art to Mador Polytech reality 3 less road profits even in Willie these guys They're my highest tiered patrons over on patreon without these guys This episode would not have been possible the show is also brought to you by each and every one of these fine ladies and gentlemen All these names you're seeing on the screen right now These are all my supporters over on patreon because I don't have any corporate sponsors I'm sponsored by you guys the community Do you like my work and I'll see more videos about Lennox and free and open source software and the terminal Subscribe to distro tube over on patreon. All right guys. Peace Even if you're a gooey virgin one day, you'll be a terminal Chad