<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Linux on Benny Simmonds</title>
    <link>https://www.bencode.io/categories/linux/</link>
    <description>Recent content in Linux on Benny Simmonds</description>
    <generator>Hugo -- 0.149.1</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 30 Sep 2023 16:35:38 +1100</lastBuildDate>
    <atom:link href="https://www.bencode.io/categories/linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Default programs based on MIME type with XDG</title>
      <link>https://www.bencode.io/posts/xdgmime/</link>
      <pubDate>Tue, 01 Feb 2022 18:12:29 +1100</pubDate>
      <guid>https://www.bencode.io/posts/xdgmime/</guid>
      <description>&lt;p&gt;From an ancient post I previously did&amp;hellip;I need to refresh my mind on this topic often enough thought it worthy of breaking it out.&lt;/p&gt;
&lt;h2 id=&#34;how-linux-systems-figure-out-what-program-should-open-a-file&#34;&gt;How Linux systems figure out what program should open a file&lt;/h2&gt;
&lt;p&gt;Programs that handle arbitrary files (e.g. web browsers, irc clients, file managers) delegate to a general purpose resource handler. &lt;em&gt;XDG MIME Applications&lt;/em&gt; is the ubiquitous option here, and is not only an implementation, but a full blown specification.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debian install notes</title>
      <link>https://www.bencode.io/posts/debian/</link>
      <pubDate>Sun, 11 Jul 2021 11:55:08 +0000</pubDate>
      <guid>https://www.bencode.io/posts/debian/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m moving lots of my machines back to Debian in the yearning for rock solid stability and a complete distribution that just works. Debian was the first GNU/Linux I ever used as a teenager back in late 90s and I&amp;rsquo;ve fond memories of it.&lt;/p&gt;
&lt;p&gt;Starting with the official &lt;a href=&#34;https://www.debian.org/releases/stable/amd64/&#34;&gt;amd64 install guide&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;preparation&#34;&gt;Preparation&lt;/h1&gt;
&lt;h2 id=&#34;make-usb-key&#34;&gt;Make USB key&lt;/h2&gt;
&lt;p&gt;I quickly &lt;a href=&#34;https://unix.stackexchange.com/questions/458038/load-missing-firmware-from-removable-media-debian&#34;&gt;discovered&lt;/a&gt; I want the &lt;a href=&#34;https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/&#34;&gt;image&lt;/a&gt; that includes proprietary firmware, so I can get my (nasty) wifi card working as quickly as possible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gentoo Linux</title>
      <link>https://www.bencode.io/posts/gentoo/</link>
      <pubDate>Mon, 22 Feb 2021 21:29:55 +0000</pubDate>
      <guid>https://www.bencode.io/posts/gentoo/</guid>
      <description>&lt;p&gt;The next step in my minimalist computing journey.&lt;/p&gt;
&lt;p&gt;Enter Gentoo, my first source based GNU/Linux distro. Pre-packaged binaries, which is the approach most other (binary based) distros take, must often cater for the lowest common denominator to ensure packages can run on lots of differing setups out in the wild. On a source based distro, I can articulate my specific needs (USE flags on Gentoo) to finely tune the binaries to my system. For example, as I plan to steer clear of software like systemd, kde and gnome, I can ensure support for these packages is NOT built into other program binaries I build for my system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KVM virtualisation</title>
      <link>https://www.bencode.io/posts/kvm/</link>
      <pubDate>Sat, 31 Oct 2020 20:56:23 +0000</pubDate>
      <guid>https://www.bencode.io/posts/kvm/</guid>
      <description>&lt;p&gt;The Kernel Virtual Machine is a hypervisor for Linux on hardware with virtualization extensions (Intel VT or AMD-V). It is deployed as a loadable kernel modules, &lt;code&gt;kvm.ko&lt;/code&gt;, and either &lt;code&gt;kvm-intel.ko&lt;/code&gt; or &lt;code&gt;kvm-amd.ko&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://wiki.debian.org/KVM&#34;&gt;KVM Debian Wiki&lt;/a&gt; rocks, and provides details on the basics including a great performance tuning section.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#install&#34;&gt;Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#administration-tasks&#34;&gt;Administration tasks&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#user-specific-vs-system-wide-vms&#34;&gt;User specific vs system wide VMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#list-vms&#34;&gt;List VMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#start-vm&#34;&gt;Start VM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#shutdown-vm&#34;&gt;Shutdown VM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#murder-hung-vm&#34;&gt;Murder (hung) VM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#autostart-default-nated-bridged-network&#34;&gt;Autostart default NATed bridged network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#what-if-the-default-network-interface-is-not-listed&#34;&gt;What if the &lt;code&gt;default&lt;/code&gt; network interface is not listed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#how-to-extend--increase-a-partition&#34;&gt;How to extend / increase a partition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#use-network-iso-source-for-new-vms&#34;&gt;Use network ISO source for new VMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#windows-vm-disk-driver&#34;&gt;Windows VM disk driver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;install&#34;&gt;Install&lt;/h1&gt;
&lt;p&gt;Easy instructions to get QEMU/KVM and virt-manager up and running on Arch.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes</title>
      <link>https://www.bencode.io/posts/k8s/</link>
      <pubDate>Tue, 18 Aug 2020 20:11:30 +0000</pubDate>
      <guid>https://www.bencode.io/posts/k8s/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The name Kubernetes originates from Greek, meaning helmsman or pilot.&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#terminology&#34;&gt;Terminology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#essentials&#34;&gt;Essentials&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#help&#34;&gt;Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bash-kubectl-completion&#34;&gt;Bash kubectl completion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#web-ui-dashboard&#34;&gt;Web UI dashboard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pods&#34;&gt;Pods&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#creating-a-pod&#34;&gt;Creating a pod&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#option-1-imperatively-with-the-cli&#34;&gt;Option 1: Imperatively with the CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#option-2-declaratively-with-yaml&#34;&gt;Option 2: Declaratively with YAML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#port-forwarding&#34;&gt;Port forwarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-pods&#34;&gt;Managing pods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pod-health&#34;&gt;Pod Health&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#deployments-and-replicasets&#34;&gt;Deployments and ReplicaSets&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#replicaset&#34;&gt;ReplicaSet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#deployment&#34;&gt;Deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#deployments-with-kubectl&#34;&gt;Deployments with kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#deployment-options&#34;&gt;Deployment Options&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#rolling-updates&#34;&gt;Rolling updates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#blue-green&#34;&gt;Blue Green&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#canary&#34;&gt;Canary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rollbacks&#34;&gt;Rollbacks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#statefulsets&#34;&gt;StatefulSets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#services&#34;&gt;Services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#service-types&#34;&gt;Service Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#port-forwarding-take-2&#34;&gt;Port forwarding take 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#services-yaml&#34;&gt;Services YAML&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#nodeport-example&#34;&gt;NodePort example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#externalname-example&#34;&gt;ExternalName example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#testing-service-and-pod-with-curl&#34;&gt;Testing Service and Pod with curl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#storage&#34;&gt;Storage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#volumes&#34;&gt;Volumes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#volume-types&#34;&gt;Volume Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#viewing-a-pods-volumes&#34;&gt;Viewing a Pods volumes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#emptydir-volume-example&#34;&gt;emptyDir volume example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#peristentvolumes-and-peristentvolumesclaims&#34;&gt;PeristentVolumes and PeristentVolumesClaims&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#storageclasses&#34;&gt;StorageClasses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-configuration-with-configmaps-and-secrets&#34;&gt;Managing configuration with ConfigMaps and Secrets&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#defining-configmaps&#34;&gt;Defining ConfigMaps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#consuming-configmaps&#34;&gt;Consuming ConfigMaps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#secrets&#34;&gt;Secrets&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#secret-best-practices&#34;&gt;Secret best practices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#storing-secrets&#34;&gt;Storing Secrets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#using-secrets&#34;&gt;Using Secrets&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#secrets-as-environment-variables&#34;&gt;Secrets as environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#secrets-as-files&#34;&gt;Secrets as files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#troubleshooting&#34;&gt;Troubleshooting&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#logs&#34;&gt;Logs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuration-verification&#34;&gt;Configuration verification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#shell-into-pod-container&#34;&gt;Shell into Pod container&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-api&#34;&gt;The API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#general-kubectl&#34;&gt;General kubectl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#waaay-cool&#34;&gt;Waaay cool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#samples&#34;&gt;Samples&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#nodejs-app&#34;&gt;node.js app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#microk8s&#34;&gt;microk8s&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#shell-improvements&#34;&gt;Shell improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#persistentvolume-storage-location&#34;&gt;PersistentVolume storage location&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;terminology&#34;&gt;Terminology&lt;/h1&gt;
