Skip to content

Instantly share code, notes, and snippets.

@hvnsweeting
Last active December 19, 2023 10:23
Show Gist options
  • Save hvnsweeting/6a2b6e6e83cb472e2de4d2790233ef3c to your computer and use it in GitHub Desktop.
Save hvnsweeting/6a2b6e6e83cb472e2de4d2790233ef3c to your computer and use it in GitHub Desktop.
Babashka over bash

Clojure on CLI

Get some basic syntax here https://learnxinyminutes.com/docs/clojure/

Do not write directly on CLI, fire up $EDITOR by pressing Ctrl X Ctrl E (or V if you use vi binding)

https://github.com/borkdude/babashka

Top 3 processes use the most real memory (rss)

 $ ps xau | sort -nrk6 | head -n3
gdm       1860  0.0  1.3 3925072 109088 tty1   Sl+  Thg 509   6:00 /usr/bin/gnome-shell
hvn       4628  0.1  0.4 837500 39272 ?        Ssl  Thg 522   3:11 /usr/lib/gnome-terminal/gnome-terminal-server
hvn       3091  0.3  0.4 438700 36184 tty2     Sl+  Thg 522  10:48 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3

tr -s ' ' is needed here as detecting "column" could be tricky. Use ps -o cpu,rss,cmd ... does not really match normal workflow when you crafting a pipeline base on output of former cmd, not rewrite it.

$ ps xau  | tr -s ' '  \
        | bb -i '(->> *input*
                (drop 1)
                (sort-by #(Integer/parseInt (nth (str/split % #" ") 5)) > )
                (take 3)
                (str/join "\n")
                (println))'
gdm 1860 0.0 1.3 3925072 109096 tty1 Sl+ Thg 509 6:00 /usr/bin/gnome-shell
hvn 4628 0.1 0.4 837500 39260 ? Ssl Thg 522 3:10 /usr/lib/gnome-terminal/gnome-terminal-server
hvn 3091 0.3 0.4 438564 35884 tty2 Sl+ Thg 522 10:48 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3

Top most common words

$ cat data.txt  | sort  | uniq -c | sort -nr
      3 pikachu
      2 raichu
      2 mewth
$ cat data.txt | bb -i '(->> *input*
        (group-by (fn [x] x))
        (map (fn [[k v]] (format "%s %s" (count v) k)))
        (sort #(compare %2 %1))
        (str/join "\n")
        (println) )'
3 pikachu
2 raichu
2 mewth

Get module names

$ find /usr/local/nim-1.2.0/lib/pure/ -type f -path '*.nim' \
        | while read line; do basename $line | sed 's/.nim$//g'; done | sort | xargs
algorithm async asyncdispatch asyncfile asyncftpclient asyncfutures asynchttpserver asyncmacro asyncnet asyncstreams atomics base64 bitops browsers cgi chains colors complex cookies coro cpuinfo cpuload critbits cstrutils db_common deques distros dynlib encodings endians fenv future hashcommon hashes heapqueue htmlgen htmlparser httpclient httpcore intsets ioselectors_epoll ioselectors_kqueue ioselectors_poll ioselectors_select json lenientops lexbase lists logging marshal math md5 memfiles mersenne mimetypes nativesockets net nimprof nimtracker oids options os osenv oserr osproc osseps oswalkdir parsecfg parsecsv parsejson parseopt parsesql parseutils parsexml pathnorm pegs punycode random rationals reservedmem ropes rtarrays segfaults selectors sequtils setimpl sets sharedlist sharedtables smtp ssl_certs stats streams strformat strmisc strscans strtabs strutils sugar tableimpl tables terminal threadpool times typetraits unicode unicode_ranges unidecode unittest uri volatile xmlparser xmltree
$ find /usr/local/nim-1.2.0/lib/pure/ -type f -path '*.nim' \
        | bb -i '(->> *input*
                (map #(last (str/split % #"/")))
                (map (fn [x] (subs x 0 (- (.length x) 4))))
                (sort)
                (str/join " ")
                (println) )'
algorithm async asyncdispatch asyncfile asyncftpclient asyncfutures asynchttpserver asyncmacro asyncnet asyncstreams atomics base64 bitops browsers cgi chains colors complex cookies coro cpuinfo cpuload critbits cstrutils db_common deques distros dynlib encodings endians fenv future hashcommon hashes heapqueue htmlgen htmlparser httpclient httpcore intsets ioselectors_epoll ioselectors_kqueue ioselectors_poll ioselectors_select json lenientops lexbase lists logging marshal math md5 memfiles mersenne mimetypes nativesockets net nimprof nimtracker oids options os osenv oserr osproc osseps oswalkdir parsecfg parsecsv parsejson parseopt parsesql parseutils parsexml pathnorm pegs punycode random rationals reservedmem ropes rtarrays segfaults selectors sequtils setimpl sets sharedlist sharedtables smtp ssl_certs stats streams strformat strmisc strscans strtabs strutils sugar tableimpl tables terminal threadpool times typetraits unicode unicode_ranges unidecode unittest uri volatile xmlparser xmltree

