参考:
- Shell 工具和脚本 · the missing semester of your cs education (missing-semester-cn.github.io)
[命令行总结-Windows包管理器 Olimi](https://o.olimi.icu/posts/%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%80%BB%E7%BB%93-Windows%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8/#%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9man) [构建我的工作空间 Olimi](https://o.olimi.icu/posts/%E6%9E%84%E5%BB%BA%E6%88%91%E7%9A%84%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4/) [Git Olimi](https://o.olimi.icu/posts/Git/#git%E7%8E%A9%E6%B3%95)
Windows termianl
小技巧
启用alternate scroll mode
滚动查看备用缓冲区,如man xx;git log等。
1
printf "\e[?1007h"
网络问题
wsl2 2.0版本以后,wsl网络与主机网络互通。但是未设置的话会提示:
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
在%USERPROFILE%.wslconfig目录添加.wslconfig文件(或者在原有的文件中加入)以下:
1
2
3
4
5
6
7
[experimental]
autoMemoryReclaim=gradual # gradual | dropcache | disabled
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
更新
wsl —update提示:
已禁止(403)。 Error code: Wsl/UpdatePackage/0x80190193
此时:
wsl --update --web-download
如果还不行可能是代理网络的问题,关掉TUN模式或者直接关掉代理。
常用命令及使用
Git
配置登录
目前只能用ssh登录,因此如果要读写GitHub仓库,应该拷贝ssh url。
然后需要本地升成一个ssh key,添加到GitHub中。
- 生成密钥。
ssh-keygen -t {{rsa}} -C "{{email}}” - 拷贝公钥id_rsa.pub.
cat id_rsa.pub | xclip -selection clipboard - 添加到Github中settings/ssh
添加git别名
1
2
3
4
5
6
7
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'
终端工具
配置帮助手册
man
| 配置中文man:[命令行总结-Windows包管理器 | Olimi](https://o.olimi.icu/posts/%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%80%BB%E7%BB%93-Windows%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8/#%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9man) |
tldr
查看简单的命令,官网:tldr pages
我使用python安装,pip3 install tldr,默认路径在$HOME/.local/bin,加到环境变量去。
1
2
nano ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
删除
1
sudo npm install -g tldr
第一次安装碰到问题:
Error: Invalid filename重装一次解决了。1
sudo npm install -g tldr --force
然后tldr —update更新数据库。tldr也可以显示中文,方法同上面man(配置过man的中文后这里自动显示中文)
markdown输出(tldr官网本质上就是一些md文档),使用glow:
1
2
3
4
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install glow
然后就可以渲染markdown查看:
1
tldr -m tar | glow
结果:
进一步可以将这个命令约简,在.zshrc中加入这个:
1
2
3
help() {
tldr -m "$1" | glow
}
即可使用help xxx查看命令的简单介绍的markdown形式。
发现一个新问题(关于pages页),之前某个终端先用npm下载,会创建一个~/.tldr目录,会同时下载pages和pages.zh,但是后面用pip下载则没有这个目录,只有~/.cache/tldr/pages.zh目录,而有些命令中文是没有翻译的,必须看pages。此时可以手动clone pages,然后拷贝过去即可。
1
2
3
4
5
6
# Clone the tldr pages repository
git clone https://github.com/tldr-pages/tldr.git
# Copy the 'pages' and 'pages.zh' directories to your tldr cache directory
cp -r tldr/pages ~/.cache/tldr/
cp -r tldr/pages.zh ~/.cache/tldr/
查找工具
locate
对于WSL,因为会包含windows系统的文件,建立数据库会非常慢,所以安装时应该屏蔽掉windows系统,屏蔽/mnt目录即可。过程:
安装:
1
sudo apt-get install mlocate # mlocate是locate的一个改进版本
安装时就会启动扫描磁盘建立数据库,看到类似
Initializing plocate database; this may take some time…
再开个终端
ps -a查看一下,1 2 3 4 5 6 7 8
$ ps -a PID TTY TIME CMD 398 pts/1 00:00:01 zsh 1361 pts/0 00:00:00 sudo 1363 pts/2 00:00:00 apt-get 1418 pts/3 00:00:00 plocate.postins 1431 pts/3 00:01:01 updatedb.plocat 1779 pts/4 00:00:00 ps
发现updatedb.plocat进程应该是在扫描,改掉他。
1
sudo killall updatedb.plocat修改配置文件,
sudo nano /etc/updatedb.conf,写入屏蔽/mnt1 2 3
PRUNE_BIND_MOUNTS="yes" # PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/mnt /tmp /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs />PRUNEFS="NFS afs autofs binfmt_misc ceph cgroup cgroup2 cifs coda configfs curlftpfs debug>
重新扫描。
sudo updatedb,应该瞬间就可以完成(ssd)。
fd
sudo apt-get install fd-find.摘录一些用法
简单搜索
fd 被设计用来在你的文件系统中寻找条目。你可以进行的最基本的搜索,fd 只带一个参数:搜索模式。例如,假设你想找到你的一个旧脚本(它名字包含 netflix):
1
2
> fd netfl
Software/python/imdb-ratings/netflix-details.py
如果像这样只调用一个参数,fd 会递归搜索当前目录中任何包含 netfl 模式的条目。
正则表达式搜索
搜索模式被当作一个正则表达式来处理。这里,我们搜索以 x 开头、以 rc 结尾的条目:
1
2
3
4
> cd /etc
> fd '^x.*rc$'
X11/xinit/xinitrc
X11/xinit/xserverrc
fd 使用的正则表达式语法在这里。
指定根目录
如果我们想搜索一个特定的目录,可以把它作为 fd 的第二个参数:
1
2
3
4
> fd passwd /etc
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
列出所有文件,递归
fd 可以在没有参数的情况下被调用。这对于快速了解当前目录中的所有条目非常有用,它是递归的(类似于 ls -R):
1
2
3
4
5
> cd fd/tests
> fd
testenv
testenv/mod.rs
tests.rs
如果你想使用这个功能来列出一个给定目录中的所有文件,你必须使用一个全包模式,如 . 或 ^:
1
2
3
4
> fd . fd/tests/
testenv
testenv/mod.rs
tests.rs
搜索一个特定的文件扩展名
通常,我们对某一特定类型的所有文件感兴趣。这可以用 -e(或 --extension)选项来完成。在这里,我们搜索 fd 资源库中的所有 Markdown 文件:
1
2
3
4
> cd fd
> fd -e md
CONTRIBUTING.md
README.md
e选项可以与搜索模式结合使用:
> fd -e rs mod src/fshelper/mod.rs src/lscolors/mod.rs tests/testenv/mod.rs
目录管理
autojump
sudo apt install autojumpecho source /usr/share/autojump/autojump.zsh >> ~/.zshrc
