<!DOCTYPE html>
<html lang="en">
  <head>

    <meta charset="UTF-8">
      <title></title>
    <meta name="description" content="Apache TomEE">
    <meta name="author" content="Apache TomEE">
    <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="./../resources/css/bootstrap.css" rel="stylesheet">
    <link href="./../resources/css/prettify.css" rel="stylesheet">
    <!--link href="./../resources/css/bootstrap-mods.css" rel="stylesheet"-->
    <link href="./../resources/css/main.css" rel="stylesheet">
    <link href="./../resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">

    <script type="text/javascript">
        var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
        var u = encodeURIComponent(""+document.URL);
    
      function fbshare () {
          window.open(
                  "http://www.facebook.com/sharer/sharer.php?u="+u,
                  'Share on Facebook',
                  'width=640,height=426');
      };
      function gpshare () {
          window.open(
                  "https://plus.google.com/share?url="+u,
                  'Share on Google+',
                  'width=584,height=385');
      };
      function twshare () {
          window.open(
                  "https://twitter.com/intent/tweet?url="+u+"&text="+t,
                  'Share on Twitter',
                  'width=800,height=526');
      };
      function pinshare () {
          window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
                  'Share on Pinterest',
                  'width=800,height=526');
      };
    </script>

    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="./../favicon.ico">
    <link rel="apple-touch-icon" href="./../resources/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="./../resources/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="./../resources/images/apple-touch-icon-114x114.png">

    <script src="./../resources/js/prettify.js" type="text/javascript"></script>
    <script src="./../resources/js/jquery-latest.js"></script>
    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script src="./../resources/js/common.js"></script>
    <script src="./../resources/js/prettyprint.js"></script>
    <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
    
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
  </head>

  <body>

    <div class="topbar" data-dropdown="dropdown">
      <div class="fill">
        <div class="container">
          <a class="brand" href="./../index.html">Apache TomEE</a>
          <ul class="nav">
              <li class="dropdown">
                  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                  Apache
                      <b class="caret"></b>
                  </a>
                  <ul class="dropdown-menu">
                     <!-- <li><a href="./../misc/whoweare.html">Who we are?</a></li> -->
                     <!-- <li><a href="./../misc/heritage.html">Heritage</a></li> -->
                     <li><a href="http://www.apache.org">Apache Home</a></li>
                     <!-- <li><a href="./../misc/resources.html">Resources</a></li> -->
                     <li><a href="./../misc/contact.html">Contact</a></li>
                     <li><a href="./../misc/legal.html">Legal</a></li>
                     <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                     <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                     <li class="divider"/>
                     <li><a href="http://www.apache.org/security">Security</a></li>
                  </ul>
              </li>
              <li><a href="./../index.html">Home</a></li>
              <li><a href="./../downloads.html">Downloads</a></li>
              <li><a href="./../documentation.html">Documentation</a></li>
              <li><a href="./../examples-trunk/index.html">Examples</a></li>
              <li><a href="./../support.html">Support</a></li>
              <li><a href="./../contribute.html">Contribute</a></li>
              <li><a href="./../security/index.html">Security</a></li>
          </ul>

            <!-- Google CSE Search Box Begins  -->
            <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
                <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
                <INPUT type="hidden" name="cof" value="FORID:0">
                <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
            </FORM>
            <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
            <!-- Google CSE Search Box Ends -->
        </div>
      </div>
    </div>

    <div class="container">
    

<div class="page-header">
    <small><a href="./../index.html">Home</a>&nbsp;&raquo&nbsp;<a href="./../dev/">Dev</a></small><br>
    <h1>

        <div style="float: right; position: relative; bottom: -10px; ">
            <a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
            <a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
            <a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
            <a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
            <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
        </div>
    </h1>
</div>

<h1>Linux/OSX awesomeness</h1>

<p>Not specific to this projec, but can be incredibly useful ways to maximizes your time.  Mastering the command line is the best way to get things done, quick and cheaply.</p>

<p>Reapeat after me:</p>

<ul>
<li>I will write a script for any tasks I do regularly</li>
</ul>

<h1>Core commands</h1>

<p>Some very big time-saving commands</p>

<h2>In shell scripts</h2>

