<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/">
  <channel>
    <title>command line</title>
    <link>https://www.linuxjournal.com/</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>The Echo Command</title>
  <link>https://www.linuxjournal.com/content/echo-command</link>
  <description>  &lt;div data-history-node-id="1340888" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/linux-journal-the-echo-command.jpg" width="850" height="500" alt="The Echo Command" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/jeremy-jay-lacroix" lang="" about="https://www.linuxjournal.com/users/jeremy-jay-lacroix" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Jeremy 'Jay' LaCroix&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;In this article, we're going to look at the &lt;code&gt;echo&lt;/code&gt; command, which is useful for showing text on the terminal, as well as the contents of variables. Let's get started!&lt;/p&gt;
&lt;h2&gt;Basic usage of the echo command&lt;/h2&gt;
&lt;p&gt;Basic usage of the &lt;code&gt;echo&lt;/code&gt; command is very simple. For example:&lt;/p&gt;
&lt;pre&gt;
echo "Hello World"&lt;/pre&gt;&lt;p&gt;The output will be what you expect, it will echo &lt;code&gt;Hello World&lt;/code&gt; onto the screen. You can also use &lt;code&gt;echo&lt;/code&gt; to view the contents of a variable:&lt;/p&gt;
&lt;pre&gt;
msg="Hello World"

echo $msg&lt;/pre&gt;&lt;p&gt;This also works for built-in shell variables as well:&lt;/p&gt;
&lt;pre&gt;
echo $HOME&lt;/pre&gt;&lt;h2&gt;Additional Examples&lt;/h2&gt;
&lt;p&gt;As with most Linux commands, there's definitely more that we can do with &lt;code&gt;echo&lt;/code&gt;;than what we've seen so far.&lt;/p&gt;
&lt;p&gt;&lt;span class="h3-replacement"&gt;Audible Alerts&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can also sound an audible alert with &lt;code&gt;echo&lt;/code&gt; as well:&lt;/p&gt;
&lt;pre&gt;
echo -e "\aHello World"&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;-e&lt;/code&gt; option allows you to change the format of the output while using &lt;code&gt;echo&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;
echo -e "This is a\bLinux server."&lt;/pre&gt;&lt;p&gt;The example used &lt;code&gt;\b&lt;/code&gt; within the command, which actually lets you call backspace, which gives you the same behavior as actually pressing backspace. In the above example, the letter "a" will not print, because &lt;code&gt;\b&lt;/code&gt; backspaces that.&lt;/p&gt;
&lt;p&gt;&lt;span class="h3-replacement"&gt;Truncating&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The ability to truncate, means you can remove something from the output. For example:&lt;/p&gt;
&lt;pre&gt;
echo -e "This is a Linux\c server."&lt;/pre&gt;&lt;p&gt;The output of the above command will actually truncate the word right after &lt;code&gt;\c&lt;/code&gt;, which means we'll see the following output:&lt;/p&gt;
&lt;pre&gt;
This is a Linux&lt;/pre&gt;&lt;p&gt;
&lt;span class="h3-replacement"&gt;Adding a new line&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To force a new line to be created:&lt;/p&gt;
&lt;pre&gt;
echo -e "This is a Linux\n server"&lt;/pre&gt;&lt;p&gt;The output will end up becoming:&lt;/p&gt;
&lt;pre&gt;
This is a Linux
 server.&lt;/pre&gt;&lt;p&gt;
&lt;span class="h3-replacement"&gt;Adding a tab character&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To add a tab character to the output:&lt;/p&gt;
&lt;pre&gt;
echo -e "This is a\t Linux\t server."&lt;/pre&gt;&lt;p&gt;This will produce the following output:&lt;/p&gt;
&lt;pre&gt;
This is a     Linux     server.&lt;/pre&gt;&lt;p&gt;
&lt;span class="h3-replacement"&gt;Redirecting output to a text file&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Rather than showing the output on the terminal, we can instruct echo to instead send its output to a text file.&lt;/p&gt;
&lt;pre&gt;
echo "Logfile started: $(date +'%D %T'$" &gt; log.txt&lt;/pre&gt;&lt;h2&gt;Closing&lt;/h2&gt;
&lt;p&gt;The basics of the &lt;code&gt;echo&lt;/code&gt; command were covered in this article. Of course, there's more options where that came from - but this should be more than enough to get you started!&lt;/p&gt;
&lt;p&gt;You can watch the tutorial here:&lt;/p&gt;
&lt;p&gt;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Tj-9tahWvok" title="YouTube video player" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/echo-command" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 13 Jul 2022 16:00:00 +0000</pubDate>
    <dc:creator>Jeremy 'Jay' LaCroix</dc:creator>
    <guid isPermaLink="false">1340888 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>7 Important Linux Commands for Every Linux User</title>
  <link>https://www.linuxjournal.com/content/7-important-linux-commands-every-linux-user</link>
  <description>  &lt;div data-history-node-id="1340856" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/seven-linux-commands.jpg" width="850" height="500" alt="7 Important Linux Commands for Every Linux User" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/suparna-ganguly" lang="" about="https://www.linuxjournal.com/users/suparna-ganguly" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Suparna Ganguly&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p dir="ltr"&gt;Linux might sound scary for first-time Linux users, but actually, it isn’t. Linux is a bunch of open-source Unix operating systems based on Linux Kernel. These operating systems are called Linux distributions, such as Fedora, Debian, Ubuntu, and Mint.&lt;/p&gt;

