1. Bash跟shell的关系
Shell是一个供用户操作的Linux程序,(这里我们其实使用的是Ubuntu系统),同时它也是一种程序设计语言,可以用来编写代码来完成更加复杂的操作过程;
2. 基础知识
2.1 注释:# Add one-line comments
2.2 变量:$var
Bash中使用美元符号$
来定义变量;
例如:[示例来自《菜鸟教程》]
2.3 逻辑运算符
&&
:用来条件执行两个语句,A && B
,如果A执行成功,则执行B指令;
2.4 文件路径
Command | description |
---|---|
~ | home目录 |
$(dirname "$0") | 获取当前脚本所在目录 |
2.5 多行接续符:space + \
2.6 命令输入
不保存当前bash命令——“命令前加空格”
在当前命令前面“+空格”
echo this_command_is_saved
具体原理请参考博文《Ubuntu bash不记录history方法》
清空历史bash命令
# 第一步: 删除 .bash_history 文件
rm -rf ~/.bash_history
# 第二步: 清空命令历史记录
history -c
3. 常见命令
sudo apt update
:更新包摘要信息
sudo apt update
可以更新包管理器中的各个包的摘要信息,从而可以知道哪些包可以进行更新;
关于 apt update 和 apt upgrade 命令的区别,请参考博文《apt的update和upgrade命令的区别是什么?》
4. 文本编辑
5.1 常见命令
cat
: concatenate
显示文件内容:cat file_name
5.2 删除最后一行文字
sed -i '$ d' file_txt
Note
“sed”的全称是"Stream Editor",是一种在Linux和Unix系统中广泛使用的文本编辑器工具。它可以读取、编辑和转换文本文件,支持使用正则表达式匹配和替换文本,可以实现诸如添加、删除、替换和排序等操作。
5. 文件管理
6.1 常用命令
touch
:新建文件
ll
:显示当前文件夹所有文件的详细信息
ll
是命令ls -l
的别名,(跟Windows下文件夹“详细信息”的文件视图很像);
tree
:状图形式显示目录结构
tree [目录名] [选项]
6.2 常见命令用例
unzip val2017.zip
:解压zip压缩包
此命令会将val2017.zip
的内容解压到当前目录的val2017
文件夹中。
rm -rf file1 file2 ... filen
:递归删除文件或目录
这个命令的作用是删除文件、或者文件夹以及包含的所有子文件或子文件夹。
6. 环境变量
printenv
:输出环境变量
printenv
可以用来显示环境变量的值;
export
:设置仅在当前终端窗口生效的变量
示例:
export CUDA_VISIBLE_DEVICES=-1
设置环境变量 CUDA_VISIBLE_DEVICES值为-1;
7. 使用Python执行bash指令
可以使用Python来执行bash指令,也就是os.system(command)函数;
8. SSH连接
断开连接
exit