HOME AUTHORS

常用Linux软件tips

2021年6月26日 22:13
owl
Tags pdf 快捷键 用户

避免sort忽略某些符号(如标点符号)

LC_ALL=C sort FILE

查看所有中文字体

fc-list :lang=zh-cn > font_zh-cn.txt

查询ip归属地

mmdblookup --file /usr/share/GeoIP/GeoLite2-ASN.mmdb --ip 106.14.52.175

查找失效的软链接

find -L [PATH] -type l -delete

纠缠不清的转义符

sed的转义符教训

sed 's|<ts:date>\([^<]\+\)</ts:date>|<ts:date>\1 +0800</ts:date>|' continue_mine.gnca

vim的转义符教训

非常多,待续

利用ghostscript或者Poppler处理pdf

https://stackoverflow.com/a/19358402/7800554

合并pdf

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
pdfunite 1.pdf 2.pdf 3.pdf out.pdf

压缩pdf

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

使用Poppler压缩pdf,本质上是转换pdf为pdf,过程中舍去不需要的字体。 对于某些软件(wps)生成的超大pdf文件,里面包含gs无法处理中文的cid字体, 需要使用此方法生成新的pdf文件。

pdftocairo -pdf origin.pdf to_cairo.pdf

设置某些java应用程序的字体显示(抗锯齿)

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd_hrgb'

使用audit监视文件变化

# audit.rule
-a exit,always  -F path=/home/owl -F perm=w -F key=find_bad

使用nc或者ncat传输文件

# 接收端

nc -l -p LISTEN-PORT > out.file

# 发送端

nc DEST-IP-ADDR DEST-PORT < out.file

接收端需要先监听端口,发送端才可连接上。

图片缩放

批量图片缩放

mogrify -path /destination/path/ -adaptive-resize 5000 -unsharp 0x1 -format png /originary/path/*.jpeg

普通图片缩放

mogrify -write mall.jpg -resize 1105x829 -unsharp 0x1 idb.jpg

显示特定字fallback所使用的具体字体

FC_DEBUG=4 pango-view --font="serif" -t '雨' 2>&1 | \
    grep -o 'family: "[^"]\+' | cut -c 10- | tail -n 1

修改elf文件

patchelf --set-rpath '$ORIGIN/' ./main #设置rpath为elf文件所在目录
patchelf --print-rpath ./main

验证passwdgroup的完整性

sudo pwck # 验证passwd及其shadow
sudo grpck # 验证group及gshadow

awk设置分隔符

awk -F '\t' '{print $4}' tag.txt

find排除指定路径

find . -path ./migrations -prune -o -type f -exec \
    sed -i 's/Artical/artical/g' {} +

以上例子中加入-path ./migrations -prune -o即为具体实现方法。

find与xargs组合批量修改文件属性

find . -type f -print0 | xargs --null -n1 chmod -x
find . -type f -exec chmod +x {} \;

firejail

firejail --private=/home/owl/static_misc/local_data/jails/mine --allusers zsh

--allusers All directories under /home are visible inside the sandbox. By default, only current user home directory is visible.

fzf与rg

grep

使用-P选项可以使用perl的正则表达式,用以使用零宽断言。

以下匹配所有artical单词,排除artical_cache

grep -P '\bartical(?!_cache)\b' -r .

mpv

Ctrl+LEFT   no-osd sub-seek -1
Ctrl+RIGHT  no-osd sub-seek  1
Ctrl+Shift+LEFT sub-step -1
Ctrl+Shift+RIGHT sub-step 1

polybar多屏显示

参见issuses

for m in $(polybar --list-monitors | cut -d":" -f1); do
    MONITOR=$m polybar --reload example &
done

rclone sync

rclone sync "GoogleDrive:${PWD/#$HOME/}" "${PWD}" -v -u --checkers 1 --transfers 8

rsync备份

rsync -aAXv --delete --delete-excluded --exclude=wtf tmp new

sox

play -n synth 3 sine 18650

stow

stow可以辅助管理配置文件(dotfiles)

# -t 指定target
stow -t ~ -S git

systemd

随系统自动启动 systemd 用户实例

systemd 用户实例在用户首次登陆时启动,并在最后一个会话退出时终止。 但有时候,对于一些不依赖于会话的用户进程,在系统启动时加载用户实例,在会话全部结束时,也不停止用户实例是比较有用的。 Lingering 就是用来实现这个的。 使用以下命令来启用驻留指定用户:

loginctl enable-linger username

tar的日常使用

tar -I "xz -T 0" -cvf distense.pickle.tar.xz distense.pickle
tar  -cJvhf profiles.tar.xz profiles
tar  -xJf profiles.tar.xz -C profiles_old --strip-components=1

tmux移动pane

xdg-mime与gio mime

这两个程序对默认打开程序的判断不一样,因此xdg-open和gio open也就有很大差别了。 修改$HOME/.config/mimeapps.list能修改gio mime。(轮子,轮子!真多轮子)

xrandr基本使用方法

双屏设置

xrandr --output eDP-1 --auto --rotate normal \
       --output  DP-1 --auto --rotate left --right-of eDP-1

关闭显示输出

xrandr --output DP-1 --off

设置primary

xrandr --output eDP-1 --primary

zsh快捷键

显示现有快捷键映射

详情见man zshzle

可能有用的快捷键

按键 用途
^[h 查看正在编辑的命令的帮助
^x^e 调用$EDITOR指定的编辑器编辑当前命令

清除linux登录等待状态

登录或者解锁时错误密码尝试次数过多会使pam_faillock.so锁定登录,需要等待一定时长才能登录。

faillock --user username --reset

sed "not" match

排除包含'/'字符的行,在其余行行尾添加'/32'

sed '/\//! s/$/\/32/' iplist