<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://mikechilson.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://mikechilson.com/" rel="alternate" type="text/html" /><updated>2026-08-15T18:26:13+00:00</updated><id>https://mikechilson.com/feed.xml</id><title type="html">Mike Chilson</title><subtitle>Freelance Software Developer/Engineer</subtitle><entry><title type="html">MarkLite Markdown Viewer/Editor Version 1.1.0 Released</title><link href="https://mikechilson.com/blog/MarkLite-1.1.0-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 1.1.0 Released" /><published>2026-08-15T00:00:00+00:00</published><updated>2026-08-15T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-1.1.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-1.1.0-Released"><![CDATA[<p>MarkLite version 1.1.0 is both a feature and maintenance release. Changes include being able to print in both view and edit modes, Enabled word-wrap in editor mode, fixed external links in markdown documents not opening the link, fixed minor insert mode bug, cleaned up and removed some old code not being used any longer, fixed a small memory leak, and optimized several functions.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux and Windows. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode (you can set it as your default MarkDown viewer by right clicking on a .md file and choosing MarkLite there). You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Button to online markdown reference</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Reference button points to a Markdown reference website in your browser.</li>
  <li>Markdown syntax highlighting in editor.</li>
  <li>Ability to print both in viewer and edi modes.</li>
</ul>

<p>MarkLite is currently available on Linux in .deb, .rpm, and snap packages. Now available in a Windows version also.</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a FAST loading viewer with light editing, not a feature rich editor.</p>

<p>You can read more or download the package, snap or installer at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Viewer" /><category term="Editor" /><category term="Programming" /><category term="Utilities" /><category term="Linux" /><category term="Windows" /><summary type="html"><![CDATA[Open Source Lightweight Markdown Viewer/Editor for Linux and Windows]]></summary></entry><entry><title type="html">PromptRobot 0.3.0 Released</title><link href="https://mikechilson.com/blog/PromptRobot-0.3.0-Released" rel="alternate" type="text/html" title="PromptRobot 0.3.0 Released" /><published>2026-07-25T00:00:00+00:00</published><updated>2026-07-25T00:00:00+00:00</updated><id>https://mikechilson.com/blog/PromptRobot-0.3.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/PromptRobot-0.3.0-Released"><![CDATA[<p>Birmingham, Alabama (July 26th, 2026) <strong>PromptRobot</strong>, the easy-to-use graphical tool for Linux to store and run your obscure or complex command-line apps and bash commands with the click of a button, today announced the release of version 0.2.0, bringing usability improvement for Linux system administrators and everyday users alike:</p>

<p><strong>What is PromptRobot</strong><br />
PromptRobot is a lightweight and fast graphical tool for Linux to store and run your obscure or complex command-line apps and bash commands with the click of a button, without having to look them up every time or search through bash history.</p>

<p>Features:</p>
<ul>
  <li>Lightweight graphical interface to run saved terminal commands.</li>
  <li>Save complex and infrequently used commands.</li>
  <li>Supports both Bash and PowerShell for Linux.</li>
  <li>Great for both Linux beginners and System Administrators.</li>
</ul>

<p>“PromptRobot is built to be simple, fast, dependable, and do one thing well following the NIX philosophy” said Mike Chilson, author of PromptRobot.</p>

<p><strong>Availability</strong><br />
PromptRobot 0.3.0 is available now. For more information, visit <a href="https://promptrobot.app">promptrobot.app</a>.</p>

<p>Press Contact<br />
Mike Chilson<br />
<a href="mailto:info@promptrobot.app">info@resizeall.app</a> <br />
<a href="https://promptrobot.app">resizeall.app</a></p>]]></content><author><name></name></author><category term="Linux" /><category term="Tools" /><category term="Shells" /><summary type="html"><![CDATA[Press release for PromptRobot 0.3.0]]></summary></entry><entry><title type="html">ResizeAll 0.3.0 Released</title><link href="https://mikechilson.com/blog/ResizeAll-0.3.0-Released" rel="alternate" type="text/html" title="ResizeAll 0.3.0 Released" /><published>2026-06-20T00:00:00+00:00</published><updated>2026-06-20T00:00:00+00:00</updated><id>https://mikechilson.com/blog/ResizeAll-0.3.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/ResizeAll-0.3.0-Released"><![CDATA[<p>Birmingham, Alabama (June 20th, 2026) <strong>ResizeAll</strong>, the easy-to-use batch image resizer for Windows and Linux, today announced the release of version 0.3.0, bringing usability improvement for web developers and everyday users alike:</p>

