<?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:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Naman's blog]]></title><description><![CDATA[Naman's blog]]></description><link>https://blog.namanlad.com</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 14:04:22 GMT</lastBuildDate><atom:link href="https://blog.namanlad.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Using Bash to Display Every Terminal Color and Text Style]]></title><description><![CDATA[This one’s a quickie.
In the terminal, colors and text styles can make output more readable and visually appealing. Whether you’re creating a script with status messages or customizing your prompt, knowing how to use ANSI escape codes for colors and ...]]></description><link>https://blog.namanlad.com/using-bash-to-display-every-terminal-color-and-text-style</link><guid isPermaLink="true">https://blog.namanlad.com/using-bash-to-display-every-terminal-color-and-text-style</guid><category><![CDATA[Bash]]></category><category><![CDATA[Script]]></category><category><![CDATA[ANSI]]></category><dc:creator><![CDATA[Naman Lad]]></dc:creator><pubDate>Tue, 18 Mar 2025 01:44:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1742261582015/0f8fc79a-63d2-4205-aca5-998602449589.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This one’s a quickie.</p>
<p>In the terminal, colors and text styles can make output more readable and visually appealing. Whether you’re creating a script with status messages or customizing your prompt, knowing how to use ANSI escape codes for colors and styles is invaluable.</p>
<p>In this post, let’s explore a simple Bash script that prints all possible combinations of colors and styles of text in the terminal, along with the respective codes that generate them.</p>
<h1 id="heading-the-script">The script</h1>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

<span class="hljs-keyword">for</span> style <span class="hljs-keyword">in</span> <span class="hljs-string">''</span> <span class="hljs-string">'1;'</span> <span class="hljs-string">'2;'</span> <span class="hljs-string">'3;'</span> <span class="hljs-string">'4;'</span> <span class="hljs-string">'9;'</span>; <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">for</span> <span class="hljs-built_in">fg</span> <span class="hljs-keyword">in</span> {30..37}; <span class="hljs-keyword">do</span>
        <span class="hljs-keyword">for</span> <span class="hljs-built_in">bg</span> <span class="hljs-keyword">in</span> {40..48}; <span class="hljs-keyword">do</span>
            <span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$style</span>"</span> ]; <span class="hljs-keyword">then</span>
              <span class="hljs-built_in">echo</span> -en <span class="hljs-string">"\x1b[<span class="hljs-variable">${bg}</span>m  \x1b[0m"</span>
            <span class="hljs-keyword">fi</span>

            <span class="hljs-built_in">echo</span> -en <span class="hljs-string">"\x1b[<span class="hljs-variable">${style}</span><span class="hljs-variable">${fg}</span>;<span class="hljs-variable">${bg}</span>m <span class="hljs-variable">${style}</span><span class="hljs-variable">${fg}</span>;<span class="hljs-variable">${bg}</span> \x1b[0m"</span>
        <span class="hljs-keyword">done</span>
        <span class="hljs-built_in">echo</span>  <span class="hljs-comment"># Newline after each row</span>
    <span class="hljs-keyword">done</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-comment"># Newline after each style for separation</span>