&lt;p&gt;k8s is two concepts; the control plane and nodes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Arch Linux on the Pinebook Pro</title>
      <link>https://www.bencode.io/posts/pinebook/</link>
      <pubDate>Mon, 27 Jul 2020 20:27:23 +0000</pubDate>
      <guid>https://www.bencode.io/posts/pinebook/</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated 2022-04-11: Installed a minimal version of Manjaro, a SLICK flavour of Arch&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.pine64.org/pinebook-pro/&#34;&gt;pinebook pro&lt;/a&gt; is a beautiful 64-bit ARM based laptop, that reminds me of the form factor of a modern macbook air, shipping with a premium magnesium alloy shell, 64GB eMMC and a 10,000 mAH battery. All this for $200.&lt;/p&gt;
&lt;p&gt;As a NIX machine, I&amp;rsquo;ve found Manjaro to be delightful. I have dreams of one day installing OpenBSD.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Digital Signatures</title>
      <link>https://www.bencode.io/posts/2019-05-24-signatures/</link>
      <pubDate>Fri, 24 May 2019 21:17:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2019-05-24-signatures/</guid>
      <description>&lt;p&gt;The sequence of tasks undertaken that make digital signatures possible. This does have a slight XML flavour to it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A digital signature is a mathematical scheme for verifying the authenticity of digital messages.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The concept of digital signature completely hinges on assymetric cryptography (such as DSA or RSA).&lt;/p&gt;
&lt;h2 id=&#34;to-validate-a-signature&#34;&gt;To validate a signature&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;First the message can be normalised, and in the case of XML will use something like the &amp;ldquo;Exclusive XML Canonicalization&amp;rdquo; (XML-C14N), so we&amp;rsquo;re comparing apples with apples. This will disgard things like usage of white space.&lt;/li&gt;
&lt;li&gt;Using the normalised representation, compute a hash (e.g. SHA1) of the timestamp (contained WS-Security header) and entire message payload (the SOAP body).&lt;/li&gt;
&lt;li&gt;Using the public key from the partner organisation certificate, RSA decrypt the hash computed by partner organisation.&lt;/li&gt;
&lt;li&gt;If the two hashes are identical, we know the message has not been tampered with.&lt;/li&gt;
&lt;li&gt;(optional) Validate the timestamp (TTL) defined by partner organisation (typically 7 minutes from the original transmission time by the sender). To mitigate possible damage caused by replay attacks.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;to-create-a-signature&#34;&gt;To create a signature&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Wraps the response message in a SOAP envelope, which includes some WS-Security related headers including a timestamp.&lt;/li&gt;
&lt;li&gt;The timestamp is set to a configurable number of minutes (e.g. 10 minutes) in the future.&lt;/li&gt;
&lt;li&gt;Normalises the message using the &amp;ldquo;Exclusive XML Canonicalization&amp;rdquo; (XML-C14N)&lt;/li&gt;
&lt;li&gt;Using the normalised message form, compute a (e.g. SHA1) hash of the timestamp (WS-Security header) and entire response message payload (e.g. the SOAP body).&lt;/li&gt;
&lt;li&gt;Uses the private key of signing certificate, RSA signs the computed hash, and stores the result in the relevant security header (the SignatureValue header).&lt;/li&gt;
&lt;li&gt;The message is then delivered to partner organisation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For the above to work, there needs to be some established agreement as to the specific cipher suites and canonicalisation method used. This is all&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arch Linux</title>
      <link>https://www.bencode.io/posts/arch/</link>
      <pubDate>Sat, 06 Apr 2019 11:32:10 +1100</pubDate>
      <guid>https://www.bencode.io/posts/arch/</guid>
      <description>&lt;p&gt;After witnessing insane minimalism paired with a tiler (tiling window manager), knew it was my time to take the pilgrimage to Arch Linux.&lt;/p&gt;
&lt;p&gt;Some characteristics that make Arch unique:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Arch_terminology#The_Arch_Way&#34;&gt;The Arch Way&lt;/a&gt; embody the principles behind Arch Linux; simplicity, modernity, pragmatism, user centrality and versatility.&lt;/li&gt;
&lt;li&gt;Forces one to build the system up by hand.&lt;/li&gt;
&lt;li&gt;This encourages you to question the role of each component of the system, and available options to satisfy that component (e.g. the terminal emulator).&lt;/li&gt;
&lt;li&gt;The result is a highly tailored and minimal system that meets precisely your needs.&lt;/li&gt;
&lt;li&gt;Practical and pragmatic documentation. The &lt;a href=&#34;https://wiki.archlinux.org/&#34;&gt;Arch Wiki&lt;/a&gt; is the gold standard when it comes to documentation.&lt;/li&gt;
&lt;li&gt;The Arch User Repository (AUR) is a treasure chest of pre-packaged useful recent software. Somehow every program I&amp;rsquo;ve ever needed has been available on AUR.&lt;/li&gt;
&lt;li&gt;Rolling upgrades.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Arch was born in 2001, when Canadian programmer Judd Vinet, inspired by the elegance of systems such as Slackware and the BSD&amp;rsquo;s, set out to build his own distro based on a similar ethos. The first formal release, 0.1, dropped on March 11, 2002.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LCA 2018</title>
      <link>https://www.bencode.io/posts/2018-01-28-lca2018/</link>
      <pubDate>Sun, 28 Jan 2018 17:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2018-01-28-lca2018/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a convert. This conference was incredible, with passionate presenters, excellent content with an amazing inclusive and friendly community vibe. Most sessions are available on &lt;a href=&#34;https://www.youtube.com/user/linuxconfau2018/videos&#34;&gt;YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Things I am inspired to do post LCA 2018:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setup ctags with Vim. Think &amp;lsquo;go to definition&amp;rsquo; for Vim, with support for 40+ langs. Specifically &lt;a href=&#34;https://sourceforge.net/projects/ctags/files/&#34;&gt;Exuberant Ctags&lt;/a&gt; and &lt;a href=&#34;https://github.com/tsukkee/unite-tag&#34;&gt;unite-tag&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Play with more kernel syscalls (like ptrace).&lt;/li&gt;