JQ

#TODO: why use .[:10] to avoid usage of head not work

$ curl -sL https://api.github.com/repos/awesome-jobs/vietnam/issues |  jq '.[] | .created_at + ". " + .title + " " + .html_url' | head

"2020-05-21T15:50:14Z. LINE Vietnam - Frontend Engineer - Saigon - FT https://github.com/awesome-jobs/vietnam/issues/1990"
"2020-05-21T15:41:02Z. LINE Vietnam - Backend Engineer - Saigon - FT https://github.com/awesome-jobs/vietnam/issues/1989"
"2020-05-19T15:52:00Z. NAB VDC - Technical Architect (Nodejs/Reactjs)- Saigon - FT  https://github.com/awesome-jobs/vietnam/issues/1988"
"2020-05-19T09:58:34Z. NAB VDC - Senior Front End Reactjs Engineer - Saigon - FT  https://github.com/awesome-jobs/vietnam/issues/1987"
"2020-05-19T05:54:39Z. Yojee - DevOps Engineer - Saigon, District 4 - FT https://github.com/awesome-jobs/vietnam/issues/1986"
"2020-05-19T04:42:51Z. FPT Telecom - Fullstack Engineer - District 7, HCMC - FT https://github.com/awesome-jobs/vietnam/issues/1985"
"2020-05-19T03:01:07Z. FPT Telecom - Sr/Jr/Fr/Big Data Engineer (Scala, Hadoop Ecosystem) - District 7, HCMC - FT https://github.com/awesome-jobs/vietnam/issues/1984"
"2020-05-15T04:02:59Z. DongA - Python Developer - Saigon, District 10 - FT https://github.com/awesome-jobs/vietnam/issues/1983"
"2020-05-15T03:53:20Z. [LARION] - [IT Business Analyst] - [Saigon] - [FT] https://github.com/awesome-jobs/vietnam/issues/1982"
"2020-05-15T03:53:14Z. [LARION] - [Senior NodeJS Developer] - [Saigon] - [FT] https://github.com/awesome-jobs/vietnam/issues/1981"
$ curl -sL https://api.github.com/repos/awesome-jobs/vietnam/issues \
        | bb -i '(->> *input*
                (str/join "\n")
                (json/parse-string)
                (map #(apply format "%s. %s - %s" (vals (select-keys % ["created_at", "title", "html_url"]))))
                (take 10)
                (str/join "\n")
                (println) )'
2020-05-21T15:50:14Z. LINE Vietnam - Frontend Engineer - Saigon - FT - https://github.com/awesome-jobs/vietnam/issues/1990
2020-05-21T15:41:02Z. LINE Vietnam - Backend Engineer - Saigon - FT - https://github.com/awesome-jobs/vietnam/issues/1989
2020-05-19T15:52:00Z. NAB VDC - Technical Architect (Nodejs/Reactjs)- Saigon - FT  - https://github.com/awesome-jobs/vietnam/issues/1988
2020-05-19T09:58:34Z. NAB VDC - Senior Front End Reactjs Engineer - Saigon - FT  - https://github.com/awesome-jobs/vietnam/issues/1987
2020-05-19T05:54:39Z. Yojee - DevOps Engineer - Saigon, District 4 - FT - https://github.com/awesome-jobs/vietnam/issues/1986
2020-05-19T04:42:51Z. FPT Telecom - Fullstack Engineer - District 7, HCMC - FT - https://github.com/awesome-jobs/vietnam/issues/1985
2020-05-19T03:01:07Z. FPT Telecom - Sr/Jr/Fr/Big Data Engineer (Scala, Hadoop Ecosystem) - District 7, HCMC - FT - https://github.com/awesome-jobs/vietnam/issues/1984
2020-05-15T04:02:59Z. DongA - Python Developer - Saigon, District 10 - FT - https://github.com/awesome-jobs/vietnam/issues/1983
2020-05-15T03:53:20Z. [LARION] - [IT Business Analyst] - [Saigon] - [FT] - https://github.com/awesome-jobs/vietnam/issues/1982

Interesting related projects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment