fosstodon.org is one of the many independent Mastodon servers you can use to participate in the fediverse.
Fosstodon is an invite only Mastodon instance that is open to those who are interested in technology; particularly free & open source software. If you wish to join, contact us for an invite.

Administered by:

Server stats:

8.8K
active users

#shellscript

0 posts0 participants0 posts today
Anubhav<p><a href="https://hachyderm.io/tags/PSA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PSA</span></a>: People, do not give empty strings to <a href="https://hachyderm.io/tags/rsync" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>rsync</span></a> v3.1.3 for it to include current directory as additional source directory to be copied over.</p><p>test=''<br>delete=''</p><p># Later, set test='-n' &amp; delete='--delete' on some conditions.</p><p>...</p><p>rsync -n -v -v -r -i \<br>"$test" "$delete" \<br>"${source_dir:?Missing source}" \<br>"${dest_dir:?Missing dest}"<br>sending incremental file list<br>removing duplicate name . from file list (2)<br>removing duplicate name . from file list (3)<br>...</p><p>Without the second -v option there would be no indication of inclusion of current directory.</p><p>That happens at least in rsync v3.1.3 protocol version 31 (Rocky Linux 8) but not in v{3.2.7,3.4.1} protocol version 32 (Debian 12,FreeBSD 14.3) where it exits with error thankfully:</p><p>Empty source arg specified.<br>rsync error: syntax or usage error (code 1) at main.c(1508) [sender=3.2.7]</p><p>This (with rsync v3.1.x above) came about due to:<br>1- unconditional inclusion of empty strings;<br>2- use of Bash array syntax to provide options to rsync. It was changed to `rsync "${rsync_opt[@]}" ...` from earlier change of `set -- $rsync_opt; rsync $@ ...` which collapses empty strings. See the script below.</p><p>#!/usr/bin/env bash</p><p>conditional_string=''</p><p>more_arg='-v -r'</p><p># Later.<br>collected_array=("${more_arg}" "${conditional_string}")<br>collected_plain_string="${more_arg} ${conditional_string}"</p><p>printf "array: &gt;%s&lt;\n" "${collected_array[@]}"<br>printf "array as string: &gt;%s&lt;\n" "${collected_array}"</p><p>set -- "${collected_array[@]}"<br>printf "@, from quoted array: &gt;%s&lt;\n" "$@"</p><p>set -- $collected_array<br>printf "@, from unadorned unquoted array: &gt;%s&lt;\n" "$@"</p><p>printf "\n-----\n"</p><p>printf "plain string: &gt;%s&lt;\n" "${collected_plain_string}"<br>set -- $collected_plain_string<br>printf "@, from unquoted plain string: &gt;%s&lt;\n" "$@"</p><p>Script Output:<br>array: &gt;-v -r&lt;<br>array: &gt;&lt;<br>array as string: &gt;-v -r&lt;<br>@, from quoted array: &gt;-v -r&lt;<br>@, from quoted array: &gt;&lt;<br>@, from unadorned unquoted array: &gt;-v&lt;<br>@, from unadorned unquoted array: &gt;-r&lt;</p><p>-----<br>plain string: &gt;-v -r &lt;<br>@, from unquoted plain string: &gt;-v&lt;<br>@, from unquoted plain string: &gt;-r&lt;</p><p><a href="https://hachyderm.io/tags/shellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellScript</span></a> <a href="https://hachyderm.io/tags/bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bash</span></a> <a href="https://hachyderm.io/tags/softwareDevelopment" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>softwareDevelopment</span></a></p>
R.L. Dane :Debian: :OpenBSD: 🍵 :MiraLovesYou:<p><a href="https://polymaths.social/tags/poll" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Poll</span></a>: Curious about people's attitudes towards shell scripting.</p><p>Two part question:</p><ol><li>Are you a DEVeloper (or working in a development-heavy role), OTHER-IT worker (such as a sysadmin, architect, anything in a non-development-heavy role), or NON-IT (accountant, doctor, whatever)</li><li>Do you HATE shell scripting, are you INDIFferent towards (or ignorant of) shell scripting, or do you LOVE it?</li></ol><p><a href="https://polymaths.social/tags/unix" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Unix</span></a> <a href="https://polymaths.social/tags/unixshell" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnixShell</span></a> <a href="https://polymaths.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> <a href="https://polymaths.social/tags/shellscripting" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScripting</span></a> <a href="https://polymaths.social/tags/posix" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>POSIX</span></a> <a href="https://polymaths.social/tags/posixshell" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PosixShell</span></a> <a href="https://polymaths.social/tags/sh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sh</span></a> <a href="https://polymaths.social/tags/bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bash</span></a> <a href="https://polymaths.social/tags/zsh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>zsh</span></a> <a href="https://polymaths.social/tags/csh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>csh</span></a> <a href="https://polymaths.social/tags/tcsh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>tcsh</span></a> <a href="https://polymaths.social/tags/ksh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ksh</span></a> <a href="https://polymaths.social/tags/pdksh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pdksh</span></a> <a href="https://polymaths.social/tags/oksh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>oksh</span></a> <a href="https://polymaths.social/tags/mksh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mksh</span></a></p>
David Cantrell 🏏<p>Holy crap! That 50 line <a href="https://fosstodon.org/tags/ShellScript" class="mention hashtag" rel="tag">#<span>ShellScript</span></a>, which includes child process management and signal handling, not only works, but <a href="https://fosstodon.org/tags/shellcheck" class="mention hashtag" rel="tag">#<span>shellcheck</span></a> only whines about two things, both of which I know don&#39;t matter.</p>
scy<p>Shell script that's using curl and jq to get the list of channels from <span class="h-card" translate="no"><a href="https://sfba.social/@somafm" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>somafm</span></a></span>, fzf to allow you to select one, and mpv to play it.</p><p><a href="https://codeberg.org/scy/dotfiles/src/branch/main/bin/soma" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">codeberg.org/scy/dotfiles/src/</span><span class="invisible">branch/main/bin/soma</span></a></p><p><a href="https://chaos.social/tags/SomaFM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SomaFM</span></a> <a href="https://chaos.social/tags/mpv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mpv</span></a> <a href="https://chaos.social/tags/fzf" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fzf</span></a> <a href="https://chaos.social/tags/jq" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>jq</span></a> <a href="https://chaos.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://chaos.social/tags/dotfiles" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dotfiles</span></a> <a href="https://chaos.social/tags/webradio" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>webradio</span></a></p>
Nom__XD, 飲ん,诺穆 (They/Them)🐈‍⬛<p>Ok, some of you are doing too many requests to wttr.in, lol. So here is a way I do it: a singlerequest every time my PC boots. No need for us to do it every time we open a shell, just save the report to a file &amp; read from it. <a href="https://mastodon.social/tags/Weather" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Weather</span></a> <a href="https://mastodon.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://mastodon.social/tags/Bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bash</span></a> <a href="https://mastodon.social/tags/Zsh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zsh</span></a> <a href="https://mastodon.social/tags/nomxd" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>nomxd</span></a> <a href="https://mastodon.social/tags/Tech" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Tech</span></a>-talk🐾</p>
ax6761<p>Is there any other way to break up a single string of combined options as individual options other than setting “$@“ (breaking up the string on white space), as in …</p><p>set -- $option_list<br>command $@ …</p><p>… ? The command is “rsync(1)” in this case if that matters.</p><p>An oddity I noticed in that script is that it uses “Bourne Again Shell”, <a href="https://freeradical.zone/tags/bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bash</span></a>, but is not using array to collect, pass the options around. How would that be done there?</p><p><a href="https://freeradical.zone/tags/sh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sh</span></a> <a href="https://freeradical.zone/tags/shellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellScript</span></a> <a href="https://freeradical.zone/tags/bashScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bashScript</span></a> <a href="https://freeradical.zone/tags/unix" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>unix</span></a> <a href="https://freeradical.zone/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a></p>
DeadSwitch @ T0m's 1T C4fe<p>Script where you think. Emacs + shell = zero-distance hacking. No tabs, no noise. Just flow.<br><a href="https://mastodon.social/tags/Emacs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Emacs</span></a> <a href="https://mastodon.social/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> <a href="https://mastodon.social/tags/ShellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> <a href="https://mastodon.social/tags/Productivity" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Productivity</span></a> <a href="https://mastodon.social/tags/DeadSwitch" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DeadSwitch</span></a></p><p><a href="http://tomsitcafe.com/2025/05/11/shell-scripts-in-emacs-the-cyber-ghosts-shortcut-to-flow/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">http://</span><span class="ellipsis">tomsitcafe.com/2025/05/11/shel</span><span class="invisible">l-scripts-in-emacs-the-cyber-ghosts-shortcut-to-flow/</span></a></p>
MANJO :unverified:<p>Hola a todos. Si eres de aquellos que ya usan <a href="https://infosec.exchange/tags/Vim" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vim</span></a> o quieren aprender a usarlo y necesitan algo rapido y funcional, te dejo aquí un <a href="https://infosec.exchange/tags/ShellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> para que te puedas descargar todo sin muchas vueltas. El <a href="https://infosec.exchange/tags/script" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>script</span></a> está enfocado en usuarios de <a href="https://infosec.exchange/tags/Debian" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Debian</span></a>. Puedes consultar el código en mi repositorio de codeberg :)<br>Comando -&gt; curl -fsS <a href="https://codeberg.org/manjo/VimUltimateShellScript/raw/branch/main/UltimateVim.sh" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">codeberg.org/manjo/VimUltimate</span><span class="invisible">ShellScript/raw/branch/main/UltimateVim.sh</span></a> | sh</p>
baumannzone<p>Cada día más cerca de reemplazar a Excel 🥹</p><p><a href="https://techhub.social/tags/ShellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> <a href="https://techhub.social/tags/SeniorDeveloper" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SeniorDeveloper</span></a></p>
TSM at Work<p>You don’t know how many personalities the <a href="https://noc.social/tags/AWS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>AWS</span></a> <a href="https://noc.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a> has until you double-check your <a href="https://noc.social/tags/disasterrecovery" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>disasterrecovery</span></a> vendor’s work during a failover test. But hey, at least now I have a pile of <a href="https://noc.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> that gives me strong signals.</p><p>That’s all well and good for the <a href="https://noc.social/tags/infrastructure" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>infrastructure</span></a>, but we may have impeded ourselves when we gave the unproven disaster recovery environment production-like (i.e. restrictive) permissions. Diagnosing why the workloads aren’t starting up properly is unnecessarily difficult.</p>
Harald<p>Bash variables: A subshell cannot write back variables to its parent shell.</p><p>I want to get a variable AA back anyway and tried:<br>1. in the subshell: declare -p AA &gt;./tmp/somefile<br>2. in the parent shell: source ./tmp/somefile</p><p>Can this fail? Well (2) is run in a function, so the 'declare ...' we source only declares a local variable. As soon as leaving the function, the AA is gone.</p><p>There does not seem to be a version of 'declare -p' which adds "-g" to the output.</p><p><a href="https://nrw.social/tags/bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bash</span></a> <a href="https://nrw.social/tags/programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>programming</span></a> <a href="https://nrw.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a></p>
ののっのー<p>【CloudFlare】動的IPアドレスをAPIで自動更新する。DDNS <a href="https://best-friends.chat/tags/ShellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> - Qiita</p><p><a href="https://qiita.com/napspans/items/455103748f3a0dd7ee18" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">qiita.com/napspans/items/45510</span><span class="invisible">3748f3a0dd7ee18</span></a></p>
Steven P. Sanderson II, MPH<p>💡 Struggling with shell script arguments? Our guide breaks down positional parameters step by step! From $0 to ${10} and beyond! Read: Mastering Positional Parameters in Linux at: <a href="https://www.spsanderson.com/steveondata/posts/2025-04-18/" rel="nofollow noopener" target="_blank">www.spsanderson.com/steveondata/...</a> <a class="hashtag" href="https://bsky.app/search?q=%23linux" rel="nofollow noopener" target="_blank">#linux</a> <a class="hashtag" href="https://bsky.app/search?q=%23shellscript" rel="nofollow noopener" target="_blank">#shellscript</a> <a class="hashtag" href="https://bsky.app/search?q=%23Programming" rel="nofollow noopener" target="_blank">#Programming</a> <a class="hashtag" href="https://bsky.app/search?q=%23Blog" rel="nofollow noopener" target="_blank">#Blog</a> <a class="hashtag" href="https://bsky.app/search?q=%23Technology" rel="nofollow noopener" target="_blank">#Technology</a> <a class="hashtag" href="https://bsky.app/search?q=%23CLI" rel="nofollow noopener" target="_blank">#CLI</a></p>
Steven Sanderson<p>💡 Struggling with shell script arguments? Our guide breaks down positional parameters step by step! From $0 to ${10}, we've got you covered with practical examples.</p><p>Read: Mastering Positional Parameters in Linux at: <a href="https://www.spsanderson.com/steveondata/posts/2025-04-18/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">spsanderson.com/steveondata/po</span><span class="invisible">sts/2025-04-18/</span></a></p><p><a href="https://rstats.me/tags/linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linux</span></a> <a href="https://rstats.me/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://rstats.me/tags/Programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Programming</span></a> <a href="https://rstats.me/tags/Blog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Blog</span></a> <a href="https://rstats.me/tags/Technology" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Technology</span></a> <a href="https://rstats.me/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a></p>
Steven P. Sanderson II, MPH<p>💡 Struggling with shell script arguments? Our guide breaks down positional parameters step by step! From $0 to ${10}, we've got you covered with practical examples.</p><p>Read: Mastering Positional Parameters in Linux at: <a href="https://www.spsanderson.com/steveondata/posts/2025-04-18/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">spsanderson.com/steveondata/po</span><span class="invisible">sts/2025-04-18/</span></a></p><p><a href="https://mstdn.social/tags/linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linux</span></a> <a href="https://mstdn.social/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://mstdn.social/tags/Programming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Programming</span></a> <a href="https://mstdn.social/tags/Blog" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Blog</span></a> <a href="https://mstdn.social/tags/Technology" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Technology</span></a> <a href="https://mstdn.social/tags/CLI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CLI</span></a></p>
r1w1s1I wrote a simple shell script to manage a Slackware chroot environment for building packages.<br><br>Tested with Slackware-current. You can create and access the chroot easily with just a few commands.<br><br>Source:<br><a href="https://git.sr.ht/~r1w1s1/slackbuilds/blob/main/chroot-manager.sh" rel="nofollow noopener" target="_blank">https://git.sr.ht/~r1w1s1/slackbuilds/blob/main/chroot-manager.sh</a><br><br><a href="https://snac.bsd.cafe?t=slackware" class="mention hashtag" rel="nofollow noopener" target="_blank">#slackware</a> <a href="https://snac.bsd.cafe?t=shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#shellscript</a> <a href="https://snac.bsd.cafe?t=chroot" class="mention hashtag" rel="nofollow noopener" target="_blank">#chroot</a> <a href="https://snac.bsd.cafe?t=linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#Linux</a><br>
Pyrzout :vm:<p>Tracing the #!: How the Linux Kernel Handles the Shebang <a href="https://hackaday.com/2025/04/11/tracing-the-how-the-linux-kernel-handles-the-shebang/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">hackaday.com/2025/04/11/tracin</span><span class="invisible">g-the-how-the-linux-kernel-handles-the-shebang/</span></a> <a href="https://social.skynetcloud.site/tags/linuxkernel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linuxkernel</span></a> <a href="https://social.skynetcloud.site/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://social.skynetcloud.site/tags/LinuxHacks" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LinuxHacks</span></a></p>
IT News<p>Tracing the #!: How the Linux Kernel Handles the Shebang - One of the delights in Bash, zsh, or whichever shell tickles your fancy in your OS... - <a href="https://hackaday.com/2025/04/11/tracing-the-how-the-linux-kernel-handles-the-shebang/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">hackaday.com/2025/04/11/tracin</span><span class="invisible">g-the-how-the-linux-kernel-handles-the-shebang/</span></a> <a href="https://schleuss.online/tags/linuxkernel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linuxkernel</span></a> <a href="https://schleuss.online/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://schleuss.online/tags/linuxhacks" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linuxhacks</span></a></p>
IT News<p>A 6502, In The Shell - Shell scripting is an often forgotten programming environment, relegated to simple... - <a href="https://hackaday.com/2025/03/17/a-6502-in-the-shell/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">hackaday.com/2025/03/17/a-6502</span><span class="invisible">-in-the-shell/</span></a> <a href="https://schleuss.online/tags/microcontrollers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>microcontrollers</span></a> <a href="https://schleuss.online/tags/softwarehacks" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>softwarehacks</span></a> <a href="https://schleuss.online/tags/shellscript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shellscript</span></a> <a href="https://schleuss.online/tags/linuxhacks" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linuxhacks</span></a> <a href="https://schleuss.online/tags/shell" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shell</span></a></p>
OSTechNix<p>How To Replace Text In Multiple Files Using A Bash Script In Linux <a href="https://floss.social/tags/Bash" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Bash</span></a> <a href="https://floss.social/tags/ShellScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ShellScript</span></a> <a href="https://floss.social/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> <a href="https://floss.social/tags/Linuxcommands" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linuxcommands</span></a> <a href="https://floss.social/tags/Linuxhowto" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linuxhowto</span></a> <a href="https://floss.social/tags/Linuxbasics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linuxbasics</span></a> <br><a href="https://ostechnix.com/replace-text-in-multiple-files-using-bash-script/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">ostechnix.com/replace-text-in-</span><span class="invisible">multiple-files-using-bash-script/</span></a></p>