&lt;li&gt;Signal processing and logic analyser &lt;a href=&#34;https://rego.linux.conf.au/schedule/presentation/51/&#34;&gt;lab&lt;/a&gt; and kit. More &lt;a href=&#34;https://github.com/InfernoEmbedded/logicanalyser_workshop&#34;&gt;notes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Resume the nand2tetris journey, part 2.&lt;/li&gt;
&lt;li&gt;Use IRC more. Some CLI options &lt;a href=&#34;https://irssi.org/&#34;&gt;Irssi&lt;/a&gt; &lt;a href=&#34;http://www.bitchx.com/&#34;&gt;BitchX&lt;/a&gt; &lt;a href=&#34;https://weechat.org/&#34;&gt;WeeChat&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;And &lt;a href=&#34;https://keybase.io&#34;&gt;keybase&lt;/a&gt;. Imagine a Slack for the whole world, except end-to-end encrypted across all your devices. Or a Team Dropbox where the server can&amp;rsquo;t leak your files or be hacked.&lt;/li&gt;
&lt;li&gt;Always support and subscribe to &lt;a href=&#34;https://lwn.net/&#34;&gt;lwn.net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Look into supporting the Software Conservancy Foundation (SCF)&lt;/li&gt;
&lt;li&gt;Pick up some new langs; &lt;a href=&#34;https://golang.org/&#34;&gt;go&lt;/a&gt; and &lt;a href=&#34;https://www.rust-lang.org/en-US/&#34;&gt;rust&lt;/a&gt; seem to be current shiny.&lt;/li&gt;
&lt;li&gt;I met a number of kernel developers. Find out a bit more about what they do through the offical &lt;a href=&#34;https://www.kernel.org/doc/linux/MAINTAINERS&#34;&gt;MAINTAINERS&lt;/a&gt; file.&lt;/li&gt;
&lt;li&gt;Yubikey or Nitrokey, start using. Open source physical USB device to enable secure encryption and signing of data. The secret keys are always stored inside the Nitrokey which protects against malware (such as computer viruses) and attackers. A user-chosen PIN and a tamper-proof smart card protect the Nitrokey in case of loss and theft.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lwn.net/Kernel/LDD3/&#34;&gt;Linux Device Drivers&lt;/a&gt; book now maintained by Jonathan Corbet (executive editor at lwn.net), start reading, and create drivers, the gateway drug to the kernel.&lt;/li&gt;
&lt;li&gt;Time to refresh handle, bio, and CV.&lt;/li&gt;
&lt;li&gt;Checkout &lt;a href=&#34;https://taskwarrior.org/&#34;&gt;TaskWarrior&lt;/a&gt;, a CLI for managing tasks.&lt;/li&gt;
&lt;li&gt;Consider using more compact unique IDs such as Twitters &lt;a href=&#34;https://developer.twitter.com/en/docs/basics/twitter-ids&#34;&gt;snowflake&lt;/a&gt; e.g. &lt;code&gt;12738165059&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use more state machines.&lt;/li&gt;
&lt;li&gt;Study &lt;a href=&#34;http://aosabook.org/en/index.html&#34;&gt;The Architecture of Open Source Applications&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of the sessions I got to attend.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LXC (Lexy)</title>
      <link>https://www.bencode.io/posts/2018-01-18-lxc/</link>
      <pubDate>Thu, 18 Jan 2018 20:56:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2018-01-18-lxc/</guid>
      <description>&lt;p&gt;Born in 2008, &lt;a href=&#34;https://linuxcontainers.org&#34;&gt;LXC&lt;/a&gt; (pronouced lexy) is a userspace interface for the Linux kernel containment features, that enables the creation and management of application containers.&lt;/p&gt;
&lt;p&gt;LXC leverages a number of kernel features to contain processes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kernel namespaces (ipc, uts, mount, pid, network and user)&lt;/li&gt;
&lt;li&gt;Apparmor and SELinux profiles&lt;/li&gt;
&lt;li&gt;Seccomp policies&lt;/li&gt;
&lt;li&gt;Chroots (using pivot_root)&lt;/li&gt;
&lt;li&gt;Kernel capabilities&lt;/li&gt;
&lt;li&gt;CGroups (control groups)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LXC containers are often considered as something in between a chroot and a full blown VM. The goal of LXC is to create an environment as close as possible to a standard Linux installation, without the need for a separate kernel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ansible</title>
      <link>https://www.bencode.io/posts/ansible/</link>
      <pubDate>Sun, 31 Dec 2017 18:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/ansible/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications. Automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;With Ansible and its amazing &lt;a href=&#34;http://docs.ansible.com/ansible/latest/modules/modules_by_category.html&#34;&gt;module&lt;/a&gt; ecosystem, you describe &lt;em&gt;what&lt;/em&gt; needs to be accomplished (i.e. declarative), rather than describing &lt;em&gt;how&lt;/em&gt; to accomplish each step (i.e. imperative).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vagrant</title>
      <link>https://www.bencode.io/posts/2017-12-30-vagrant/</link>
      <pubDate>Sat, 30 Dec 2017 20:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2017-12-30-vagrant/</guid>
      <description>&lt;p&gt;When something becomes messy in the software industry, we have the habit of tucking the problems away behind abstractions. To me Vagrant is simply an abstraction layer for working with a range of hypervisors (libvirt, VirtualBox, VMWare, Hyper-V, Docker and more), in a reliable and consistent manner.&lt;/p&gt;
&lt;p&gt;By articulating VM&amp;rsquo;s as a simple text based (Ruby) configuration file, a &lt;code&gt;Vagrantfile&lt;/code&gt;, achieve greater simplicity, portability across systems, and consistency which could theoretically be used with any virtual environment running on top of any other system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Storage and File Systems</title>
      <link>https://www.bencode.io/posts/2017-06-12-linux-storage/</link>
      <pubDate>Mon, 12 Jun 2017 20:59:20 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2017-06-12-linux-storage/</guid>
      <description>&lt;h1 id=&#34;partitioning&#34;&gt;Partitioning&lt;/h1&gt;
&lt;p&gt;Two popular partition schemes are used in the wild, MBR and GPT.&lt;/p&gt;
&lt;h3 id=&#34;mbr&#34;&gt;MBR&lt;/h3&gt;
&lt;p&gt;MBR, or Master Boot Record, often associated with BIOS, was introduced in 1983 with IBM PC DOS 2.0, is a special boot sector located at the beginning of a drive. This sector contains a boot loader (e.g GRUB), and details about the logical partitions. MBR supports drives upto 2TiB, and up to 4 primary partitions.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x9228f9b7.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition&#39;s system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +500M
Partition 1 of type Linux and of size 500 MiB is set

Command (m for help): l
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 &amp;lt;32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext&#39;d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 &amp;lt;3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 83
Changed type of partition &#39;Linux&#39; to &#39;Linux&#39;

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The partition is now available as a block device, below we now see &lt;code&gt;/dev/vda1&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>systemd</title>
      <link>https://www.bencode.io/posts/2017-05-20-systemd/</link>
      <pubDate>Sat, 20 May 2017 20:52:20 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2017-05-20-systemd/</guid>
      <description>&lt;h2 id=&#34;cheatsheet&#34;&gt;Cheatsheet&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;==========================================          ==========================================
             INFORMATION                                         LOGS                         
==========================================          ==========================================
                                                                                              
systemctl                                           journalctl                                
    list-dependencies                                   -u &amp;lt;name&amp;gt;  by service                 
    list-sockets                                        -f         follow live log            
    list-jobs                                           -k         kernel messages            
    list-unit-files                                     -k         kernel messages            
    list-units                                          -r         reverse (newest first)     
    get-default                                         -o json    format output              
    --type=service --all                                -b -1      from previous boot         
                                                        -n 10      limit output lines (tail)  
==========================================              -S,--since e.g &amp;quot;2012-10-30 18:17:16&amp;quot;  
             SERVICES                                   -U,--until e.g. &amp;quot;10 min ago&amp;quot;          
==========================================                                                    
                                                                                              
