Shell
基本shell指令¶
Bash
#***多用--help***
#***多用man <指令>***
#输出
echo
#查看命令路径
which echo
#查看当前目录
pwd
#更换当前目录
cd ..(父目录).(当前目录)/(根目录)~(主目录)-(之前的目录)
#展示目录下的文件,可加路径
ls
ls -l #详细信息
#重命名或移动文件
mv
#重命名并复制文件
cp
#删除,非递归
rm
rmdir
#新建文件夹
mkdir
#递归查找文件,可进行相应的操作
find <查找目录> -name "文件名" -type 文件类型 --exec 执行命令
#在文件中查找,
grep [sth] "文件名"
输入输出流¶
<
:改变输入流
>
:改变输出流(覆盖)
>>
:改变输出流(追加)
|
:管道,将左侧的输出作为右侧的输入
Bash
#输出到文件
echo hello > hello.txt
#读取文件并从标准输出流输出
cat hello.txt
#改变标准输入流,改变标准输出流,实现了复制
cat < hello.txt > hello2.txt
#输出ls的最后1行
ls -l | tail -n1
#接受输入流输出到文件的同时,也输出到标准输出流
tee
改变输出流时,进行写入操作的shell,如果shell没有root权限,即使使用了sudo执行了命令,输出的操作依然会被拒绝。
可以使用管道操作将sudo作用于可以写入的命令以修改被保护的文件。
root权限¶
单引号与双引号¶
符号¶
$0
:正在运行的指令$1
:第一个参数$?
:上一条指令的错误代码$_
:上一个参数$#
:参数的数量$$
:进程id$@
:所有的参数,可以通过for进行调用!!
:会被替换为上一条指令{}
:展开,abc.{jpg,png}
等于abc.jpg abc.png
<变量名>=$(指令名)
:在变量中保存输出,注意等号两端不能有空格- glob符号详见Git.md
脚本编写¶
脚本与函数的区别:
- 脚本运行在一个新的进程中,函数运行在当前进程中。
- 脚本在每次被使用时加载,函数在定义时被加载,
- 脚本不一定是shell语言,可以使用python或其他语言。
脚本的第一行称为shebang行,由#!
开始,后面跟可执行文件的绝对路径,若如shebang行,则默认使用当前shell。