CINXE.COM

Most Popular | Linux Journal

<!DOCTYPE html> <html lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/ dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ og: http://ogp.me/ns# rdfs: http://www.w3.org/2000/01/rdf-schema# schema: http://schema.org/ sioc: http://rdfs.org/sioc/ns# sioct: http://rdfs.org/sioc/types# skos: http://www.w3.org/2004/02/skos/core# xsd: http://www.w3.org/2001/XMLSchema# " class="no-js wf-loading"> <head> <meta charset="utf-8" /> <meta name="Generator" content="Drupal 9 (https://www.drupal.org)" /> <meta name="MobileOptimized" content="width" /> <meta name="HandheldFriendly" content="true" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="icon" href="/themes/linuxjournal/favicon.ico" type="image/vnd.microsoft.icon" /> <title>Most Popular | Linux Journal</title> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/align.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/fieldgroup.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/container-inline.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/clearfix.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/details.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/hidden.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/item-list.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/js.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/nowrap.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/position-container.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/progress.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/reset-appearance.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/resize.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/sticky-header.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-counter.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-counters.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-general-info.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/tablesort.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/tree-child.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.base.css?snzigw" /> <link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.theme.css?snzigw" /> <link rel="stylesheet" media="all" href="/core/modules/views/css/views.module.css?snzigw" /> <link rel="stylesheet" media="all" href="/modules/contrib/webform/modules/webform_bootstrap/css/webform_bootstrap.css?snzigw" /> <link rel="stylesheet" media="all" href="/libraries/shariff/shariff.complete.css?snzigw" /> <link rel="stylesheet" media="all" href="/themes/linuxjournal/css/style.css?snzigw" /> <link rel="stylesheet" media="all" href="/themes/linuxjournal/css/fonts.css?snzigw" /> <!-- <script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>--> <script> // Non-blocking webfonts. (function iife() { 'use strict'; // JS is able to start executing. document.documentElement.classList.remove('no-js'); // Optimization for Repeat Views // Stop early for repeat views that have already cached fonts. if (sessionStorage.fontsLoadedLateef && sessionStorage.fontsLoadedOpensans /* && sessionStorage.fontsLoadedNEWFONT */) { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-opensans'); document.documentElement.classList.add('wf-lateef'); // document.documentElement.classList.add('wf-NEWFONT'); return; } // Inlined Font Face Observer script + Promise polyfill. /*! Font Face Observer v2.0.13 - © Bram Stein. License: BSD-3-Clause */ (function(){'use strict';var f,g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0](),g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b,a)},function(a){r(b,a)})}catch(c){r(b,c)}}var p=2;function t(a){return new n(function(b,c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a,b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b,function(b){c||q(a,b);c=!0},function(b){c||r(a,b);c=!0});return}}catch(e){c||r(a,e);return}a.a=0;a.b=b;v(a)}} function r(a,b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift(),c=b[0],d=b[1],e=b[2],b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0,a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0,a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0,a)};n.prototype.c=function(a,b){var c=this;return new n(function(d,e){c.f.push([a,b,d,e]);v(c)})}; function w(a){return new n(function(b,c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0,h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k),c)})}function x(a){return new n(function(b,c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b,c)})};window.Promise||(window.Promise=n,window.Promise.resolve=u,window.Promise.reject=t,window.Promise.race=x,window.Promise.all=w,window.Promise.prototype.then=n.prototype.c,window.Promise.prototype["catch"]=n.prototype.g);}()); (function(){function l(a,b){document.addEventListener?a.addEventListener("scroll",b,!1):a.attachEvent("scroll",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener("DOMContentLoaded",function c(){document.removeEventListener("DOMContentLoaded",c);a()}):document.attachEvent("onreadystatechange",function k(){if("interactive"==document.readyState||"complete"==document.readyState)document.detachEvent("onreadystatechange",k),a()})};function r(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.h=document.createElement("span");this.f=document.createElement("span");this.g=-1;this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;"; this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)} function t(a,b){a.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:"+b+";"}function y(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function z(a,b){function c(){var a=k;y(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);y(a)};function A(a,b){var c=b||{};this.family=a;this.style=c.style||"normal";this.weight=c.weight||"normal";this.stretch=c.stretch||"normal"}var B=null,C=null,E=null,F=null;function G(){if(null===C)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);C=!!a&&603>parseInt(a[1],10)}else C=!1;return C}function J(){null===F&&(F=!!document.fonts);return F} function K(){if(null===E){var a=document.createElement("div");try{a.style.font="condensed 100px sans-serif"}catch(b){}E=""!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:"","100px",b].join(" ")} A.prototype.load=function(a,b){var c=this,k=a||"BESbswy",q=0,D=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=D?b():document.fonts.load(L(c,'"'+c.family+'"'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},function(){b()})}e()}),N=new Promise(function(a,c){q=setTimeout(c,D)});Promise.race([N,M]).then(function(){clearTimeout(q);a(c)},function(){b(c)})}else m(function(){function u(){var b;if(b=-1!= f&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===B&&(b=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),B=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==v&&g==v&&h==v||f==w&&g==w&&h==w||f==x&&g==x&&h==x)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(q),a(c))}function I(){if((new Date).getTime()-H>=D)d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth, g=n.a.offsetWidth,h=p.a.offsetWidth,u();q=setTimeout(I,50)}}var e=new r(k),n=new r(k),p=new r(k),f=-1,g=-1,h=-1,v=-1,w=-1,x=-1,d=document.createElement("div");d.dir="ltr";t(e,L(c,"sans-serif"));t(n,L(c,"serif"));t(p,L(c,"monospace"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);v=e.a.offsetWidth;w=n.a.offsetWidth;x=p.a.offsetWidth;I();z(e,function(a){f=a;u()});t(e,L(c,'"'+c.family+'",sans-serif'));z(n,function(a){g=a;u()});t(n,L(c,'"'+c.family+'",serif')); z(p,function(a){h=a;u()});t(p,L(c,'"'+c.family+'",monospace'))})})};"object"===typeof module?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}()); // Load and observe Lateef var Lateef = new FontFaceObserver('Lateef', {weight: 400}); Promise.all([Lateef.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-lateef'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedLateef = true; }); // Load and observe Open Sans var os300 = new FontFaceObserver('Open Sans', {weight: 300}); var os400 = new FontFaceObserver('Open Sans', {weight: 400}); Promise.all([os300.load(), os400.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-opensans'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedOpensans = true; }); // Load and observe NEWFONT /* var NEWFONT = new FontFaceObserver('NEWFONT', {weight: 400}); Promise.all([NEWFONT.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-NEWFONT'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedNEWFONT = true; }); */ })(); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script src=https://slashdot.org/country.js></script> <script src="/themes/linuxjournal/js/ada.js"></script> <script src="/themes/linuxjournal/js/accessibility.js"></script> <script>window.addEventListener('load', function() { new Accessibility(); });</script> <script src="//a.fsdn.com/con/js/sftheme/cmp2.js"></script> <link rel="stylesheet" href="//a.fsdn.com/con/css/sftheme/sandiego/cmp.css" type="text/css"> <link rel="stylesheet" href="/themes/linuxjournal/css/ccpa.css" type="text/css"> <script>window.bizx.cmp.init({ geo: window });</script> <script> function bm_trace() { (function (w,d,t) { _ml = w._ml || {}; _ml.eid = '771'; var s, cd, tag; s = d.getElementsByTagName(t)[0]; cd = new Date(); tag = d.createElement(t); tag.async = 1; tag.src = 'https://ml314.com/tag.aspx?' + cd.getDate() + cd.getMonth(); s.parentNode.insertBefore(tag, s); })(window,document,'script'); } bizx.cmp.ifConsent('', ['all', 'bombora'],bm_trace); </script> </head> <body class="path-popular has-glyphicons"> <a href="#main-content" class="visually-hidden focusable skip-link"> Skip to main content </a> <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> <div id="wrap"> <div class="leader-wrapper" id="leader-wrapper"> </div> <div class="brand-wrapper" id="brand-wrapper"> <div class="brand container"> <div class="region region-brand"> <a class="logo navbar-btn" href="/" title="Home" rel="home"> <h1><img src="/themes/linuxjournal/images/ljlogo.png" alt="Linux Journal" /></h1> </a> <section id="block-topbannernearlogo" class="block block-block-content block-block-contenta8e75a3d-967c-416d-8944-4015d1f90a84 clearfix"> </section> </div> </div> <div class="header-wrapper"> <header class="navbar navbar-default container" id="navbar" role="banner"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div id="navbar-collapse" class="navbar-collapse collapse"> <div class="region region-navigation-collapsible"> <section id="block-linuxjournal-main-menu" class="block block-system block-system-menu-blockmain clearfix navbar__menu col-xs-12 col-sm-8"> <ul class="menu menu--main nav navbar-nav"> <li class="expanded dropdown first"> <a href="/" class="dropdown-toggle" data-toggle="dropdown" data-drupal-link-system-path="&lt;front&gt;">Topics+ <span class="caret"></span></a> <ul class="dropdown-menu"> <li class="first"> <a href="/tag/cloud">Cloud</a> </li> <li> <a href="/tag/containers" data-drupal-link-system-path="taxonomy/term/978">Containers</a> </li> <li> <a href="/tag/desktop">Desktop</a> </li> <li> <a href="/tag/kernel" data-drupal-link-system-path="taxonomy/term/662">Kernel</a> </li> <li> <a href="/tag/mobile">Mobile</a> </li> <li> <a href="/tag/networking">Networking</a> </li> <li> <a href="/tag/privacy">Privacy</a> </li> <li> <a href="/tag/programming">Programming</a> </li> <li> <a href="/tag/security" data-drupal-link-system-path="taxonomy/term/31">Security</a> </li> <li> <a href="/tag/servers">Servers</a> </li> <li class="last"> <a href="/tag/sysadmin" data-drupal-link-system-path="taxonomy/term/21">SysAdmin</a> </li> </ul> </li> <li> <a href="/news" data-drupal-link-system-path="news">News</a> </li> <li class="last"> <a href="/books" data-drupal-link-system-path="books">eBooks</a> </li> </ul> </section> <section class="search-block-form block block-search block-search-form-block clearfix navbar__search col-xs-12 col-sm-4 col-md-4 col-md-offset-0" data-drupal-selector="search-block-form" id="block-linuxjournal-search" role="search"> <h2 class="block-title sr-only">Search</h2> <form action="/search/node" method="get" id="search-block-form" accept-charset="UTF-8"> <div class="form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group"> <label for="edit-keys" class="control-label sr-only">Search</label> <div class="input-group"><input title="Enter the terms you wish to search for." data-drupal-selector="edit-keys" class="form-search form-control" placeholder="Search" type="search" id="edit-keys" name="keys" value="" size="15" maxlength="128" /><span class="input-group-btn"><button type="submit" value="Search" class="button js-form-submit form-submit btn-primary btn icon-only" name=""><span class="sr-only">Search</span><span class="icon glyphicon glyphicon-search" aria-hidden="true"></span></button></span></div> <div id="edit-keys--description" class="description help-block"> Enter the terms you wish to search for. </div> </div> <div class="form-actions form-group js-form-wrapper form-wrapper" data-drupal-selector="edit-actions" id="edit-actions"></div> </form> </section> </div> </div> <div class="navbar-header"> <div class="region region-navigation"> <section id="block-mobilenavigation" class="block block-system block-system-menu-blockmenu-mobile-navbar clearfix col-xs-12 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-0 navbar__menu navbar__mobilenavigation"> <ul class="menu menu--menu-mobile-navbar nav"> <li class="first"> <a href="/news" data-drupal-link-system-path="news">News</a> </li> <li class="active active-trail"> <a href="/popular" class="active-trail is-active" data-drupal-link-system-path="popular">Popular</a> </li> <li class="last"> <a href="/recent" data-drupal-link-system-path="recent">Recent</a> </li> </ul> </section> </div> </div> </header> </div> </div> <div role="main" class="main-container container js-quickedit-main-content" id="main"> <div class="row"> <section class="col-sm-12"> <div class="highlighted"> <div class="region region-highlighted"> <div data-drupal-messages-fallback class="hidden"></div> </div> </div> <a id="main-content"></a> <div class="region region-content"> <h1 class="page-header">Most Popular</h1> <div class="views-element-container form-group"><div class="view view-popular-content view-id-popular_content view-display-id-popular_page js-view-dom-id-f8d45e2e5ae24b77e7f827eb82d4d72bb7aa694600d86628ba0223518a1a8450"> <div class="view-content"> <div class="views-row"><article data-history-node-id="1340977" role="article" about="/content/how-count-files-directory-linux" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/how-count-files-directory-linux"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/how-to-count-files-in-a-directory-in-linux.jpg?itok=Ag2ggiOR 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/how-to-count-files-in-a-directory-in-linux.jpg?itok=Yg77jSh6 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/how-to-count-files-in-a-directory-in-linux.jpg?itok=Yg77jSh6" alt="How to Count Files in a Directory in Linux?" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/how-count-files-directory-linux" rel="bookmark"> <span>How to Count Files in a Directory in Linux?</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - August 8, 2023 </div> </footer> <div class="content-body"> File counting in a directory is a common task that many users might need to perform. It could be for administrative purposes, understanding disk usage, or organizing files in a systematic manner. Linux, an open-source operating system known for its powerful command-line interface, offers multiple ways to accomplish this task. In this article, we&#039;ll explore various techniques to count files in a directory, catering to both command-line enthusiasts and those who prefer graphical interfaces. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340787" role="article" about="/content/bash-trap-command" class="story teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/bash-trap-command" rel="bookmark"> <span>The Bash Trap Command</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/mitch-frazier" lang="" about="/users/mitch-frazier" typeof="schema:Person" property="schema:name" datatype="">Mitch Frazier</a></span> - August 7, 2019 </div> </footer> <div class="content-body">   If you&#039;ve written any amount of bash code, you&#039;ve likely come across the trap command. Trap allows you to catch signals and execute code when they occur. Signals are asynchronous notifications that are sent to your script when certain events occur. Most of these notifications are for events that you hope never happen, such as an invalid memory access or a bad system call. However, there are one or two events that you might reasonably want to deal with. There are also &quot;user&quot; events available that are never generated by the system that you can generate to signal your script. Bash also provides a psuedo-signal called &quot;EXIT&quot;, which is executed when your script exits; this can be used to make sure that your script executes some cleanup on exit. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340975" role="article" about="/content/add-user-sudo-group-debian-12-linux" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/add-user-sudo-group-debian-12-linux"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/add-a-user-to-sudo-group-in-debian-12-linux.jpg?itok=vDjDukGS 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/add-a-user-to-sudo-group-in-debian-12-linux.jpg?itok=PLje_9AJ 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/add-a-user-to-sudo-group-in-debian-12-linux.jpg?itok=PLje_9AJ" alt="Add a User to sudo Group in Debian 12 Linux" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/add-user-sudo-group-debian-12-linux" rel="bookmark"> <span>Add a User to sudo Group in Debian 12 Linux</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - August 3, 2023 </div> </footer> <div class="content-body"> In Linux systems, including Debian 12, the sudo group grants users the ability to execute administrative commands. This provides them with the privileges to install, update, and delete software, modify system configurations, and more. This article is intended for system administrators, advanced users, or anyone responsible for managing Debian 12 systems. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340843" role="article" about="/content/how-check-battery-status-using-linux-command-line" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/how-check-battery-status-using-linux-command-line"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/check-battery-status-linux-command-line.jpg?itok=fs3xlKHH 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/check-battery-status-linux-command-line.jpg?itok=tGFWIU0m 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/check-battery-status-linux-command-line.jpg?itok=tGFWIU0m" alt="How to Check Battery Status Using Linux Command Line" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/how-check-battery-status-using-linux-command-line" rel="bookmark"> <span>How to Check Battery Status Using Linux Command Line</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/suparna-ganguly" lang="" about="/users/suparna-ganguly" typeof="schema:Person" property="schema:name" datatype="">Suparna Ganguly</a></span> - August 18, 2021 </div> </footer> <div class="content-body"> Checking the battery status through GUI is easy. Hovering the mouse cursor over the battery indicator given in the Laptop task bar simply shows the battery level. But, did you know you can find the battery status through the Linux command line as well? Yes, there are some utilities in Linux that can be of help in this regard. This article explains 4 different methods of checking laptop battery status using the Linux command line. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1341294" role="article" about="/content/linux-networking-protocols-understanding-tcpip-udp-and-icmp" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/linux-networking-protocols-understanding-tcpip-udp-and-icmp"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/linux-networking-protocols-understanding-tcpip-udp-and-icmp.jpg?itok=-rjz8mT_ 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/linux-networking-protocols-understanding-tcpip-udp-and-icmp.jpg?itok=c5lAD7rq 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/linux-networking-protocols-understanding-tcpip-udp-and-icmp.jpg?itok=c5lAD7rq" alt="Linux Networking Protocols: Understanding TCP/IP, UDP, and ICMP" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/linux-networking-protocols-understanding-tcpip-udp-and-icmp" rel="bookmark"> <span>Linux Networking Protocols: Understanding TCP/IP, UDP, and ICMP</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - February 11, 2025 </div> </footer> <div class="content-body"> This article provides an exploration of the key Linux networking protocols: TCP (Transmission Control Protocol), UDP (User Datagram Protocol), and ICMP (Internet Control Message Protocol). </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1341295" role="article" about="/content/streamline-your-logs-exploring-rsyslog-effective-system-log-management-ubuntu" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/streamline-your-logs-exploring-rsyslog-effective-system-log-management-ubuntu"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/streamline-your-logs-exploring-rsyslog-for-effective-system-log-management-on-ubuntu.jpg?itok=gCxetVmM 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/streamline-your-logs-exploring-rsyslog-for-effective-system-log-management-on-ubuntu.jpg?itok=3yWOy5_u 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/streamline-your-logs-exploring-rsyslog-for-effective-system-log-management-on-ubuntu.jpg?itok=3yWOy5_u" alt="Streamline Your Logs: Exploring Rsyslog for Effective System Log Management on Ubuntu" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/streamline-your-logs-exploring-rsyslog-effective-system-log-management-ubuntu" rel="bookmark"> <span>Streamline Your Logs: Exploring Rsyslog for Effective System Log Management on Ubuntu</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - February 13, 2025 </div> </footer> <div class="content-body"> This article provides guide on managing system logs with Rsyslog on Ubuntu, covering installation, configuration, remote logging, troubleshooting, and advanced features. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1341013" role="article" about="/content/best-tools-create-bootable-usb-iso-linux" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/best-tools-create-bootable-usb-iso-linux"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/the-5-best-tools-to-create-a-bootable-usb-from-an-iso-in-linux.jpg?itok=pQT9h9nu 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/the-5-best-tools-to-create-a-bootable-usb-from-an-iso-in-linux.jpg?itok=hkIZxYp9 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/the-5-best-tools-to-create-a-bootable-usb-from-an-iso-in-linux.jpg?itok=hkIZxYp9" alt="The 5 Best Tools to Create a Bootable USB From an ISO in Linux" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/best-tools-create-bootable-usb-iso-linux" rel="bookmark"> <span>The 6 Best Tools to Create a Bootable USB From an ISO in Linux</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - September 28, 2023 </div> </footer> <div class="content-body"> Linux, known for its robustness and versatility, offers a plethora of tools for creating bootable USB drives from ISO files, which are exact copies of disk data. This guide aims to delve into the top six tools available on Linux for crafting bootable USB drives from ISO files. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340931" role="article" about="/content/how-search-and-find-files-text-strings-linux" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/how-search-and-find-files-text-strings-linux"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/how-to-search-and-find-files-for-text-strings-in-linux.jpg?itok=6FudoJjV 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/how-to-search-and-find-files-for-text-strings-in-linux.jpg?itok=zKjdnE7W 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/how-to-search-and-find-files-for-text-strings-in-linux.jpg?itok=zKjdnE7W" alt="How to Search and Find Files for Text Strings in Linux" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/how-search-and-find-files-text-strings-linux" rel="bookmark"> <span>How to Search and Find Files for Text Strings in Linux</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - May 5, 2023 </div> </footer> <div class="content-body"> Searching for specific text strings in files is a common task in Linux. Whether you need to locate a file based on its content or search for a specific pattern within multiple files, Linux provides powerful command-line tools to assist you. In this guide, we will explore different approaches to searching and finding files for text strings in Linux, including the usage of the grep and find commands. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340983" role="article" about="/content/8-best-ssh-clients-linux" class="story is-promoted teaser clearfix"> <div class="teaser-image"> <div class="field field--name-field-node-image field--type-image field--label-hidden field--item"> <a href="/content/8-best-ssh-clients-linux"> <picture> <source srcset="/sites/default/files/styles/200x200_square/public/nodeimage/story/the-8-best-ssh-clients-for-linux.jpg?itok=L6R9XnRz 1x" media="all and (min-width: 768px)" type="image/jpeg"/> <source srcset="/sites/default/files/styles/thumbnail/public/nodeimage/story/the-8-best-ssh-clients-for-linux.jpg?itok=0Kx3tBSU 1x" media="all and (max-width: 767px)" type="image/jpeg"/> <img src="/sites/default/files/styles/thumbnail/public/nodeimage/story/the-8-best-ssh-clients-for-linux.jpg?itok=0Kx3tBSU" alt="The 8 Best SSH Clients for Linux" typeof="foaf:Image" class="img-responsive" /> </picture> </a> </div> </div> <div class="teaser-text"> <h2> <a href="/content/8-best-ssh-clients-linux" rel="bookmark"> <span>The 8 Best SSH Clients for Linux</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/george-whittaker" lang="" about="/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="">George Whittaker</a></span> - August 17, 2023 </div> </footer> <div class="content-body"> In the world of Linux, where remote server management is common, choosing the right SSH client can be crucial. This article will explore the 8 best SSH clients available for Linux. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340555" role="article" about="/content/pattern-matching-bash" class="story is-promoted teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/pattern-matching-bash" rel="bookmark"> <span>Pattern Matching In Bash</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/mitch-frazier" lang="" about="/users/mitch-frazier" typeof="schema:Person" property="schema:name" datatype="">Mitch Frazier</a></span> - April 15, 2019 </div> </footer> <div class="content-body"> Wildcards have been around forever. Some even claim they appear in the hieroglyphics of the ancient Egyptians. Wildcards allow you to specify succinctly a pattern that matches a set of filenames (for example, *.pdf to get a list of all the PDF files). Wildcards are also often referred to as glob patterns (or when using them, as &quot;globbing&quot;). But glob patterns have uses beyond just generating a list of useful filenames. The bash man page refers to glob patterns simply as &quot;Pattern Matching&quot;. First, let&#039;s do a quick review of bash&#039;s glob patterns. In addition to the simple wildcard characters that are fairly well known, bash also has extended globbing, which adds additional features. These extended features are enabled via the extglob option. </div> </div> </article> </div> </div> <nav role="navigation" aria-labelledby="pagination-heading"> <h4 class="sr-only">Pagination</h4> <ul class="pager js-pager__items"> <li class="next"> <a href="/popular?page=1" title="Go to next page" rel="next"> <span class="sr-only">Next page</span> <span aria-hidden="true">››</span> </a> </li> </ul> </nav> </div> </div> </div> </section> </div> </div> <footer class="footer container" role="contentinfo"> <div class="region region-footer"> <section class="views-element-container block block-views block-views-blocknewsletter-promo-block-block-1 clearfix" id="block-views-block-newsletter-promo-block-block-1"> <div class="form-group"><div class="view view-newsletter-promo-block view-id-newsletter_promo_block view-display-id-block_1 js-view-dom-id-733680f9b274e63d4ec6f8fc41985d10bd95935eadb99c83c6124cbbd65ea2f4"> <div class="view-content"> <div class="views-row"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="newsletter-bottom"> <div class="col-md-9 col-sm-12 signup-form"> <!--<h3>Linux Journal Week in Review</h3> <p>Sign up to get all the good stuff delivered to your inbox every week.</p> <form id="subForm" class="js-cm-form" action="https://www.createsend.com/t/subscribeerror?description=" method="post" data-id="A61C50BEC994754B1D79C5819EC1255CDBC34DDF3E170B13E2BAC2D68C42BF424F853383C84F5BAE38EAB4CFA5C73907CAC074FF8192503AF80F3699F7FE5CE1"> <div class="flexform">--> <!--<label for="fieldEmail">Email</label> <br />--> <!--<input id="fieldEmail" name="cm-gjjtdh-gjjtdh" type="email" class="js-cm-email-input" placeholder="Enter your email. Get the newsletter." required /> <button class="js-cm-submit-button" type="submit">Sign Up</button> </div> <div> <input id="cm-privacy-consent" name="cm-privacy-consent" required type="checkbox" /> <label for="cm-privacy-consent">I give my consent to be emailed</label> <input id="cm-privacy-consent-hidden" name="cm-privacy-consent-hidden" type="hidden" value="true" /> </div> </form> <script type="text/javascript" src="https://js.createsend1.com/javascript/copypastesubscribeformlogic.js"></script> </div>--> <!--<div class="col-md-3 col-sm-12 subs-callout"> <img src="/sites/default/files/styles/large/public/2019-01/LJ294-Jan2019-Cover_0.jpg" width="100px" /> <h3>The Value of Open Source Journalism</h3> <p> Subscribe and support our coverage for technology's biggest thinkers – with up to 52% savings. </p> <strong><a href="https://www.linuxjournal.com/subscribe">Subscribe <i class="fa fa-angle-double-right" aria-hidden="true"></i></a> </strong> </div>--> </div> </div> </div> </div> </div> </div> </section> </div> <div class="footer-blocks col-sm-12"> <div class="col-md-6 col-sm-12 footer-left"> <div class="region region-footer-left"> <section id="block-connectwithusfooter" class="block block-block-content block-block-content5e722bd4-5e08-454b-8507-956089bfa661 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="footer-heading">Connect With Us <span class="social-media sm-a-no-underline"><a href="https://youtube.com/linuxjournalonline" alt="Linux Journal on YouTube" aria-label="YouTube"><i class="fa fa-youtube fa-2x"></i></a><a href="https://www.facebook.com/linuxjournal/" alt="Linux Journal on Facebook" aria-label="Facebook"><i class="fa fa-facebook-f fa-2x"></i><a href="https://twitter.com/linuxjournal" alt="Linux Journal on Twitter" aria-label="Twitter"><i class="fa fa-twitter fa-2x"></i></a></span></div> <p>Linux Journal, representing 25+ years of publication, is the original magazine of the global Open Source community.</p></div> </section> <section id="block-linuxjournal-block-9" class="block block-block-content block-block-content8669793b-e217-4426-a79e-eb3c21ede127 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div id="copyright">© 2025 Slashdot Media, LLC. All rights reserved.</div> </div> </section> <section id="block-privacyterms" class="block block-block-content block-block-contenta203b8bd-80ef-4982-bf6e-784dd7b44120 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><ul class="menu menu--footer-submenu nav" id="terms-nav"> <li><a href="https://slashdotmedia.com/privacy-statement/" rel="nofollow" target="_blank">PRIVACY POLICY</a></li> <li><a href="https://slashdotmedia.com/terms-of-use/" rel="nofollow" target="_blank">TERMS OF SERVICE</a></li> <li><a href="/sponsors">ADVERTISE</a></li> </ul></div> </section> </div> </div> <div class="col-md-4 col-sm-8 footer-middle"> <div class="region region-footer-middle"> <nav role="navigation" aria-labelledby="block-footermenucolumn2-menu" id="block-footermenucolumn2"> <h2 class="visually-hidden" id="block-footermenucolumn2-menu">Footer Menu Column 2</h2> <ul class="menu menu--footer-menu-column-2 nav"> <li class="first"> <a href="/content/masthead" data-drupal-link-system-path="node/1007727">Masthead</a> </li> <li> <a href="/author" data-drupal-link-system-path="node/1009249">Authors</a> </li> <li class="last"> <a href="/form/contact" data-drupal-link-system-path="webform/contact">Contact Us</a> </li> </ul> </nav> <nav role="navigation" aria-labelledby="block-footermenucolumn3-menu" id="block-footermenucolumn3"> <h2 class="visually-hidden" id="block-footermenucolumn3-menu">Footer Menu Column 3</h2> <ul class="menu menu--footer-menu-column-3 nav"> <li class="first"> <a href="/rss_feeds" data-drupal-link-system-path="node/1000457">RSS Feeds</a> </li> <li class="last"> <a href="/aboutus" data-drupal-link-system-path="node/1000267">About Us</a> </li> </ul> </nav> </div> </div> </div> </footer> </div> </div> <script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","scriptPath":null,"pathPrefix":"","currentPath":"popular","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"bootstrap":{"forms_has_error_value_toggle":1,"popover_enabled":1,"popover_animation":1,"popover_auto_close":1,"popover_container":"body","popover_content":"","popover_delay":"0","popover_html":0,"popover_placement":"right","popover_selector":"","popover_title":"","popover_trigger":"click"},"linuxjournal":{"disqus":{"origin":"https:\/\/www.linuxjournal.com","prettyUrl":"\/popular","fullUrl":"https:\/\/www.linuxjournal.com\/popular","embedUrl":"https:\/\/linuxjournal.disqus.com\/embed.js","shortname":"linuxjournal"}},"ajaxTrustedUrl":{"\/search\/node":true},"user":{"uid":0,"permissionsHash":"a7b3a803411eb9cbd5d7d374ffb326721ee8274ab5a665df8f38311e3aad858c"}}</script> <script src="/core/assets/vendor/jquery/jquery.min.js?v=3.6.3"></script> <script src="/core/assets/vendor/underscore/underscore-min.js?v=1.13.6"></script> <script src="/core/misc/polyfills/element.matches.js?v=9.5.9"></script> <script src="/core/misc/polyfills/object.assign.js?v=9.5.9"></script> <script src="/core/assets/vendor/once/once.min.js?v=1.0.1"></script> <script src="/core/assets/vendor/jquery-once/jquery.once.min.js?v=9.5.9"></script> <script src="/core/misc/drupalSettingsLoader.js?v=9.5.9"></script> <script src="/core/misc/drupal.js?v=9.5.9"></script> <script src="/core/misc/drupal.init.js?v=9.5.9"></script> <script src="/core/assets/vendor/picturefill/picturefill.min.js?v=3.0.3"></script> <script src="/themes/contrib/bootstrap/js/drupal.bootstrap.js?snzigw"></script> <script src="/themes/contrib/bootstrap/js/attributes.js?snzigw"></script> <script src="/themes/contrib/bootstrap/js/theme.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/affix.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/alert.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/button.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/carousel.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/collapse.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/dropdown.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/modal.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tooltip.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/popover.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/scrollspy.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tab.js?snzigw"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/transition.js?snzigw"></script> <script src="/themes/linuxjournal/js/lj-consentmanager.js?snzigw"></script> <script src="/modules/contrib/webform/js/webform.behaviors.js?v=9.5.9"></script> <script src="/core/misc/jquery.once.bc.js?v=9.5.9"></script> <script src="/core/misc/states.js?v=9.5.9"></script> <script src="/themes/contrib/bootstrap/js/misc/states.js?snzigw"></script> <script src="/modules/contrib/webform/js/webform.states.js?v=9.5.9"></script> <script src="/modules/contrib/webform/modules/webform_bootstrap/js/webform_bootstrap.states.js?v=9.5.9"></script> <script src="/themes/contrib/bootstrap/js/popover.js?snzigw"></script> <!-- START EMBED --> <noscript><img src="https://api.b2c.com/api/noscript-448i7exgpyqpr9c144q.gif"></noscript> <!-- END EMBED --> <!-- Matomo --> <script type="text/javascript"> var _paq = _paq || []; function initPiwik() { _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://analytics.linuxjournal.com/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '50']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); } </script> <noscript><p><img src="https://analytics.linuxjournal.com/piwik.php?idsite=50&amp;rec=1" style="border:0;" alt="" /></p></noscript> <!-- End Matomo Code --> <div class="modal-custom overlay-custom" id="ccpa-modal" style="margin-left: 0; display: none; max-width: 100%; width: 100%"> <div id="modal-content" class="modal-content"> <div class="modal-header" id="ccpa-modal-content-destination"></div> <span class="close" id="modal-close">&times;</span> </div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10