&lt;p dir="ltr"&gt;Since its inception in 1991, Linux has garnered popularity for being open-source. People can modify and redistribute Linux under their own brand. When using a Linux OS, you need a shell to access the services provided. Also, it’s recommended to run your Linux OS through a CLI or command-line interface. CLI makes time-consuming processes quicker.&lt;/p&gt;

&lt;p dir="ltr"&gt;This article presents a guide to 7 important Linux commands for every Linux user to know. So, let’s begin.&lt;/p&gt;

&lt;h2 dir="ltr"&gt;cat Command&lt;/h2&gt;

&lt;p dir="ltr"&gt;cat is the shortened form of “concatenate”. It’s a frequently used multi-purpose Linux command. This command is used to create, display, and copy a file content on the standard output.&lt;/p&gt;

&lt;h3 dir="ltr"&gt;Syntax

&lt;pre dir="ltr"&gt;
cat [OPTION]... [FILE]..&lt;/pre&gt;

&lt;/h3&gt;&lt;p dir="ltr"&gt;To create a file, type:&lt;/p&gt;

&lt;pre dir="ltr"&gt;
cat &gt; &lt;file name&gt;  

// Enter file content&lt;/pre&gt;

&lt;p dir="ltr"&gt;To save the file created, press Ctrl+D. And to display the file content, execute:&lt;/p&gt;

&lt;pre dir="ltr"&gt;
cat &lt;file name&gt;&lt;/pre&gt;

&lt;h2 dir="ltr"&gt;cd Command&lt;/h2&gt;

&lt;p dir="ltr"&gt;The cd command is used to navigate through the directories and files in Linux. It needs either the entire path or the directory name depending on the current directory.&lt;/p&gt;

&lt;h3 dir="ltr"&gt;Syntax

&lt;pre dir="ltr"&gt;
cd [Options] [Directory]&lt;/pre&gt;

&lt;/h3&gt;&lt;p dir="ltr"&gt;Suppose you’re in /home/username/Documents. You want to navigate to a subdirectory of Documents which is Photos. To do that, execute:&lt;/p&gt;

&lt;pre dir="ltr"&gt;
cd Photos&lt;/pre&gt;

&lt;p dir="ltr"&gt;To move to an entirely different directory, type cd and then the directory’s absolute path.&lt;/p&gt;

&lt;pre dir="ltr"&gt;
cd /home/username/Movies&lt;/pre&gt;

&lt;p dir="ltr"&gt;The above command will switch to /home/username/Movies. Apart from this, the commands, cd.., cd, and cd- are used to move one directory up, to go to the home folder, and to go to the previous directory respectively.&lt;/p&gt;

&lt;p dir="ltr"&gt;Reminder: Linux’s shell is case-sensitive. So, make sure you type the name’s directory as it is.&lt;/p&gt;

&lt;h2 dir="ltr"&gt;echo Command&lt;/h2&gt;

&lt;p dir="ltr"&gt;The echo command displays a line of text or string passed as an argument. It’s used for the purpose of debugging shell programs in the Linux terminal.&lt;/p&gt;

&lt;h3 dir="ltr"&gt;Syntax

&lt;pre dir="ltr"&gt;
echo [Option] [String]&lt;/pre&gt;

&lt;/h3&gt;&lt;p dir="ltr"&gt;Other examples of the echo command are:&lt;/p&gt;

&lt;ul&gt;&lt;li dir="ltr"&gt;
	&lt;p dir="ltr"&gt;&lt;code&gt;echo "String"&lt;/code&gt;: This displays the string within the quotes.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li dir="ltr"&gt;
	&lt;p dir="ltr"&gt;&lt;code&gt;echo -e "Learn \nBy \nDoing"&lt;/code&gt;: Here the ‘-e’ tag allows the echo command to understand the backslash escape sequences in the argument.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/7-important-linux-commands-every-linux-user" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 13 Oct 2021 16:00:00 +0000</pubDate>
    <dc:creator>Suparna Ganguly</dc:creator>
    <guid isPermaLink="false">1340856 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Develop a Linux command-line Tool to Track and Plot Covid-19 Stats</title>
  <link>https://www.linuxjournal.com/content/develop-linux-command-line-tool-track-and-plot-covid-19-stats</link>
  <description>  &lt;div data-history-node-id="1340832" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/lj-global-stats-track-and-Plot-covid19-stats-featured.jpg" width="850" height="500" alt="Develop a Linux command-line Tool to Track and Plot Covid-19 Stats" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/nawaz-abbasi" lang="" about="https://www.linuxjournal.com/users/nawaz-abbasi" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Nawaz Abbasi&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p dir="ltr"&gt;It’s been over a year and we are still fighting with the pandemic at almost every aspect of our life. Thanks to technology, we have various tools and mechanisms to track Covid-19 related metrics which help us make informed decisions. This introductory-level tutorial discusses developing one such tool at just Linux command-line, from scratch.&lt;/p&gt;