<span class="hljs-keyword">done</span>
</code></pre>
<h1 id="heading-how-it-works">How it works</h1>
<p>The outermost for-loop will iterate over different text styles.</p>
<ul>
<li><p><code>’’</code>: This means no styling is added</p>
</li>
<li><p><code>1</code>: This will make the text bold</p>
</li>
<li><p><code>2</code>: This will make the text a little dim</p>
</li>
<li><p><code>3</code>: This will italicize the text</p>
</li>
<li><p><code>4</code>: This will add an underline to the text</p>
</li>
<li><p><code>9</code>: This will add a strikethrough to the text</p>
</li>
</ul>
<p>The next for-loop iterates over all the foreground colors (30-37) and the next one over all the background colors (40-48).</p>
<p>The <code>\x1b[0m</code> resets the formatting of the text, so that each formatting is applied without affecting the next one.</p>
<h1 id="heading-running-the-script">Running the script</h1>
<p>I named the file as <code>ansi-test</code>. Hence, I can run the following commands to execute the script:</p>
<pre><code class="lang-bash">chmod +x ansi-test
./ansi-test
</code></pre>
<p>This prints a grid displaying all possible combinations of colors and styles! 🎨</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1742261694080/817da779-5666-49b6-a705-a30d340badf2.png" alt class="image--center mx-auto" /></p>
<h1 id="heading-where-to-find-the-code">Where to find the code</h1>
<p>I have uploaded this script to GitHub <a target="_blank" href="https://github.com/NamanLad/dotfiles/blob/main/scripts/commands/ansi-test">here</a> so you can easily access and modify it. I have added the path to this directory to the <code>$PATH</code> variable on my machine, so I don’t have to navigate to this directory to execute it. I can just type <code>ansi-test</code> anywhere and can execute it 😉. I will share that piece of configuration in a future article. Until then, happy scripting!⚡</p>
]]></content:encoded></item><item><title><![CDATA[Streamline Your Next.js Setup: Automate Configuration with a Single Bash Script]]></title><description><![CDATA[I enjoy automation!
There’s something so satisfying about taking repetitive tasks and making them easier with just a little bit of code.
The need for this script
In a fast-paced development environment, it’s easy to forget certain default configurati...]]></description><link>https://blog.namanlad.com/streamline-your-nextjs-setup-automate-configuration-with-a-single-bash-script</link><guid isPermaLink="true">https://blog.namanlad.com/streamline-your-nextjs-setup-automate-configuration-with-a-single-bash-script</guid><category><![CDATA[Next.js]]></category><category><![CDATA[eslint]]></category><category><![CDATA[Prettier]]></category><category><![CDATA[npm]]></category><category><![CDATA[pnpm]]></category><category><![CDATA[Bash]]></category><category><![CDATA[Tailwind CSS]]></category><dc:creator><![CDATA[Naman Lad]]></dc:creator><pubDate>Tue, 04 Feb 2025 06:00:45 GMT</pubDate><content:encoded><![CDATA[<p><strong>I enjoy automation!</strong></p>
<p>There’s something so satisfying about taking repetitive tasks and making them easier with just a little bit of code.</p>
<h1 id="heading-the-need-for-this-script">The need for this script</h1>
<p>In a fast-paced development environment, it’s easy to forget certain default configurations you need when starting a new project. I develop projects in Next.js and prefer having <strong>ESLint</strong> and <strong>Prettier</strong> help me write and format my code. However, it is easy to forget or mess up the setup of these tools in your application.</p>
<p>In this post, I want to share a neat script I created to streamline the process of configuring a new Next.js project with some of my favorite defaults for Prettier, ESLint and Tailwind CSS support. The idea here is to save time and elimiate the need to reconfigure every new project I start.</p>
<h1 id="heading-what-goes-into-creating-and-running-the-script">What goes into creating and running the script</h1>
<p>First, I create the project using:</p>
<pre><code class="lang-bash">pnpm create next-app
</code></pre>
<p>Then I go into that directory:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> &lt;project-name&gt;
</code></pre>
<p>Here, I run the command that invokes the following script. You can paste the contents of this script into a file, say, <code>bootstrap.sh</code> and run it using:</p>
<pre><code class="lang-bash">chmod +x ./bootstrap.sh
./bootstrap.sh
</code></pre>
<p>Here is what you need to paste in the <code>bootstrap.sh</code> file:</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

pnpm install -D prettier prettier-plugin-tailwindcss

<span class="hljs-built_in">echo</span> <span class="hljs-string">'{
  "plugins": ["prettier-plugin-tailwindcss"]
}'</span> &gt;.prettierrc

pnpm install -D eslint-config-prettier eslint-plugin-prettier