<p><strong>What’s new in ResizeAll 0.3.0</strong></p>

<ul>
  <li>Updated to the latest Dart and Flutter framework version.</li>
  <li>Optimized Processing Code: Improvements under the hood help ResizeAll run more efficiently during batch operations, reducing overhead while maintaining high-quality resizing results.</li>
  <li>Updated New About Dialog: A redesigned About window makes it easier to view version details, contact information, and the official project website.</li>
</ul>

<p>“ResizeAll is built to be simple, fast, and dependable,” said Mike Chilson, author of ResizeAll. “Version 0.3.0 builds on the existing ease of use for batch resizing images, and improving performance and polishing the overall experience.”</p>

<p><strong>Availability</strong><br />
ResizeAll 0.3.0 is available now. For more information, visit <a href="https://resizeall.app">resizeall.app</a>.</p>

<p>Press Contact<br />
Mike Chilson<br />
<a href="mailto:info@resizeall.app">info@resizeall.app</a> <br />
<a href="https://resizeall.app">resizeall.app</a></p>]]></content><author><name></name></author><category term="Images" /><category term="Web Tools" /><category term="Batch Processing" /><summary type="html"><![CDATA[Press release for ResizeAll 0.3.0]]></summary></entry><entry><title type="html">MarkLite Markdown Viewer/Editor Version 1.0.1 Released</title><link href="https://mikechilson.com/blog/MarkLite-1.0.1-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 1.0.1 Released" /><published>2026-06-19T00:00:00+00:00</published><updated>2026-06-19T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-1.0.1-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-1.0.1-Released"><![CDATA[<p>MarkLite version 1.0.1 is a maintenance release. Changes include being recompiled with the latest Dart, Flutter, and library dependencies, and slight rework of the code that shuts down the program when you exit to make it more streamline.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux and Windows. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode (you can set it as your default MarkDown viewer by right clicking on a .md file and choosing MarkLite there). You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Button to online markdown reference</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Reference button points to a Markdown reference website in your browser.</li>
  <li>Markdown syntax highlighting in editor.</li>
</ul>

<p>MarkLite is currently available on Linux in .deb, .rpm, and snap packages. Now available in a Windows version also.</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a fast viewer with light editing, not a feature rich editor.</p>

<p>You can read more or download the package, snap or installer at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Viewer" /><category term="Editor" /><category term="Programming" /><category term="Utilities" /><category term="Linux" /><category term="Windows" /><summary type="html"><![CDATA[Open Source Lightweight Markdown Viewer/Editor for Linux and Windows]]></summary></entry><entry><title type="html">The Linux File/Directory Command Trinity</title><link href="https://mikechilson.com/blog/The-Linux-File-Command-Trinity" rel="alternate" type="text/html" title="The Linux File/Directory Command Trinity" /><published>2026-06-10T00:00:00+00:00</published><updated>2026-06-10T00:00:00+00:00</updated><id>https://mikechilson.com/blog/The-Linux-File-Command-Trinity</id><content type="html" xml:base="https://mikechilson.com/blog/The-Linux-File-Command-Trinity"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>The <strong>cp</strong>, <strong>rm</strong>, and <strong>mv</strong> commands form the essential “File/Directory Trinity” for managing files/directories in Linux and Unix-like systems.</p>

<p><strong>cp</strong> (copy) duplicates files and directories.
<strong>rm</strong> (remove) deletes them.
<strong>mv</strong> (move) relocates or renames them.</p>