&lt;p dir="ltr"&gt;We will start with introducing the most important parts of the tool – the &lt;a href="https://en.wikipedia.org/wiki/API"&gt;API&lt;/a&gt;s and the commands. We will be using 2 APIs for our tool - &lt;a href="https://covid19api.com/"&gt;COVID19&lt;/a&gt; API and &lt;a href="https://quickchart.io/"&gt;Quickchart&lt;/a&gt; API and 2 key commands – &lt;a href="https://curl.se/"&gt;curl&lt;/a&gt; and &lt;a href="https://stedolan.github.io/jq/"&gt;jq&lt;/a&gt;. In simple terms, &lt;strong&gt;curl&lt;/strong&gt; command is used for data transfer and &lt;strong&gt;jq&lt;/strong&gt; command to process JSON data.&lt;/p&gt;

&lt;p dir="ltr"&gt;The complete tool can be broken down into 2 keys steps:&lt;/p&gt;

&lt;p&gt;1. Fetching (GET request) data from the COVID19 API and piping the JSON output to jq so as to process out only global data (or similarly, country specific data).&lt;/p&gt;

&lt;pre dir="ltr"&gt;
$ curl -s --location --request GET 'https://api.covid19api.com/summary' | jq -r '.Global'

{

  "NewConfirmed": 561661,

  "TotalConfirmed": 136069313,

  "NewDeaths": 8077,

  "TotalDeaths": 2937292,

  "NewRecovered": 487901,

  "TotalRecovered": 77585186,

  "Date": "2021-04-13T02:28:22.158Z"

}
&lt;/pre&gt;

&lt;p&gt;2. Storing the output of step 1 in variables and calling the Quickchart API using those variables, to plot a chart. Subsequently piping the JSON output to jq so as to filter only the link to our chart.&lt;/p&gt;