<span class="hljs-built_in">echo</span> <span class="hljs-string">'{
  "extends": [
    "next/core-web-vitals",
    "eslint:recommended",
    "plugin:react-hooks/recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/jsx-runtime",
    "plugin:prettier/recommended",
    "plugin:jsx-a11y/strict"
  ],
  "plugins": ["react", "react-hooks", "@typescript-eslint"]
}'</span> &gt;.eslintrc.json
</code></pre>
<h1 id="heading-how-the-script-works">How the script works</h1>
<p>It is pretty straightforward to understand the components of this script.</p>
<ol>
<li><p>First, we install the packages related to Prettier</p>
</li>
<li><p>Then, we create a file <code>.prettierrc</code> and fill it with our custom settings and preferences</p>
</li>
<li><p>After that, we install some more packages related to ESLint and Prettier (these are required for ESLint and Prettier to work together without conflicting each other)</p>
</li>
<li><p>Finally, we edit the <code>.eslintrc.json</code> file where we add our custom configurations</p>
</li>
</ol>
<h1 id="heading-why-use-this-script">Why Use this script?</h1>
<ol>
<li><p><strong>Consistency</strong> — By automating the setup, you ensure that all the projects you create follow the same configuration. This is helpful if you like to work in a certain way with your tools and just want your new project to work the way you like out of the box.</p>
</li>
<li><p><strong>Time-saving</strong> — Instead of manually running these commands (and having to look up the long names of these packages after having forgotten them for the 4915th time), this script lets you get started with a fully configured Next.js project in just a few seconds.</p>
</li>
<li><p><strong>Less Decision Fatigue</strong> — The configuration you set up is something you like. So the next time, you won’t have to worry about choosing between different packages to do the same thing; the choice was already made by you when you ran the script for the first time.</p>
</li>
</ol>
<h1 id="heading-extending-the-script">Extending the script</h1>
<p>While this script is a great starting point, of course this is customizable. You can add more tools and packages or make other configurations using it. For example, you can add <code>axios</code> to the list of packages to download if you prefer it over the in-built <code>fetch</code> function of JavaScript.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>Automating your Next.js setup with this script can save you a lot of time and frustration, especially if you frequently create new projects. By pre-configuring things like ESLint and Prettier, you can get right into the code without any hassle.</p>
<p>I hope this article has sparked some ideas for your own workflows. Don’t hesitate to customize and extend the script as your needs evolve — that’s one of the best parts about automation!</p>
<p>Happy coding!</p>
]]></content:encoded></item><item><title><![CDATA[Supercharge Your CLI: Interactive File Searching with ripgrep and fzf]]></title><description><![CDATA[Prerequisites

rg - ripgrep command-line tool

fzf - fuzzy finder command-line tool

bat (optional) - a cat clone with syntax highlighting



rg is a search tool that recursively searches for a regex pattern in a given directory. It is similar to the...]]></description><link>https://blog.namanlad.com/supercharge-your-cli-interactive-file-searching-with-ripgrep-and-fzf</link><guid isPermaLink="true">https://blog.namanlad.com/supercharge-your-cli-interactive-file-searching-with-ripgrep-and-fzf</guid><category><![CDATA[fzf]]></category><category><![CDATA[Bash]]></category><category><![CDATA[Ripgrep]]></category><category><![CDATA[search]]></category><dc:creator><![CDATA[Naman Lad]]></dc:creator><pubDate>Sat, 18 May 2024 03:41:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1742262682537/bcfbb30a-1b75-4d0a-842e-b77270e314da.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-prerequisites">Prerequisites</h1>
<ul>
<li><p><code>rg</code> - <a target="_blank" href="https://github.com/BurntSushi/ripgrep">ripgrep command-line tool</a></p>
</li>
<li><p><code>fzf</code> - <a target="_blank" href="https://github.com/junegunn/fzf">fuzzy finder command-line tool</a></p>
</li>
<li><p><code>bat</code> (optional) - <a target="_blank" href="https://github.com/sharkdp/bat">a <code>cat</code> clone with syntax highlighting</a></p>
</li>
</ul>
<hr />
<p><code>rg</code> is a search tool that recursively searches for a regex pattern in a given directory. It is similar to the <code>grep</code> command but with extra features.</p>
<p>You can use this command in the following way:</p>
<pre><code class="lang-bash">rg <span class="hljs-string">'configurations'</span> ~/Documents
</code></pre>
<p>This will recursively search for the pattern 'configurations' in all files in the <code>~/Documents</code> directory.</p>
<h1 id="heading-the-potential-problems">The potential problems</h1>
<p>Now, to get to one specific instance of your search term, <strong>you have to scroll through the output of the</strong><code>rg</code><strong>command</strong> which is not practical if the output is very long.</p>
<p>Enter <code>fzf</code> to the rescue again! In my previous blog, I showcased how <code>fzf</code> can be used to go through a list of fonts to choose from easily. Similarly, <strong>we can take the output of the search query from the</strong><code>rg</code><strong>command and pipe it into</strong><code>fzf</code>.</p>
<p>However, first, we need to see how to get the output of the search term to see if we need to make any changes.</p>
<h1 id="heading-exploring-the-solutions">Exploring the solutions</h1>
<p>First, I created a script called <code>rgf</code> that I can run anywhere. As you can see, it takes an argument, which is the term to search for.</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

