{"id":269,"date":"2020-07-08T09:32:46","date_gmt":"2020-07-08T08:32:46","guid":{"rendered":"https:\/\/www.bowlerblue.com\/site\/?page_id=269"},"modified":"2024-09-20T09:26:51","modified_gmt":"2024-09-20T08:26:51","slug":"unix-tips","status":"publish","type":"page","link":"https:\/\/www.bowlerblue.com\/site\/unix-tips\/","title":{"rendered":"Unix Tips"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>In bash, to show the common lines between two files:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>comm -12 &lt;( sort file1 ) &lt;( sort file2 )<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Count the number of lines in a file:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>wc -l file<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Grep exclude lines containing a word or words:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -v \"word\" file\ngrep -v -e \"word1\" -e \"word2\" file<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Find files in a tree containing specific text:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -rnw '\/path\/to\/somewhere\/' -e 'pattern'<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Find the top 20 largest files in a directory (recursively) &#8211; ignoring &#8220;Permission denied&#8221;:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>du -a \/dir\/ 2&gt; \/dev\/null | sort -n -r | head -n 20<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Check if a port is listening (without telnet):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -zv &lt;ip&gt; &lt;port&gt;\nnc -zv &lt;ip&gt; &lt;port1&gt; &lt;port2&gt;\nnc -zv &lt;ip&gt; &lt;port&gt;-&lt;range&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Find a file (or pattern) recursively in a directory, ignoring &#8220;Permission denied&#8221;:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/dir -name \"*ogging.xml\" -print 2&gt;\/dev\/null\nfind \/dir -regex \"pattern\" 2&gt;\/dev\/null<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Run a specific command through SSH, and attach a pseudo-terminal:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh user@host -t command\n   -- e.g. command = \"bash\" to force run a specific shell, regardless of user default<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zip files into multiple fixed-size zip files, and re-join into single zip file:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>zip -s50m mzip.zip &lt;files&gt;\nzip -F mzip.zip --out single-file.zip<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Combine lines from multiple text files randomly:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sort -R file1.txt file2.txt file3.txt -o output.txt<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-269","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/pages\/269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/comments?post=269"}],"version-history":[{"count":9,"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/pages\/269\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/pages\/269\/revisions\/314"}],"wp:attachment":[{"href":"https:\/\/www.bowlerblue.com\/site\/wp-json\/wp\/v2\/media?parent=269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}