duangsuse::Echo
#learn #bash with #tool 入门+优质冷知识 😋 图为 asciinema.org/explore 。没有 #linux 的极客可打开 WebVM.io Linux Deploy; (Mac)Git Bash; winetricks; screenfetch 甚至 bashttpd; pacman/OpenRC init 基于bash shell 是类似 Windows.ps1 但使用纯文本或行IO的脚本编程语言。 每当你看见awk|sed|grep ,那就是在 #sql sele…
— CLI程序服务
getopts; complete 用于获取短参数和提供补齐。少数人用while shift/read;case 来解析
还有一个select in ; do,和py2 print 是异曲同工之败笔,请
->展示zenity的所有功能,并生成一个简短的MC风格的文字冒险
使用
— ⭐️ #js #recommend bashrc
这样,您可以快速阅读调用帮助:
或者,下载存储库及文件
切换文件夹
🎁 允许用py调用系统上的.so 库如 pkgcSel caca alpm
作业:用文尾的知识,为mans编写自动补齐生成
getopts; complete 用于获取短参数和提供补齐。少数人用while shift/read;case 来解析
还有一个select in ; do,和py2 print 是异曲同工之败笔,请
->展示zenity的所有功能,并生成一个简短的MC风格的文字冒险
#!/bin/bash
while getopts ":n:s:err" opt; do #?未知 :空
case $opt in
n) n=$OPTARG ;;
s) s=$OPTARG ;;
err) isErr=1 ;;
esac
done
printf "%d*%s E%d\n" $n $s $isErr
ycm() {
local cur prev words cword
_init_completion -n = || return
case $prev in
-s) COMPREPLY=($(compgen -e -- "${cur}")); return 0 ;;
*) COMPREPLY=($(compgen -W "-n -s -err" -- "${cur}"));;
esac
}
complete -F ycm $0
使用
chmod +x a.sh; . a.sh 注册后./执行 即可Tab补齐 — ⭐️ #js #recommend bashrc
#允许拖放文件夹+远程 uc ls=wget
shopt -s autocd
uc(){ eval $(node -p 'gc={"?d1":"--depth=1","?dn":"--recurse-submodules","":""}; process.argv.slice(1).map(s=>{try{u=new URL(s),s=/^git/.test(u.host)?
`git clone ${gc[u.search]} git@${u.host}:${u.pathname.slice(1)}.git&&ls -td */`:
`wgetHL ${u}`;s=`$(${s}|head -n1)`}catch{}return s}).join(" ")' $*);}
wgetHL(){ python -c 'import pip._internal.cli.progress_bars as PB, time,sys, subprocess as P,re,functools as F
def hear(sh,vp):
nvp=len(vp)
for s in (po:=P.Popen(sh, stdout=-1,text=True,shell=True)).stdout:
for k,v in enumerate(vp):
if nvp==0:yield po
if not isinstance(v,str)and (m:=v.match(s)): vp[k]=m.group(1); nvp-=1
for po in hear(f"LANG=C wget -dc {sys.argv[1]} 2>&1", vp:=[*map(re.compile,sys.argv[2:])]):
time.sleep(1); f=iter( F.partial(open(vp[1],"rb").read,1), b""); print(vp[1])
sys.stdout=sys.stderr; [*PB._rich_progress_bar(f, bar_type="on",size=int(vp[0]))]
po.wait()
' $1 'Length: (\d+)' "Converted file name.*-> '(.*)'";}
#help真太烦人! mans(){ [ -z $(command -v $0) ]&&command-not-found $0 ||对$0依次使用 --help,-h,tldr,man,man -k }
mans() {
[[ "$@" =~ / ]]&&cd "$(mkdir -p $@;echo $1)" ||(ev=MAN$1;[ -n "${!ev}" ] &&${!ev} "${@:2}") ||
([ -z $(command -v $1) ] &&command-not-found $1) ||(
for opt in "--help" "-h"; do $@ $opt 2>&1|mansHL &&break; done
sleepHL 2 &&for doc in "tldr" "man" "man -k"; do $doc $1 &&break; done
)
}
alias ?=mans grepp='grep --color=always -P'
#export COMMAND_NOT_FOUND_INSTALL_PROMPT=1
MANimport='pip install -U'; MANjs='sudo npm -g i'; MANdoc='docker pull'
MANfmt='[[/(?<=\s-[\w-.]+)(( | ?[=<\x27[])[^\s:,,]+)/g, 36],[/,? ?(\s-[\w-.]+)/g, 32],[/([A-Z][A-Z0-9_]{2,})/g,34]]'
command-not-found() { sudo pacman -S $@ ||pacman -Ql $@|grepp '/etc|lib/'; pkgcSel $1; return 0;}
mansHL(){ node -p "$MANfmt.reduce((str, [A, B]) => str.replace(A,\`\x1b[1;\${B}m\$1\x1b[0m\`), process.argv[1])" -- "$(cat)"; }
sleepHL(){ python -c "import pip._internal.cli.progress_bars as PB, time,sys
def delay(xs,dt):
for x in xs:yield x;time.sleep(dt)
dt=$1*10;t0=time.time()
try:[*PB._rich_progress_bar(delay(iter('?'*dt),.1), bar_type='on',size=dt)]
except:print(f'{time.time()-t0}s :) cancel'); sys.exit(1)";}
zenity-sel(){ s=`cat`; test -n "$s"&&zenity<<<$s --title "$1" --list $(eval echo --column={$2}) $3;}
pkgcSel(){ k=$(pkgconf --list-all | grep -P $(sed 's/lib/(lib)?/' <<<$1)|sed 's/ \s*/\n/'|zenity-sel "Debug package $1" cffi,usage)||return
for fp in $k $1/$1 $1 $k/lib$1/$1; do cpp -undef $(pkgconf $k --cflags-only-I) <<<"#include <${fp}.h>"|grep -v '^#' >sel.h &&break; done
(sleep 5&&sed -E 's/__attribute__[^;]*//g;s/__(inline|restrict)//g;s/typedef .*va_list.*//g;s/\w*va_list/.../g' -i sel.h)&
echo "import cffi; ffi=cffi.FFI();ffi.cdef(open('sel.h').read()); C=ffi.dlopen('$(pkgconf $k --libs)'[2:])"
#fuck u cffi, what <cdata>? Is strconv&cdef(errItem=ignore) that hard?
}
这样,您可以快速阅读调用帮助:
for c in python node ruby lua "kotlin -h" "git init" pip sed awk grep nano bash;do ? $c; done或者,下载存储库及文件
uc cd https://github.com/hyprwm/Hyprland?d1uc ls https://mirrors.ustc.edu.cn/xbmc/releases/android/x86/kodi-20.2-Nexus-x86.apk
切换文件夹
? a b/{1,2} c/ (在jupyter)安装依赖 ? import srt🎁 允许用py调用系统上的.so 库如 pkgcSel caca alpm
作业:用文尾的知识,为mans编写自动补齐生成