rg <span class="hljs-string">"<span class="hljs-variable">$1</span>"</span> .
</code></pre>
<p>The output of this command, as expected, will be as follows:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1715985322707/7c5a1d9b-2f4f-49c2-82b0-664e12c2c44c.png" alt class="image--center mx-auto" /></p>
<p>(By the way, this is a sneak peek at my custom prompt, using <a target="_blank" href="https://starship.rs/">starship</a>. I will share my starship config in a future blog.)</p>
<p>The problem I talked about will be visible now. What if there are many instances of the text "hello" across all the files in the current directory? We have to pipe this output into <code>fzf</code> to search for the occurrence of "hello" that we want.</p>
<hr />
<p>For that, first, we have to make some modifications to this output before piping it into <code>fzf</code>.</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/bin/bash</span>

rg \
  --with-filename \
  --line-number \
  --hidden \
  --no-ignore \
  --no-heading \
  --color=always \
  --smart-case \
  <span class="hljs-string">"<span class="hljs-variable">$1</span>"</span> .
</code></pre>
<p><code>--with-filename</code>: This flag will print the filename for every line in the output.</p>
<p><code>--line-number</code>: This flag will show line numbers in the search output.</p>
<p><code>--hidden</code>: This flag will tell <code>rg</code> to search in the hidden files as well.</p>
<p><code>--no-ignore</code>: This flag will make <code>rg</code> not respect the ignore files in your directory. For example, it will not respect the <code>.gitignore</code> file and will search for the pattern in the files mentioned in the <code>.gitignore</code> file too.</p>
<p><code>--no-heading</code>: By default, the <code>rg</code> command will print the filename above the search output. This flag will make it print the filename in the same line as the search output.</p>
<p><code>--color=always</code>: This flag will make the output colorful.</p>
<p><code>--smart-case</code>: This flag will tell <code>rg</code> to search case insensitively if the pattern is all lowercase, else search case sensitively.</p>
<p><em>(Feel free to experiment with these flags or add new ones.)</em></p>
<p>The output of the above command becomes:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1715985946770/ff9544d5-473d-450b-ae03-0c73a6c0bea8.png" alt class="image--center mx-auto" /></p>
<hr />
<p>Great! Now we just need to pipe this into <code>fzf</code>. But now after looking at this output, <strong>don't you think we can type "hello" into</strong><code>fzf</code><strong>itself</strong>? This way, we can search for any term by typing it out.</p>
<h1 id="heading-final-solution">Final solution</h1>
<pre><code class="lang-bash"><span class="hljs-comment">#/bin/bash/</span>

rg \
  --with-filename \
  --line-number \
  --hidden \
  --no-ignore \
  --no-heading \
  --color=always \
  --smart-case \
  . <span class="hljs-variable">$@</span> | \