<ul>
<li><strong>basename</strong> - what is the file name again? not the path, just the file name</li>
<li><strong>dirname</strong> - what directory is this in?</li>
<li><strong>readllink -f</strong> - what is the absolute path of this file?</li>
<li><strong>cat</strong> - spit out the contents of one or more files</li>
<li><strong>cp</strong> - copy file or dir</li>
<li><strong>scp</strong> - copy file or dir to another machine</li>
<li><strong>rsync</strong> - both the above, but so much more awesome
<ul>
<li>rsync -av here there</li>
<li>rsync -e ssh -av here user@host:there</li>
</ul></li>
<li><strong>cut</strong> - wish I could i could chop out this column in the middle here</li>
<li><strong>date</strong> - would be nice if I had some way to make this log file name a little more unique</li>
<li><strong>echo</strong> - System.out.println()</li>
<li><strong>xargs</strong> - can be useful but doesn't respect paths with spaces. I only use it sometimes</li>
<li><strong>find</strong> - find some files and potentially execute a command against them</li>
<li><strong>egrep</strong> - search for text in a file or from STDIN.  better than grep</li>
<li><strong>mkdir</strong> - makes a dir, with -p will make parent dirs too</li>
<li><strong>mv</strong> - move a file</li>
<li><strong>head</strong> - spit out the first N lines of a file</li>
<li><strong>tail</strong> - spit out the last N lines of a file</li>
<li><strong>tee</strong> - I want to see the output of this command, but I also want to write it to a file.  Oh! tee is awesome!</li>
<li><strong>perl</strong> - edit a stream:  cat file.txt
<ul>
<li>edit a file: perl -i -pe 's/this/that/'</li>
</ul></li>
<li><strong>pwd</strong> - where am I?</li>
<li><strong>rm</strong> - delete</li>
<li><strong>read (bash)</strong> - I dig this out for strings with spaces. paths have spaces in them sometimes
<ul>
<li>ls <em>.txt</li>
<li>find . -name "</em>.txt"</li>
</ul></li>
<li><strong>export (bash)</strong> - why can't my script find this command? i use this to debug scripts 'export > /tmp/script-env.txt'</li>
<li><strong>for (bash)</strong> - my favorite bash construct
<ul>
<li>for n in one two three; do echo "$n"; done</li>
<li>(side note, always quote your variables like "$n" vs $n, trust me it's a good habit)</li>
</ul></li>
<li><strong>while  (bash)</strong> - my second favorite bash construct
<ul>
<li>loop forever and do something: while true; do my_command; sleep 10; done</li>
</ul></li>
<li><strong>sleep</strong> - Thread.sleep().  Only accepts seconds.  I typically do the math with bash sytax
<ul>
<li>sleep for an hour:  sleep $(( 60 * 60 ))</li>
<li>sleep for a day:  sleep $(( 60 * 60 * 24 ))</li>
</ul></li>
<li><strong>sort</strong> - sort lines of text</li>
<li><strong>uniq</strong> - trim out the duplicates
<ul>
<li>show me only things that had duplicates: uniq -d</li>
<li>( I always 'sort</li>
</ul></li>
<li><strong>ssh</strong> - awesomeness.  can execute commands remotely too
<ul>
<li>ssh people.apache.org pwd</li>
<li>ssh people.apache.org 'pwd</li>
</ul></li>
<li><strong>sudo</strong> - I wish I were a fish.  I wish I were a fish.</li>
<li><strong>tar</strong> - package up some stuff</li>
<li><strong>wget</strong> - download this url
<ul>
<li>wget http://apache.org</li>
<li>wget -q -O - http://apache.org</li>
</ul></li>
<li><strong>tr</strong> - echo $PATH</li>
<li><strong>uname</strong> - what system am I on?</li>
</ul>

<h2>OSX commands</h2>

<ul>
<li><strong>pbpaste</strong> - paste the contents of the clipboard to stdout</li>
<li><strong>pbcopy</strong> - copy stdin to the clipbboard</li>
</ul>

<h2>running shell scripts</h2>

<ul>
<li><strong>bash</strong> - quick way to run a script if it isn't already executable</li>
<li><strong>chmod</strong> - this file should be executable</li>
<li><strong>clear</strong> - my terminal is messy</li>
<li><strong>diff/patch</strong> - comparing or merging file contents</li>
<li><strong>ps/kill</strong> - my script is running too long, i want to force it to stop</li>
<li><strong>less</strong> - paging through command line output</li>
<li><strong>nohup</strong> - I don't want this script to die if my connection is interrupted</li>
<li><strong>which</strong> - where does this command live?</li>
<li><strong>crontab</strong> - schedule something to run regularly (i use 'bash -l foo.sh' to run stuff in my crontab file)</li>
<li><strong>shutdown</strong> - shutdown or restart a machine</li>
<li><strong>top</strong> - what the heck is chewing up my cpu?</li>
<li><strong>uname</strong> - what system am I on?</li>
</ul>

<h1>I never use</h1>

<p>Some people like it.
sed -- i always use "perl -pe 's/find/replace/'")</p>

<p>Getting used to using perl is better.  This page was originally written thinking markdown had table support
like confluence does.  Soo all lines where using "| command | description |" formatting.  Markdown doesn't
have that, so I changed it to a list syntax with the following command on my mac:</p>

<p><code>pbpaste | perl -ne '@f = split(" *\\| *", $_); print " - **$f[1]** - $f[2]\n"' | pbcopy</code></p>




        <div id="edit" class="modal hide fade in" style="display: none; ">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">x</a>

                <h3>Thank you for contributing to the documentation!</h3>
            </div>
            <div class="modal-body">
                <h4>Any help with the documentation is greatly appreciated.</h4>
                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
                <!--[if gt IE 6]>
                <h4>Internet Explorer Users</h4>
                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
                <![endif]-->

            </div>
            <div class="modal-footer">
                Do you have an Apache ID?
                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
            </div>
        </div>
        <script src="./../resources/js/bootstrap-modal.js"></script>

        <footer>
            <p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
                All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </footer>

    </div> <!-- /container -->

    <!-- Javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./../resources/js/bootstrap-dropdown.js"></script>

  </body>
</html>