<p>Mastering these three commands is critical for efficient and safe file and directory management in the terminal. This tutorial covers basic usage, common options, advanced techniques, and important safety.</p>

<hr />

<h2 id="basic-use">Basic Use</h2>

<p><strong>Copying Files and Directories with <code class="language-plaintext highlighter-rouge">cp</code></strong></p>

<p>Copy a single file to another filename
<code class="language-plaintext highlighter-rouge">cp source.txt destination.txt</code><br />
This creates an exact copy of source.txt as destination.txt.</p>

<p>Copy a file in the current directory to another directory<br />
<code class="language-plaintext highlighter-rouge">cp document.pdf /home/user/Documents/</code></p>

<p>Copy multiple files from the current directory to another directory
<code class="language-plaintext highlighter-rouge">cp file1.txt file2.txt file3.txt /target/directory/</code><br />
<code class="language-plaintext highlighter-rouge">cp *.txt /target/directory/</code></p>

<p>Copy a directory recursively to another directory (use the -r or -R flag for directories)<br />
<code class="language-plaintext highlighter-rouge">cp -r projects/ /backup/projects/</code></p>

<p><strong>Removing Files and Directories with <code class="language-plaintext highlighter-rouge">rm</code></strong></p>

<p>Delete a single file in the current directory<br />
<code class="language-plaintext highlighter-rouge">rm unwanted.txt</code></p>

<p>Delete multiple files in the current directory<br />
<code class="language-plaintext highlighter-rouge">rm file1.log file2.log</code><br />
<code class="language-plaintext highlighter-rouge">rm *.log</code><br />
<code class="language-plaintext highlighter-rouge">rm file[1-5].log</code></p>

<p>Delete a directory and all the contents from the current directory<br />
<code class="language-plaintext highlighter-rouge">rm -r old_project/</code><br />
<em>Warning: rm is permanent—there is no recycle bin.</em></p>

<p><strong>Moving or Renaming with <code class="language-plaintext highlighter-rouge">mv</code></strong></p>

<p>Move a file in the current directory to another Directory<br />
<code class="language-plaintext highlighter-rouge">mv report.pdf /home/user/Archives/</code></p>

<p>Rename a file in the current directory<br />
<code class="language-plaintext highlighter-rouge">mv old_name.txt new_name.txt</code></p>

<p>Move and rename a file in the current directory in one step<br />
<code class="language-plaintext highlighter-rouge">mv data.csv /archive/final_report_2026.csv</code></p>

<p>Move multiple files in the current directory<br />
<code class="language-plaintext highlighter-rouge">mv file1.txt file2.txt archive/</code><br />
<code class="language-plaintext highlighter-rouge">mv *.txt  archive/</code><br />
<code class="language-plaintext highlighter-rouge">mv file[1-2].txt archive/</code></p>

<hr />

<h2 id="common-options">Common Options</h2>

<p><strong>For the <code class="language-plaintext highlighter-rouge">cp</code> command</strong><br />
<strong>-r / -R</strong> Recursive: copy directories and contents <code class="language-plaintext highlighter-rouge">cp -r src/ dest/</code><br />
<strong>-i</strong>      Interactive: prompt before overwrite <code class="language-plaintext highlighter-rouge">cp -i file.txt existing.txt</code><br />
<strong>-v</strong>      Verbose: show what is being copied <code class="language-plaintext highlighter-rouge">cp -v *.jpg images/</code><br />
<strong>-u</strong>      Update: copy only if source is newer <code class="language-plaintext highlighter-rouge">cp -u *.txt backup/</code><br />
<strong>-p</strong>      Preserve: keep permissions, timestamps, etc. <code class="language-plaintext highlighter-rouge">cp -p important.doc ~/secure/</code><br />
<strong>-a</strong>      Archive: like -p -r -d for backups <code class="language-plaintext highlighter-rouge">cp -a /etc/configs/ ~/backup/</code></p>

