===== File Globbing, Common Commands, and Text Editors =====
===== Filename Patterns =====
Linux and Windows systems both allow ambiguous filenames, which use //wildcard// symbols to enable filename matching. The process of converting an ambiguous filename, or filename pattern, into a list of matching filenames is called //globbing// or //filename expansion//.
On a Linux system, globbing is performed by the shell. This means that all arguments are subject to globbing, whether they're intended to be a filename argument or not.
On a Windows system, ambiguous filenames are converted into a list of filenames by the command or application. This means that arguments that are not filenames are not subject to filename expansion. However, it also means that applications must contain additional code to perform globbing.
==== Wildcard Symbols ====
^Symbol^Meaning in Linux^Meaning in Windows^
|*|Matches zero or more characters|Matches zero or more characters|
|?|Matches one character|Matches one character, unless at the end of the filename or immediately before the dot preceeding the extension in which case it matches zero or one character|
|[//list//] or [//range//]|Matches any one of the characters within the brackets (note that it matches exactly **one** of the characters)|//Not applicable//|
==== Examples ====
^Pattern^Matches on Linux^Does not match on Linux^Matches on Windows^Does not match on Windows^
|*.html|first.html blue.html|RED.HTML purple.htm|Blue.html blue.html RED.HTML|purple.htm|
|a*|a aa aaa alpha argonaut|Alpha banana|a aa aaa alpha Alpha|banana|
|b*e|blue bite|red green blot|blue bite|red green blot|
|c[oa]t|cat cot|coat| |cat cot coat //(Not applicable)//|
|d?e|due doe|duo Doe date|due doe Doe|duo date|
|a??|aaa abc|aa abcd|aaa abc aa|abcd|
Therefore the command
del *.pdf
on Windows, or
rm *.pdf
on Linux will remove all files in the current directory that have the extension ''.pdf''
You can combine absolute, relative, or relative-to-home pathnames with patterns. For example, in the command:
del \Users\jdoe\Documents\*.txt
The pattern ''\Users\jdoe\Documents\*.txt'' will match all files with a ''txt'' extension in the ''\Users\jdoe\Documents\'' directory, and the ''del'' command will then attempt to delete all of the matching files.
On Linux, you can also use patterns to match directory names:
rm /home/chris/ops102/*/info.pdf
This will delete any files named ''info.pdf'' within any subdirectory of ''/home/chris/ops102/''
===== Common Simple Commands =====
Here are some basic commands useful for managing the filesystem and performing basic tasks:
^ Linux ^ Windows ^ Description ^
|ls|dir|Lists the contents of a directory -- by default, the current directory, or the directories specified as arguments (or a specific file, if specified).|
|echo|echo|Places a message on the screen (the message is given as positional arguments)|
|cal| |Displays a simple calendar|
|date|date /t\\ time /t|Tells you the current date (or date/time)|
|who|quser|Displays information about the logged in user(s)|
|whoami|whoami|Displays the name of the current user|
|clear|cls|Clears the screen (terminal). Note: in the Bash shell, you can also clear the screen during command entry by typing Ctrl+L|
|tree|tree|Displays a "tree view" of the filesystem hierarchy starting at the current directory (or the given directory, if an argument is provided).|
|mkdir|mkdir|Make a directory/folder|
|rmdir|rmdir|Remove a directory/folder|
|rm|del|Removes/deletes one or more files. Specify ''-rf'' to recursively force delete a directory and its contents on Linux, or ''/s'' to recursively delete a directory and its contents on Windows.|
| |X:|(Where X is a drive letter) Switches to the selected drive.|
|cd|cd|Changes to the given directory, if one is given. If no directory is given, displays the current directory (Windows) or changes to your home directory (Linux). On Windows, a drive designator may be provided, in which case the current directory will be set on the indicated drive.|
|pwd|cd|Prints the current working directory.|
|cp|copy|Copy one or more files to a new name/location.|
|mv|move|Moves a file from one directory to another.|
|mv|ren\\ rename|Renames a file (on Linux, the filename and location are considered to be the same thing)|
|cat|type|Dumps the contents of a text file on the terminal (if there is a lot of text, the display will scroll; if the file is a non-text file, the results are undefined!)|
|more\\ less|more|Displays a file one screen at a time. (Linux: the less command is a more powerful version of the ''more'' command, which allows things like scrolling backwards)|
|cut| |Selects specific columns from a text file|
|sort|sort|Sorts a text file|
|diff|comp\\ fc|Shows the differences between (text) files|
|uniq| |Displays identical consequtive lines only once|
|tr| |Translates/replaces/deletes occurrences of characters|
|grep|find|Searches files for text|
|find| |Searches for files|
|touch|copy NUL: //filename//|Creates an empty file (Linux: if the file exists, ''touch'' will just update the date/time of modification).|
===== Viewing Online Documentation =====
To find a Linux command to perform a particular function, use the ''apropos'' or ''man -k'' commands to search the online documentation. For example, to see commands related to "calendar":
'' apropos calendar''\\ '' man -k calendar'' # same as the above!
To view information about a Linux command, use the online manual ("manpages"), accessed with the ''man'' command:
'' man //commandname//''
For example, to view the online manual page for ''cp'', enter the command:
'' man cp''
On Windows, you can see a list of commonly used commands by typing
'' help''
To view information about a Windows command, use the online help:
'' help //commandname//''
For example, to view the online help for ''dir'', enter the command:
'' help dir''
Alternately, to get a brief help summary for a command, enter the name of the command followed by ''/?'' -- for example, to get a help summary for the ''copy'' command, type
'' copy /?''
===== Text Editors =====
It's often necessary to edit a text file containing a script, program, data, or configuration information. There are many text editors available.
==== Default Text Editors ====
It is often useful to learn how to use the text editor(s) provided by default with each operating system, because these editors will be available on almost any computer you use without installing any additional software.
=== Linux Default Text Editor ===
On Linux systems, most distributions (the organizations or companies responsible for maintaining and distributing the system) have standardized on the ''nano'' editor as the default CLI/TUI text editor (replacing the less-user-friendly but more-powerful ''vi'' editor). To start nano, type ''nano'' and optionally provide a filename:
'' nano\\ nano //file//''
Nano provides a help display at the bottom of the screen. The carat ''^'' symbol indicates the control key, so the help text "^X Exit" means that you would press Ctrl-X to exit from the editor.
Since Linux systems provide multiple desktop GUI environments, the default GUI text editor(s) will vary with the installed desktop GUI. For example, on Linux desktops using the Gnome environment, the default GUI text editor is ''Gedit'' or ''Gnome Text Editor''; on Linux desktops using the KDE desktop, the default GUI text editor is ''Kate''.
=== Windows Default Text Editor ===
The current versions of Windows (Windows 10 & 11) do not provide a CLI/TUI text editor (previous versions of Windows did provide a CLI text editor, and there is a current discussion about ading this back in). However, you can run the GUI Notepad editor, either from the Start Menu, or from the command line (as long as you are not accessing the Windows system remotely through a non-graphical connection):
''
notepad\\ notepad //file//''
==== Other Text Editors ====
There are **many** other text editors available for both platforms, and many editors are available that work on multiple operating systems. For example, ''nano'' and ''vi'' are available for Windows systems, and editors similar to ''notepad'' are available on Linux.
There are also several categories of software that are (arguably) a type of text editor, including:
* Basic text editors
* Code editors, for editing software and configuration files, with features such as tooltip help, syntax highlighting, bracket matching, and automatic indentation
* Word processors, for editing documents, with features such as spell checking, visual formatting, advanced layout features such as columns and tables
Software developers and system administrators have strong opinions about their tools, and particularly about their text editors. Things to consider when selecting any type of text editor include:
* Interface: does the editor use a graphical user interface, a text user interface, or can it operate in both modes?
* Tools: does the editor have useful tools such as syntax highlighting for common languages and configuration files? Does the list of supported languages include the ones you want to use?
* Visual complexity: some users prefer an editor with on-screen controls (or help) for most or all of the actions they may perform so that they can access these features quickly. Others prefer a less-cluttered screen which dedicates maximum screen space to content and minimizes distractions.
* Previews and integration with other tools: can the software provide visual previews, such as HTML and CSS display for web documents, LaTeX rendering, and accessibility assessments? Can you directly invoke publishing, content conversion, file transfer, or compilation processes from within the editor?
* Feature control: can you easily turn features on and off? For example, can you disable spell checking or syntax highlighting if your file contains a section that is in a different language? Can you disable auto-correction when it is not relevant to the project at hand?
Most software developers and system administrators use multiple editors for different tasks - for example, they may choose one editor for quick cnfiguration changes, another editor (or IDE) for larger development tasks, and multiple editors for different types of documentation.
Note that features intended for one editing task can be a nuscience in another context. For example, a word processor will often convert double quote characters into “smart quotes” (look closely at the quotation characters in this line), where the opening and closing quote characters are distinct characters. While these look great and are good for general writing, they are problematic in code and in examples that may appear in documentation, because they will be rejected by some types of software which expect straight double-quotes (such as most shells).