Lec 1 Shell
(以下皆基于Linux系统)
文档查阅方式
man echo #交互式查看manual,可以是适用于大部分的命令帮助手册
mv --h#全部打印帮助文档,可能太长不好看
tldr mv #too long didn't read, 简化版手册
#需提前安装
#sudo apt install tldr
环境变量(Environment Variabl)
环境变量可以理解为当你运行程序时,如输入date, echo, python等,系统应该去哪里搜索可用的程序。注意搜索顺序自上而下,比如有两个cuda环境,为率先执行第一个。
echo $PATH#查看环境变量
which python#查看应用对应的环境变量
如何配置临时和永久path:知乎文章
路径
跳转根目录(即自己的上一层目录为自己):
cd / #change directory to the root
跳转home, 若只有一个usr, 则转至/home/usr
cd ~#跳转home, 若只有一个usr, 则转至/home/usr
cd -#跳转上一个选择的目录
cd ../#跳转上一层目录
pwd #Print working directory
文件工作流
ls -R #recursively 查看文件列表
tree #更优雅但是需要下载
broot #交互式tree
mv a.txt b.txt #重命名
mv a.txt newdir #移动文件
mv dir newdir#移动整个文件
cp file.txt ../new_file_name.txt
# 将file文件复制到上层目录并重命名
cp -r test/ newtest
#循环地将test文件夹下文件复制到newtest中
rm file.txt #删除文件
rmdir direc #删除文件夹
mkdir "direction_name" #创建文件夹
find . -name src -type d
#在当前文件夹下寻找名为src的类型且类型为文件夹
fd "**/test/*.py"
#在当前文件夹下寻找路径格式类似 /test/a.py的文件
find . -name "*.tmp" -exec rm {} \;
#当前文件夹下寻找所有tmp结尾 并执行删除指令
locate name
grep -R string .#在当前文件夹下recursively寻找出现string的位置
rg "import sys" -t py ~/scratch# 类似,更快但需要提前下载
cat example.sh | fzf#交互式fuzzy查找打开的文件里的内容
输入输出流(iostream)
cat < file1.txt >file2.txt
#将file1内容输入给cat,并将cat 输出写入file2
注意 >为覆盖内容, >> 为额外写入内容
Pipeline: “|”, 将左边的输出作为右边的输入,可以无限套娃
ls -l | tail -n1 > ls.txt# 将ls -l 的输出给到tail
#tail -n1 获取最后一行, > 将最后一行写入ls.txt
echo 500 | tee test.txt
#写入的同时在terminal中打印
权限管理
可以通过ls -l 查看文件权限,包括读写执行
通常情况权限为普通usr
最高权限为root,可以拥有无上权利,sudo 代表以super usr 身份do 某个task,往往需要输入密码
sudo su#以root身份打开shell
exit # 退出该模式