systemctl                                           ==========================================
    stop &amp;lt;name&amp;gt;                                                  SYSTEM STATES                
    start &amp;lt;name&amp;gt;                                    ==========================================
    restart &amp;lt;name&amp;gt;                                                                            
    reload &amp;lt;name&amp;gt;                                   systemctl                                 
    status &amp;lt;name&amp;gt;                                       reboot       reboot.target            
    enable &amp;lt;name&amp;gt;                                       poweroff     poweroff.target          
    disable &amp;lt;name&amp;gt;                                      emergency    emergency.target         
    show &amp;lt;name&amp;gt;                                         default      default.target           
    -H &amp;lt;host&amp;gt; status network                                                                  
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Red Hat Certified System Administrator 8 (RHCSA)</title>
      <link>https://www.bencode.io/posts/rhcsa/</link>
      <pubDate>Wed, 03 May 2017 20:51:43 +0000</pubDate>
      <guid>https://www.bencode.io/posts/rhcsa/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a software engineer not a sysadmin. In fact I know I&amp;rsquo;m a bad one. The RHCSA is a rote, mechanical process. It did force me to discover discover several gaps in my GNU/Linux knowledge so overall happy about that.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;RHCSA badge&#34; loading=&#34;lazy&#34; src=&#34;https://www.bencode.io/images/4UNONHPY4EHDU5PWQH6LGPCESQAEQU3CUPSQX2KSDXT6RW46LQ3T7ULZ55KZZ56SKO7EQ3ETTLYZQ4U5NQYTCNA62RUWOCM34WWBUYQ=.png&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#essential-tools&#34;&gt;Essential Tools&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#documentation&#34;&gt;Documentation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#man&#34;&gt;man&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#usrsharedoc&#34;&gt;/usr/share/doc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rpm-bundled-documentation&#34;&gt;RPM bundled documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#general-searching-techniques&#34;&gt;General Searching Techniques&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#shell-history&#34;&gt;Shell history&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#globbing&#34;&gt;Globbing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#io-redirection-and-pipes&#34;&gt;I/O Redirection and Pipes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#essential-file-management&#34;&gt;Essential File Management&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#linux-file-system-layout&#34;&gt;Linux file system layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#finding-files&#34;&gt;Finding Files&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#locate&#34;&gt;locate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#find&#34;&gt;find&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#archiving-and-compression-with-tar&#34;&gt;Archiving and compression with tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#hard-and-soft-links&#34;&gt;Hard and Soft Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#working-with-text&#34;&gt;Working with text&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#regular-expressions&#34;&gt;Regular expressions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#grep&#34;&gt;grep&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sed-and-awk&#34;&gt;sed and awk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#connecting-a-linux-host&#34;&gt;Connecting a Linux host&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#consoles-terminals-and-ttys&#34;&gt;Consoles Terminals and TTYs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#switch-users-su&#34;&gt;Switch Users (su)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sudo&#34;&gt;sudo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ssh&#34;&gt;SSH&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-users-and-groups&#34;&gt;Managing users and groups&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#creating-users&#34;&gt;Creating users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#user-properties&#34;&gt;User properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#user-configuration-files&#34;&gt;User configuration files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-and-managing-groups&#34;&gt;Creating and managing groups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-password-properties&#34;&gt;Managing password properties&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-permissions&#34;&gt;Managing Permissions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#changing-file-ownership&#34;&gt;Changing file ownership&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-basic-permissions&#34;&gt;Managing basic permissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#understanding-umask-user-mask&#34;&gt;Understanding umask (user mask)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#special-permissions&#34;&gt;Special permissions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#suid&#34;&gt;suid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sgid&#34;&gt;sgid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sticky-bit&#34;&gt;Sticky bit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#understanding-acls&#34;&gt;Understanding ACLs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuring-networking&#34;&gt;Configuring Networking&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#network-device-naming&#34;&gt;Network device naming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-runtime-network-configuration-with-ip&#34;&gt;Managing runtime network configuration with ip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#storing-network-configuration-persistently&#34;&gt;Storing network configuration persistently&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#nmcli&#34;&gt;nmcli&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#routing-and-dns&#34;&gt;Routing and DNS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-processes&#34;&gt;Managing Processes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#shell-jobs&#34;&gt;Shell jobs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ps&#34;&gt;ps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#memory-usage&#34;&gt;Memory usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cpu-load&#34;&gt;CPU load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#system-activity-with-top&#34;&gt;System activity with top&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sending-signals-to-processes&#34;&gt;Sending signals to processes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#priority-and-niceness&#34;&gt;Priority and niceness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tuned-profiles&#34;&gt;tuned profiles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-software&#34;&gt;Managing Software&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#rpm-and-yum&#34;&gt;RPM and yum&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#rpm-queries&#34;&gt;rpm queries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#yum-groups&#34;&gt;yum Groups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#repositories&#34;&gt;Repositories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#modules-and-application-streams&#34;&gt;Modules and Application Streams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#red-hat-subscription-manager&#34;&gt;Red Hat Subscription Manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#systemd&#34;&gt;Systemd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#scheduling-tasks&#34;&gt;Scheduling Tasks&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#cron&#34;&gt;cron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#at&#34;&gt;at&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#systemd-timers&#34;&gt;systemd Timers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tmpfilesd&#34;&gt;tmpfiles.d&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#logging&#34;&gt;Logging&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#rsyslog&#34;&gt;Rsyslog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#systemd-journal&#34;&gt;Systemd Journal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#logrotate&#34;&gt;Logrotate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-storage&#34;&gt;Managing Storage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#disk-layout&#34;&gt;Disk layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-partitions&#34;&gt;Creating partitions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#gpt-partitions-with-parted&#34;&gt;GPT partitions with parted&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mbr-partitions-with-fdisk&#34;&gt;MBR partitions with fdisk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#file-system-choices&#34;&gt;File System Choices&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#xfs&#34;&gt;XFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ext4&#34;&gt;Ext4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mounting&#34;&gt;Mounting&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#persistent-block-device-naming&#34;&gt;Persistent block device naming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#systemd-mounts&#34;&gt;systemd mounts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#swap&#34;&gt;Swap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#advanced-storage&#34;&gt;Advanced Storage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#lvm&#34;&gt;LVM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#stratis&#34;&gt;Stratis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#vdo&#34;&gt;VDO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#luks&#34;&gt;LUKS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#advanced-tasks&#34;&gt;Advanced tasks&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#kernel-management&#34;&gt;Kernel management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#boot-procedure&#34;&gt;Boot procedure&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#grub&#34;&gt;GRUB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#systemd-targets&#34;&gt;Systemd targets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#essential-troubleshooting&#34;&gt;Essential troubleshooting&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#changing-root-password&#34;&gt;Changing root password&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#managing-network-services&#34;&gt;Managing network services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#ssh-1&#34;&gt;SSH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#httpd-apache&#34;&gt;httpd (apache)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#selinux&#34;&gt;SELinux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#context-labels&#34;&gt;Context Labels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#booleans&#34;&gt;Booleans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#file-context-labels&#34;&gt;File context labels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#selinux-logs&#34;&gt;SELinux logs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#selinux-troubleshooting&#34;&gt;SELinux troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#firewalling-with-firewalld&#34;&gt;Firewalling with firewalld&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#automating-installs&#34;&gt;Automating installs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#time-services&#34;&gt;Time services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#remote-file-systems&#34;&gt;Remote file systems&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#nfs&#34;&gt;NFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cifs-with-samba&#34;&gt;CIFS with Samba&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#automount&#34;&gt;Automount&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#containers&#34;&gt;Containers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#autostarting-non-root-containers-with-systemd-user-units&#34;&gt;Autostarting non-root containers with systemd user units&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dont-forget-list&#34;&gt;Dont forget list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#exam-shakedown&#34;&gt;Exam shakedown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#linux-gems&#34;&gt;Linux Gems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;essential-tools&#34;&gt;Essential Tools&lt;/h1&gt;
&lt;h2 id=&#34;documentation&#34;&gt;Documentation&lt;/h2&gt;
&lt;p&gt;The ability to understand a program using local documentation resources; man, info, /usr/share/doc, within the RPM package.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux Quick Reference</title>
      <link>https://www.bencode.io/posts/2017-04-17-tmux-cheatsheet/</link>
      <pubDate>Mon, 17 Apr 2017 20:17:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2017-04-17-tmux-cheatsheet/</guid>
      <description>&lt;p&gt;Kudos to &lt;a href=&#34;https://gist.github.com/afair&#34;&gt;afair&lt;/a&gt; for putting together this neat &lt;a href=&#34;https://gist.github.com/afair/3489752&#34;&gt;Tmux Cheat Sheet&lt;/a&gt;, which I&amp;rsquo;m addicted to at the moment.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;==========================================          ==========================================
             TMUX COMMAND                                        WINDOW (TAB)