&lt;pre dir="ltr"&gt;
$ curl -s -X POST \

       -H 'Content-Type: application/json' \

       -d '{"chart": {"type": "bar", "data": {"labels": ["NewConfirmed ('''${newConf}''')", "TotalConfirmed ('''${totConf}''')", "NewDeaths ('''${newDeath}''')", "TotalDeaths ('''${totDeath}''')", "NewRecovered ('''${newRecover}''')", "TotalRecovered ('''${totRecover}''')"], "datasets": [{"label": "Global Covid-19 Stats ('''${datetime}''')", "data": ['''${newConf}''', '''${totConf}''', '''${newDeath}''', '''${totDeath}''', '''${newRecover}''', '''${totRecover}''']}]}}}' \

       https://quickchart.io/chart/create | jq -r '.url'

&lt;a href="https://quickchart.io/chart/render/zf-be27ef29-4495-4e9a-9180-dbf76f485eaf"&gt;https://quickchart.io/chart/render/zf-be27ef29-4495-4e9a-9180-dbf76f485eaf&lt;/a&gt;

&lt;/pre&gt;

&lt;p dir="ltr"&gt;That’s it! Now we have our data plotted out in a chart:&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;img alt="LJ Global-Stats-Track-And-Plot-Covid19-Stats" class="image-max_1300x1300" data-entity-type="file" data-entity-uuid="insert-max_1300x1300-c2f81bee-4892-43fa-afa5-02f06b4e4f84" height="588" src="https://www.linuxjournal.com/sites/default/files/styles/max_1300x1300/public/u%5Buid%5D/lj-global-stats-track-and-Plot-covid19-stats.jpg" width="1000" /&gt;&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/develop-linux-command-line-tool-track-and-plot-covid-19-stats" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 13 Apr 2021 16:00:00 +0000</pubDate>
    <dc:creator>Nawaz Abbasi</dc:creator>
    <guid isPermaLink="false">1340832 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Linux Command Line Interface Introduction: A Guide to the Linux CLI</title>
  <link>https://www.linuxjournal.com/content/linux-command-line-interface-introduction-guide</link>
  <description>  &lt;div data-history-node-id="1340799" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/antonio-riso" lang="" about="https://www.linuxjournal.com/users/antonio-riso" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Antonio Riso&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;h2&gt;Let’s get to know the Linux Command Line Interface (CLI).&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#history"&gt;A bit of history&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#firstlook"&gt;First look at the command line&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#syntax"&gt;Command syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#introduction"&gt;Notes &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="basiccommands"&gt;Basic commands&lt;/a&gt;
&lt;ul&gt;&lt;li&gt;pwd&lt;/li&gt;
&lt;li&gt;ls&lt;/li&gt;
&lt;li&gt;file&lt;/li&gt;
&lt;li&gt;cat&lt;/li&gt;
&lt;li&gt;cd&lt;/li&gt;
&lt;li&gt;clear&lt;/li&gt;
&lt;li&gt;history&lt;/li&gt;
&lt;li&gt;cp&lt;/li&gt;
&lt;li&gt;mv&lt;/li&gt;
&lt;li&gt;rm&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a name="introduction" id="introduction"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="h3-replacement"&gt;Introduction&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The Linux command line is a text interface to your computer.&lt;/p&gt;
&lt;p&gt;Also known as shell, terminal, console, command prompts and many others, is a computer program intended to interpret commands.&lt;/p&gt;
&lt;p&gt;Allows users to execute commands by manually typing at the terminal, or has the ability to automatically execute commands which were programmed in “Shell Scripts”.&lt;/p&gt;
&lt;p&gt;&lt;a name="history" id="history"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="h3-replacement"&gt;A bit of history&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The Bourne &lt;strong&gt;Sh&lt;/strong&gt;ell (sh) was originally developed by Stephen Bourne while working at Bell Labs.&lt;/p&gt;
&lt;p&gt;Released in 1979 in the Version 7 Unix release distributed to colleges and universities.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;B&lt;/strong&gt;ourne &lt;strong&gt;A&lt;/strong&gt;gain &lt;strong&gt;Sh&lt;/strong&gt;ell (bash) was written as a free and open source replacement for the Bourne Shell.&lt;/p&gt;
&lt;p&gt;Given the open nature of Bash, over time it has been adopted as the default shell on most Linux systems.&lt;/p&gt;
&lt;p&gt;&lt;a name="firstlook" id="firstlook"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="h3-replacement"&gt;First look at the command line&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Now that we have covered some basics, let’s open a terminal window and see how it looks!&lt;/p&gt;
&lt;p&gt;&lt;img alt="First look at the command line" class="image-max_1300x1300" data-entity-type="file" data-entity-uuid="insert-max_1300x1300-0a9952cf-ab5d-46f6-9c34-207d3797d47e" data-insert-class="image-max_1300x1300" data-insert-type="image" height="168" src="https://www.linuxjournal.com/sites/default/files/styles/max_1300x1300/public/u%5Buid%5D/linux-command-line-first-look.png" width="732" /&gt;&lt;/p&gt;
&lt;p&gt;When a terminal is open, it presents you with a prompt.&lt;/p&gt;
&lt;p&gt;Let's analyze the screenshot above:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Line 1: &lt;/strong&gt;The shell prompt, it is composed by &lt;code&gt;username@hostname:location$&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Username:&lt;/strong&gt; our username is called “john”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hostname:&lt;/strong&gt; The name of the system we are logged on&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Location:&lt;/strong&gt; the working directory we are in&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$:&lt;/strong&gt; Delimits the end of prompt&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;After the &lt;code&gt;$&lt;/code&gt; sign, we can type a command and press Enter for this command to be executed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Line 2:&lt;/strong&gt; After the prompt, we have typed the command &lt;code&gt;whoami&lt;/code&gt; which stands for “who am i“ and pressed [Enter] on the keyboard.&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/linux-command-line-interface-introduction-guide" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 06 Oct 2020 21:07:28 +0000</pubDate>
    <dc:creator>Antonio Riso</dc:creator>
    <guid isPermaLink="false">1340799 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>The Best Command-Line-Only Video Games</title>
  <link>https://www.linuxjournal.com/content/best-command-line-only-video-games</link>
  <description>  &lt;div data-history-node-id="1340673" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/bryan-lunduke" lang="" about="https://www.linuxjournal.com/users/bryan-lunduke" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Bryan Lunduke&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;A rundown of the biggest, most expansive and impressive games that you can run entirely
in your Linux shell.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
The original UNIX operating system was created, in large part, to
facilitate porting a video game to a different computer. And, without
UNIX, we wouldn't have Linux, which means we owe the very existence
of Linux to...video games.
&lt;/p&gt;

&lt;p&gt;
It's crazy, but it's true.
&lt;/p&gt;

&lt;p&gt;
With that in mind, and in celebration of all things shell/terminal/command
line, I want to introduce some of the best video games that
run entirely in a shell—no graphics, just ASCII jumping around the
screen.
&lt;/p&gt;

&lt;p&gt;
And, when I say "best", I mean the &lt;em&gt;very&lt;/em&gt; best—the terminal games that
really stand out above the rest.
&lt;/p&gt;

&lt;p&gt;
Although these games may not be considered to have "modern fancy-pants
graphics" (also known as MFPG—it's a technical term), they are
fantastically fun. Some are big, sprawling adventures, and others are
smaller time-wasters. Either way, none of them are terribly large (in
terms of drive storage space), and they deserve a place on any Linux rig.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
&lt;em&gt;AsciiPatrol&lt;/em&gt;&lt;/span&gt;

&lt;p&gt;
&lt;em&gt;AsciiPatrol&lt;/em&gt; is, in my opinion, one of the most impressive terminal games
out there. A clone of the classic &lt;em&gt;Moon Patrol&lt;/em&gt;, which is a ton of fun
already, this terminal-based game provides surprisingly good visuals for
a game using only ASCII characters for artwork.
&lt;/p&gt;

&lt;p&gt;
It has color, parallax scrolling backgrounds, animated enemies, sound
effects—I mean, even the opening screen is impressive looking in a terminal.
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/AsciiPatrol.png" width="650" height="318" alt="AsciiPatrol" class="image-max_650x650" /&gt;&lt;p&gt;
&lt;em&gt;Figure 1. Shooting Aliens and Dodging
Potholes in &lt;em&gt;AsciiPatrol&lt;/em&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
For a quick round of arcade-style fun, this one really can't be beat.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
&lt;em&gt;Cataclysm: Dark Days Ahead&lt;/em&gt;&lt;/span&gt;

&lt;p&gt;
&lt;em&gt;Cataclysm: Dark Days Ahead&lt;/em&gt; is absolutely huge in scale. Think of it as a
top-down, rogue-like, survival game with zombies, monsters and real
end-of-the-world-type stuff.
&lt;/p&gt;

&lt;p&gt;
The game features a crafting system, bodily injuries (such as a broken
arm), bionic implants, farming, building of structures and vehicles, a huge
map (with destructible terrain)—this game is massive. The visuals may
be incredibly simple, but the gameplay is deep and open-ended.
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/Cataclysm.png" width="650" height="387" alt="Cataclysm" class="image-max_650x650" /&gt;&lt;p&gt;
&lt;em&gt;Figure 2. Running from zombies in &lt;em&gt;Cataclysm&lt;/em&gt;&lt;/em&gt;
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/best-command-line-only-video-games" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 07 Aug 2019 17:00:00 +0000</pubDate>
    <dc:creator>Bryan Lunduke</dc:creator>
    <guid isPermaLink="false">1340673 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Arduino from the Command Line: Break Free from the GUI with Git and Vim!</title>
  <link>https://www.linuxjournal.com/content/arduino-command-line-break-free-gui-git-and-vim</link>
  <description>  &lt;div data-history-node-id="1340463" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/matthew-hoskins" lang="" about="https://www.linuxjournal.com/users/matthew-hoskins" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Matthew Hoskins&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Love Arduino but hate the GUI? Try arduino-cli.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
In this article, I explore a new tool released by the Arduino team
that can free you from the existing Java-based Arduino graphical user
interface. This allows developers to use their preferred tools and
workflow. And perhaps more important, it'll enable easier and deeper
innovation into the Arduino toolchain itself.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
The Good-Old Days&lt;/span&gt;

&lt;p&gt;
When I started building hobby electronics projects with microprocessors in
the 1990s, the process entailed a discrete processor, RAM, ROM and masses of glue logic
chips connected together using a point-to-point or "wire wrapping"
technique. (Look it up kids!) Programs were stored on glass-windowed
EPROM chips that needed to be erased under UV light. All the tools were
expensive and difficult to use, and development cycles were very slow.
Figures 1–3 show some examples of my mid-1990s
microprocessor
projects with discrete CPU, RAM and ROM. Note: no Flash, no I/O, no DACs,
no ADCs, no timers—all that means more chips!
&lt;/p&gt;


&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/12626f1.jpg" width="578" height="650" alt="""" class="image-max_650x650" /&gt;&lt;p&gt;&lt;em&gt;
Figure 1. Example Mid-1990s Microprocessor&lt;/em&gt;&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/12626f2-smaller.jpeg" width="650" height="508" alt="""" class="image-max_650x650" /&gt;&lt;p&gt;&lt;em&gt;
Figure 2. Example Mid-1990s Microprocessor&lt;/em&gt;&lt;/p&gt;


&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/12626f3-smaller.jpeg" width="595" height="650" alt="""" class="image-max_650x650" /&gt;&lt;p&gt;&lt;em&gt;
Figure 3. Example Mid-1990s Microprocessor&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
It all changed in 2003 with Arduino.
&lt;/p&gt;

&lt;p&gt;
The word "Arduino" often invokes a wide range of opinions and
sometimes emotion. For many, it represents a very low bar to entry into the
world of microcontrollers. This world before 2003 often required costly,
obscure and closed-source development tools. Arduino has been a great
equalizer, blowing the doors off the walled garden. Arduino now represents
a huge ecosystem of hardware that speaks a (mostly) common language and
eases transition from one hardware platform to another. Today, if you
are a company that sells microcontrollers, it's in your best interest to
get your dev boards working with Arduino. It offers a low-friction path
to getting your products into lots of hands quickly.
&lt;/p&gt;

&lt;p&gt;
It's also important to note that Arduino's simplicity does not inhibit
digging deep into the microcontroller. Nothing stops you from directly
twiddling registers and using advanced features. It does, however, decrease
your portability between boards.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/arduino-command-line-break-free-gui-git-and-vim" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 16 Jul 2019 11:30:00 +0000</pubDate>
    <dc:creator>Matthew Hoskins</dc:creator>
    <guid isPermaLink="false">1340463 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>In the End Is the Command Line</title>
  <link>https://www.linuxjournal.com/content/end-command-line</link>
  <description>  &lt;div data-history-node-id="1340687" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/doc-searls" lang="" about="https://www.linuxjournal.com/users/doc-searls" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Doc Searls&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Times have changed every character but one in Neal Stephenson's classic. That one is
Linux.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
I was wandering through &lt;a href="https://www.keplers.com/"&gt;Kepler&lt;/a&gt;'s, the &lt;a href="https://en.wikipedia.org/wiki/Kepler%27s_Books"&gt;legendary bookstore&lt;/a&gt;, sometime late in 1999, when
I spotted a thin volume with a hard-to-read title on the new book table. &lt;em&gt;In the
Beginning...Was the Command Line&lt;/em&gt;, the cover said.
&lt;/p&gt;

&lt;p&gt;
The command line was new to me when I started writing for &lt;em&gt;Linux Journal&lt;/em&gt; in 1996. I
hadn't come from UNIX or from programming. My tech background was in ham radio and
broadcast engineering, and nearly all my hacking was on RF hardware. It wasn't a joke
when I said the only code I knew was Morse. But I was amazed at how useful and
necessary the command line was, and I was thrilled to see &lt;a href="https://en.wikipedia.org/wiki/Neal_Stephenson"&gt;Neal Stephenson&lt;/a&gt; was the author
of that book.
(Pro tip: you can tell the commercial worth of an author by the size of his or her name
on the cover. If it's bigger than the title of the book, the writer's a big deal.
Literally.)
&lt;/p&gt;

&lt;p&gt;
So I bought it, and then I read it in one sitting. You can do the same. In fact, I command
that you do, if you haven't already, because (IMHO) it's the most classic book ever
written about both the command line and Linux itself—a two-fer of the first order.
&lt;/p&gt;

&lt;p&gt;
And I say this in full knowledge (having re-read the whole thing many times, which is
easy, because it's short) that much of what it brings up and dwells on is stale in the
extreme. The MacOS and the Be operating systems are long gone (and the Be computer was
kind of dead on arrival), along with the Windows of that time. Today Apple's OS X is BSD
at its core, while Microsoft produces lots of open-source code and contributes mightily
to The Linux Foundation. Some of Neal's observations and complaints about computing and
the culture of the time also have faded in relevance, although some remain enduringly
right-on. (If you want to read a section-by-section critique of the thing, &lt;a href="http://garote.bdmonkeys.net/"&gt;Garrett
Birkel&lt;/a&gt; &lt;a href="http://garote.bdmonkeys.net/commandline/index.html"&gt;produced
one&lt;/a&gt; in the mid-2000s with &lt;a href="http://garote.bdmonkeys.net/commandline/permission.html"&gt;Neal's permission&lt;/a&gt;. But do read the book
first.)
&lt;/p&gt;

&lt;p&gt;
What's great about &lt;em&gt;Command Line&lt;/em&gt; is how well it explains the original virtues of UNIX,
and of Linux as the operating system making the most of it:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
The file systems of Unix machines all have the same general structure. On your
flimsy operating systems, you can create directories (folders) and give them names like
Frodo or My Stuff and put them pretty much anywhere you like. But under Unix the
highest level—the root—of the filesystem is always designated with the
single character "/" and it always contains the same set of top-level directories:
&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/end-command-line" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 03 Jul 2019 11:30:00 +0000</pubDate>
    <dc:creator>Doc Searls</dc:creator>
    <guid isPermaLink="false">1340687 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>The Command-Line Issue</title>
  <link>https://www.linuxjournal.com/content/command-line-issue</link>
  <description>  &lt;div data-history-node-id="1340693" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/bryan-lunduke" lang="" about="https://www.linuxjournal.com/users/bryan-lunduke" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Bryan Lunduke&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
Summer. 1980-something. An elementary-school-attending, &lt;em&gt;Knight Rider&lt;/em&gt;-T-Shirt-wearing version of myself slowly rolls out of bed and shuffles to the living
room. There, nestled between an imposingly large potted plant and an
over-stocked knick-knack shelf, rested a beautifully gray, metallic case powered
by an Intel 80286 processor—with a glorious, 16-color EGA monitor resting
atop.
&lt;/p&gt;

&lt;p&gt;
This was to be my primary resting place for the remainder of the day: in front
of the family computer.
&lt;/p&gt;

&lt;p&gt;
That PC had no graphical user interface to speak of—no X Window System, no
Microsoft Windows, no Macintosh Finder. There was just a simple command
line—in this
case, MS-DOS. (This was long before Linux became a thing.)
Every task I wished to perform—executing a game, moving files—required me to type the commands in via a satisfyingly loud, clicky keyboard.
No, "required" isn't the right word here. Using the computer was a joy.
"Allowed" is the right word. I was &lt;em&gt;allowed&lt;/em&gt; to enjoy typing those commands in.
I never once resented that my computer needed to be interacted with via a
keyboard. That is, after all, what computers do. That's what they're
for—you type in commands, and the computer executes them for you, often with a
"beep".
&lt;/p&gt;

&lt;p&gt;
For a kid, this was empowering—taking my rudimentary understanding of
language (aided, at first, by a handy DOS command cheat sheet) and weaving
together strings of words that commanded the computer to do my bidding. It was
like
organizing runes to enact an ancient spell. It was magic. And I was a wizard.
Did I miss not being able to "double click" or "drag and drop"? Of course not.
I'd seen some such, mouse-driven user interfaces (like the early Macintoshes)
but—from my vantage—that wasn't how computers really worked. I viewed
such things as cool-looking, but not necessary. Computers use words. Powerful,
magical words.
&lt;/p&gt;

&lt;p&gt;
But this isn't 1980-something. In fact, it's barely 2010-something. (Did anyone else
just realize that it's almost 2020?) For better or worse, how people
use—and view—computers has changed dramatically since the days of
&lt;em&gt;Knight Rider&lt;/em&gt;.
Modern operating systems are, often, belittled if they require users to interact
with the machine via a command line. The graphical user interface is king.
Which is, perhaps, the inevitable evolution of how we all interact with our
computers.
&lt;/p&gt;

&lt;p&gt;
Yet the value of the command line (or terminal, shell and so on) is still there.
For many, it makes using computers more accessible. For others, it provides
streamlined workflows that a mouse or touch-driven interface simply can't
compete with. And, for others still, the blinking cursor provides a bit of
nostalgic joy—or an aesthetically simple, and distraction free, environment.
&lt;/p&gt;

&lt;p&gt;
This issue of &lt;em&gt;Linux Journal&lt;/em&gt; celebrates the cursor—that wonderful blinking
underscore and all the potential that it holds.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/command-line-issue" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 01 Jul 2019 15:00:00 +0000</pubDate>
    <dc:creator>Bryan Lunduke</dc:creator>
    <guid isPermaLink="false">1340693 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Without a GUI--How to Live Entirely in a Terminal</title>
  <link>https://www.linuxjournal.com/content/without-gui-how-live-entirely-terminal</link>
  <description>  &lt;div data-history-node-id="1340674" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/bryan-lunduke" lang="" about="https://www.linuxjournal.com/users/bryan-lunduke" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Bryan Lunduke&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Sure, it may be hard, but it &lt;em&gt;is&lt;/em&gt; possible to give up graphical interfaces
entirely—even in 2019.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
About three years back, I attempted to live entirely on the command line for 30
days—no graphical interface, no X Server, just a big-old terminal and me,
for a month.
&lt;/p&gt;

&lt;p&gt;
I lasted all of ten days.
&lt;/p&gt;

&lt;p&gt;
Why did I attempt this? What on Earth would compel a man to give up all the
trappings and features of modern graphical desktops and, instead,
artificially restrict himself to using nothing but text-based, command-line
software, as if he were stuck in the early 1980s?
&lt;/p&gt;

&lt;p&gt;
Who knows. Clearly, I make questionable decisions.
&lt;/p&gt;

&lt;p&gt;
But you know, if I'm being honest, the experience was not entirely
unpleasant. Sure, I missed certain niceties from the graphical side of things,
but there were some distinct benefits to living in a shell. My computers, even
the low-powered ones, felt faster (command-line software tends to be a whole
lot lighter and leaner than those with a graphical user interface). Plus, I
was able to focus and get more work done without all the distractions of a
graphical desktop, which wasn't bad.
&lt;/p&gt;

&lt;p&gt;
What follows are the applications I found myself relying upon the most during
those fateful ten days, separated into categories. In some cases, these are
applications I currently use over (or in addition to) their graphical
equivalents.
&lt;/p&gt;

&lt;p&gt;
Quite honestly, it is entirely possible to live completely without a GUI (more
or less)—even today, in 2019. And, these applications make it
possible—challenging, but possible.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
Web Browsing&lt;/span&gt;

&lt;p&gt;
Plenty of command-line web browsers exist. The classic Lynx
typically comes to mind, as does ELinks. Both are capable of browsing
basic HTML websites just fine. In fact, the experience of doing so is rather
enjoyable. Sure, most websites don't load properly in the "everything is a
dynamically loading, JavaScript thingamadoodle" future we live in, but the
ones that do load, load &lt;em&gt;fast&lt;/em&gt;, and free of distractions, which makes reading
them downright enjoyable.
&lt;/p&gt;

&lt;p&gt;
But for me, personally, I recommend w3m.
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/w3m.png" width="564" height="563" alt="w3m" class="image-max_650x650" /&gt;&lt;p&gt;
&lt;em&gt;Figure 1. Browsing Wikipedia with Inline Images Using w3m&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
w3m supports inline images (via installing the &lt;code&gt;w3m-img&lt;/code&gt;
package)—seriously, a web browser with image support, inside the terminal. The future is now.
&lt;/p&gt;

&lt;p&gt;
It also makes filling out web forms easy—well, maybe not easy, but at least
doable—by opening a configured text editor (such as nano or vim) for
entering form text. It feels a little weird the first time you do it, but
it's surprisingly intuitive.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/without-gui-how-live-entirely-terminal" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 28 Jun 2019 11:00:00 +0000</pubDate>
    <dc:creator>Bryan Lunduke</dc:creator>
    <guid isPermaLink="false">1340674 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>FreeDOS's Linux Roots</title>
  <link>https://www.linuxjournal.com/content/freedoss-linux-roots</link>
  <description>  &lt;div data-history-node-id="1340718" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/jim-hall" lang="" about="https://www.linuxjournal.com/users/jim-hall" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Jim Hall&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;
On June 29, 2019, the FreeDOS Project turns 25 years old. That's
a major milestone for any open-source software project! In honor of this
anniversary, Jim Hall shares this look
at how FreeDOS got started and describes its Linux roots.&lt;/em&gt;&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
The Origins of FreeDOS&lt;/span&gt;

&lt;p&gt;
I've been involved with computers from an early age. In the late 1970s, my
family bought an Apple II computer. It was here that I taught myself how to
write programs in AppleSoft BASIC. These were not always simple programs. I
quickly advanced from writing trivial "math quiz" programs to more
complex "Dungeons and Dragons"-style adventure games, complete with
graphics.
&lt;/p&gt;

&lt;p&gt;
In the early 1980s, my parents replaced the Apple with an IBM Personal
Computer running MS-DOS. Compared to the Apple, the PC had a much more
powerful command line. You could connect simple utilities and commands to do
more complex functions. I fell in love with DOS.
&lt;/p&gt;

&lt;p&gt;
Throughout the 1980s and into the early 1990s, I considered myself a DOS
"power user". I taught myself how to write programs in C and created
new DOS command-line utilities that enhanced my MS-DOS experience. Some of my
custom utilities merely reproduced the MS-DOS command line with a few extra
features. Other programs added new functionality to my command-line
experience.
&lt;/p&gt;

&lt;p&gt;
I discovered Linux in 1993 and instantly recognized it as a &lt;em&gt;Big Deal&lt;/em&gt;. Linux
had a command line that was much more powerful than MS-DOS, and you could
view the source code to study the Linux commands, fix bugs and add new
features. I installed Linux on my computer, in a dual-boot configuration with
MS-DOS. Since Linux didn't have the applications I needed as a working
college student (a word processor to write class papers or a spreadsheet
program to do physics lab analysis), I booted into MS-DOS to do much of my
classwork and into Linux to do other things. I was moving to Linux, but I
still relied on MS-DOS.
&lt;/p&gt;

&lt;p&gt;
In 1994, I read articles in technology magazines saying that Microsoft planned to do
away with MS-DOS soon. The next version of Windows would not use DOS. MS-DOS
was on the way out. I'd already tried Windows 3, and I wasn't
impressed. Windows was not great. And, running Windows would mean replacing
the DOS applications that I used every day. I wanted to keep using DOS.
I decided that the only way to keep DOS was to write my own. On June 29,
1994, I announced my plans on the Usenet discussion group comp.os.msdos.apps,
and things took off from there:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
ANNOUNCEMENT OF PD-DOS PROJECT:
&lt;/p&gt;

&lt;p&gt;
A few months ago, I posted articles relating to starting a public
domain version of DOS. The general support for this at the time was
strong, and many people agreed with the statement, "start writing!"
So, I have...
&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/freedoss-linux-roots" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 27 Jun 2019 11:30:00 +0000</pubDate>
    <dc:creator>Jim Hall</dc:creator>
    <guid isPermaLink="false">1340718 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
