wiki.bash-hackers.org/start
2023-04-14 23:44:41 +12:00

730 lines
52 KiB
Plaintext

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr" class="no-js">
<head><script src="//archive.org/includes/analytics.js?v=cf34f82" type="text/javascript"></script>
<script type="text/javascript">window.addEventListener('DOMContentLoaded',function(){var v=archive_analytics.values;v.service='wb';v.server_name='wwwb-app214.us.archive.org';v.server_ms=197;archive_analytics.send_pageview({});});</script>
<script type="text/javascript" src="/_static/js/bundle-playback.js?v=TPXmWR5s" charset="utf-8"></script>
<script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script>
<script type="text/javascript">
__wm.init("https://web.archive.org/web");
__wm.wombat("https://wiki.bash-hackers.org/start?do=edit","20220930131429","https://web.archive.org/","web","/_static/",
"1664543669");
</script>
<link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" />
<link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=qtvMKcIJ" />
<!-- End Wayback Rewrite JS Include -->
<meta charset="UTF-8"/>
<title>The Bash Hackers Wiki [Bash Hackers Wiki]</title>
<script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<link rel="shortcut icon" href="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/favicon.ico"/>
<link rel="apple-touch-icon" href="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/apple-touch-icon.png"/>
<meta name="generator" content="DokuWiki"/>
<meta name="robots" content="noindex,nofollow"/>
<link type="text/css" rel="stylesheet" href="/web/20220930131429cs_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/bootstrap/default/bootstrap.min.css"/>
<link rel="search" type="application/opensearchdescription+xml" href="/web/20220930131429/https://wiki.bash-hackers.org/lib/exe/opensearch.php" title="Bash Hackers Wiki"/>
<link rel="start" href="/"/>
<link rel="contents" href="/start?do=index" title="Sitemap"/>
<link rel="manifest" href="/web/20220930131429/https://wiki.bash-hackers.org/lib/exe/manifest.php"/>
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/web/20220930131429/https://wiki.bash-hackers.org/feed.php"/>
<link rel="alternate" type="application/rss+xml" title="Current namespace" href="/web/20220930131429/https://wiki.bash-hackers.org/feed.php?mode=list&amp;ns="/>
<link rel="alternate" type="text/html" title="Plain HTML" href="/web/20220930131429/https://wiki.bash-hackers.org/_export/xhtml/start"/>
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/web/20220930131429/https://wiki.bash-hackers.org/_export/raw/start"/>
<link rel="stylesheet" type="text/css" href="/web/20220930131429cs_/https://wiki.bash-hackers.org/lib/exe/css.php?t=bootstrap3&amp;tseed=54923c3deda180f2db5bd755cd8fbf1a"/>
<!--[if gte IE 9]><!-->
<script type="text/javascript">/*<![CDATA[*/var NS='';var JSINFO = {"updatable":1,"userreplace":1,"default_macro_string":"","plugins":{"edittable":{"default columnwidth":""}},"move_renameokay":false,"isadmin":0,"isauth":0,"bootstrap3":{"mode":"source","toc":[],"config":{"collapsibleSections":0,"fixedTopNavbar":1,"showSemanticPopup":0,"sidebarOnNavbar":0,"tagsOnTop":1,"tocAffix":1,"tocCollapseOnScroll":1,"tocCollapsed":0,"tocLayout":"default","useAnchorJS":1,"useAlternativeToolbarIcons":1}},"id":"start","namespace":"","ACT":"source","useHeadingNavigation":1,"useHeadingContent":1};
/*!]]>*/</script>
<script type="text/javascript" charset="utf-8" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/exe/jquery.php?tseed=23f888679b4f1dc26eef34902aca964f"></script>
<script type="text/javascript" charset="utf-8" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/exe/js.php?t=bootstrap3&amp;tseed=54923c3deda180f2db5bd755cd8fbf1a"></script>
<script type="text/javascript">/*<![CDATA[*/if (typeof IconifyConfig == 'undefined') { var IconifyConfig = { 'defaultAPI' : '/lib/tpl/bootstrap3/iconify.php?prefix={prefix}&icons={icons}' } }
/*!]]>*/</script>
<script type="text/javascript" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/anchorjs/anchor.min.js"></script>
<script type="text/javascript" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/typeahead/bootstrap3-typeahead.min.js"></script>
<script type="text/javascript" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/iconify/iconify.min.js"></script>
<script type="text/javascript" src="/web/20220930131429js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/iconify/plugins/fa.js"></script>
<!--<![endif]-->
<style type="text/css">@media screen { body { margin-top: 65px; } #dw__toc.affix { top: 55px; position: fixed !important; } #dw__toc .nav .nav .nav { display: none; } }</style>
<!--[if lt IE 9]>
<script type="text/javascript" src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script type="text/javascript" src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="default dokuwiki mode_source tpl_bootstrap3 home dw-page-on-panel dw-fluid-container" data-page-id="start"><!-- BEGIN WAYBACK TOOLBAR INSERT -->
<script>__wm.rw(0);</script>
<div id="wm-ipp-base" lang="en" style="display:none;direction:ltr;">
<div id="wm-ipp" style="position:fixed;left:0;top:0;right:0;">
<div id="donato" style="position:relative;width:100%;">
<div id="donato-base">
<iframe id="donato-if" src="https://archive.org/includes/donate.php?as_page=1&amp;platform=wb&amp;referer=https%3A//web.archive.org/web/20220930131429/https%3A//wiki.bash-hackers.org/start%3Fdo%3Dedit"
scrolling="no" frameborder="0" style="width:100%; height:100%">
</iframe>
</div>
</div><div id="wm-ipp-inside">
<div id="wm-toolbar" style="position:relative;display:flex;flex-flow:row nowrap;justify-content:space-between;">
<div id="wm-logo" style="/*width:110px;*/padding-top:12px;">
<a href="/web/" title="Wayback Machine home page"><img src="/_static/images/toolbar/wayback-toolbar-logo-200.png" srcset="/_static/images/toolbar/wayback-toolbar-logo-100.png, /_static/images/toolbar/wayback-toolbar-logo-150.png 1.5x, /_static/images/toolbar/wayback-toolbar-logo-200.png 2x" alt="Wayback Machine" style="width:100px" border="0" /></a>
</div>
<div class="c" style="display:flex;flex-flow:column nowrap;justify-content:space-between;flex:1;">
<form class="u" style="display:flex;flex-direction:row;flex-wrap:nowrap;" target="_top" method="get" action="/web/submit" name="wmtb" id="wmtb"><input type="text" name="url" id="wmtbURL" value="https://wiki.bash-hackers.org/start?do=edit" onfocus="this.focus();this.select();" style="flex:1;"/><input type="hidden" name="type" value="replay" /><input type="hidden" name="date" value="20220930131429" /><input type="submit" value="Go" />
</form>
<div style="display:flex;flex-flow:row nowrap;align-items:flex-end;">
<div class="s" id="wm-nav-captures" style="flex:1;">
<a class="t" href="/web/20220930131429*/https://wiki.bash-hackers.org/start?do=edit" title="See a list of every capture for this URL">22 captures</a>
<div class="r" title="Timespan for captures of this URL">03 Apr 2016 - 24 Feb 2023</div>
</div>
<div class="k">
<a href="" id="wm-graph-anchor">
<div id="wm-ipp-sparkline" title="Explore captures for this URL" style="position: relative">
<canvas id="wm-sparkline-canvas" width="700" height="27" border="0"></canvas>
</div>
</a>
</div>
</div>
</div>
<div class="n">
<table>
<tbody>
<!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
<tr class="m">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20220625202433/https://wiki.bash-hackers.org/start?do=edit" title="25 Jun 2022"><strong>Jun</strong></a></td>
<td class="c" id="displayMonthEl" title="You are here: 13:14:29 Sep 30, 2022">SEP</td>
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20230224010517/https://wiki.bash-hackers.org/start?do=edit" title="24 Feb 2023"><strong>Feb</strong></a></td>
</tr>
<!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
<tr class="d">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20220625202433/https://wiki.bash-hackers.org/start?do=edit" title="20:24:33 Jun 25, 2022"><img src="/_static/images/toolbar/wm_tb_prv_on.png" alt="Previous capture" width="14" height="16" border="0" /></a></td>
<td class="c" id="displayDayEl" style="width:34px;font-size:22px;white-space:nowrap;" title="You are here: 13:14:29 Sep 30, 2022">30</td>
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20230224010517/https://wiki.bash-hackers.org/start?do=edit" title="01:05:17 Feb 24, 2023"><img src="/_static/images/toolbar/wm_tb_nxt_on.png" alt="Next capture" width="14" height="16" border="0" /></a></td>
</tr>
<!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
<tr class="y">
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20210808162204/https://wiki.bash-hackers.org/start?do=edit" title="08 Aug 2021"><strong>2021</strong></a></td>
<td class="c" id="displayYearEl" title="You are here: 13:14:29 Sep 30, 2022">2022</td>
<td class="f" nowrap="nowrap">2023</td>
</tr>
</tbody>
</table>
</div>
<div class="r" style="display:flex;flex-flow:column nowrap;align-items:flex-end;justify-content:space-between;">
<div id="wm-btns" style="text-align:right;height:23px;">
<span class="xxs">
<div id="wm-save-snapshot-success">success</div>
<div id="wm-save-snapshot-fail">fail</div>
<a id="wm-save-snapshot-open" href="#" title="Share via My Web Archive" >
<span class="iconochive-web"></span>
</a>
<a href="https://archive.org/account/login.php" title="Sign In" id="wm-sign-in">
<span class="iconochive-person"></span>
</a>
<span id="wm-save-snapshot-in-progress" class="iconochive-web"></span>
</span>
<a class="xxs" href="http://faq.web.archive.org/" title="Get some help using the Wayback Machine" style="top:-6px;"><span class="iconochive-question" style="color:rgb(87,186,244);font-size:160%;"></span></a>
<a id="wm-tb-close" href="#close" style="top:-2px;" title="Close the toolbar"><span class="iconochive-remove-circle" style="color:#888888;font-size:240%;"></span></a>
</div>
<div id="wm-share" class="xxs">
<a href="/web/20220930131429/http://web.archive.org/screenshot/https://wiki.bash-hackers.org/start?do=edit"
id="wm-screenshot"
title="screenshot">
<span class="wm-icon-screen-shot"></span>
</a>
<a href="#" id="wm-video" title="video">
<span class="iconochive-movies"></span>
</a>
<a id="wm-share-facebook" href="#" data-url="https://web.archive.org/web/20220930131429/https://wiki.bash-hackers.org/start?do=edit" title="Share on Facebook" style="margin-right:5px;" target="_blank"><span class="iconochive-facebook" style="color:#3b5998;font-size:160%;"></span></a>
<a id="wm-share-twitter" href="#" data-url="https://web.archive.org/web/20220930131429/https://wiki.bash-hackers.org/start?do=edit" title="Share on Twitter" style="margin-right:5px;" target="_blank"><span class="iconochive-twitter" style="color:#1dcaff;font-size:160%;"></span></a>
</div>
<div style="padding-right:2px;text-align:right;white-space:nowrap;">
<a id="wm-expand" class="wm-btn wm-closed" href="#expand" onclick="__wm.ex(event);return false;"><span id="wm-expand-icon" class="iconochive-down-solid"></span> <span class="xxs" style="font-size:80%;">About this capture</span></a>
</div>
</div>
</div>
<div id="wm-capinfo" style="border-top:1px solid #777;display:none; overflow: hidden">
<div id="wm-capinfo-notice" source="api"></div>
<div id="wm-capinfo-collected-by">
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center">COLLECTED BY</div>
<div style="padding:3px;position:relative" id="wm-collected-by-content">
<div style="display:inline-block;vertical-align:top;width:49%;">
<span class="c-logo" style="background-image:url(https://archive.org/services/img/commoncrawl)"></span>
<div>Collection: <a style="color:#33f;" href="https://archive.org/details/commoncrawl" target="_new"><span class="wm-title">Common Crawl</span></a></div>
<div style="max-height:75px;overflow:hidden;position:relative;">
<div style="position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);"></div>
Web crawl data from Common Crawl.
</div>
</div>
</div>
</div>
<div id="wm-capinfo-timestamps">
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center" title="Timestamps for the elements of this page">TIMESTAMPS</div>
<div>
<div id="wm-capresources" style="margin:0 5px 5px 5px;max-height:250px;overflow-y:scroll !important"></div>
<div id="wm-capresources-loading" style="text-align:left;margin:0 20px 5px 5px;display:none"><img src="/_static/images/loading.gif" alt="loading" /></div>
</div>
</div>
</div></div></div></div><div id="wm-ipp-print">The Wayback Machine - https://web.archive.org/web/20220930131429/https://wiki.bash-hackers.org/start?do=edit</div>
<script type="text/javascript">//<![CDATA[
__wm.bt(700,27,25,2,"web","https://wiki.bash-hackers.org/start?do=edit","20220930131429",1996,"/_static/",["/_static/css/banner-styles.css?v=S1zqJCYt","/_static/css/iconochive.css?v=qtvMKcIJ"], false);
__wm.rw(1);
//]]></script>
<!-- END WAYBACK TOOLBAR INSERT -->
<div class="dokuwiki">
<header id="dokuwiki__header" class="dw-container dokuwiki container-fluid mx-5">
<!-- navbar -->
<nav id="dw__navbar" class="navbar navbar-fixed-top navbar-default" role="navigation">
<div class="dw-container container-fluid mx-5">
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand d-flex align-items-center" href="/web/20220930131429/https://wiki.bash-hackers.org/start" accesskey="h" title="Bash Hackers Wiki"><img id="dw__logo" class="pull-left h-100 mr-4" alt="Bash Hackers Wiki" src="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/logo.png"/><div class="pull-right"><div id="dw__title">Bash Hackers Wiki</div></div></a>
</div>
<div class="collapse navbar-collapse">
<div class="navbar-right" id="dw__navbar_items">
<!-- navbar-searchform -->
<form action="/web/20220930131429/https://wiki.bash-hackers.org/start" accept-charset="utf-8" class="navbar-form navbar-left search" id="dw__search" method="get" role="search">
<div class="input-group">
<input id="qsearch" autocomplete="off" type="search" placeholder="Search" value="" accesskey="f" name="q" class="form-control" title="[F]"/>
<div class="input-group-btn">
<button class="btn btn-default" type="submit" title="Search">
<span class="iconify" data-icon="mdi:magnify"></span> </button>
</div>
</div>
<input type="hidden" name="do" value="search"/>
</form>
<!-- /navbar-searchform -->
<!-- tools-menu -->
<ul class="nav navbar-nav dw-action-icon" id="dw__tools">
<li class="dropdown">
<a href="" class="dropdown-toggle" data-target="#" data-toggle="dropdown" title="" role="button" aria-haspopup="true" aria-expanded="false">
<span class="iconify" data-icon="mdi:wrench"></span> <span class="hidden-lg hidden-md hidden-sm">Tools</span> <span class="caret"></span>
</a>
<ul class="dropdown-menu tools" role="menu">
<li class="dropdown-header">
<span class="iconify" data-icon="mdi:account"></span> User Tools </li>
<li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=register" title="Register" rel="nofollow" class="menuitem register"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4 4 4 0 0 0-4-4 4 4 0 0 0-4 4 4 4 0 0 0 4 4z"/></svg><span>Register</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=login&amp;sectok=" title="Log In" rel="nofollow" class="menuitem login"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg><span>Log In</span></a></li>
<li class="divider" role="separator"></li>
<li class="dropdown-header">
<span class="iconify" data-icon="mdi:toolbox"></span> Site Tools </li>
<li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r" class="menuitem recent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M15 13h1.5v2.82l2.44 1.41-.75 1.3L15 16.69V13m4-5H5v11h4.67c-.43-.91-.67-1.93-.67-3a7 7 0 0 1 7-7c1.07 0 2.09.24 3 .67V8M5 21a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2v6.1c1.24 1.26 2 2.99 2 4.9a7 7 0 0 1-7 7c-1.91 0-3.64-.76-4.9-2H5m11-9.85A4.85 4.85 0 0 0 11.15 16c0 2.68 2.17 4.85 4.85 4.85A4.85 4.85 0 0 0 20.85 16c0-2.68-2.17-4.85-4.85-4.85z"/></svg><span>Recent Changes</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=media&amp;ns=" title="Media Manager" rel="nofollow" class="menuitem media"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M7 15l4.5-6 3.5 4.5 2.5-3L21 15m1-11h-8l-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M2 6H0v14a2 2 0 0 0 2 2h18v-2H2V6z"/></svg><span>Media Manager</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=index" title="Sitemap [x]" rel="nofollow" accesskey="x" class="menuitem index"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M3 3h6v4H3V3m12 7h6v4h-6v-4m0 7h6v4h-6v-4m-2-4H7v5h6v2H5V9h2v2h6v2z"/></svg><span>Sitemap</span></a></li>
<li class="divider" role="separator"></li>
<li class="dropdown-header">
<span class="iconify" data-icon="mdi:file-document-outline"></span> Page Tools </li>
<li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=" title="Show page [v]" rel="nofollow" accesskey="v" class="menuitem show"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2h9m3-4v-2H6v2h12z"/></svg><span>Show page</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o" class="menuitem revs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg><span>Old revisions</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=backlink" title="Backlinks" rel="nofollow" class="menuitem backlink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg><span>Backlinks</span></a></li><li class="action"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t" class="menuitem top"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg><span>Back to top</span></a></li>
</ul>
</li>
</ul>
<!-- /tools-menu -->
<ul class="nav navbar-nav">
<li>
<span class="dw__actions dw-action-icon">
<a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=register" title="Register" rel="nofollow" class="menuitem register btn btn-success navbar-btn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4 4 4 0 0 0-4-4 4 4 0 0 0-4 4 4 4 0 0 0 4 4z"/></svg><span class=""> Register</span></a><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=login&amp;sectok=" title="Log In" rel="nofollow" class="menuitem login btn btn-default navbar-btn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg><span class=""> Log In</span></a> </span>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!-- navbar -->
<div align="center">
<script async src="//web.archive.org/web/20220930131429js_/https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- BHORG_BOTTOM -->
<ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-4658830517838678" data-ad-slot="1603598940"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
</header>
<a name="dokuwiki__top" id="dokuwiki__top"></a>
<main role="main" class="dw-container pb-5 dokuwiki container-fluid mx-5">
<div id="dokuwiki__pageheader">
<!-- breadcrumbs -->
<nav id="dw__breadcrumbs" class="small">
<hr/>
<div class="dw__youarehere">
<ol class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li>You are here</li><li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start" itemprop="item" title="start"><span itemprop="name"><span class="iconify" data-icon="mdi:home"></span></span></a></li></ol> </div>
<div class="dw__breadcrumbs hidden-print">
<ol class="breadcrumb"><li>Trace</li> </div>
<hr/>
</nav>
<!-- /breadcrumbs -->
<p class="text-right">
<span class="pageId ml-1 label label-primary">start</span> </p>
<div id="dw__msgarea" class="small">
</div>
</div>
<div class="row">
<article id="dokuwiki__content" class="col-sm-12 col-md-12 " itemscope itemtype="http://schema.org/Article" itemref="dw__license">
<!-- page-tools -->
<nav id="dw__pagetools" class="hidden-print">
<div class="tools panel panel-default">
<ul class="nav nav-stacked nav-pills text-muted">
<li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=" title="Show page [v]" rel="nofollow" accesskey="v" class="menuitem show"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2h9m3-4v-2H6v2h12z"/></svg><span>Show page</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o" class="menuitem revs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg><span>Old revisions</span></a></li><li class="action"><a href="/web/20220930131429/https://wiki.bash-hackers.org/start?do=backlink" title="Backlinks" rel="nofollow" class="menuitem backlink"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg><span>Backlinks</span></a></li><li class="action"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t" class="menuitem top"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg><span>Back to top</span></a></li> </ul>
</div>
</nav>
<!-- /page-tools -->
<div class="panel panel-default px-3 py-2" itemprop="articleBody">
<div class="page panel-body">
<div class="dw-content-page "><!-- content --><div class="dw-content"><p>
This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong.
</p>
<div class="editBox" role="application">
<div class="toolbar group">
<div id="draft__status" class="draft__status"></div>
<div id="tool__bar" class="tool__bar"></div>
</div>
<form id="dw__editform" method="post" action="" accept-charset="utf-8" class=" form-inline"><div class="no">
<input type="hidden" name="sectok" value=""/><input type="hidden" name="id" value="start"/><input type="hidden" name="rev" value="0"/><input type="hidden" name="date" value="0"/><input type="hidden" name="prefix" value="."/><input type="hidden" name="suffix" value=""/><input type="hidden" name="changecheck" value="0f6e8eefaf4810f92eae187b61c7b550"/><input type="hidden" name="target" value="section"/><textarea name="wikitext" id="wiki__text" dir="auto" class="edit form-control" cols="80" rows="10" tabindex="1" readonly="readonly">
[[bash4|]]~~NOTOC~~
~~DISCUSSION:off~~
====== The Bash Hackers Wiki ======
{{keywords&gt;bash shell linux scripting}}
&lt;WRAP center round box 90%&gt;
This wiki is intended to hold documentation of any kind about GNU Bash. The main motivation was to provide //human-readable documentation// and information so users aren't forced to read every bit of the Bash manpage - which can be difficult to understand. However, the docs here are **not** meant as a newbie tutorial.
This wiki and any programs found in this wiki are free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This wiki and its programs are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.
[[wishes | What would YOU like to see here?]] (outdated and locked, please use the discussions)
**Stranger!** [[http://wiki.bash-hackers.org/start&amp;do=register | Feel free to register]] and comment or edit the contents. There is a [[meta:need_love|Bash Hackers Wiki needs love page]] that lists some things to do. The registration is only there to prevent SPAM.
&lt;/WRAP&gt;
===== Scripting and general information =====
* [[bash4 | Bash v4 - a rough overview]] (unmaintained, since Bash 4 is more or less standard)
* [[scripting:style]] -- an assorted collection of style and optic hints
* [[scripting:basics]]
* [[scripting:newbie_traps]]
* [[scripting:bashbehaviour]]
* [[scripting:posparams]]
* [[scripting:processtree]]
* [[scripting:obsolete]]
* [[scripting:nonportable]]
* [[scripting:debuggingtips]]
* [[scripting:terminalcodes]]
* [[scripting:tutoriallist]]
===== Code snippets ====
There is a [[snipplets:start|section that holds small code snippets]].
See also [[misc:readthesourceluke|some Bash source code excerpts]].
===== How to.... =====
[[howto:start | Doing specific tasks: concepts, methods, ideas]]:
* [[howto:mutex | Simple locking (against parallel run)]]
* [[howto:conffile | Rudimentary config files for your scripts]]
* [[howto:edit-ed | Editing files with ed(1)]]
* [[howto:collapsing_functions | Collapsing Functions]]
* [[howto:redirection_tutorial | Illustrated Redirection Tutorial]]
* [[howto:calculate-dc | Calculate with dc(1)]]
* [[howto:pax | Introduction to pax - the POSIX archiver]]
* [[howto:getopts_tutorial]] (//under construction!//)
* [[howto:dissectabadoneliner]] An example of a bad oneliner, breakdown and fix (by ''kojoro'')
* [[howto:testing-your-scripts | Write tests for ./your-script.sh]] by using bashtest util
===== Bash syntax and operations =====
* [[scripting:bashchanges | Bash features overview by version]]
* [[syntax:basicgrammar | Basic grammar rules ]]
* [[syntax:quoting | Quoting and character escaping]]
* [[syntax:grammar:parser_exec | Parsing and execution]]
* [[syntax:words | Some words about words...]]
* [[syntax:pattern | Patterns and pattern matching]]
* [[syntax:arith_expr | Arithmetic expressions]]
* [[internals:shell_options | List of shell options]]
* [[syntax:redirection | Redirection]]
* [[syntax:shellvars | Special parameters and shell variables]]
* [[syntax:arrays | Arrays]]
&lt;WRAP column 40%&gt;
//**__Compound commands__**//
^**[[syntax:ccmd:intro | Compound commands overview]]** ^^
^Grouping ^^
|''{ ...; }''|[[syntax:ccmd:grouping_plain | command grouping]]|
|''( ... )''|[[syntax:ccmd:grouping_subshell | command grouping in a subshell]]|
^Conditionals ^^
|''&lt;nowiki&gt;[[ ... ]]&lt;/nowiki&gt;''|[[syntax:ccmd:conditional_expression | conditional expression]]|
|''if ...; then ...; fi''|[[syntax:ccmd:if_clause | conditional branching]]|
|''case ... esac''|[[syntax:ccmd:case | pattern-based branching]]|
^Loops ^^
|''for word in ...; do ...; done''|[[syntax:ccmd:classic_for | classic for-loop]]|
|''&lt;nowiki&gt;for ((x=1; x&lt;=10; x++)); do ...; done&lt;/nowiki&gt;''|[[syntax:ccmd:c_for | C-style for-loop]]|
|''while ...; do ...; done''|[[syntax:ccmd:while_loop | while loop]]|
|''until ...; do ...; done''|[[syntax:ccmd:until_loop | until loop]]|
^Misc ^^
|''&lt;nowiki&gt;(( ... ))&lt;/nowiki&gt;''|[[syntax:ccmd:arithmetic_eval | arithmetic evaluation]]|
|''select word in ...; do ...; done''|[[syntax:ccmd:user_select | user selections]]|
&lt;/WRAP&gt;
&lt;WRAP column 40%&gt;
//**__Expansions and substitutions__**//
^**[[syntax:expansion:intro | Introduction to expansions and substitutions]]** ^^
|''{A,B,C} {A..C}''|[[syntax:expansion:brace | Brace expansion]]|
|''~/ ~root/''|[[syntax:expansion:tilde | Tilde expansion]]|
|''$FOO ${BAR%.mp3}''|[[syntax:pe | Parameter expansion]]|
|''`command` $(command)''|[[syntax:expansion:cmdsubst | Command substitution]]|
|''&lt;(command) &gt;(command)''|[[syntax:expansion:proc_subst | Process substitution]]|
|''&lt;nowiki&gt;$((1 + 2 + 3)) $[4 + 5 + 6]&lt;/nowiki&gt;''|[[syntax:expansion:arith | Arithmetic expansion]]|
|''Hello &lt;nowiki&gt;&lt;---&gt;&lt;/nowiki&gt; Word!''|[[syntax:expansion:wordsplit | Word splitting]]|
|''/data/*-av/*.mp?''|[[syntax:expansion:globs | Pathname expansion]]|
&lt;/WRAP&gt;
&lt;WRAP clear&gt;&lt;/WRAP&gt;
===== Builtin Commands =====
This is a selection of builtin commands and command-like keywords, loosely arranged by their common uses. These are provided directly by the shell, rather than invoked as standalone external commands.
&lt;WRAP column 46%&gt;
^ Declaration commands\\ &lt;wrap center round lo todo box 80%&gt;Commands that set and query attributes/types, and manipulate simple datastructures.&lt;/wrap&gt; ^^ Alt ^ Type ^
|[[commands:builtin:declare | declare]]|Display or set shell variables or functions along with attributes.| ''typeset'' | builtin |
|[[commands:builtin:export | export]]|Display or set shell variables, also giving them the export attribute.| ''typeset -x'' | special builtin |
|[[commands:builtin:eval | eval]]|Evaluate arguments as shell code.| - | special builtin |
|[[commands:builtin:local | local]]|Declare variables as having function local scope.| - | builtin |
|[[commands:builtin:readonly | readonly]]|Mark variables or functions as read-only.| ''typeset -r'' | special builtin |
|[[commands:builtin:unset | unset]]|Unset variables and functions.| - | special builtin |
|[[commands:builtin:shift | shift]]|Shift positional parameters| - | special builtin |
^ I/O\\ &lt;wrap center round lo todo box 80%&gt;Commands for reading/parsing input, or producing/formatting output of standard streams.&lt;/wrap&gt; ^^ Alt ^ Type ^
|[[syntax:keywords:coproc | coproc]]|Co-processes: Run a command in the background with pipes for reading / writing its standard streams.| - | keyword |
|[[commands:builtin:echo | echo]]|Create output from arguments.| - | builtin |
|[[commands:builtin:mapfile | mapfile]]|Read lines of input into an array.| ''readarray'' | builtin |
|[[commands:builtin:printf | printf]]|&quot;advanced ''echo''.&quot;| - | builtin |
|[[commands:builtin:read | read]]|Read input into variables or arrays, or split strings into fields using delimiters.| - | builtin |
^ Configuration and Debugging\\ &lt;wrap center round lo todo box 80%&gt;Commands that modify shell behavior, change special options, assist in debugging.&lt;/wrap&gt; ^^ Alt ^ Type ^
|[[commands:builtin:caller | caller]]|Identify/print execution frames.| - | builtin |
|[[commands:builtin:set | set]]|Set the positional parameters and/or set options that affect shell behaviour.| - | special builtin |
|[[commands:builtin:shopt | shopt]]|set/get some bash-specific shell options.| - | builtin |
&lt;/WRAP&gt;
&lt;WRAP column 46%&gt;
^ Control flow and data processing\\ &lt;wrap center round lo todo box 80%&gt;Commands that operate on data and/or affect control flow.&lt;/wrap&gt; |^ Alt ^ Type ^
| [[commands:builtin:true| colon]] | &quot;true&quot; null command. | true | special builtin |
| [[commands:builtin:source| dot]] | Source external files. | source | special builtin |
| [[commands:builtin:false| false]] | Fail at doing nothing. | - | builtin |
| [[commands:builtin:continueBreak| continue / break]] | continue with or break out of loops. | - | special builtin |
| [[commands:builtin:let| let]] | Arithmetic evaluation simple command. | - | builtin |
| [[commands:builtin:return| return]] | Return from a function with a specified exit status. | - | special builtin |
| [[commands:classictest| []] | The classic ''test'' simple command. | test | builtin |
^ Process and Job control\\ &lt;wrap center round lo todo box 80%&gt;Commands related to jobs, signals, process groups, subshells.&lt;/wrap&gt; |^ Alt ^ Type ^
| [[commands:builtin:exec| exec]] | Replace the current shell process or set redirections. | - | special builtin |
| [[commands:builtin:exit| exit]] | Exit the shell. | - | special builtin |
| [[commands:builtin:kill| kill]] | Send a signal to specified process(es) | - | builtin |
| [[commands:builtin:trap| trap]] | Set signal handlers or output the current handlers. | - | special builtin |
| [[commands:builtin:times| times]] | Display process times. | - | special builtin |
| [[commands:builtin:wait| wait]] | Wait for background jobs and asynchronous lists. | - | builtin |
^ |^ Alt ^ Type ^
&lt;/WRAP&gt;
&lt;WRAP clear&gt;&lt;/WRAP&gt;
&lt;WRAP hide&gt; previous alphabetical version
&lt;WRAP column 40%&gt;
^A-G^^
|[[commands:builtin:caller | caller]]|identify/print execution frames (Bash builtin) |
|[[syntax:keywords:coproc | coproc]]|Co-processes (Bash keyword) |
|[[commands:builtin:declare | declare]]|display or set shell variables or functions along with attributes (Bash builtin, synonym: ''typeset'') |
|[[commands:builtin:exec | exec]] | replace the shell, set redirections (Bash builtin) |
^I-N^^
|[[commands:builtin:let | let]]|arithmetic evaluation - an old fashioned way (Bash builtin) |
|[[commands:builtin:mapfile | mapfile]]|Mapping lines of input to an array, also named ''readarray'' (Bash builtin) |
&lt;/WRAP&gt;
&lt;WRAP column 40%&gt;
^O-T^^
|[[commands:builtin:printf | printf]]|&quot;advanced ''echo''&quot; (Bash builtin) |
|[[commands:builtin:read | read]]|getting input from ''stdin'' (Bash builtin) |
|[[commands:builtin:readonly | readonly]]|mark variables or functions as read-only (Bash builtin) |
|[[commands:builtin:set | set]]|control positional parameters and shell behaviour (Bash builtin) |
|[[commands:builtin:shopt | shopt]]|set/get shell options (Bash builtin) |
|[[commands:classictest | test]]|the classic ''test'' command (Bash builtin) |
^U-Z^^
|[[commands:builtin:unset | unset]]|unset variables and functions (Bash builtin) |
&lt;/WRAP&gt;
&lt;WRAP clear&gt;&lt;/WRAP&gt;
&lt;/WRAP&gt;
===== Dictionary ======
&lt;note tip&gt;A list of expressions, words, and their meanings is [[dict:index | here]].&lt;/note&gt;
===== Links =====
==== Official Bash links ====
* [[http://tiswww.case.edu/php/chet/bash/bashtop.html|Chet Ramey's Bash page]] and its [[http://tiswww.case.edu/php/chet/bash/FAQ|FAQ]].
* [[http://www.gnu.org/software/bash/ | GNU Bash software page]]
* Official Bash mailing lists:
* **Bug reports**: &lt;bug-bash@gnu.org&gt; ([[http://mail.gnu.org/pipermail/bug-bash|archives]])
* **General questions**: &lt;help-bash@gnu.org&gt; ([[http://mail.gnu.org/pipermail/help-bash|archives]])
* Official Bash git repository:
* **Browse**: [[http://git.savannah.gnu.org/cgit/bash.git | cgit]]
* **Clone**: //git:// &lt;nowiki&gt;ssh://git.sv.gnu.org/srv/git/bash.git&lt;/nowiki&gt; • //ssh:// &lt;nowiki&gt;ssh://git.sv.gnu.org/srv/git/bash.git&lt;/nowiki&gt; • //http:// &lt;nowiki&gt;http://git.savannah.gnu.org/r/bash.git&lt;/nowiki&gt;
==== Recommended Shell resources ====
* [[http://mywiki.wooledge.org/ | Greg's wiki]] - Greg Wooledge's (aka &quot;greycat&quot;) wiki -- with **MASSIVE** information about Bash and UNIX(r) in general.
* [[http://mywiki.wooledge.org/BashFAQ | BashFAQ]] • [[http://mywiki.wooledge.org/BashGuide | BashGuide]] • [[http://mywiki.wooledge.org/BashPitfalls | BashPitfalls]] • [[http://mywiki.wooledge.org/BashSheet | BashSheet]]
* [[http://www.in-ulm.de/~mascheck/ | Sven Mascheck's pages]] - A goldmine of information. A must-read.
* [[https://www.mirbsd.org/ksh-chan.htm | #ksh channel page]] - #ksh Freenode channel page maintains a solid collection of recommended links.
* [[http://www.grymoire.com/Unix/ | The Grymoire Unix pages]] - Good scripting information, especially read the [[http://www.grymoire.com/Unix/Quote.html | quoting]] guide.
* [[http://www.shelldorado.com | Heiner's &quot;Shell Dorado&quot;]] - Tips, tricks, links - for every situation.
* [[http://pubs.opengroup.org/onlinepubs/9699919799/ | The Single Unix Specification (version 4, aka POSIX-2008)]]
* [[http://www.opengroup.org/austin/ | The Austin Group]] - [[ http://dir.gmane.org/gmane.comp.standards.posix.austin.general | List archives ]], [[ http://austingroupbugs.net/main_page.php | Bug tracker ]]
* [[http://cfajohnson.com/shell/cus-faq.html | comp.unix.shell FAQ]]
* [[https://tldp.org/LDP/abs/html/index.html | Advanced Bash-Scripting Guide]] - last update: 10 Mar 2014, but still very useful guide.
=== Documentation / Reference ===
* **Bash**: [[http://tiswww.case.edu/php/chet/bash/bash.html | man page]] [[http://tiswww.case.edu/php/chet/bash/bashref.html | info page]]
* **AT&amp;T ksh**: [[http://www2.research.att.com/sw/download/man/man1/ksh88.html | ksh88]] [[http://www2.research.att.com/sw/download/man/man1/ksh.html | ksh93]]
* [[https://www.mirbsd.org/htman/i386/man1/mksh.htm | mksh]] (pdksh successor)
* [[http://zsh.sourceforge.net/Doc/ | zsh]]
* [[http://man7.org/linux/man-pages/man1/dash.1.html | dash]]
* [[http://heirloom.sourceforge.net/man/sh.1.html | Heirloom Bourne shell]]
* [[http://v6shell.org/man/osh.1.html | Thompson shell]]
==== Assorted interesting links ====
* [[http://www.in-ulm.de/~mascheck/bourne/ | History and development of the traditional Bourne shell family]] - very interesting and nice to read!
* [[http://www.computerworld.com.au/article/222764/-z_programming_languages_bash_bourne-again_shell | Interview with Chet Ramey]]
* [[http://www.computerworld.com.au/article/279011/a-z_programming_languages_sh | Interview with Steve Bourne]] • [[https://www.youtube.com/watch?v=2kEJoWfobpA | Stephen Bourne - BSDCan 2015 keynote]]
* [[http://news.slashdot.org/story/01/02/06/2030205/david-korn-tells-all | Interview with David Korn]]
* [[https://www.youtube.com/watch?v=bKzonnwoR2I | Kernighan on the Unix pipeline (computerphile video)]]
* Linux in general, with some shell related stuff: [[http://www.cyberciti.biz/ | nixCraft: Linux Tips, Hacks, Tutorials and Ideas]]
* Linux tutorials, guides and how-tos: [[https://www.rosehosting.com/blog/ | RoseHosting Blog]], [[https://www.rosehosting.com/blog/script-install-wordpress-on-a-debianubuntu-vps/ | bash script for installing WordPress]] and some [[https://www.rosehosting.com/blog/basic-shell-commands-after-putty-ssh-logon/ | basic shell commands]]
* [[misc:bashphorisms | Bashphorism list from the Bash IRC channel on Freenode]]
* [[misc:shell_humor | Some more or less funny commandline stuff]]
* [[https://thishosting.rocks/how-to-enable-ssh-on-ubuntu/ | How to Enable SSH on Ubuntu Tutorial]]
* [[https://linuxstans.com/how-to-make-an-awesome-custom-shell-with-zsh/ | How To Make an Awesome Custom Shell with ZSH]]
==== Bash Libraries (needs review) ====
* [[http://sourceforge.net/projects/oobash/ | An oo-style bash library for bash 4]] - provides tools for rapid script development and huge libraries.
* [[https://github.com/hornos/shf3 | General purpose shell framework for bash 4]] - in development.
* [[https://github.com/chilicuil/learn/blob/master/sh/lib| General purpose bash library for bash 4]] - active development
&lt;div hide&gt;
===== Most wanted =====
^Statistics for Month: **April 2012**^^^
|Rank | Views | Article |
^1 | 6833|[[howto:getopts_tutorial]] (March: 11663) |
^2 | 4025|[[commands:builtin:printf]] (March: 7079) |
^3 | 2861|[[syntax:quoting]] (March: 5730) |
^4 | 2854|[[commands:classictest]] (March: 6145) |
^5 | 2222|[[syntax:pe]] (March: 4540) |
^6 | 1760|[[scripting:posparams]] (March: 3591) |
^7 | 1249|[[bash4]] (March: --) |
^8 | 1212|[[howto:edit-ed]] (March: 2727) |
^9 | 1205|[[commands:builtin:read]] (March: --) |
^10 | 1182|[[howto:mutex]] (March: --) |
* &quot;Total visits&quot;: 35144
* The overall &quot;start&quot; page is not counted
&lt;/div&gt;
===== Contact =====
&lt;WRAP column 40%&gt;
Visit us in ''irc.freenode.net'', channel ''#bash'' ;-)
If you have critiques or suggestions, please feel free to send a mail using the contact form on the right. Note that there is a simple discussion option below every article.
Please also see the [[user:thebonsai:imprint | imprint]] if you have problems with the site and its contents (legality, ...)!
It also would be nice to drop a line when
* it helped you
* it didn't help you (something missing / unclear)
* you like it
* you don't like it
* you found mistakes / bugs
Simply: Reader's feedback
&lt;/WRAP&gt;
&lt;WRAP column 40%&gt;
{{contact&gt;subj=Wiki reader feedback}}
&lt;/WRAP&gt;
&lt;WRAP clear&gt;&lt;/WRAP&gt;</textarea>
<div id="wiki__editbar" class="editBar">
<div id="size__ctl">
</div>
</div>
</div></form>
</div>
</div><!-- /content --></div>
</div>
</div>
<div class="small text-right">
<span class="docInfo">
<ul class="list-inline"><li><span class="iconify text-muted" data-icon="mdi:file-document-outline"></span> <span title="start.txt">start.txt</span></li><li><span class="iconify text-muted" data-icon="mdi:calendar"></span> Last modified: <span title="2022/09/30 12:54">2022/09/30 12:54</span></li><li class="text-muted">by <bdi>hirnsushi</bdi></li></ul> </span>
</div>
</article>
</div>
</main>
<footer id="dw__footer" class="dw-container py-5 dokuwiki container-fluid">
<hr/>
<div align="center">
<h3><a target="_blank" href="https://web.archive.org/web/20220930131429/http://www.performing-databases.com/">This site is supported by Performing Databases - your experts for database administration</a></h3>
</div>
<hr/>
<div align="center">
<script async src="//web.archive.org/web/20220930131429js_/https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- BHORG_BOTTOM -->
<ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-4658830517838678" data-ad-slot="1603598940"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
<!-- footer -->
<div class="dw-container small container-fluid mx-5">
<div class="footer-dw-title">
<div class="media">
<div class="media-left">
<img src="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/logo.png" alt="Bash Hackers Wiki" class="media-object" style="height:32px"/>
</div>
<div class="media-body">
<div class="row">
<div class="col-sm-2">
<h4 class="media-heading">Bash Hackers Wiki</h4>
<p>
</p>
</div>
<div class="col-sm-10">
</div>
</div>
</div>
</div>
</div>
<div class="footer-license row">
<hr/>
<div id="dw__license" class="col-sm-6">
<p>
<a href="https://web.archive.org/web/20220930131429/http://www.gnu.org/licenses/fdl-1.3.html" title="GNU Free Documentation License 1.3" target="" itemscope itemtype="http://schema.org/CreativeWork" itemprop="license" rel="license" class="license"><img src="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/license/gnufdl.png" width="24" height="24" alt="gnufdl"/> </a> </p>
<p class="small">
Except where otherwise noted, content on this wiki is licensed under the following license:<br/><a href="https://web.archive.org/web/20220930131429/http://www.gnu.org/licenses/fdl-1.3.html" title="GNU Free Documentation License 1.3" target="" itemscope itemtype="http://schema.org/CreativeWork" itemprop="license" rel="license" class="license">GNU Free Documentation License 1.3</a> </p>
</div>
<div class="col-sm-6">
</div>
</div>
</div>
<!-- /footer -->
</footer>
<a href="#dokuwiki__top" class="back-to-top hidden-print btn btn-default" title="skip to content" accesskey="t">
<span class="iconify" data-icon="mdi:chevron-up"></span> </a>
<div id="screen__mode"> <span class="visible-xs-block"></span>
<span class="visible-sm-block"></span>
<span class="visible-md-block"></span>
<span class="visible-lg-block"></span>
</div>
<img src="/web/20220930131429im_/https://wiki.bash-hackers.org/lib/exe/indexer.php?id=start&amp;1664543683" width="2" height="1" alt=""/>
</div>
</body>
</html>
<!--
FILE ARCHIVED ON 13:14:29 Sep 30, 2022 AND RETRIEVED FROM THE
INTERNET ARCHIVE ON 11:36:06 Apr 14, 2023.
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
SECTION 108(a)(3)).
-->
<!--
playback timings (ms):
captures_list: 97.007 (11)
exclusion.robots: 0.226
exclusion.robots.policy: 0.215
cdx.remote: 0.075
esindex: 0.011
LoadShardBlock: 60.002 (3)
PetaboxLoader3.datanode: 95.207 (4)
load_resource: 92.469
PetaboxLoader3.resolve: 52.008
-->