<p><strong>For <code class="language-plaintext highlighter-rouge">rm</code> (Remove)</strong><br />
<strong>-i</strong> Interactive: prompt for each file <code class="language-plaintext highlighter-rouge">rm -i *.tmp</code><br />
<strong>-I</strong> Interactive: prompt once for multiple files (safer than -f) <code class="language-plaintext highlighter-rouge">rm -I *.bak</code><br />
<strong>-f</strong> Force: no prompts, ignore non-existent files <code class="language-plaintext highlighter-rouge">rm -f temp.log</code><br />
<strong>-r / -R</strong> Recursive: delete directories and contents <code class="language-plaintext highlighter-rouge">rm -r folder/</code><br />
<strong>-v</strong> Verbose: show what is being removed <code class="language-plaintext highlighter-rouge">rm -rv old_dir/</code></p>

<p><strong>For <code class="language-plaintext highlighter-rouge">mv</code> (Move/Rename)</strong><br />
<strong>-i</strong> Interactive: prompt before overwrite <code class="language-plaintext highlighter-rouge">mv -i file.txt existing.txt</code><br />
<strong>-v</strong> Verbose: show what is being moved <code class="language-plaintext highlighter-rouge">mv -v *.png images/</code><br />
<strong>-u</strong> Update: move only if source is newer <code class="language-plaintext highlighter-rouge">mv -u newdata/ archive/</code><br />
<strong>-b</strong> Backup: creates a backup of the existing file in the destination if the same file name already exists <code class="language-plaintext highlighter-rouge">mv -b config.conf config.conf.bak</code></p>

<hr />

<h2 id="advanced-uses-and-combinations">Advanced Uses and Combinations</h2>

<p><strong>Copy with Wildcards (All Three Commands Support These)</strong><br />
Copy all JPEGs in the current directory to another directory<br />
<code class="language-plaintext highlighter-rouge">cp *.jpg /pictures/</code></p>

<p>Remove all temporary files in teh current directory<br />
<code class="language-plaintext highlighter-rouge">rm *.tmp</code></p>

<p>Move all pdf files that start with “report” in teh current directory to another directory<br />
<code class="language-plaintext highlighter-rouge">mv report_*.pdf /final_reports/</code></p>

<p><strong>Safe Recursive Operations</strong><br />
Copy entire home directory structure (removing the ownernship) to another directory<br />
<code class="language-plaintext highlighter-rouge">cp -a --no-preserve=ownership /home/user/ /backup/</code></p>

<p>Remove a subdirectory and all its contents in teh current directory<br />
<code class="language-plaintext highlighter-rouge">rm -rf testdata/</code><br />
Careful! Make sure this is what you want to do!</p>

<p><strong>Move and Rename in Bulk</strong><br />
You can combine <code class="language-plaintext highlighter-rouge">mv</code> with shell features, Rename all .txt to .md<br />
<code class="language-plaintext highlighter-rouge">for file in *.txt; do mv "$file" "${file%.txt}.md"; done</code></p>

