mirror of
https://github.com/rawiriblundell/wiki.bash-hackers.org
synced 2024-11-02 00:53:07 +01:00
647 lines
78 KiB
Plaintext
647 lines
78 KiB
Plaintext
|
<!DOCTYPE html>
|
||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" dir="ltr" class="no-js">
|
||
|
<head><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("http://web.archive.org/web");
|
||
|
__wm.wombat("https://wiki.bash-hackers.org/scripting/bashchanges?do=edit","20221006034255","http://web.archive.org/","web","/_static/",
|
||
|
"1665027775");
|
||
|
</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>Bash changes [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/20221006034255im_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/favicon.ico"/>
|
||
|
<link rel="apple-touch-icon" href="/web/20221006034255im_/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/20221006034255cs_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/bootstrap/default/bootstrap.min.css"/>
|
||
|
<link rel="search" type="application/opensearchdescription+xml" href="/web/20221006034255/https://wiki.bash-hackers.org/lib/exe/opensearch.php" title="Bash Hackers Wiki"/>
|
||
|
<link rel="start" href="/"/>
|
||
|
<link rel="contents" href="/scripting/bashchanges?do=index" title="Sitemap"/>
|
||
|
<link rel="manifest" href="/web/20221006034255/https://wiki.bash-hackers.org/lib/exe/manifest.php"/>
|
||
|
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/web/20221006034255/https://wiki.bash-hackers.org/feed.php"/>
|
||
|
<link rel="alternate" type="application/rss+xml" title="Current namespace" href="/web/20221006034255/https://wiki.bash-hackers.org/feed.php?mode=list&ns=scripting"/>
|
||
|
<link rel="alternate" type="text/html" title="Plain HTML" href="/web/20221006034255/https://wiki.bash-hackers.org/_export/xhtml/scripting/bashchanges"/>
|
||
|
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/web/20221006034255/https://wiki.bash-hackers.org/_export/raw/scripting/bashchanges"/>
|
||
|
<link rel="stylesheet" type="text/css" href="/web/20221006034255cs_/https://wiki.bash-hackers.org/lib/exe/css.php?t=bootstrap3&tseed=54923c3deda180f2db5bd755cd8fbf1a"/>
|
||
|
<!--[if gte IE 9]><!-->
|
||
|
<script type="text/javascript">/*<![CDATA[*/var NS='scripting';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":"scripting:bashchanges","namespace":"scripting","ACT":"source","useHeadingNavigation":1,"useHeadingContent":1};
|
||
|
/*!]]>*/</script>
|
||
|
<script type="text/javascript" charset="utf-8" src="/web/20221006034255js_/https://wiki.bash-hackers.org/lib/exe/jquery.php?tseed=23f888679b4f1dc26eef34902aca964f"></script>
|
||
|
<script type="text/javascript" charset="utf-8" src="/web/20221006034255js_/https://wiki.bash-hackers.org/lib/exe/js.php?t=bootstrap3&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/20221006034255js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/bootstrap/js/bootstrap.min.js"></script>
|
||
|
<script type="text/javascript" src="/web/20221006034255js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/anchorjs/anchor.min.js"></script>
|
||
|
<script type="text/javascript" src="/web/20221006034255js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/typeahead/bootstrap3-typeahead.min.js"></script>
|
||
|
<script type="text/javascript" src="/web/20221006034255js_/https://wiki.bash-hackers.org/lib/tpl/bootstrap3/assets/iconify/iconify.min.js"></script>
|
||
|
<script type="text/javascript" src="/web/20221006034255js_/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 dw-page-on-panel dw-fluid-container" data-page-id="scripting:bashchanges"><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/20221006034255/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/20221006034255im_/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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges" 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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?do=login&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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?do=media&ns=scripting" 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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?do=login&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/20221006034255js_/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/20221006034255/https://wiki.bash-hackers.org/start" itemprop="item" title="start"><span itemprop="name"><span class="iconify" data-icon="mdi:home"></span></span></a></li><li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemprop="item" href="/web/20221006034255/https://wiki.bash-hackers.org/scripting/start" class="wikilink2" title="scripting:start" rel="nofollow">scripting</a></li><li class="active" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name"><a itemprop="item" href="/web/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges" class="wikilink1" title="scripting:bashchanges">Bash changes</a></span></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">scripting:bashchanges</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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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/20221006034255/https://wiki.bash-hackers.org/scripting/bashchanges?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="scripting:bashchanges"/><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="a6fb6251d37bd509344621b80a295469"/><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">
|
||
|
====== Bash changes ======
|
||
|
|
||
|
This article is an **incomplete overview** of changes to Bash over time. Not all changes are listed, just the ones most likely to be useful for normal scripting. The overviews are categorized by topic and ordered by version.
|
||
|
|
||
|
A useful starting point is the [[https://github.com/bminor/bash/blob/master/NEWS|NEWS file]] in bash sources. If you have more detailed information, or historical information about Bash versions earlier than V2, feel free to mail me, or use the discussion below.
|
||
|
|
||
|
Status: 5.1 (alpha)
|
||
|
|
||
|
===== Shell options =====
|
||
|
Note that the ''shopt'' builtin command first appeared in Bash 2.0.
|
||
|
|
||
|
For this topic, see also
|
||
|
* [[internals:shell_options]]
|
||
|
* [[commands:builtin:set]]
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ See also/remarks ^
|
||
|
| ''posix'' (for ''set -o'') | 1.14.0 | |
|
||
|
| ''hostcomplete'' | 2.0-alpha3 | |
|
||
|
| ''expand_aliases'' | 2.0 | |
|
||
|
| ''huponexit'' | 2.02-alpha1 | |
|
||
|
| ''nocaseglob'' | 2.02-alpha1 | |
|
||
|
| ''extglob'' | 2.02-alpha1 | together with extended globbing, KSH88 |
|
||
|
| ''restricted_shell'' | 2.03-alpha | |
|
||
|
| ''xpg_echo'' | 2.04-beta1 | |
|
||
|
| ''progcomp'' | 2.04-alpha1 | |
|
||
|
| ''no_empty_command_completion'' | 2.04 | |
|
||
|
| ''login_shell'' | 2.05a-alpha1 | |
|
||
|
| ''nolog'' (for ''set -o'') | 2.05a | |
|
||
|
| ''gnu_errfmt'' | 3.0-alpha | |
|
||
|
| ''force_fignore'' | 3.0-alpha | |
|
||
|
| ''failglob'' | 3.0-alpha | |
|
||
|
| ''extquote'' | 3.0-alpha | unsure -- verify! |
|
||
|
| ''extdebug'' | 3.0-alpha | |
|
||
|
| ''pipefail'' (for ''set -o'') | 3.0 | |
|
||
|
| ''functrace'' (for ''set -o'') | 3.0 | |
|
||
|
| ''errtrace'' (for ''set -o'') | 3.0 | |
|
||
|
| ''nocasematch'' | 3.1-alpha1 | |
|
||
|
| ''dirspell'' | 4.0-alpha | |
|
||
|
| ''globstar'' | 4.0-alpha | |
|
||
|
| ''checkjobs'' | 4.0-alpha | |
|
||
|
| ''autocd'' | 4.0-alpha | |
|
||
|
| ''set -e'' effects more intuitive | 4.0 | not directly specified by POSIX, but in consensus with POSIX WG |
|
||
|
| ''compat40'' | 4.1-beta | |
|
||
|
| ''lastpipe'' | 4.2-alpha | only works with job control disabled |
|
||
|
| ''compat41'' | 4.2-alpha | |
|
||
|
| ''globasciiranges'' | 4.3-alpha | enable "character range globbing" to always act as if in ''C'' locale |
|
||
|
| ''compat42'' | 4.3-alpha | |
|
||
|
| ''compat43'' | 4.4-alpha | |
|
||
|
| ''compat44'' | 5.0-alpha | |
|
||
|
| ''localvar_inherit'' | 5.0-alpha | local variables inherit preceeding scope values if they have the same name |
|
||
|
| ''syslog_history'' | 5.0-alpha | send history lines to syslog (undocumented, default off) if syslog is supported |
|
||
|
| ''assoc_expand_once'' | 5.0-alpha | expand associative array subscripts only one |
|
||
|
| ''globasciiranges'' | 5.0-beta | New default: on (default may be configured at compile time) |
|
||
|
| ''localvar_inherit'' | 5.0-beta | guard code against inheriting from an incompatible data type |
|
||
|
| ''checkwinsize'' | 5.0-beta2 | New default: on |
|
||
|
| ''shift_verbose'' | 5.0-beta2 | Default on when in POSIX mode |
|
||
|
|
||
|
==== General (all/many builtins) ====
|
||
|
^Feature or change description ^Appeared in Bash version ^See also/remarks ^
|
||
|
|generally return 2 on usage error |2.0 | |
|
||
|
|generally accept ''<nowiki>--</nowiki>'' (end of options) |2.0 | |
|
||
|
|(where applicable) implement a ''-p'' option to produce reusable output |2.0 |''shopt'' and ''umask'' builtins were fixed to support that in 2.02 |
|
||
|
|
||
|
==== printf ====
|
||
|
|
||
|
For this topic, see also
|
||
|
* [[commands:builtin:printf]]
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ See also/remarks ^
|
||
|
| new ''printf'' command | 2.02-alpha1 | |
|
||
|
| respects ''0..'' and ''0x..'' prefixed numbers | 2.04-beta1 | consistency with arithmetic |
|
||
|
| POSIX(r) length specifiers ''j'', ''t'' and ''z'' | 2.05a-alpha1 | ISO C99 |
|
||
|
| POSIX(r) flag ''%%'%%'' | 2.05a-alpha1 | |
|
||
|
| conversion ''a'' and ''A'' | 2.05a-rc1 | if provided by the underlying printf(3) |
|
||
|
| conversion ''F'' | 2.05a-rc1 | |
|
||
|
| conversion ''n'' | 2.05a-rc1 | |
|
||
|
| new option ''-v'' | 3.1-alpha1 | |
|
||
|
| escape sequences ''\"'' and ''\?'' | 3.0-beta1 | |
|
||
|
| modified option ''-v'' to assign to individual array elements | 4.1-alpha | |
|
||
|
| conversion ''(...)T'' | 4.2-alpha | support stftime(3) date/time format; uses current time |
|
||
|
| ''\uNNNN'' and ''\UNNNNNNNN'' escape sequences | 4.2-alpha | for: ''printf'', ''echo -e'', ''%%$'...'%%'' |
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
==== Conditional expressions and test command ====
|
||
|
|
||
|
For this topic, see also
|
||
|
* [[syntax:ccmd:conditional_expression]]
|
||
|
* [[commands:classictest]]
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ See also/remarks ^
|
||
|
| ''test'': ''-o'', ''=='', ''<'' and ''>'' | 2.0 | |
|
||
|
| ''test'': ''-N'' | 2.02 | |
|
||
|
| ''%%[[...]]%%'': new | 2.02-alpha1 | KSH93 |
|
||
|
| ''%%[[...]]%%'': regex support (''=~'') | 3.0-alpha | |
|
||
|
| ''%%[[...]]%%'': quotable right-hand-side of ''=~'' forces string matching | 3.2-alpha | for consistency with pattern matching |
|
||
|
| ''%%[[...]]%%'': ''<'' and ''>'' operators respect locale | 4.1-alpha | for consistency, since 4.1-beta: ensure you have set compatiblity to >4.0 (default) |
|
||
|
| ''test''/''%%[%%''/''%%[[%%'': ''-v'' | 4.2-alpha | check if a variable is set |
|
||
|
| ''test''/''%%[%%''/''%%[[%%'': ''-v'' | 4.2-alpha | support array syntax to check for elements |
|
||
|
| ''test''/''%%[%%''/''%%[[%%'': ''-N'' accepts nanoseconds | 5.1-alpha | |
|
||
|
| ''test''/''%%[%%''/''%%[[%%'': ''-v'' accepts positional parameters | 5.1-alpha | |
|
||
|
|
||
|
==== Other builtins and keywords ====
|
||
|
^ Builtin ^ Feature or change description ^ Appeared in Bash version ^ See also/remarks ^
|
||
|
| ''bashbug'' | new | 1.14.0 | |
|
||
|
| ''select'' | new | 1.14.0 | |
|
||
|
| ''disown'' | new | 2.0 | |
|
||
|
| ''shopt'' | new | 2.0 | [[commands:builtin:shopt]] |
|
||
|
| ''declare'' | new options ''-a'' and ''-F'' | 2.0 | |
|
||
|
| ''enable'' | builtin has basic plugin support (dlopen) | 2.0 | |
|
||
|
| ''exec'' | options ''-l'', ''-c'' and ''-a'' | 2.0 | |
|
||
|
| ''read'' | options ''-p'', ''-e'' and ''-a'' | 2.0 | [[commands:builtin:read]] |
|
||
|
| ''readonly'' | option ''-a'' | 2.0 | [[syntax:arrays]] |
|
||
|
| ''time'' | new keyword | 2.0 | |
|
||
|
| ''shopt'' | ''-p'' (reusable output) | 2.02 | |
|
||
|
| ''umask'' | ''-p'' (reusable output) | 2.02 | |
|
||
|
| ''complete'' | new | 2.04-devel | for and together with support for programmable completion |
|
||
|
| ''compgen'' | new | 2.04-devel | for and together with support for programmable completion |
|
||
|
| ''read'' | options ''-t'', ''-n'', ''-d'', ''-s'' | 2.04-devel | [[commands:builtin:read]] |
|
||
|
| ''%%for ((...;...;...))%%'' | new | 2.04-devel | KSH93 |
|
||
|
| ''set'' | print shell functions in a format reusable as input | 2.05-beta1 | |
|
||
|
| ''for'' | allow an empty word list | 2.05a-alpha1 | |
|
||
|
| ''read'' | new option ''-u'' | 2.05b-alpha1 | [[commands:builtin:read]] |
|
||
|
| ''caller'' | new | 3.0 | [[commands:builtin:caller]] |
|
||
|
| ''coproc'' | new | 4.0-alpha | |
|
||
|
| ''declare'' | new options ''-l'' and ''-u'' | 4.0-alpha | together with case-changing expansion forms |
|
||
|
| ''case'' | new action list terminators ''%%;;&%% and ''%%;&%% | 4.0-alpha | ksh93: only '';&''. zsh and mksh: '';|''. mksh: all 4, ('';;&'' is undocumented Bash compatibility) |
|
||
|
| ''read'' | changed ''-t'' (fractional seconds) | 4.0-alpha | |
|
||
|
| ''mapfile'' | new | 4.0-alpha | |
|
||
|
| ''read'' | new option ''-i'' | 4.0-alpha | |
|
||
|
| ''compopt'' | new | 4.0-alpha | |
|
||
|
| ''read'' | modified option ''-t'' to test for data | 4.0-beta | |
|
||
|
| ''read'' | new option ''-N'' | 4.1-alpha | |
|
||
|
| ''mapfile'' | changed behaviour regarding history spamming | 4.1-alpha | |
|
||
|
| ''declare'' | new option ''-g'' | 4.2-alpha | |
|
||
|
| ''mapfile'' | calls the callback with an additional argument: The line (data) | 4.2-alpha | |
|
||
|
| ''cd'' | new option ''-e'' | 4.2-alpha | |
|
||
|
| ''echo'' | ''\uNNNN'' and ''\UNNNNNNNN'' escape sequences | 4.2-alpha | for: ''printf'', ''echo -e'', ''%%$'...'%%'' |
|
||
|
| ''exec'' | option ''-a'' to give a ''argv[0]'' string | 4.2-alpha | |
|
||
|
| ''time'' | allowed as a command by itself to display timing values of the shell and its children | 4.2-alpha | POSIX change |
|
||
|
| ''help'' | ''help'' now searches exact topic-strings (i.e. ''help read'' won't find ''readonly'' anymore) | 4.3-alpha | |
|
||
|
| ''return'' | accept negative values as return value (e.g. ''return -1'' will show as (8 bit) 255 in the caller) | 4.3-alpha | |
|
||
|
| ''exit'' | accept negative values as return value (e.g. ''return -1'' will show as (8 bit) 255 in the caller) | 4.3-alpha | |
|
||
|
| ''read'' | ''read'' skips ''NUL'' (ASCII Code 0) in input | 4.3-alpha | |
|
||
|
| ''declare'' | new option ''-n''/''+n'' to support nameref variable type | 4.3-alpha | |
|
||
|
| ''wait'' | new option ''-n'' to wait for the next background job to finish, returning its exit status. | 4.3-alpha | |
|
||
|
| ''read'' | ''read'' checks first variable argument for validity before trying to read inout | 4.3-beta | |
|
||
|
| ''help'' | attempts substring matching (as it did through bash-4.2) if exact string matching fails | 4.3-beta2 | |
|
||
|
| ''fc'' | interprets option ''-0'' (zero) as the current command line | 4.3-beta2 | |
|
||
|
| ''cd'' | new option ''-@'' to browse a file's extended attributes (on systems that support ''O_XATTR'') | 4.3-rc1 | |
|
||
|
| ''kill'' | new option ''-L'' (upper case ell) to list signals like the normal lowercase option ''-l'' (compatiblity with some standalone ''kill'' commands) | 4.4-beta | |
|
||
|
| ''mapfile'' | new option ''-d'' | 4.4-alpha | |
|
||
|
| ''wait'' | new option ''-f'' | 5.0-alpha | |
|
||
|
| ''history'' | option ''-d'' allows negative numbers to index from the end of the history list | 5.0-alpha | |
|
||
|
| ''umask'' | allows modes greater than octal 777 | 5.0-alpha | |
|
||
|
| ''times'' | honors current locale settings when printing decimal points | 5.0-alpha | |
|
||
|
| ''kill'' | New options ''-n SIGNUMBER'' and ''-s SIGNAME'' | 5.0-beta2 | [[commands:builtin:kill]] |
|
||
|
| ''select'' | Support for an empty wordlist following ''in'' | 5.0-beta2 | |
|
||
|
| ''read'' | Option ''-e'' (use ReadLine to obtain input) now works with arbitrary file descriptors (given by ''-u'' option) | 5.1-alpha | |
|
||
|
| ''trap'' | ''-p'' option prints signals with SIG_DFL/SIG_IGN on shell start (POSIX mode) | 5.1-alpha | |
|
||
|
| ''unset'' | automatically tries to unset a function if the given name is an invalid variable name | 5.1-aplha | |
|
||
|
| ''wait'' | option ''-n'' now accepts a list of jobs | 5.1-alpha | |
|
||
|
| ''wait'' | new option ''-p NAME'' to store PID/JobID (useful when waiting for a list of jobs) | 5.1-alpha | |
|
||
|
| ''local'' | new option ''-p'' to print local variables in the current scope | 5.1-alpha | |
|
||
|
| ''ulimit'' | new option ''-R'' to get/set ''RLIMIT_RTTIME'' resource | 5.1-alpha | |
|
||
|
|
||
|
|
||
|
===== Builtin variables =====
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ See also ^
|
||
|
| ''HISTCMD'' | 1.14.0 | interactive usage |
|
||
|
| ''PS1'', ''PS2'', ''PATH'', and ''IFS'' are unsettable | 2.0 | |
|
||
|
| ''DIRSTACK'' array variable | 2.0 | |
|
||
|
| ''PIPESTATUS'' array variable | 2.0 | |
|
||
|
| ''BASH_VERSINFO'' array variable | 2.0 | |
|
||
|
| ''HOSTNAME'' | 2.0 | |
|
||
|
| ''SHELLOPTS'' | 2.0 | |
|
||
|
| ''MACHTYPE'' | 2.0 | |
|
||
|
| ''GLOBIGNORE'' | 2.0 | |
|
||
|
| ''HISTIGNORE'' | 2.0 | |
|
||
|
| respect ''LC_ALL'' | 2.0 | |
|
||
|
| respect ''LC_MESSAGES'' | 2.0 | |
|
||
|
| respect ''LC_CTYPE'' | 2.0 | |
|
||
|
| respect ''LC_COLLATE'' | 2.0 | |
|
||
|
| respect ''LANG'' | 2.0 | |
|
||
|
| ''GROUPS'' array variable | 2.01 | |
|
||
|
| ''GROUPS'' unsettable/takes (discarded) assignments | 2.04 | |
|
||
|
| ''FUNCNAME'' | 2.04 | |
|
||
|
| respect ''LC_NUMERIC'' | 2.04 | |
|
||
|
| ''TMOUT'' | 2.05b | |
|
||
|
| ''BASH_REMATCH'' | 3.0 | together with regex support in ''%%[[...]]%%'' |
|
||
|
| ''BASH_ARGC'' | 3.0 | debugger support |
|
||
|
| ''BASH_ARGV'' | 3.0 | debugger support |
|
||
|
| ''BASH_SOURCE'' | 3.0 | debugger support |
|
||
|
| ''BASH_LINENO'' | 3.0 | debugger support |
|
||
|
| ''BASH_SUBSHELL'' | 3.0 | debugger support |
|
||
|
| ''BASH_EXECUTION_STRING'' | 3.0 | debugger support |
|
||
|
| ''BASH_COMMAND'' | 3.0 | debugger support |
|
||
|
| ''HISTTIMEFORMAT'' | 3.0 | |
|
||
|
| ''COMP_WORDBREAKS'' | 3.0 | |
|
||
|
| respect ''LC_TIME'' | 3.1 | |
|
||
|
| ''BASHPID'' | 4.0-alpha | Added to mksh R41. |
|
||
|
| ''PROMPT_DIRTRIM'' | 4.0 | |
|
||
|
| ''BASH_XTRACEFD'' | 4.1-alpha | |
|
||
|
| ''BASHOPTS'' | 4.1-alpha | |
|
||
|
| ''FUNCNEST'' | 4.2-alpha | |
|
||
|
| ''HISTSIZE'' | 4.3-alpha | can be set to negative values for unlimited history length |
|
||
|
| ''HISTFILESIZE'' | 4.3-alpha | can be set to negative values for unlimit history file size |
|
||
|
| ''CHILD_MAX'' | 4.3-alpha | max. number of exit status of children the shell remembers |
|
||
|
| ''BASH_COMPAT'' | 4.3-alpha | set shell compatiblity levels |
|
||
|
| ''EPOCHSECONDS'' | 5.0-alpha | expands to the time in seconds since Unix epoch |
|
||
|
| ''EPOCHREALTIME'' | 5.0-alpha | expands to the time in seconds since Unix epoch with microsecond granularity |
|
||
|
| ''BASH_ARGV0'' | 5.0-alpha | get/set ''$0'' |
|
||
|
| ''PATH'' | 5.0-alpha | Possibility to set a static path for use in a restricted shell (at compile time) |
|
||
|
| ''HISTSIZE'' | 5.0-beta | Default can now be set at runtime |
|
||
|
| ''SRANDOM'' | 5.1-alpha | New random generator for 32bit numbers (using various methods in the backend) |
|
||
|
| ''ARGV0'' | 5.1-alpha | Respected when set in initial shell environment, then initially used to set ''$0'' |
|
||
|
| ''BASH_REMATCH'' | 5.1-alpha | Not readonly anymore |
|
||
|
| ''PROMPT_COMMANDS'' | 5.1-alpha | New array variable. List of commands to be executed like ''PROMPT_COMMAND'' |
|
||
|
| ''SECONDS'' | 5.1-alpha | Assignment using arithmetic expressions (is nominally an integer variabnle) |
|
||
|
| ''RANDOM'' | 5.1-alpha | Assignment using arithmetic expressions (is nominally an integer variabnle) |
|
||
|
| ''LINENO'' | 5.1-alpha | Not an integer variabe |
|
||
|
|
||
|
===== Quoting, expansions, substitutions and related =====
|
||
|
For this topic, see also
|
||
|
* [[syntax:pe]].
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ Remarks ^
|
||
|
| Support for integer-indexed arrays | 2.0 | relevant builtins also got array support |
|
||
|
| ''%%${PARAMETER//PATTERN/REPLACEMENT}%%'' | 2.0 | |
|
||
|
| ''%%${PARAMETER:OFFSET:LENGTH}%%'' | 2.0 | |
|
||
|
| ''%%${!PARAMETER}%%'' (indirection) | 2.0 | |
|
||
|
| ''%%$"..."%%'' (localized strings) | 2.0 | |
|
||
|
| ''%%$'...'%%'' (ANSI-C-like strings) | 2.0 | |
|
||
|
| ''%%\xNNN%%'' in ''%%$'...'%%'' (and ''echo -e'') | 2.02-alpha1 | |
|
||
|
| ''%%$(< FILENAME)%%'' (file content) | 2.02-alpha1 | |
|
||
|
| globbing (''fnmatch()'') capable of POSIX(r) character classes etc. | 2.02-alpha1 | |
|
||
|
| extended globbing | 2.02-alpha1 | KSH88 |
|
||
|
| globbing inside array mass-assignment: ''ARRAY=(*.txt)'' | 2.03-alpha | |
|
||
|
| ''%%$'...\'...'%%'' escaped single quote inside ANSI-C-like strings | 2.04-devel | KSH93 |
|
||
|
| ''%%${!PREFIX*}%%'' (parameter name expansion) | 2.04 | KSH93 |
|
||
|
| ''%%$'...'%%'' expands ''\cx'' (Control-x) | 2.05b | |
|
||
|
| ''[:class:]'' syntax for pattern matching | 2.05b | KSH93 |
|
||
|
| ''${!ARRAY[@]}'' (array index expansion) | 3.0-alpha | KSH93 |
|
||
|
| ''{x..y}'' (range brace expansion) | 3.0-alpha | |
|
||
|
| ''%%$'...'%%'' expands ''\xNNN'' (Hexdigits) | 3.0 | |
|
||
|
| ''+='' operator for arrays and strings | 3.1-alpha1 | |
|
||
|
| ''%%${PARAMETER//PATTERN/REPLACEMENT}%%'' behaviour changed | 3.2-alpha | anchoring for global substitution is no longer allowed, changes the way old syntax may work |
|
||
|
| ''${@:0:x}'' includes ''$0'' | 4.0-alpha | |
|
||
|
| Support for associative arrays | 4.0-alpha | relevant builtins also got associative array support |
|
||
|
| case modification operators for expansions | 4.0-alpha | |
|
||
|
| ''{0x..0y}'' (zeropadding brace expansion) | 4.0-alpha | |
|
||
|
| numerically indexed arrays can be accessed (on expansion time) from the end using negative indexes | 4.1-alpha | |
|
||
|
| ''%%\uNNNN%%'' and ''%%\uNNNNNNNN%%'' in ''%%$'...'%%'' | 4.2-alpha | for: ''printf'', ''echo -e'', ''%%$'...'%%'' |
|
||
|
| ''%%${PARAMETER:OFFSET:LENGTH}%%'': Negative ''LENGTH'' values are used as offset from the end of the string | 4.2-alpha | Substrings only for Bash and ksh93. Works also for argument expansions in zsh. ksh93 can use ''${arr[n..-m]}''. |
|
||
|
| Word expansions like ''${foo##bar}'' understand indirect variable references | 4.3-beta | |
|
||
|
| Transformations | 4.4 | |
|
||
|
| Process substitution now works in POSIX mode | 5.1-alpha | |
|
||
|
| New transformations: ''U'', ''u'', ''L'' | 5.1-alpha | Case-transformation |
|
||
|
| New transformation: ''K'' | 5.1-alpha | Display associative arrays as key/value pairs |
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
===== Arithmetic =====
|
||
|
For this topic, see also
|
||
|
* [[syntax:arith_expr]]
|
||
|
* [[syntax:expansion:arith]]
|
||
|
|
||
|
^Feature or change description ^Appeared in Bash version ^Remarks ^
|
||
|
|''<nowiki>((...))</nowiki>'' |2.0-beta2 |KSH93 |
|
||
|
|ternary operator |2.0 | |
|
||
|
|base 64 integer constants |2.0 |the max. base before is unknown. Anybody? |
|
||
|
|deprecated ''$[...]'' in favor of ''<nowiki>$((...))</nowiki>'' |2.0 | |
|
||
|
|exponentiaition operator (''<nowiki>**</nowiki>'') |2.02-alpha1 | |
|
||
|
|comma operator ''EXPR,EXPR'' |2.04-devel | |
|
||
|
|pre- and postfix operators |2.04-devel | |
|
||
|
|
||
|
|
||
|
===== Redirection and related =====
|
||
|
For this topic, see also
|
||
|
* [[syntax:redirection]]
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ Remarks ^
|
||
|
| socket redirection (''/dev/tcp/'', ''/dev/udp/'') | 2.04-devel | |
|
||
|
| OS/filesystem-independent support for ''/dev/std(in|out|err)'' and ''/dev/fd/*'' | 2.04 | |
|
||
|
| socket redirection accepts service names | 2.05 | |
|
||
|
| ''[n]<&word-'' and ''[n]>&word-'' FD-duplicate/closing | 2.05b-alpha1 | KSH93 |
|
||
|
| Here strings: ''%%<<< WORD%%'' | 2.05b-alpha1 | |
|
||
|
| ''|&'' (synonym for ''2>&1 |'') | 4.0-alpha | |
|
||
|
| ''%%&>>%%'' (equiv. to ''%%>>FILE 2>&1%%'') | 4.0-alpha | |
|
||
|
| ''<nowiki>{varname}</nowiki>'' style automatic file descriptor allocation | 4.1-alpha | ksh93 |
|
||
|
| ''<nowiki>{varname[idx]}</nowiki>'' fd allocation accepts array subscripts and special-meaning variables | 4.3-alpha | ksh93 |
|
||
|
|
||
|
|
||
|
===== Misc =====
|
||
|
|
||
|
^ Feature or change description ^ Appeared in Bash version ^ See also/remarks ^
|
||
|
| ''DEBUG'' trap | 2.0 | |
|
||
|
| ''ERR'' trap | 2.05a | KSH93 |
|
||
|
| Support for multibyte characters: Unicode / UTF8 | 2.05b | |
|
||
|
| ''RETURN'' trap | 3.0 | ksh93 ''EXIT'' trap evaluates in caller scope (for ''function name {''). Bash ''RETURN'' in same scope. |
|
||
|
| ''command_not_found_handle'' handler function | 4.0-alpha | |
|
||
|
| official introduction of switchable "compatiblity levels" | 4.0-alpha | ''compat31'' was introduced in a 3.2 version, mainly because of the incompatibilities that were introduced by the changed ''=~'' operator |
|
||
|
| ''%%[[...]]%%'' and ''%%((...))%%'' conditional commands are subject to the ''ERR'' trap and ''set -e'' feature | 4.1-alpha | |
|
||
|
| ACL support for file status checks | 4.1-alpha | |
|
||
|
| Assignment to negative array indices | 4.3-alpha | ksh93, zsh |
|
||
|
| ''declare''/''typeset -n'' | 4.3-alpha | Support for nameref variable type, a variable referencing another one by name |
|
||
|
| shells started to run process substitutions now run any trap set on ''EXIT'' | 4.3-beta | |
|
||
|
| process substitution does not inherit the ''v'' flag | 5.0-alpha | |
|
||
|
| ''ERR'' trap | 5.0-alpha | Reports more reliable line numbers |
|
||
|
| Variable assignment | 5.0-beta | Assignments preceeding a special builtin that chages variable attributes are not propagated back unless compatiblity mode is 44 or lower |
|
||
|
</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="scripting/bashchanges.txt">scripting/bashchanges.txt</span></li><li><span class="iconify text-muted" data-icon="mdi:calendar"></span> Last modified: <span title="2022/08/28 05:13">2022/08/28 05:13</span></li><li class="text-muted">by <bdi>fgrose</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="http://web.archive.org/web/20221006034255/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/20221006034255js_/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/20221006034255im_/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="http://web.archive.org/web/20221006034255/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/20221006034255im_/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="http://web.archive.org/web/20221006034255/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/20221006034255im_/https://wiki.bash-hackers.org/lib/exe/indexer.php?id=scripting%3Abashchanges&1665027791" width="2" height="1" alt=""/>
|
||
|
</div>
|
||
|
|
||
|
</body>
|
||
|
</html>
|
||
|
<!--
|
||
|
FILE ARCHIVED ON 03:42:55 Oct 06, 2022 AND RETRIEVED FROM THE
|
||
|
INTERNET ARCHIVE ON 11:36:00 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: 142.873
|
||
|
exclusion.robots: 0.143
|
||
|
exclusion.robots.policy: 0.134
|
||
|
cdx.remote: 0.063
|
||
|
esindex: 0.008
|
||
|
LoadShardBlock: 103.047 (3)
|
||
|
PetaboxLoader3.datanode: 166.822 (4)
|
||
|
load_resource: 678.764
|
||
|
PetaboxLoader3.resolve: 533.58
|
||
|
-->
|