Wiki

A universe of ideas

User Tools

Site Tools


computer:bash_snippets

Bash snippets

Git

git checkout  -b test5 && git rebase --autosquash --interactive  --root test5

Play YouTube Playlists

youtube-dl \
    -f 'bestvideo[vcodec=vp9]+bestaudio[acodec=opus]' \
    --merge-output-format mkv \
    -o 'id_%(playlist_index)s - %(title)s (%(id)s).%(ext)s' \
    --playlist-start 1 \
    --playlist-end 19 \
    'https://youtube.com/playlist/url'
mkvmerge -o all_001-019.mkv \[ id_{1..19}\ * \]
mpv --save-position-on-quit all_001-019.mkv
  • Achte auf [ und ] um die input Videos im append Modus zu mergen
  • Der glob * sortiert nicht numerisch (aber *(n) geht auch)

Geeignete Formate finden:

youtube-dl -F 'https://youtube.com/playlist/url' | \
grep -E '^[0-9]+' | \
sort -nr | \
uniq -w 10 -c | \
sort -nrs

Achte auf die Hardware-Beschleunigung (siehe vainfo)

Order files and directories recursive by date

Order all files and directories in a certain subdirectory by date of last modification

find <dir> -print0 | xargs -0 ls -ldt | less

Proxy via SSH

ssh -D 4242 lmu

Im Browser kann dann der SOCKS Proxy “localhost” auf “4242” eingestellt werden.

List most used bash commands

history | cut -c 8- | cut -f 1 -d ' ' | sort | uniq -c | sort -n -r

The result:

    101 l
     69 c
     40 mupdf
     24 mv
     16 sudo
     16 history
     12 vlc
     12 rm
     12 man
     10 zip
     10 pdflatex
      9 ps
      9 exit
      9 echo
      7 while
      7 ssh
      7 pacman
      7 mplayer
      7 ln
      6 wget
      6 umount
      6 cat
      5 sml
      5 mkdir
      5 acroread
....

SSH key

ssh-keygen
ssh-keygen -t ecdsa
ssh-keygen -t ed25519
 
ssh-copy-id -i ~/.ssh/id_rsa.pub ${R_USER}@${R_HOST}

List modified files

pacman -Qii | grep ^MODIFIED | sort
find /etc/ -type f | while read f ; do pacman -Qo "$f" >/dev/null 2>&1 || echo "$f" ; done

Install termcaps

infocmp rxvt-unicode-256color | s $YOUR_HOST "cat >~/tmp-term-info && tic ~/tmp-term-info && rm ~/tmp-term-info"

Pacman

Removing packages and their dependencies

pacman -Rs

Clean the package cache of packages that are not currently installed

pacman -Sc

Clean the entire package cache

pacman -Scc

Parameterübergabe

rsync

  • -X / --xattr
  • -S
    Sparse Files
  • -H
    Hard links
  • -a
    Archive
  • -u / --update
  • -A / --acls
  • -E
    Speichere executable bit mit
  • --progress

rsync -aAxuHS --progress

Bling stat Beep

Müll deaktivieren

chmod a-x /usr/lib/colord/colord
chmod a-x /usr/lib/gvfs/gvfsd
chmod a-x /usr/lib/gvfs/gvfsd-*
chmod a-x /usr/bin/kactivitymanagerd
chmod a-x /usr/lib/at-spi2-core/at-spi-bus-launcher
chmod a-x /usr/bin/knotify4

diff & patch

  • diff -u original.c new.c > original.patch
  • patch -p1 < baz.patch

Find

In small files

find ...  -size -20k -type f -exec grep ... {} + 

Files not belonging to the current user

find \! -user $(whoami) -exec ls --color=always -ld {} +

oder mit meinem notmine alias.

Big files

find / -type f -size +300M -exec ls --color=always -l {} +

pentadactyl

http://nakkaya.com/2014/01/26/pentadactyl-configuration/

set scrollsteps=1
set scrolltime=0
set incfind
set hlfind

SSL

nmap --script ssl-enum-ciphers -p 443 onmars.eu
sslscan --no-failed onmars.eu
openssl ciphers | tr : '\n' | sort

SCP / sshfs / sftp absichern

wget https://github.com/mysecureshell/mysecureshell/archive/v2.00.tar.gz
tar -xvf v2.00.tar.gz
cd mysecureshell-2.00
## root check aus install.sh entfernen
mkdir -p "$HOME/mysecureshell/"{bin,etc}
./configure \
  --prefix="$HOME/mysecureshell" \
  --with-conffile="$HOME/mysecureshell/sftp_config" \
  --with-logfile="$HOME/mysecureshell/sftp-server.log" \
  --with-shutfile="$HOME/mysecureshell/sftp.shut" \
  --exec-prefix="$HOME/mysecureshell"
