很多时候,系统仅有终端,没有像 Windows 或 Mac 一样的查找文件功能,无法可视化浏览、不能访问文件系统、不能安装“包”,仅能在终端 Terminal写命令才可以与机器交互时,一些 Linux命令就是唯一操作这些内容的方式。ls #当前目录中有哪些文件
ls -la # 显示当前目录中包含隐藏文件在内的所有文件
cd /path/to/dir #去到此路径下
cd ~ # 回到主目录
cd .. # 返回上一层目录
mkdir my-project # 创建一个目录
mkdir -p a/b/c # 一次创建多个内嵌的目录
cp file.txt backup.txt # 创建一个文件副本
cp -r src/ src-backup/ # 用递归的方式创建一个目录的副本
mv old.txt new.txt # 重命名文件
mv file.txt /tmp/ # 移动一个文件
rm file.txt # 彻底删除一个文件
rm -rf my-dir/ # 彻底删除目录及期内所有内容
cat file.txt # 将文件内容显示在terminal 里
head -20 file.txt # 显示文件的前20行内容
tail -20 file.txt # 显示文件的最后20行内容
tail -f log.txt # 实时监控日志(Ctrl+C 停止)
less file.txt # 滚动浏览文件 (按 q 键退出)
grep "error" training.log # 列出含有"error"的所有行
grep -r "learning_rate" . # 搜索当前目录所有包含“learning_rate"的 文件
grep -i "cuda" config.yaml # 区分大小写的搜索
find . -name "*.py" # 在当前目录下搜索所有 python 文件
find . -name "*.ckpt" -size +1G # 搜索所有检查点大于1G 的文件
df -h # 列出所有挂载的磁盘的使用情况
df -h /home # /home 的使用情况
du -sh * # 当时目录下,所有文件的大小
du -sh ~/.cache # 缓存的大小
du -sh /data/checkpoints/ # 核查 checkpoints 的大小
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -20
# 找到最大空间的占有者
网络
# Download files
wget https://example.com/model.bin #用wget 下载一个文件
curl -O https://example.com/data.tar.gz # 用curl 下载一个文件
curl -s https://api.example.com/health | python3 -m json.tool
# 获取一个 API,以 json(美化)形式输出。
# Transfer files between machines
scp model.bin user@remote:/data/ # 把本地文件拷贝到远程
scp user@remote:/data/results.csv .# 从远程拷贝到本地
scp -r user@remote:/data/checkpoints/ ./local-dir/
#拷贝目录到本地
# 同步目录
rsync -avz --progress ./data/ user@remote:/data/
rsync -avz --progress user@remote:/results/ ./results/
tmux:保持会话活跃
tmux 可以在合上电脑后,仍然让训练运行。前方介绍过这个工具。
WSL2工具(为 Windows 用户)
Windows 用户可以利用 WSL2运行真实的 Linux 环境,不需要做双系统。
把 MAC 中的命令在 LINUX 上运行时,要注意一些命令陷阱,如 | | |
|---|
brew install | sudo apt install | 不同包的名字。brew in stall htop 与sudo apt install htop 功能一致,但是 brew install readling 和 sudo apt install libreadline-dev 却不一致。 |
open file.txt | xdg-open file.txt | 在远程无 GUI 的环境中,用 cat 或 less 打开文件,而不是 open |
pbcopy | | |
~/.zshrc | ~/.bashrc | macOS默认 zsh;所有 Linux 服务器使用 bash |
/opt/homebrew/ | /usr/bin/ | |
sed -i '' 's/a/b/' file | sed -i 's/a/b/' file | macOS 的sed 命令需要一个空字符串-i;Linux 不需要 |
| Case-insensitive filesystem | Case-sensitive filesystem | Model.py 和 model.py在 linux 中是不同的文件(大小写敏感) |
| | 换行符一样。但 WIndows 使用\r\n换行,会破坏 bash 的脚本。但运行 dos2unix 可以解决 |