Shell 与 CLI
PowerShell
Windows 下常用的 shell:PowerShell
在 Microsoft Store 上安装 Windows Terminal 和 PowerShell
推荐下载 Nerd Fonts 的 Meslo 并配置终端字体为 MesloLGM NF
在 Microsoft Store 上安装 oh-my-posh
可以在官方网站上选择喜欢的主题,或者使用 Get-PoshThemes
命令直接在命令行预览,然后打开 $PROFILE
配置:
|
当然,Windows Terminal 中的配置也可以自行修改,如配置字体颜色,背景图片等
如果使用 vscode,也可以添加相应的 shell 并设置 defaultProfile 为 powershell
命令行命令
Linux 自带命令
cd
切换目录
- 绝对地址:
/home/
- 相对自制:
./path
现代的代替有 autojump
pwd
显示当前目录的绝对路径
ls
默认查看当前目录下的文件和子目录
/
显示根目录下的文件和子目录-a
显示隐藏的文件和目录-l
列出包括文件的属性和权限等-R
递归地列出目录,即把子目录也列出来-h
以人类可读的形式列出,即kB
等而不是bit
的形式
现代的代替有 exa
mkdir
创建目录
rmdir
删除空目录
rm
删除文件或目录
-rf
删除非空目录
cp 源文件 目标文件
:将源文件复制为目标文件
mv
移动文件,也可以用作文件重命名
sudo
以超级用户的身份执行命令
head
查看文件前 n 行,tail
查看文件后 n 行
which
查找命令所在位置
chmod
修改文件的权限
+x
:增加“执行”权限
ln
创建文件和目录的链接:
- 硬链接:基于文件节点创建的链接
- 软连接:相当于 Windows 下的“快捷方式”
echo
显示文本或变量的值
tar
打包压缩/解包解压缩
-c
创建包-x
解包-f
打包/解包为文件-v
处理时显示信息
man
:显示某命令的使用方法,或者使用 命令 --help
现代的替代有 tldr
cat
命令用于查看文件内容,通常通过管道与 more
和 less
一起使用,从而一页页查看数据:cat 文件名
现代的替代有 bat
find
支持查找文件,参数非常多,现代化的替代品为 fd
grep
可以用于匹配输出中的字符串
-A 5
:显示匹配位置后面的 5 行-B 3
:显示匹配位置前面的 3 行-C 2
:显示前后各 2 行-s
:区分大小写-i
:不区分大小写^a
:以a
开头的行z$
:以z
结尾的行-n
:显示行号-r
:递归搜索关键字-c
:匹配某关键字的次数
touch
如果文件不存在,则创建文件;如果存在,则更新文件最后修改时间
现代命令
autojump 可以自动跳转常用的目录
j foo
:跳转到包括foo
的目录jc bar
:跳转到当前目录的子目录
eza-community/eza: A modern, maintained replacement for ls (github.com) 默认彩色输出,默认配置更适用于人类,只说不同的地方
--icons
:包括图标--tree --level={{3}}
:3 层的树状目录
如果浏览的是二进制文件,可以使用 hexyl
如果浏览的是 json 文件,可以使用 jq
TLDR:Too Long; Don't Read,即“太长不看”,故其优点在于简洁,使用:tldr 命令
bat:相比 cat 支持了语法高亮
-A
:显示不可打印的字符
fd 比 find 更快,更友好
fd netfl
:直接搜索文件名中包括netfl
的文件- 支持正则表达式
fd passwd /etc
:第二个参数为搜索的目录fd
:没有参数则表示递归地列出当前目录所有文件-e md
查找后缀名为.md
的所有文件-g libc.so
:查找完全匹配libc.so
名字的文件-x
或--exec
:对所有搜索出来的文件实现外部程序--hidden或-H --no-ignore或-I
:查找隐藏文件和忽略文件
fzf 支持模糊搜索
Ncdu 用来代替 du
,可以分析磁盘占用,上下键移动,Enter 键进入,d
键删除,q
键退出
htop 是 top
的替代品,以更加交互和用户友好的方式监控资源利用率
procs 是 ps
命令的替代品
–-tree
以树状图显示
ripgrep 的 grep
的替代品
Bash
全名为 Bourne-Again Shell,Linux 和 Unix 的默认 shell,古老且难用,但由于其历史悠久,故还有很多人在使用。
脚本通常以 shebang 开头,指定该脚本的解释器,如 #!/usr/bin/bash
,即表示该脚本需要调用 /usr/bin/bash
运行
sh hello.sh
:运行脚本 hello.sh
;或者将该脚本权限设置为可执行的,然后直接 ./hello.sh
运行
变量是没有类型的,其赋值语句不能有空格:name='world'
使用的时候必须带上 $
:echo $name
特别的,$?
保存的是上个命令的返回值,0 表示成功退出,其余情况表示出现了异常
特殊的位置参数可以使用传递给脚本的参数,$0
是脚本名,$1
是第一个参数,$#
是传递给脚本的参数个数
由于脚本不考虑类型,所以算术必须这么写:let x=1+1
test 语句:[ 0 -eq 0 ]; echo $?
if 语句:
|
while 循环:
|
函数定义时不需要指明参数:
|
调用时直接传入参数:
|
Zsh
安装与配置
ZSH 是一个兼容 bash 的 shell
安装:sudo apt-get install zsh
查看已经安装的 shell:cat /etc/shells
设置为默认 shell:chsh -s /bin/zsh
使用 Oh My Zsh 配置:
安装:sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
在 Themes 可以查看内置主题,但这里推荐 powerlevel10k:
|
然后在 .zshrc
中设置 ZSH_THEME="powerlevel10k/powerlevel10k"
推荐插件
zsh-syntax-highlighting 可以高亮语法
zsh-autosuggestions 支持自动补全