CLI

From YSTV Documentation Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Overview

A CLI (Command Line Interface) is just a means of giving a system instructions using text. While GUIs usually look more intuitive, after some learning curve CLIs are usually faster, less complex and very easy to automate. At YSTV we only really use two different kinds of CLI languages: Powershell (for Windows) and Bash (for Linux).

Windows

Windows is not usually managed in a terminal but over the years it adapted certain CLI tools for different purposes. For local system management you usually have cmd.exe (although Windows Terminal is much better) and for managing networks of Windows systems you use Powershell, which lets you manage users and file structures across multiple computers at once.

Linux (and other Unix-based systems)

These days it's fairly optional to use the command line in Linux but when you're managing Linux servers it's actually far far better to just learn how to use it, especially thanks to some very good software designed entirely on a basis of simplicity and ease of use. Lookup how to use Bash and some basic programs in GNU Core Utils and you'll be able to manage any of our servers without a problem.

Using command lines

Scripting

An advantage of CLI programs is being able to join them together and automate long tasks with nothing but a short interpreted script. In YSTV's github we have Scripts-and-Configs where we store misc bash scripts and config files.

Arguments and Config

Most linux programs have two ways of changing their effect. First, you can send an argument (e.g. "--help" is a standard way of displaying all the options you can give a program) to set certain variables or adjustments when you run a program. Secondly, you can set config files (e.g. vimrc) which change how a program works EVERY time you run it.

Config files usually have a hierarchy to them - just remember that they prioritise the closest config file to the user. So for example you can have '/etc/CONFIG_FILE' (for all users) then '/home/USERNAME/.CONFIG_FILE' (for just one user), the one in the '/home' folder will take priority over the one in '/etc'. Info about where these config files are stored is usually at the bottom of a man(ual) page or, if you're using Windows, just google it and it'll likely be in some obscure folder somewhere.