How to open, create, edit, and view a file in Linux

Updated: 07/13/2023 by Computer Hope
Linux logo

One thing GNU/Linux does as well as any other operating system is give you the tools you must create and edit text files. Ask ten Linux users to name their favorite text editor, and you might get ten different answers. On this page, we cover some text editors available for Linux.

GUI text editors

This section discusses GUI (Graphical User Interface) text editing applications for the Linux windowing system, X Windows, commonly known as X11 or X.

If you are coming from Microsoft Windows, you are no doubt familiar with the classic Windows text editor, Notepad. Linux offers many similar programs, including NEdit, gedit, and geany. Each of these programs are free software, and they each provide roughly the same functionality. It's up to you to decide which one feels best and has the best interface for you. All three of these programs support syntax highlighting, which helps with editing source code or documents written in a markup language such as HTML (hypertext markup language) or CSS (Cascading Style Sheets).

NEdit

The nedit text editor for Linux

NEdit, which is short for the Nirvana Editor, is a straightforward text editor that is similar to Notepad. It uses a Motif-style interface.

The NEdit homepage is located at https://sourceforge.net/projects/nedit/. If you are on a Debian or Ubuntu system, install NEdit with the following command:

sudo apt-get install nedit

For more information, see our NEdit information page.

Geany

The Geany text editor for Linux

Geany is a text editor that is a lot like Notepad++ for Windows. It provides a tabbed interface for working with multiple open files at once and has nifty features like displaying line numbers in the margin. It uses the GTK+ interface toolkit.

The Geany homepage is located at http://www.geany.org/. On Debian and Ubuntu systems, install Geany by running the command:

sudo apt-get install geany

Gedit

The Gedit text editor for Linux

Gedit is the default text editor of the GNOME desktop environment. It's a great, text editor that can be used on about any Linux system.

The Gedit homepage is located at https://wiki.gnome.org/Apps/Gedit. On Debian and Ubuntu systems, Gedit can be installed by running the following command:

sudo apt-get install gedit

Terminal-based text editors

If you are working from the Linux command line interface and you need a text editor, you have many options. Here are some popular ones:

pico

The pico text editor, running on Linux

pico started out as the editor built into the text-based e-mail program pine, and it was eventually packaged as a stand-alone program for editing text files. ("pico" is a scientific prefix for small things.)

The modern version of pine is called alpine, but pico is still called pico. You can find more information about how to use it in our pico command documentation.

On Debian and Ubuntu Linux systems, install pico using the command:

sudo apt-get install alpine-pico

nano

The nano text editor, running on Linux

nano is the GNU (GNU's Not Unix) version of pico and is essentially the same program under a different name.

On Debian and Ubuntu Linux systems, nano can be installed with the command:

sudo apt-get install nano

vim

The vim text editor, running on Linux

vim, which stands for "vi improved," is a text editor used by millions of computing professionals all over the world. Its controls are a little confusing at first, but once you get the hang of them, vim makes executing complex editing tasks fast and easy. For more information, see our in-depth vim guide.

On Debian and Ubuntu Linux systems, vim can be installed using the command:

sudo apt-get install vim

emacs

The emacs editor, running on Linux

emacs is a complex, highly customizable text editor with a built-in interpreter for the Lisp programming language. It is used religiously by some computer programmers, especially those who write computer programs in Lisp dialects such as Scheme. For more information, see our emacs information page.

On Debian and Ubuntu Linux systems, emacs can be installed using the command:

sudo apt-get install emacs

Redirecting command output into a text file

When at the Linux command line, you sometimes want to create or make changes to a text file without actually running a text editor. Here are some commands you might find useful.

Creating an empty file with the touch command

To create an empty file, it's common to use the command touch. The touch command updates the atime and mtime attributes of a file as if the file's contents had been changed — without actually changing anything. If you touch a file that doesn't exist, the system creates the file without putting any data inside.

For instance, the command:

touch myfile.txt

The above command creates a new, empty file called myfile.txt if that file does not already exist.

Redirecting text into a file

Sometimes you must stick the output of a command into a file. To accomplish this quickly and easily, you can use the > symbol to redirect the output to a file.

For instance, the echo command is used to "echo" text as output. By default, this goes to the standard output — the screen. So the command:

echo "Example text"

The above command prints that text on your screen and return you to the command prompt. However, you can use > to redirect this output to a file. For instance:

echo "Example text" > myfile.txt

The above command puts the text "Example text" into the file myfile.txt. If myfile.txt does not exist, it is created. If it already exists, its contents will be overwritten, destroying the previous contents and replacing them.

Warning

Be careful when redirecting output to a file using >. It will overwrite the previous file's contents if it already exists. There is no undo for this operation, so make sure you want to completely replace the file's contents before you run the command.

Here's an example using another command:

ls -l > directory.txt

The above command executes ls with the -l option, which gives a detailed list of files in the current directory. The > operator redirects the output to the file directory.txt, instead of printing it to the screen. If directory.txt does not exist, it is created first. If it already exists, its contents will be replaced.

Redirecting to the end of a file

The redirect operator >> is similar to >, but instead of overwriting the file contents, it appends the new data to the end of the file. For instance, the command:

ls -l >> directory.txt

The above command takes the output of ls -l and adds it to directory.txt. If directory.txt does not exist, it is created first. If it already exists, the output of ls -l is added to the end of the file, one line after the existing content.