==========================================          ==========================================
                                                                                              
List    tmux ls                                     List         ^b w
New          -s &amp;lt;session&amp;gt;                           Create       ^b c
Attach       att -t &amp;lt;session&amp;gt;                       Rename       ^b , &amp;lt;name&amp;gt;
Rename       rename-session -t &amp;lt;old&amp;gt; &amp;lt;new&amp;gt;          Last         ^b l               (lower-L)
Kill         kill-session -t &amp;lt;session&amp;gt;              Close        ^b &amp;amp;
                                                                                              
==========================================          Goto #       ^b &amp;lt;0-9&amp;gt;
             CONTROLS                               Next         ^b n
==========================================          Previous     ^b p
                                                    Choose       ^b w &amp;lt;name&amp;gt;
Detach       ^b d
List         ^b =                                   ==========================================
Buffer       ^b &amp;lt;PgUpDn&amp;gt;                                         PANE (SPLIT WINDOW)
Command      ^b : &amp;lt;command&amp;gt;                         ==========================================
                                                                                              
Copy         ^b [ ... &amp;lt;space&amp;gt; ... &amp;lt;enter&amp;gt;           Show #       ^b q
 Moving         vim/emacs key bindings              Split Horiz  ^b &amp;quot;                --------
 Start          &amp;lt;space&amp;gt;                             Split Vert   ^b %                   |
 Copy           &amp;lt;enter&amp;gt;                             Pane-&amp;gt;Window ^b !
Paste        ^b ]                                   Kill         ^b x
                                                                                              
==========================================          Reorganize   ^b &amp;lt;space&amp;gt;
             SESSION (Set of Windows)               Expand       ^b &amp;lt;alt&amp;gt;&amp;lt;arrow&amp;gt;
==========================================          Resize       ^b ^&amp;lt;arrow&amp;gt;
                                                    Resize x n   ^b &amp;lt;n&amp;gt; &amp;lt;arrow&amp;gt;
New          ^b :new     ^b :new -s &amp;lt;name&amp;gt;
Rename       ^b $                                   Select       ^b &amp;lt;arrow&amp;gt;
List         ^b s                                   Previous     ^b {
Next         ^b (                                   Next         ^b }
Previous     ^b )                                   Switch       ^b o                  other
                                                    Swap         ^b ^o
                                                    Last         ^b ;
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Linux cheatsheet</title>
      <link>https://www.bencode.io/posts/linuxcheat/</link>
      <pubDate>Sat, 18 Feb 2017 21:06:01 +1100</pubDate>
      <guid>https://www.bencode.io/posts/linuxcheat/</guid>
      <description>&lt;p&gt;A survey of the standard and high quality programs that feature in most Unix based distributions, with the GNU variants being my favourite. The &lt;code&gt;bash&lt;/code&gt; shell is a great way of interfacing and orchestrating these beautifully crafted programs. As a starting point, I&amp;rsquo;ve listed each program offered by the &lt;a href=&#34;https://www.gnu.org/software/coreutils/coreutils.html&#34;&gt;GNU Core Utilities&lt;/a&gt; and &lt;a href=&#34;https://en.wikipedia.org/wiki/Util-linux&#34;&gt;util-linux&lt;/a&gt; umbrella projects; considered the de facto standard on most distributions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#quick-reference&#34;&gt;Quick Reference&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#general&#34;&gt;General&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#system-information&#34;&gt;System Information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#directory-navigation&#34;&gt;Directory Navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#file-searching&#34;&gt;File Searching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#archiving-and-compression&#34;&gt;Archiving and Compression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#networking&#34;&gt;Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#text-manipulation&#34;&gt;Text Manipulation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#set-operations&#34;&gt;Set Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#windows-networking&#34;&gt;Windows Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#monitoring-and-debugging&#34;&gt;Monitoring and Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#disk-space&#34;&gt;Disk Space&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cddvd&#34;&gt;CD/DVD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#locales&#34;&gt;Locales&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dates-and-times&#34;&gt;Dates and Times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#images&#34;&gt;Images&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#finding-documentation&#34;&gt;Finding Documentation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#manual-pages&#34;&gt;Manual Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#appropriate-commands&#34;&gt;Appropriate Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#whatis&#34;&gt;whatis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#gnu-info-entry&#34;&gt;GNU Info Entry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#usrsharedoc-documentation&#34;&gt;/usr/share/doc Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rpm-bundled-documentation&#34;&gt;RPM bundled documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#examples&#34;&gt;Examples&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#grep&#34;&gt;grep&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cut&#34;&gt;cut&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sort&#34;&gt;sort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tr&#34;&gt;tr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#wc&#34;&gt;wc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tar&#34;&gt;tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rsync&#34;&gt;rsync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sed&#34;&gt;sed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#awk&#34;&gt;awk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ssh-secure-shell&#34;&gt;ssh (Secure Shell)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#wget&#34;&gt;wget&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bfl-of-common-programs&#34;&gt;BFL of Common Programs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;quick-reference&#34;&gt;Quick Reference&lt;/h1&gt;