make all

Config

## http://mysecureshell.readthedocs.io/en/latest/index.html
 
<Default>
    Home            /                                                         
    ApplyFileSpec   OnlyData
</Default>
 
<FileSpec OnlyData>
    UseFullPath true
    Order AllowDeny
    Allow "^/(foo/1/?|foo/2/?|bar/baz/?|$|foo/?$|bar/?$)"
    Deny all
</FileSpec>

CUPS

Delete all learned Network printers:

lpstat -s | \grep ///dev/null | cut -c 12- | cut -d: -f1 | xargs -n1 -- lpadmin -x 

Zu schlecht für ein dotfile

Hier sind scripte, die zwar eine nette Idee, aber viel zu schlecht für ein dotfile sind.

( pgrep bash | xargs -n 1 pstree -Uangpsu ) | sed 's/^\([ │├─└]*\)\(\({[^,]*\)\|\([^,]*\)\),\([0-9]*\),\([0-9]*\)\(,\(\w*\)\|\)/\1 \x1b[1;30m\3\x1b[0m\x1b[1;37m\4\x1b[0m \x1b[36m\5\x1b[0m \x1b[34m\6\x1b[0m \x1b[33m\8\x1b[0m/'
## https://gitlab.labs.nic.cz/labs/dnssec-validator/issues/38
JAR="`echo ~/.moonchild\ productions/pale\ moon/*.default/extensions/dnssec@nic.cz/chrome/dnssec.jar`"
 
cd "`mktemp -d`"
unzip -q "$JAR"
patch -p1 <<EOF
--- a/content/firefoxOverlay.xul	2015-12-13 03:53:26.236938476 +0100
+++ b/content/firefoxOverlay.xul	2015-12-13 03:54:16.686429894 +0100
@@ -102,7 +102,7 @@
 
 	</popupset>
 
-	<textbox id="urlbar">
+	<statusbar id="status-bar">
 	<box id="urlbar-icons">
 	<!-- DNSSEC button in urlbar -->
 		<hbox id="dnssec-box" role="button"
@@ -121,5 +121,5 @@
         <!-- /stack -->
 	</hbox>
 	</box>
-	</textbox>
+	</statusbar>
 </overlay>
EOF
 
zip "$JAR" content/firefoxOverlay.xul
smartctl -x /dev/sda
for i in [2, 1.9, 1.5, 1.1, None, 0, None, -1.1, -1.5, -1.9, -2]:
    print('-'*105 if i is None else f'{i: .1f}: ceil = {math.ceil(i): } || round = {round(i): } | int(i+.5) = {int(i+0.5): } || floor = {math.floor(i): } | int = {int(i): } || int(i)+1 = {int(i)+1: } | int(i)-1 = {int(i)-1: }')
 2.0: ceil =  2 || round =  2 | int(i+.5) =  2 || floor =  2 | int =  2 || int(i)+1 =  3 | int(i)-1 =  1
 1.9: ceil =  2 || round =  2 | int(i+.5) =  2 || floor =  1 | int =  1 || int(i)+1 =  2 | int(i)-1 =  0
 1.5: ceil =  2 || round =  2 | int(i+.5) =  2 || floor =  1 | int =  1 || int(i)+1 =  2 | int(i)-1 =  0
 1.1: ceil =  2 || round =  1 | int(i+.5) =  1 || floor =  1 | int =  1 || int(i)+1 =  2 | int(i)-1 =  0
---------------------------------------------------------------------------------------------------------
 0.0: ceil =  0 || round =  0 | int(i+.5) =  0 || floor =  0 | int =  0 || int(i)+1 =  1 | int(i)-1 = -1
---------------------------------------------------------------------------------------------------------
-1.1: ceil = -1 || round = -1 | int(i+.5) =  0 || floor = -2 | int = -1 || int(i)+1 =  0 | int(i)-1 = -2
-1.5: ceil = -1 || round = -2 | int(i+.5) = -1 || floor = -2 | int = -1 || int(i)+1 =  0 | int(i)-1 = -2
-1.9: ceil = -1 || round = -2 | int(i+.5) = -1 || floor = -2 | int = -1 || int(i)+1 =  0 | int(i)-1 = -2
-2.0: ceil = -2 || round = -2 | int(i+.5) = -1 || floor = -2 | int = -2 || int(i)+1 = -1 | int(i)-1 = -3
computer/bash_snippets.txt · Last modified: 2020-11-18 18:11 by 127.0.0.1