fzf \
  --ansi \
  --delimiter : \
  --nth=3.. \
  --preview <span class="hljs-string">'bat --color=always {1} --highlight-line {2}'</span> \
  --preview-window <span class="hljs-string">'right,60%,+{2}+3/3,~3'</span>
</code></pre>
<p><code>--ansi</code>: This flag will accept the incoming lines as having ansi codes for colors in them and render them properly on the screen.</p>
<p><code>--delimiter :</code>: This flag will tell <code>fzf</code> to use <code>:</code> as the delimiter for each line when dealing with fields.</p>
<p><code>--nth=3..</code>: This flag will limit the search to only the 3rd field onwards in every line (Because the 1st field is the filename and the 2nd field is the line number, we don't want to consider them when searching).</p>
<p><code>--preview</code>: This flag will help specify a command to use for previewing each line. Here, we use the <code>bat</code> command with syntax highlighting (<code>--color=always</code>) and also highlighting the line matching the query (<code>--highlight-line {2}</code>).</p>
<p><code>--preview-window</code>: This flag will set the properties of the preview window. Currently, the preview window is made to show up on the right of the <code>fzf</code> screen with 60% width. Additionally, it will scroll to three lines after the specified line (<code>+{2}+3</code>) and place the line at one-third height of the total preview window height (<code>/3</code>). Since we are using the <code>bat</code> command, it uses the first three lines of the output to display the filename. We don't want that to vanish as we scroll, so we fix the top three lines (<code>~3</code>).</p>
<p><em>(</em><code>fzf</code><em>truly is a powerful tool!)</em></p>
<p>I made some changes to the <code>rg</code> command too. Now it will search for ".", meaning <strong>it will now return every line in all the files in the current directory</strong>, and feed the output to <code>fzf</code> where we can type our search query. Another change I made is that the command will still take an argument, but it will be the directory. This means that <strong>multiple directories can be passed simultaneously and the script will run the search on all files in all the specified directories!</strong> So you can run <code>rgf /path/to/folder1 /path/to/folder2 /path/to/folder3</code> and this script will run the search on all three directories.</p>
<p>Running this command in the terminal will bring this screen where you can now type your search term.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1715986933383/7b234663-7106-47c2-bcf4-9854668ad7a9.png" alt class="image--center mx-auto" /></p>
<h1 id="heading-conclusion"><strong>Conclusion</strong></h1>
<p>By combining the powerful search capabilities of <code>ripgrep</code> and the features of <code>fzf</code>, we've crafted a versatile and efficient script for interactive file searching. This script highlights the efficiency and adaptability of command-line tools, showcasing how they can streamline workflows and enhance productivity in a CLI environment. Experiment with these tools, tailor the script to meet your specific needs and unlock the full potential of your command-line experience.</p>
]]></content:encoded></item><item><title><![CDATA[The Practical Way to Visualize Stylish Fonts in the Command Line]]></title><description><![CDATA[Prerequisites

figlet

fzf



figlet is a command-line utility to display large letters out of ordinary characters. You can learn more about it here. A typical output looks like this:

So what's the problem?
There are many types of "fonts" available ...]]></description><link>https://blog.namanlad.com/the-practical-way-to-visualize-stylish-fonts-in-the-command-line</link><guid isPermaLink="true">https://blog.namanlad.com/the-practical-way-to-visualize-stylish-fonts-in-the-command-line</guid><category><![CDATA[fzf]]></category><category><![CDATA[figlet]]></category><category><![CDATA[grep]]></category><category><![CDATA[sed]]></category><category><![CDATA[xargs]]></category><dc:creator><![CDATA[Naman Lad]]></dc:creator><pubDate>Sat, 11 May 2024 01:39:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1715383694258/cbe078df-f215-4dc3-8134-dffbd666fb42.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-prerequisites">Prerequisites</h1>
<ul>
<li><p><code>figlet</code></p>
</li>
<li><p><code>fzf</code></p>
</li>
</ul>
<hr />
<p><code>figlet</code> is a command-line utility to display large letters out of ordinary characters. You can learn more about it <a target="_blank" href="http://www.figlet.org/">here</a>. A typical output looks like this:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1715369865180/098018ca-51ae-4f7a-8c55-851a5d39f5bf.png" alt class="image--center mx-auto" /></p>
<h1 id="heading-so-whats-the-problem">So what's the problem?</h1>
<p>There are many types of "fonts" available to choose from. You can select them using the <code>-f</code> flag. For example, to use the "avatar" style, run the following command:</p>
<pre><code class="lang-bash">figlet -f avatar hello world!
</code></pre>
<p>But you don't want to run the <code>figlet</code> command with every single style and see the output before deciding which one to use. I faced this issue where I wanted to print texts with different styles but I didn't want to go through a long list of styles before picking just a few out of them.</p>
<h1 id="heading-the-solution">The Solution</h1>
<p>In order to quickly preview all available styles, I created a script that utilizes <code>fzf</code> (learn more about this amazing tool <a target="_blank" href="https://github.com/junegunn/fzf">here</a>) to navigate through the different styles and preview the entered text with that style applied.</p>
<p>Here is the script file:</p>
<pre><code class="lang-bash"><span class="hljs-meta">#!/usr/bin/env bash</span>

