Linux Quick Commands and Tips

PS1

PS1="┌──\u@\h:\w\n└─\$ "

┌──ubuntu@instance-20260728-0031:~
└─$

Manufacturer information

dmidecode -t memory

Temporarily allow the required algorithms directly in your SSH command

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa user@hostname

Convert line break CRLF to LF

sed -i 's/\r//g' a.txt

Convert file encoding

file input.txt
iconv -f UTF-16 -t UTF-8 input.txt -o output.txt

Rename files

find . -name "* *.md" -exec rename -f 's/ /-/g' {} \;  # space to -
find . -name "*[A-Z]*.md" -exec rename -f 'y/A-Z/a-z/' {} \; # uppercase to lowercase

Convert all characters to lowercase or uppercase in file context

find . -name "*.htm*" -exec sed -i '/src=\"\..*.\/img\/.*\"/s/src=.*/\L&/g' {} \;
find . -name "*.htm*" -exec sed -i '/src=\"\..*.\/img\/.*\"/s/src=.*/\U&/g' {} \;

Log analysis

find . -name "*.gz" -exec gunzip {} \;
find . -name "*.tar" -exec tar -xf {} \;
find . -name "*.tar.bz2" -exec tar -jxf {} \;

find . -type f ! -regex '.*\.\(gz\|xz\|zip\|tgz\|bz2\|tar\)$' | xargs grep --color=always -Ei 'out of memory'

Search files and compress

find /mnt/e/Customers/Services/ -type f -name "*file*" | xargs -I {} zip -j /mnt/e/Temp/temp.zip "{}"

find /mnt/Packages/ -type f -name "kernel-*" -printf "%P\n" | xargs tar -zcvf kernel-3.10.0-957.tar.gz -C /mnt/Packages/

The -printf "%P\n" removes the /mnt/Packages/ prefix, giving relative paths.
Use -C with relative paths.

Search duplication files

find . -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

Convert mp4 video HEVC encoding libx265 to libx264

ffmpeg -i input.mp4 -c:v libx264 -preset fast -crf 23 output.mp4

Rsync

rsync -e "ssh -p 2222" -av --delete --include="*/" --include="*.pdf" --exclude="*" /mnt/e/assets/res/ jove@192.168.3.112:/var/www/html/assets/res/

# --rsync-path="sudo rsync" sudo提权
rsync -e "ssh -i ~/.ssh/oci-ssh-key -p 22122" -av --delete --exclude="assets/*" /mnt/e/butterfly/public/ ubuntu@161.118.194.94:/var/www/html/butterfly/
rsync -e "ssh -i ~/.ssh/oci-ssh-key -p 22122" -av --delete /mnt/e/assets/pic/ ubuntu@161.118.194.94:/var/www/html/butterfly/assets/pic/

Vim

Save file when forgot sudo.

w !sudo tee % >/dev/null

Strace

lsof -i:8080
strace -f -p <pid> -e trace=network,poll -T 2>&1 | grep -v "1, 500)" # 抓取网络和休眠调用,同时过滤多余的轮询日志
curl 127.0.0.1:8080

Temp for Hexo Posts

find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/html"><i>/html">/' {} \; -exec sed -i 's/html">/html"><i>/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/pdf"><i>/pdf">/' {} \; -exec sed -i 's/pdf">/pdf"><i>/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/ <\/i><i/ <i/' {} \; -exec sed -i 's/ <i/ <\/i><i/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i -E 's/">(.*?) </"><i>\1 </' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/<i><i>/<i>/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/miss.sakurayumeno.top//g' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/^・ \*<a/・ <a/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/a>\*$/a>/' {} \;
find /mnt/e/butterfly/source/_posts -type f -name "*.md" -exec sed -i 's/^- \[/\[/' {} \;

while read -r file; do
linkdoc.sh $file
done < <(find /mnt/e/assets/res/dellemc/unity/ -maxdepth 1 -type f -name "*.pdf")