&lt;h2 id=&#34;general&#34;&gt;General&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;apropos compress&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show commands that relate to a keyword&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;man -t ascii | ps2pdf - &amp;gt; ascii.pdf&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Make a PDF of a man page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;which command&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Full path of command&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;time command&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show execution time of a given command&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;time cat&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Start stopwatch, ^d to stop&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cat file.txt | xclip -selection clipboard&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Copy to clipboard&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;nohup ./script.sh &amp;amp;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Keep program running after leaving SSH session (see bash post if input needed)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;timeout 20s ./script.sh&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Run script.sh for 20 seconds only&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;while true; do timeout 30m ./script.sh; done&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Restart a program every 30 minutes&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;system-information&#34;&gt;System Information&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;uname -a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show kernel version and system architecture&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;head -n1 /etc/issue&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show name and version of distribution&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cat /proc/partitions&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show all partitions registered on the system&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;grep MemTotal /proc/meminfo&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show RAM total seen by the system&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;grep &amp;quot;model name&amp;quot; /proc/cpuinfo&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show CPU(s) info&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;lspci -tv&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show PCI info&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;lsusb -tv&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show USB info&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mount | column -t&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List mounted filesystems on the system (and align output)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;grep -F capacity: /proc/acpi/battery/BAT0/info&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show state of cells in laptop battery&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;dmidecode -q | less&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Display SMBIOS/DMI information&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;smartctl -A /dev/sda | grep Power_On_Hours&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;How long has this disk (system) been powered on in total&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;hdparm -i /dev/sda&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show info about disk sda&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;hdparm -tT /dev/sda&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Do a read speed test on disk sda&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;badblocks -s /dev/sda&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Test for unreadable blocks on disk sda&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;directory-navigation&#34;&gt;Directory Navigation&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cd -&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Go previous directory&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Go home&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;(cd dir123 &amp;amp;&amp;amp; pwd)&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Jump into a directory, run a command there, and return to origin&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pushd .&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Put cwd on stack, so you can &lt;code&gt;popd&lt;/code&gt; back to it&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;file-searching&#34;&gt;File Searching&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;alias l=&#39;ls -l --color=auto&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Quick listing&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ls -lrt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List long by date&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ls -lS&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List long by size&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ls /usr/bin | pr -T9 -W$COLUMNS&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Print in 9 columns to width of terminal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -name &#39;*.[ch] | xargs grep -E &#39;foo&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Search for &amp;lsquo;foo&amp;rsquo; in all &lt;code&gt;.c&lt;/code&gt; and &lt;code&gt;.h&lt;/code&gt; files in cwd and below&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -type f -print0 | xargs -r0 grep -F &#39;example&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Search all regular files for &amp;rsquo;example&amp;rsquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -maxdepth 1 -type f | xargs grep -F &#39;example&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;As above, but don&amp;rsquo;t recurse&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -maxdepth 1 -type d | while read dir; do echo $dir; echo somecmd; done&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Wash each result over multiple commands&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -type f ! -perm -444&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Find files not readable by all&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find -type d ! -perm -111&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Find dirs not accessable by all&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find . -size 30c&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;By file size (30 bytes)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;find . -name &amp;quot;*.gz&amp;quot; -delete&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Delete all gz files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locate -r &#39;file[^/]*\.txt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Search cached index for names&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;look &amp;lt;keyword&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Search English dictionary with a given prefix keyword&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;grep --color reference /usr/share/dict/words&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Highlight occurances of regex against English dictionary&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;readlink -f file.txt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Full path of file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;namei -l /bin/bash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Drills through directories and links showing permission mask all the way down&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;archiving-and-compression&#34;&gt;Archiving and Compression&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;gpg -c file&lt;/td&gt;
          &lt;td&gt;Encrypt file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gpg file.gpg&lt;/td&gt;
          &lt;td&gt;Decrypt file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tar -c dir/ | bzip2 &amp;gt; dir.tar.bz2&lt;/td&gt;
          &lt;td&gt;Make compressed archive of dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;bzip2 -dc dir.tar.bz2 | tar -x&lt;/td&gt;
          &lt;td&gt;Extract archive&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;tar -c dir/ | gzip | gpg -c | ssh user@remote &amp;lsquo;dd of=dir.tar.gz.gpg&amp;rsquo;&lt;/td&gt;
          &lt;td&gt;Make encrypted archive of &lt;code&gt;dir&lt;/code&gt; on remote machine&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;find dir/ -name &amp;lsquo;*.txt&amp;rsquo; | tar -c &amp;ndash;files-from=- | bzip2 &amp;gt; dir_txt.tar.bz2&lt;/td&gt;
          &lt;td&gt;Make archive of subset of &lt;code&gt;dir&lt;/code&gt; and below&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;find dir/ -name &amp;lsquo;*.txt&amp;rsquo; | xargs cp -a &amp;ndash;target-directory=dir_txt/ &amp;ndash;parents&lt;/td&gt;
          &lt;td&gt;Make copy of subset of &lt;code&gt;dir&lt;/code&gt; and below&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;( tar -c /dir/to/copy ) | ( cd /where/to/ &amp;amp;&amp;amp; tar -x -p )&lt;/td&gt;
          &lt;td&gt;Copy (with permissions) copy/ dir to /where/to/ dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;( cd /dir/to/copy &amp;amp;&amp;amp; tar -c . ) | ( cd /where/to/ &amp;amp;&amp;amp; tar -x -p )&lt;/td&gt;
          &lt;td&gt;Copy (with permissions) contents of copy/ dir to /where/to/&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;( tar -c /dir/to/copy ) | ssh -C user@remote &amp;lsquo;cd /where/to/ &amp;amp;&amp;amp; tar -x -p&amp;rsquo;&lt;/td&gt;
          &lt;td&gt;Copy (with permissions) copy/ dir to remote:/where/to/ dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;dd bs=1M if=/dev/sda | gzip | ssh user@remote &amp;lsquo;dd of=sda.gz&amp;rsquo;&lt;/td&gt;
          &lt;td&gt;Backup harddisk to remote machine&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;networking&#34;&gt;Networking&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ethtool eth0&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show status of ethernet interface eth0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ethtool --change eth0 autoneg off speed 100 duplex full&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Manually set ethernet interface speed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;iw dev wlan0 link&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show link status of wireless interface wlan0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;iw dev wlan0 set bitrates legacy-2.4 1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Manually set wireless interface speed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;iw dev wlan0 scan&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List wireless networks in range&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip link show&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List network interfaces&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip link set dev eth0 name wan&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Rename interface eth0 to wan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip link set dev eth0 up&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Bring interface eth0 up (or down)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip addr show&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List addresses for interfaces&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip addr add 1.2.3.4/24 brd + dev eth0&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Add (or del) ip and mask (255.255.255.0)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip route show&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List routing table&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ip route add default via 1.2.3.254&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Set default gateway to 1.2.3.254&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ss -tupl&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List internet services on a system&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ss -tup&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List active connections to/from system&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;host bencode.net&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Lookup DNS ip address for name or vice versa&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;hostname -i&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Lookup local ip address (equivalent to host &lt;code&gt;hostname&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;whois bencode.net&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Lookup whois info for hostname or ip address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mtr google.com&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Nice trace route&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;text-manipulation&#34;&gt;Text Manipulation&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed &#39;s/string1/string2/g&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Replace string1 with string2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed &#39;s/\(.*\)1/\12/g&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Modify anystring1 to anystring2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed &#39;/^ *#/d; /^ *$/d&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Remove comments and blank lines&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed &#39;:a; /\\$/N; s/\\\n//; ta&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Concatenate lines with trailing \&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed &#39;s/[ \t]*$//&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Remove trailing spaces from lines&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;seq 10 | sed &amp;quot;s/^/ /; s/ *\(.\{7,\}\)/\1/&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Right align numbers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;seq 10 | sed p | paste - -&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Duplicate a column&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed -n &#39;1000{p;q}&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Print 1000th line&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed -n &#39;10,20p;20q&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Print lines 10 to 20&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed -n &#39;s/.*&amp;lt;title&amp;gt;\(.*\)&amp;lt;\/title&amp;gt;.*/\1/ip;T;q&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Extract title from HTML web page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sed -i 42d ~/.ssh/known_hosts&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Delete a particular line&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort -t. -k1,1n -k2,2n -k3,3n -k4,4n&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Sort IPV4 ip addresses&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;echo &#39;Test&#39; | tr &#39;[:lower:]&#39; &#39;[:upper:]&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Case conversion&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tr -dc &#39;[:print:]&#39; &amp;lt; /dev/urandom&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Filter non printable characters&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tr -s &#39;[:blank:]&#39; &#39;\t&#39; &amp;lt;/proc/diskstats | cut -f4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;cut fields separated by blanks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;history | wc -l&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Count lines&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;seq 10 | paste -s -d &#39; &#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Concatenate and separate line items to a single line&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort -u file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Union of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file2 | uniq -d&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Intersection of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file1 file2 | uniq -u&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Difference of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file2 | uniq -u&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Symmetric Difference of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -a1 -a2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Union of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Intersection of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -v2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Difference of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -v1 -v2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Symmetric Difference of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;shuf file1&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Randomise lines in a file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;comm file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Combine lines from two sorted files&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;set-operations&#34;&gt;Set Operations&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort -u file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Union of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file2 | uniq -d&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Intersection of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file1 file2 | uniq -u&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Difference of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;sort file1 file2 | uniq -u&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Symmetric Difference of unsorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -a1 -a2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Union of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Intersection of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -v2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Difference of sorted files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;join -t&#39;\0&#39; -v1 -v2 file1 file2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Symmetric Difference of sorted files&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;windows-networking&#34;&gt;Windows Networking&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;smbtree&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Find windows machines. See also findsmb&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;nmblookup -A 1.2.3.4&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Find the windows (netbios) name associated with ip address&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;smbclient -L windows_box&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List shares on windows machine or samba server&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Mount a windows share&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;echo &#39;message&#39; | smbclient -M windows_box&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Send popup to windows machine&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;monitoring-and-debugging&#34;&gt;Monitoring and Debugging&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tail -f /var/log/messages&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Monitor messages in a log file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;strace -c ls &amp;gt;/dev/null&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Summarise/profile system calls made by command&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;strace -f -e open ls &amp;gt;/dev/null&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List system calls made by command&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;strace -f -e trace=write -e write=1,2 ls &amp;gt;/dev/null&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Monitor what&amp;rsquo;s written to stdout and stderr&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ltrace -f -e getenv ls &amp;gt;/dev/null&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List library calls made by command&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;lsof -p $$&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List paths that process id has open&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;lsof ~&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List processes that have specified path open&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;tcpdump not port 22&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show network traffic except ssh. See also tcpdump_not_me&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ps -e -o pid,args --forest&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List processes in a hierarchy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed &#39;/^ 0.0 /d&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List processes by % cpu usage&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List processes by mem (KB) usage. See also ps_mem.py&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ps -C firefox-bin -L -o pid,tid,pcpu,state&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List all threads for a particular process&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ps -p 1,$$ -o etime=&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List elapsed wall time for particular process IDs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;watch -n.1 pstree -Uacp $$&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Display a changing process subtree&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;last reboot&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show system reboot history&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;free -m&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show amount of (remaining) RAM (-m displays in MB)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;watch -n.1 &#39;cat /proc/interrupts&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Watch changeable data continuously&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;udevadm monitor&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Monitor udev events to help configure rules&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ulimit -Sv 1000&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Limit memory usage for following commands to 1MiB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;fuser -k 8000/tcp&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Kill the program using port 8000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;lsof -p 123,789 -u 1234,abe&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;All files used by PID 123 or 789, or by user abe or UID 1234&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;kill -HUP $(lsof -t /home/foo/file)&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;SIGHUP the processes using /home/foo/file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cat /dev/urandom | base64 | pv -lbri2 &amp;gt; /dev/null&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Monitor progress of output&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;disk-space&#34;&gt;Disk Space&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ls -lSr&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show files by size, biggest last&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;du -s * | sort -k1,1rn | head&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show top disk uses in current dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;du -hs /home/* | sort -k1,1h&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Sort paths by easy to interpret disk usage&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show free space on mounted filesystems&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;df -i&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show free inodes on mounted filesystems&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;fdisk -l&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Show disks partitions sizes and types (run as root)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;rpm -q -a --qf &#39;%10{SIZE}\t%{NAME}\n&#39; | sort -k1,1n&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List all packages by installed size (Bytes) on rpm distros&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;dpkg-query -W -f=&#39;${Installed-Size;10}\t${Package}\n&#39; | sort -k1,1n&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List all packages by installed size (KBytes) on deb distros&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;dd bs=1 seek=2TB if=/dev/null of=ext3.test&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Create a large test file (taking no space)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;&amp;gt; file&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;truncate data of file or create an empty file&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;cddvd&#34;&gt;CD/DVD&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gzip &amp;lt; /dev/cdrom &amp;gt; cdrom.iso.gz&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Save copy of data cdrom&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mkisofs -V LABEL -r dir | gzip &amp;gt; cdrom.iso.gz&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Create cdrom image from contents of dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mount -o loop cdrom.iso /mnt/dir&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Mount the cdrom image at /mnt/dir (read only)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;wodim dev=/dev/cdrom blank=fast&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Clear a CDRW&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gzip -dc cdrom.iso.gz | wodim -tao dev=/dev/cdrom -v -data -&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Burn cdrom image&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cdparanoia -B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Rip audio tracks from CD to wav files in current dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;wodim -v dev=/dev/sr0 -audio -pad *.wav&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Make audio CD from all wavs in current dir&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;oggenc --tracknum=$track track.cdda.wav -o track.ogg&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Make ogg file from wav file&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w &amp;quot;$(basename $i .mp3).wav&amp;quot; $i; done&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Decode mp3 files to 16-bit, stereo, 44.1 kHz waves&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;for i in *.mp3; do lame --decode $i ``basename $i .mp3``.wav; done&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Decode mp3 files to 16-bit, stereo, 44.1 kHz waves&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;normalize -m *.wav&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Normalise levels in wavs, mix mode is loud as possible&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;locales&#34;&gt;Locales&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;printf &amp;quot;%&#39;d\n&amp;quot; 1234&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Print number with thousands grouping appropriate to locale&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BLOCK_SIZE=\&#39;1 ls -l&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Use locale thousands grouping in ls. See also l&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;echo &amp;quot;I live in$(locale territory)&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Extract info from locale database&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;LANG=en_IE.utf8 locale int_prefix&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Lookup locale info for specific country. See also ccodes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;locale -kc $(locale | sed -n &#39;s/\(LC_.\{4,\}\)=.*/\1/p&#39;) | less&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;List fields available in locale database&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;dates-and-times&#34;&gt;Dates and Times&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Command&lt;/th&gt;
          &lt;th&gt;What is does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cal -3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Display a calendar&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;cal 9 1752&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Display a calendar for a particular month year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;date -d fri&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;What date is it this friday&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;[ $(date -d &#39;12:00 today +1 day&#39; +%d) = &#39;01&#39; ] || exit&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;exit a script unless it&amp;rsquo;s the last day of the month&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;date --date=&#39;25 Dec&#39; +%A&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;What day does xmas fall on, this year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;date --date=&#39;@2147483647&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Convert seconds since the epoch (1970-01-01 UTC) to date&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;TZ=&#39;America/Los_Angeles&#39; date&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;What time is it on west coast of US (use tzselect to find TZ)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;date --date=&#39;TZ=&amp;quot;America/Los_Angeles&amp;quot; 09:00 next Fri&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;What&amp;rsquo;s the local time for 9AM next Friday on west coast US&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;images&#34;&gt;Images&lt;/h2&gt;
&lt;p&gt;Most of these rely on the imagemagick cli programs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Ops Guide</title>
      <link>https://www.bencode.io/posts/2016-08-01-linux-ops/</link>
      <pubDate>Mon, 01 Aug 2016 20:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-08-01-linux-ops/</guid>
      <description>&lt;p&gt;Here I aim to cover a set of common administration tasks. Things like, the hostname, system logs, what users are currently logged in, physical devices that are connected, logical volumes, file system and inode allocation, attached network interfaces and their addressing, processes and daemons currently running, kernel verison, local users and groups, installed packages, remote mounts, network shares, system uptime, bread and butter OS stats (CPU, IO, network, memory).&lt;/p&gt;
&lt;h1 id=&#34;booting&#34;&gt;Booting&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;shutdown -r +5 System going down for a reboot  #wall broadcast msg
shutdown -c  #cancel reboot
shutdown -r 00:00  #schedule for midnight
shutdown -h +5  #halt system in 5 mins
shutdown -h now
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternatively, just use systemd:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure SHell (SSH)</title>
      <link>https://www.bencode.io/posts/2016-08-01-linux-ssh/</link>
      <pubDate>Mon, 01 Aug 2016 20:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-08-01-linux-ssh/</guid>
      <description>&lt;p&gt;The OpenSSH secure shell, &lt;code&gt;ssh&lt;/code&gt;, provides the necessary client/server security plumbing, to allow shell execution on a remote machine. &lt;code&gt;ssh&lt;/code&gt; can be used interactively, as per a normal shell, or to run one off commands, for example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ssh ben@wookie.local uname -a
ben@wookie.local&#39;s password:
Linux wookie.local 3.14-1-686-pae #1 SMP Debian 3.14.7-1 (2014-06-16) i686 GNU/Linux
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hot tip: the &lt;code&gt;w&lt;/code&gt; command is gem for showing users currently logged in&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ w -f
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ben      tty2     :0               17:05   10:36m 16:53  50.97s /usr/bin/evince /home/ben/podcasts/redhat/Docs/RH124-RHEL7.pdf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;User &lt;code&gt;ben&lt;/code&gt; logged into virtual console 2 (tty2) via a graphical login (:0) at about 5PM. OK, lets access a couple of the virtual terminals:&lt;/p&gt;</description>
    </item>
    <item>
      <title>bash</title>
      <link>https://www.bencode.io/posts/2016-05-01-bash/</link>
      <pubDate>Sun, 01 May 2016 01:01:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-05-01-bash/</guid>
      <description>&lt;p&gt;Bash is a Unix shell written by Brian Fox in 1989 for the GNU Project as a free replacement for the &lt;a href=&#34;https://en.wikipedia.org/wiki/Bourne_shell&#34;&gt;Bourne shell&lt;/a&gt;. To this day, Bash remains one of the most powerful and ubiquitous scripting tools on the planet.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Brian Fox the creator of Bash&#34; loading=&#34;lazy&#34; src=&#34;https://www.bencode.io/images/bfox.jpg&#34; title=&#34;Brian Fox the creator of Bash&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;contents&#34;&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#useful-shortcuts&#34;&gt;Useful Shortcuts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#initialisation&#34;&gt;Initialisation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#shell-grammar&#34;&gt;Shell Grammar&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#variables&#34;&gt;Variables&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#local-variables&#34;&gt;Local variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#environment-variables&#34;&gt;Environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#positional-arguments&#34;&gt;Positional arguments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#expansions&#34;&gt;Expansions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#brace-expansion&#34;&gt;Brace expansion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#command-substitution&#34;&gt;Command substitution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#arithmetic-expansion&#34;&gt;Arithmetic expansion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#double-and-single-quotes&#34;&gt;Double and single quotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#stream-redirection&#34;&gt;Stream Redirection&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#here-documents&#34;&gt;here documents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#arrays&#34;&gt;Arrays&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conditions&#34;&gt;Conditions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#if-statements&#34;&gt;if statements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#case-statements&#34;&gt;case statements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#loops&#34;&gt;Loops&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#for-loops&#34;&gt;For Loops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#select-loops&#34;&gt;Select Loops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#while-loops&#34;&gt;While Loops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#until-loops&#34;&gt;Until Loops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#functions&#34;&gt;Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#coprocesses&#34;&gt;Coprocesses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#builtins&#34;&gt;Builtins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bash-recipes&#34;&gt;Bash Recipes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#top-6-largest-things-in-the-current-directory&#34;&gt;Top 6 largest things in the current directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#display-the-23rd-line-of-etcpasswd&#34;&gt;Display the 23rd line of /etc/passwd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#filter-the-first-column-from-process-status&#34;&gt;Filter the first column from process status&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#delete-subversion-scrap-files&#34;&gt;Delete Subversion scrap files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#move-shell-scripts-and-mark-them-as-executable&#34;&gt;Move shell scripts and mark them as executable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pattern-matching&#34;&gt;Pattern matching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#scan-code-base-against-list-of-patterns&#34;&gt;Scan code base against list of patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rename-multiple-files&#34;&gt;Rename Multiple Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#run-a-command-every-time-a-file-is-modified&#34;&gt;Run a command every time a file is modified&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#keep-a-program-running-after-leaving-ssh-session&#34;&gt;Keep a program running after leaving SSH session&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#simple-menu-and-functions&#34;&gt;Simple menu and functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#complete-example&#34;&gt;Complete example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kudos to Denys Dovhan and his awesome &lt;a href=&#34;https://github.com/denysdovhan/Bash-handbook&#34;&gt;Bash handbook&lt;/a&gt;. The most digestable, and enjoyable method I&amp;rsquo;ve found to groking bash. &amp;lt;3&lt;/p&gt;</description>
    </item>
    <item>
      <title>thinkfan</title>
      <link>https://www.bencode.io/posts/2016-03-19-thinkfan/</link>
      <pubDate>Sat, 19 Mar 2016 17:39:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-03-19-thinkfan/</guid>
      <description>&lt;p&gt;I run Debian on a ThinkPad T420s. ThinkPad&amp;rsquo;s have a great Linux compatibility story, and the T420s is no exception. The cooling fan situation seemed in need of some attention though, with fans running at high RPM most of the time. Not only was this really noisy, hit the battery quite hard too.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href=&#34;http://thinkfan.sourceforge.net/&#34;&gt;thinkfan&lt;/a&gt;, a simple fan control program.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Works with any linux hwmon driver, especially with thinkpad_acpi. It is designed to eat as little CPU power as possible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>awk</title>
      <link>https://www.bencode.io/posts/2016-01-17-awk/</link>
      <pubDate>Sun, 17 Jan 2016 08:14:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-01-17-awk/</guid>
      <description>&lt;p&gt;After recently getting my hands dirty with the wonderful [sed]({% post_url 2015-09-15-sed %}), the time has come for me to step it up with awk.&lt;/p&gt;
&lt;p&gt;Incepted in 1977 at Bell Labs, &lt;strong&gt;AWK&lt;/strong&gt; is an interpreted programming language designed for text processing, and is a defacto part of most nix based distributions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The original version of UNIX awk was designed and implemented by Alfred Aho, Peter Weinberger, and Brian Kernighan (notice the first letter of their surnames together) of Bell Laboratories. Brian Kernighan continues to maintain and enhance it. Paul Rubin and Jay Fenlason, of the Free Software Foundation, wrote gawk, to be compatible with the original version of awk distributed in Seventh Edition UNIX.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNU Stream Editor (sed)</title>
      <link>https://www.bencode.io/posts/sed/</link>
      <pubDate>Tue, 15 Sep 2015 19:48:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/sed/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.gnu.org/software/sed/&#34;&gt;sed&lt;/a&gt; has rocked my world.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;sed (stream editor) isn&amp;rsquo;t an interactive text editor. Instead, it is used to filter text, i.e., it takes text input, performs some operation (or set of operations) on it, and outputs the modified text. sed is typically used for extracting part of a file using pattern matching or substituting multiple occurrences of a string within a file.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;contents&#34;&gt;Contents&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#BasicSyntax&#34;&gt;Basic Syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Howsedworks&#34;&gt;How sed works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Substitution&#34;&gt;Substitution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#AppendInsertandDelete&#34;&gt;Append, Insert and Delete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Multipleexpressions&#34;&gt;Multiple expressions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Remotewithssh&#34;&gt;Remote with ssh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Substitutiongrouping&#34;&gt;Substitution grouping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Numericalgrouping&#34;&gt;Numerical grouping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ExecutingCommands&#34;&gt;Executing Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sedwithVim&#34;&gt;sed with Vim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#Commands&#34;&gt;Commands&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h1 id=&#34;basic-syntax&#34;&gt;Basic syntax&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sed &#39; [RANGE] COMMANDS &#39; [INPUTFILE]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If no &lt;code&gt;INPUTFILE&lt;/code&gt; is specified, &lt;code&gt;sed&lt;/code&gt; filters the contents of standard input.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NeoMutt setup (2022 edition)</title>
      <link>https://www.bencode.io/posts/mutt/</link>
      <pubDate>Sat, 18 Aug 2012 21:03:40 +1000</pubDate>
      <guid>https://www.bencode.io/posts/mutt/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#intro&#34;&gt;Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#getting-started-with-mutt&#34;&gt;Getting started with mutt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#2022-setup&#34;&gt;2022 setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cron&#34;&gt;cron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#gpg-crypto&#34;&gt;GPG crypto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#address-book-integration&#34;&gt;Address book integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pam-gnupg&#34;&gt;pam-gnupg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;p&gt;If you haven&amp;rsquo;t heard of &lt;code&gt;mutt&lt;/code&gt; you&amp;rsquo;re missing out.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mutt is a small but very powerful text-based mail client for UNIX operating systems&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s a command line based mail reader (MUA). The &lt;a href=&#34;https://github.com/neomutt/neomutt&#34;&gt;neomutt&lt;/a&gt; project is a contemporary fork of the original &lt;code&gt;mutt&lt;/code&gt; with added features, patch sets and fixes.&lt;/p&gt;
&lt;p&gt;I started seriously using &lt;code&gt;mutt&lt;/code&gt; as my full-time mail client in 2012. I found its simplicity refreshing. It quickly became apparent how much useless baggage modern graphical mail clients (e.g., thunderbird, outlook, etc) actually bog you down with, not to mention the harrowing way they actually encode mail. Its taken me a long time to appreciate this:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