figlet -I2 \
  | xargs ls \
  | grep <span class="hljs-string">".flf$"</span> \
  | sed <span class="hljs-string">"s/\.flf//"</span> \
  | fzf --preview=<span class="hljs-string">"figlet -f {} <span class="hljs-variable">$1</span>"</span> \
  | xargs -I {} figlet -f {} <span class="hljs-variable">$1</span>
</code></pre>
<p>Let's dissect this command step by step:</p>
<ol>
<li><p><code>figlet -I2</code></p>
<p> The <code>-I2</code> flag retrieves the directory where the font files (with the <code>.flf</code> extension) for <code>figlet</code> are located.</p>
</li>
<li><p><code>xargs ls</code></p>
<p> The output from <code>figlet -I2</code> (the directory path) is piped into <code>xargs</code>, which then executes <code>ls</code> using that directory path as an argument. This command lists all files in the font directory.</p>
</li>
<li><p><code>grep ".flf"</code></p>
<p> Since there are other types of files present in the fonts directory, we filter out those that have the <code>.flf</code> extension.</p>
</li>
<li><p><code>sed "s/.flf//"</code></p>
<p> <code>sed</code> is another powerful command-line utility. Here, using regular expressions, we replace the <code>.flf</code> in the file names with empty strings. This cleans up the list to show just the font names, making it easier for the user to understand which fonts are available.</p>
</li>
<li><p><code>fzf --preview="figlet -f {} $1"</code></p>
<p> The list of font names is passed to the <code>fzf</code> command, allowing you to search through a list with real-time query updates. The <code>--preview</code> option lets us render a preview of how the input text (passed as <code>$1</code> argument to the whole command) would look in each font. The <code>{}</code> is a placeholder for each font name dynamically replaced by <code>fzf</code>.</p>
</li>
<li><p><code>xargs -I {} figlet -f {} $1</code></p>
<p> Finally, the selected font (represented by <code>{}</code>) is used to invoke the <code>figlet</code> command to print the input text (again, the <code>$1</code> argument) with the selected style.</p>
</li>
</ol>
<h1 id="heading-usage">Usage</h1>
<p>In order to use this script, simply make it executable and then invoke it by passing your input string. Since I named my script as <code>fig</code>, the command for me looks like:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> /path/to/the/script/file
chmod +x ./fig
./fig <span class="hljs-string">"desired text"</span>
</code></pre>
<h1 id="heading-conclusion">Conclusion</h1>
<p>The <code>figlet</code> command has a lot of great ASCII art fonts at its disposal but previewing them all on your input text is time-consuming. By using this script, users can efficiently browse through all the available fonts, preview what their specific text looks like in each font, and select the font that best fits their needs, all within a few keystrokes in the terminal.</p>
]]></content:encoded></item></channel></rss>