<p><strong>Copy Only Newer Files Across Systems</strong><br />
<code class="language-plaintext highlighter-rouge">cp -u -v /local/project/* user@remote:/remote/project/</code><br />
Use <code class="language-plaintext highlighter-rouge">scp</code> or <code class="language-plaintext highlighter-rouge">rsync</code> for remote, but <code class="language-plaintext highlighter-rouge">cp</code> locally</p>

<hr />

<h2 id="pro-tips-and-safety">Pro Tips and Safety</h2>

<p>Always use <strong>-i</strong> when unsure, especially with <code class="language-plaintext highlighter-rouge">rm</code> and <code class="language-plaintext highlighter-rouge">mv</code>.</p>

<p>Test with echo first: <code class="language-plaintext highlighter-rouge">echo rm -rf *.tmp</code> to preview what will be deleted.</p>

<p>Create aliases for safety (add to ~/.bashrc):<br />
<code class="language-plaintext highlighter-rouge">alias rm='rm -i'</code><br />
<code class="language-plaintext highlighter-rouge">alias cp='cp -i'</code><br />
<code class="language-plaintext highlighter-rouge">alias mv='mv -i'</code></p>

<p>Use <code class="language-plaintext highlighter-rouge">rsync</code> for complex copies, more powerful than <code class="language-plaintext highlighter-rouge">cp</code> for large directories and remote transfers.<br />
Check before destructive actions: <code class="language-plaintext highlighter-rouge">ls</code> first, then act.<br />
Permissions matter. You may need <code class="language-plaintext highlighter-rouge">sudo</code> for system files, but be extremely careful.<br />
Recovering deleted files is difficult. Use backups or tools like testdisk/photorec only as last resort.</p>

<p><strong>Golden Rule: Never run rm -rf / or similar without understanding the consequences.</strong></p>

<hr />

<h2 id="conclusion">Conclusion</h2>
<p>The <strong>cp</strong>, <strong>rm</strong>, and <strong>mv</strong> commands are the foundation of Linux file management. Once you master their basic syntax, options, and safe practices, you’ll navigate and organize your filesystem with confidence and speed. Practice in a safe directory first. Combine these commands with other commands, pipes, and shell loops for powerful automation on your Linux system.</p>

<p>More details are available in the man pages:</p>

<p><code class="language-plaintext highlighter-rouge">man cp</code><br />
<code class="language-plaintext highlighter-rouge">man rm</code><br />
<code class="language-plaintext highlighter-rouge">man mv</code></p>

<p>Stay tuned for more tutorials.</p>]]></content><author><name></name></author><category term="Commands" /><category term="Terminal" /><category term="Bash" /><category term="Linux" /><category term="Tutorial" /><summary type="html"><![CDATA[Part two in the Linux Command Series]]></summary></entry><entry><title type="html">The Linux ls Command</title><link href="https://mikechilson.com/blog/The-Linux-ls-Command" rel="alternate" type="text/html" title="The Linux ls Command" /><published>2026-05-23T00:00:00+00:00</published><updated>2026-05-23T00:00:00+00:00</updated><id>https://mikechilson.com/blog/The-Linux-ls-Command</id><content type="html" xml:base="https://mikechilson.com/blog/The-Linux-ls-Command"><![CDATA[<h2 id="introduction">Introduction</h2>

<p>The <strong>ls</strong> command is one of the most fundamental and frequently used commands in Linux and Unix-like operating systems. It stands for “list” and is used to display the contents of a directory. This tutorial covers basic usage, advanced options, and professional tips for mastering <strong>ls</strong>.</p>

<hr />

<h2 id="basic-use-of-the-ls-command">Basic Use of the ls Command</h2>

<p><strong>Listing Files and Directories</strong></p>
<ul>
  <li>To list the contents of the current directory in the terminal, type: <code class="language-plaintext highlighter-rouge">ls</code></li>
  <li>This shows files and directories in a simple columnar format.</li>
</ul>

<p><strong>Listing with Details</strong></p>
<ul>
  <li>Use the <code class="language-plaintext highlighter-rouge">-l</code> option for a long listing format that includes permissions, owner, size, and modification time: <code class="language-plaintext highlighter-rouge">ls -l</code></li>
</ul>

<p><strong>Listing Hidden Files</strong></p>
<ul>
  <li>Hidden files start with a dot (<code class="language-plaintext highlighter-rouge">.</code>). Use the <code class="language-plaintext highlighter-rouge">-a</code> option to show them: <code class="language-plaintext highlighter-rouge">ls -a</code></li>
  <li><strong>Note:</strong> You can combine options like this: <code class="language-plaintext highlighter-rouge">ls -la</code> or <code class="language-plaintext highlighter-rouge">ls -al</code></li>
</ul>

<p><strong>Listing Specific Directory</strong></p>
<ul>
  <li>To list contents of a specific directory: <code class="language-plaintext highlighter-rouge">ls /path/to/directory</code></li>
  <li>Example: <code class="language-plaintext highlighter-rouge">ls /home/user/Documents</code></li>
</ul>

<p><strong>Human-Readable Sizes</strong></p>
<ul>
  <li>Use <code class="language-plaintext highlighter-rouge">-h</code> with <code class="language-plaintext highlighter-rouge">-l</code> to show file sizes in human-readable format (KB, MB, etc.): <code class="language-plaintext highlighter-rouge">ls -lh</code></li>
</ul>

<p><strong>Using Wildcards</strong><br />
Wildcards are powerful pattern-matching tools that allow you to list directories and files selectively without typing every name. They are especially useful when working with large directories or groups of files.</p>

<table>
  <thead>
    <tr>
      <th>Wildcard</th>
      <th>Description</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">*</code></td>
      <td>Matches any number of characters</td>
      <td><code class="language-plaintext highlighter-rouge">ls *.txt</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">?</code></td>
      <td>Matches exactly one character</td>
      <td><code class="language-plaintext highlighter-rouge">ls report?.pdf</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">[]</code></td>
      <td>Matches any character in the set</td>
      <td><code class="language-plaintext highlighter-rouge">ls file[1-5].txt</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="advanced-uses-of-the-ls-command">Advanced Uses of the ls Command</h2>

<p><strong>Sorting Options</strong></p>
<ul>
  <li>Sort by size (largest first): <code class="language-plaintext highlighter-rouge">ls -lS</code></li>
  <li>Sort by modification time (newest first): <code class="language-plaintext highlighter-rouge">ls -lt</code></li>
  <li>Reverse sort: Add <code class="language-plaintext highlighter-rouge">-r</code>, e.g., `ls -ltr (oldest first)</li>
</ul>

<p><strong>Recursive Listing</strong></p>
<ul>
  <li>List contents of directories recursively: <code class="language-plaintext highlighter-rouge">ls -R</code></li>
</ul>

<p><strong>File Type Indicators</strong></p>
<ul>
  <li>Show file types with symbols (/ for directories, * for executables): <code class="language-plaintext highlighter-rouge">ls -F</code></li>
</ul>

<p><strong>Colorized Output</strong></p>
<ul>
  <li>Many systems have color support enabled by default. If not: <code class="language-plaintext highlighter-rouge">ls --color=auto</code></li>
  <li>NOTE: many modern distros alias <code class="language-plaintext highlighter-rouge">ls</code> to <code class="language-plaintext highlighter-rouge">ls --color=auto</code></li>
</ul>

<p><strong>Ignoring Patterns</strong></p>
<ul>
  <li>Ignore files matching a pattern: <code class="language-plaintext highlighter-rouge">ls --ignore=\*.tmp</code></li>
</ul>

<p><strong>Combining Options</strong></p>
<ul>
  <li>Common powerful combination: <code class="language-plaintext highlighter-rouge">ls -lathr</code> This shows all files (-a), long format (-l), human-readable sizes (-h), sorted by time (-t), reversed (-r)</li>
</ul>

<hr />

<h2 id="pro-tips-advanced-tips-and-tricks">Pro Tips: Advanced Tips and Tricks</h2>

<p><strong>Setting Default ls Behavior in Login Scripts</strong></p>
<ul>
  <li>You can create an alias in your shell configuration file to make ls behave differently by default.</li>
  <li>For example, Bash users, edit ~/.bashrc or ~/.bash_profile: <code class="language-plaintext highlighter-rouge">alias ls='ls --color=auto -h'</code> (can be ls with any parameters)</li>
  <li>For more advanced defaults: <code class="language-plaintext highlighter-rouge">alias ll='ls -lh'</code> or  <code class="language-plaintext highlighter-rouge">alias la='ls -lah'</code></li>
  <li>After editing, reload with: <code class="language-plaintext highlighter-rouge">source ~/.bashrc</code></li>
</ul>

<p><strong>Piping ls Output to Other Commands</strong></p>
<ul>
  <li>The <code class="language-plaintext highlighter-rouge">|</code> symbol connects the standard output (stdout) of the left command to the standard input (stdin) of the right command. This enables powerful command chaining without saving intermediate results to files.</li>
</ul>

<p><strong>Examples with grep</strong></p>
<ul>
  <li>List only files containing “report” in their name: <code class="language-plaintext highlighter-rouge">ls | grep report</code></li>
  <li>Case-insensitive search: <code class="language-plaintext highlighter-rouge">ls | grep -i report</code></li>
  <li>Show detailed list of .txt files: <code class="language-plaintext highlighter-rouge">ls -l | grep '\.txt$'</code></li>
  <li>Other Useful Pipes
    <ul>
      <li>Count files in directory: <code class="language-plaintext highlighter-rouge">ls | wc -l</code></li>
      <li>Find largest files: <code class="language-plaintext highlighter-rouge">ls -lS | head -n 10</code></li>
      <li>Paginate long output: <code class="language-plaintext highlighter-rouge">ls -l | less</code></li>
    </ul>
  </li>
</ul>

<p><strong>Additional Pro Tips</strong></p>
<ul>
  <li>Use <code class="language-plaintext highlighter-rouge">ls -1</code> to list one file per line (useful for scripting).</li>
  <li>For inode numbers: <code class="language-plaintext highlighter-rouge">ls -i</code></li>
  <li>Show full paths with tree alternative or find, but ls can combine: <code class="language-plaintext highlighter-rouge">ls -d $PWD/\*</code></li>
  <li>In scripts, always quote variables when using ls to handle spaces: <code class="language-plaintext highlighter-rouge">ls "$DIR"</code></li>
  <li>Performance note: For very large directories, consider using <code class="language-plaintext highlighter-rouge">find</code> instead of <code class="language-plaintext highlighter-rouge">ls -R</code></li>
</ul>

<hr />

<h2 id="conclusion">Conclusion</h2>
<p>Mastering the ls command significantly improves your efficiency on the Linux command line. Practice these options in your terminal to become comfortable with them. Combine ls with other commands using pipes for even more powerful workflows. Don’t forget, all this information can be found in the ls man page <code class="language-plaintext highlighter-rouge">man ls</code>.</p>

<p>Stay tuned for more tutorials.</p>]]></content><author><name></name></author><category term="Commands" /><category term="Bash" /><category term="Linux" /><category term="Tutorial" /><summary type="html"><![CDATA[Part one in the Linux Command Series]]></summary></entry><entry><title type="html">MarkLite Markdown Viewer/Editor Version 1.0.0 Released</title><link href="https://mikechilson.com/blog/MarkLite-1.0.0-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 1.0.0 Released" /><published>2026-05-08T00:00:00+00:00</published><updated>2026-05-08T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-1.0.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-1.0.0-Released"><![CDATA[<p>MarkLite version 1.0.0 has been released and is now stable and in maintenence mode. This mean there will probably be no more major additions to it and only language updates and any bugs that might be discovered.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode. You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Button to online markdown reference</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Reference button points to a Markdown reference website in your browser.</li>
  <li>Markdown syntax highlighting in editor.</li>
</ul>

<p>MarkLite is currently avalible on Linux only in .deb, .rpm, and snap packages (windows and flatpak coming soon).</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a fast viewer with light editing, not a feature rich editor.</p>

<p>You can read more and download the package or snap at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Viewer" /><category term="Editor" /><category term="Programming" /><category term="Utilities" /><category term="Linux" /><summary type="html"><![CDATA[Open Source Lightweight Markdown Viewer/Editor for Linux]]></summary></entry><entry><title type="html">MarkLite Markdown Viewer/Editor Version 0.6.0 Released</title><link href="https://mikechilson.com/blog/MarkLite-0.6.0-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 0.6.0 Released" /><published>2026-04-03T00:00:00+00:00</published><updated>2026-04-03T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-0.6.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-0.6.0-Released"><![CDATA[<p>MarkLite version 0.6.0 has been released with several new features including a toolbar button to launch a Markdown Reference in the users browser, assigning a hot key to the theme button (light/dark modes), and more code refactoring to keep the program lean and fast.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode. You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Button to online markdown reference</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Markdown syntax highlighting in editor.</li>
</ul>

<p>MarkLite is currently avalible in .deb, .rpm, and snap packages.</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a fast viewer with light editing, not a feature rich editor.</p>

<p>You can read more and download the package or snap at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Viewer" /><category term="Editor" /><category term="Programming" /><category term="Utilities" /><summary type="html"><![CDATA[Open Source Lightweight Markdown Viewer/Editor for Linux]]></summary></entry><entry><title type="html">MarkLite Markdown Viewer/Editor Version 0.5.0 Released</title><link href="https://mikechilson.com/blog/MarkLite-0.5.0-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 0.5.0 Released" /><published>2026-03-17T00:00:00+00:00</published><updated>2026-03-17T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-0.5.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-0.5.0-Released"><![CDATA[<p>MarkLite version 0.5.0 has been released with refactoring of the keyboard handler and markdown viewer code to keep pushing the program to be light and fast, also new a feature to support GitLib specific markdown extensions.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode. You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Markdown syntax highlighting in editor.</li>
</ul>

<p>MarkLite is currently avalible in .deb, .rpm, and snap packages.</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a fast viewer with light editing, not a feature rich editor.</p>

<p>You can read more and download the package or snap at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Programming" /><category term="Utilities" /><summary type="html"><![CDATA[Open source lightweight Markdown viewer/editor for Linux]]></summary></entry><entry><title type="html">MarkLite Markdown Viewer/Editor Version 0.4.0 Released</title><link href="https://mikechilson.com/blog/MarkLite-0.4.0-Released" rel="alternate" type="text/html" title="MarkLite Markdown Viewer/Editor Version 0.4.0 Released" /><published>2026-03-11T00:00:00+00:00</published><updated>2026-03-11T00:00:00+00:00</updated><id>https://mikechilson.com/blog/MarkLite-0.4.0-Released</id><content type="html" xml:base="https://mikechilson.com/blog/MarkLite-0.4.0-Released"><![CDATA[<p>MarkLite version 0.4.0 has been released with updated Dart and Flutter versions, Refactoring of code to keep the program light and fast, also new a feature to track any changes to an open file if another program modifies it.</p>

<p>MarkLite is an open-source, lightweight Markdown Viewer and Editor for Linux. I wrote MarkLite out of frustration for having to load a feature-heavy Markdown editor to just view or make a quick change. I developed MarkLite in Dart/Flutter and it was one of my first attempts to write a platform application in that language/framework combination.</p>

<p><strong>Overview</strong></p>

<p>Basically the way MarkLite works is it opens in a viewer mode. You can either read the Markdown document then close it or simply click the Edit button to edit it. Edit mode is a full features edit with features like Find, Goto Line, Line Numbers, Syntax Highlighting and Key Commands.</p>

<p><strong>Features</strong></p>
<ul>
  <li>Lightweight application that loads fast.</li>
  <li>Can be set as your default viewer for Markdown files.</li>
  <li>Viewer/Editor modes.</li>
  <li>Offers a light and dark mode.</li>
  <li>Editor has basic functionality for quick edits.</li>
  <li>Common keyboard shortcuts in editor.</li>
  <li>Find/Replace in editor.</li>
  <li>GoTo Line feature in editor.</li>
  <li>Line numbering in editor for convenience.</li>
  <li>Markdown syntax highlighting in editor.</li>
</ul>

<p>MarkLite is currently avalible in .deb, .rpm, and snap packages.</p>

<p><strong>Final Thoughts</strong></p>

<p>Remember that MarkLite is a lightweight viewer/editor and does not have the full editor/IDE dynamic syntax analysis and other features.
This application is focused on being a fast viewer with light editing, not a feature rich editor.</p>

<p>You can read more and download the package or snap at the <a href="https://marklite.app">MarkLite website</a>.</p>]]></content><author><name></name></author><category term="Open Source" /><category term="Markdown" /><category term="Programming" /><category term="Utilities" /><summary type="html"><![CDATA[Open source lightweight Markdown viewer/editor for Linux]]></summary></entry></feed>