Shell 的学习笔记
Aug 12, 2023cp 注意事项
cp 可以复制文件、目录
cp source destination
- 重写文件不会进行警告,需要警告,补上 -i。
- 目标目录父级必须存在,否则报错。
- 目标可为目录或文件,如果 destination 尾不指定 /,优先视为目录,目录不存在则会复制成 destination 文件。强制指定 / 则只视为目录处理,目录不存在会报错。
使用 cp 应明确,复制到目录就在后方指定 /,减少歧义的可能
cp -r source destination
当复制目录时,必须使用 -r
对于源目录和目标目录,有/尾缀,指明复制的是源目录下的内容,或复制到目标目录下。
- 目标目录无
/,如果目标目录存在,则当目标目录有/处理。 - 目标目录无
/,如果目录不存在,则创建一个目标目录,再当目标目录有/处理
目标目录父级不存在,也会报错
mv 改名
mv 可直接用于移动文件或目录,没有 -r,且/尾缀无作用。
- 对于文件:重命名会覆盖源文件
- 对于目录:目标不存在,这更名成为目标;如果目标存在,更名成为子目录
rm 删除文件、目录
rm 对于目录,如果带上/则处理的是目录下的内容。
mkdir 创建目录
带上 -p 参数,可以创建多级目录。
file 查看文件类型
可以辨别 link 和它的指向
cat 查看文件
查看文件所有内容
cat -n 内容会带上行号
more、less 分页浏览文件
less 功能包含 more
head、tail 查看文件头尾内容
可以指定 -n num 或 -num 指定内容行数
tail -n 10 Main.lua
tail -10 Main.lua
tail Main.lua -10
特殊的,带上-f,tail 可以实时查看文件的变化。
ps、top 系统监控
ps 当前系统信息
top 实时系统信息
kill、killall 结束进程
kill -s signal PID
| 命令 | 说明 |
|---|---|
| HUP | 挂起 |
| INT | 中断 |
| QUIT | 结束运行 |
| KILL | 无条件终止 |
| SEGV | 段错误 |
| TERM | 尽可能终止 |
| STOP | 无条件停止,但不终止 |
| TSTP | 停止或暂停,但在后台继续运行 |
| CONT | 再 STOP 或 TSTP 之后恢复执行 |
kill 默认使用TERM ,Ï不一定成功,可以用 ps,top 查看结果。kill 支持指定多个 PID
kill 12330
#等同于
kill -s TERM 12330
killall 支持通配符控制进程
type 查看命令类型
type ps
type cd
type 可以查看 bash shell 中使用的命令是内建指令还是外部指令。同一指令可能有不同的实现,可以通过-a查看完整的。
内建命令运行于当前进程,外部指令则是通过创建进程调用运行
环境变量
set、env、printevn 都能输出环境变量
- set 输出全局变量、局部变量、用户自定义变量,并排序
- env、printevn 输出全局变量
定义、改动、使用局部变量
# 定义或改动
variable_name=value
variable_name="str_value"
# 使用
echo $variable_name
注意
=两边不能有空格- 变量大小写敏感
- 根据规范,自定义变量名要都用小写,大写是给系统用的
局部变量对于子 shell 不存在
删除变量
unset variable_name
创建全局变量
export some_exist_variable
export 已有的局部变量,即可将局部变量提升为全局变量。
子 shell 可以访问全局变量,可以也能改,但是改动不会影响到父 shell
Comments