Misc Records

  • connect to another tty

    # Print the file name of the terminal connected  to  standard input.
    tty
    # connect to it
    script -f /dev/tty1
    
  • tar

    # sudo to keep permission
    # pack
    sudo tar -cvf mysql.tar mysql
    # unpack
    sudo tar -xvf www.tar -C .
    
  • manually update zsh completion cache

    rehash
    
  • zsh completion

    rm  ~/.zcompdump; compinit
    
  • Generate random password

    # use package pwgen
    pwgen 8 # generate with length 8
    
  • find file in a certain day

    # more to see option `-newerXY` in `man find`
    sudo find /var -type d -newermt 2019-08-30 ! -newermt 2019-08-31 -print 2>/dev/null
    
  • find dhcp server

    sudo nmap --script broadcast-dhcp-discover -e eth0
    # for dhcpv6
    sudo nmap -6 --script broadcast-dhcp6-discover -e eth0
    
  • find out the MAC of a given IP

  sudo arping -I enp4s0 -c1 172.24.68.179
  • find hostname by IP

    # netbios names
    nmblookup -A <ip>
    # from dns server
    nslookup <ip>
    
  • Using the KDE Wallet to store ssh key passphrases ssh-add

  • zip文件名乱码

    unzip -O cp936 filename
    
  • run as root in Gui

    # in .desktop
    # see https://wiki.archlinux.org/index.php/Sudo#kdesu
    X-KDE-SubstituteUID=true
    
  • visudo导致sudo无法使用时

    # 前提是你已经安装相应的 policykit-1-gnome 或者 polkit-kde-agent
    /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &
    pkexec visudo
    # 否则就只能重启进入recovery或者livecd修复
    
  • Clean journal

    journalctl --rotate --vacuum-time=1d
    
  • rsync with root

    rsync -avPpr -e "ssh" --rsync-path="sudo rsync"  fancy@172.24.71.53:/opt/cudnn/cudnn-10.1-linux-x64-v7.5.0.56   /opt/cudnn/
    
  • runtime path

    # refer https://en.wikipedia.org/wiki/Rpath
    # see RPATH or RUNPATH
    readelf -d binary-or-library
    # see `man chrpath`
    chrpath -l binary-or-library
    
  • iptables LOG in netns

    sysctl -w net.netfilter.nf_log_all_netns=1
    

Server

  • List human users

    cut -d: -f1,3 /etc/passwd | egrep ':[0-9]{4}$' | cut -d: -f1
    
  • disable or enable users

    # disable
    chage -E 0 <user>
    # enable
    chage -E -1 <user>
    
  • You-Get

    # bilibili, 下载  		
    you-get <url>
    # bilibili, 批量下载  
    you-get --playlist <url>
    
  • video info

    ffprobe -hide_banner <video>
    
  • show videos codec

    ffprobe -v error  -select_streams v:0   -show_entries stream=codec_name <url>
      
    find . -type f -print  -exec sh -c "ffprobe -v error  -select_streams v:0   -show_entries stream=codec_name '{}' |grep codec|sed -e 's/codec_name=//'" \;
    
  • flv to mp4 with loss

    # single
    ffmpeg -i input.flv -codec copy output.mp4
    # loop way
    for f in *.flv
    do
    ffmpeg -i "$f" -codec copy "${f/.flv/.mp4}"
    done
    

NeoVIM

显示行号,显示空白字符

:set nu # show line number
:set list # show space
:noh # turn off highlighting until the next search

Vim < 8.1.1365, Neovim < 0.3.6 中存在漏洞,modeline 在root情况下默认关闭

/etc/xdg/nvim/sysinit.vim
-------------------------------
set modeline

ZSH

^left ^right Backward or forward one word

^u Clear whole line

^k Clear to end of line

^w Delete one word backward

^l Clear screen

^x u Undo last change

^y Yank

pacman

  • Remove orphan package, repeat the cmd multi times

    sudo pacman -Ru $(pacman -Qdtq)
    

cgroup

systemd-cgls systemd-cgtop

journal

journalctl -f -u <service>

journalctl -b <boot_number>

Exit stuck sessions

ssh includes the escape character ~ by default. The command ~. closes an open connection and brings you back to the terminal.

Updated: