>[success] # shell -- 执行
~~~
1.将 Shell 脚本作为程序运行
2.将 Shell 脚本作为参数传递给 Bash 解释器 、sh
3.将 Shell 脚本使用source 执行
4.将Shell 脚本放入$PATH 中执行
~~~
>[danger] ##### 执行前知道事
~~~
1.当执行node 程序的时候,我们一般在控制台执行的命令是'node 文件名'
2.Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。常见的 Shell 有 sh、bash、
csh、tcsh、ash 等
3.我们使用的shell 版本为bash。因此也可以'bash shell脚本文件'
4.shell 文件结尾最好是'.sh'
~~~
>[danger] ##### 编写一个shell 格式文件
~~~
#!/bin/bash
echo "Hello World !" #这是一条语句
~~~
~~~
1.第 1 行的'#!'是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种
Shell;后面的'/bin/bash'就是指明了解释器的具体位置,如果写成'/bin/node' 则是使用bin文件
下node 解释器来解释,后面当然也可以是python等一类的其他语言
2.第一行的#!/bin/bash一定要写对,好让系统查找到正确的解释器
3.'#'及其后面的内容是注释。Shell 脚本中所有以'#'开头的都是注释(当然以`#!`开头的除外)
~~~
>[danger] ##### Shell 脚本作为程序运行
~~~
1.在没做特殊设置的情况下一般创建的文件最高权限'644' 没有可执行权限,也就是当我们创建
一个脚本文件,想要他可以直接执行需要'chmod +x 文件' 增加执行权限
2.当文件具有可执行权限的时候,执行脚本需要全路径,举个例子'/root/test.sh',如果现在非root
目录下想执行需要'/root/test.sh',当如果在'root' 目录下则需要'./test.sh'如果不写`./`会到系统路径
(由 PATH 环境变量指定)下查找 'test.sh',而系统路径下显然不存在这个脚本,所以会执行失败
~~~
* 如图
![](https://img.kancloud.cn/ec/d7/ecd775b73e2a5860b2e812978c14cbfd_375x116.png)
>[danger] ##### Shell 脚本作为参数传递给 Bash 解释器、sh
~~~
1.如果当前文件没有给予可执行权限,并且他是一个bash脚本,那么可以像运行node 程序那种
'bash 文件名' / 'sh 文件名'
~~~
* 如图
![](https://img.kancloud.cn/ad/36/ad36814af6bd24edfa0c76d9f62cf62c_335x37.png)
>[danger] ##### Shell 脚本使用source 执行
~~~
1.source 是 Shell 内置命令的一种,它会读取脚本文件中的代码,并依次执行所有语句。
你也可以理解为,source 命令会强制执行脚本文件中的全部命令,而忽略脚本文件的权限,
并且他是一个bash脚本'source 文件名'
~~~
* 如图
![](https://img.kancloud.cn/48/bc/48bca5c411d73bef6e1baf2834aec666_380x41.png)
>[danger] ##### Shell 脚本放入$PATH 中执行
~~~
1.执行$PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.如果脚本文件在这些文件中并且'具备执行权限'就可以直接 '文件名调用'
3.简单的说如果想把一个自定义的脚本直接可以执行,或者把这个文件拷贝到目标目录下,
或者把脚本所在目录添加到环境变量中的PATH路径中
4.给$PATH 增加新的地址(关于export 可参考变量作用域章节)
export PATH="$PATH":/root/shells
~~~
* 如图
![](https://img.kancloud.cn/4d/a5/4da5b712d6c6214fef5c15cde803ccf4_486x71.png)
>[info] ## 参考
[# 执行Shell脚本(多种方法)](http://www.beylze.cn/shell/698.html)
- 安装-VMware 虚拟机
- 远程连接
- Windows -- wsl
- Linux -- 认识 Linux 和操作系统
- Linux -- Linux 和 windows 对比
- Linux -- 命令提示符
- Linux -- 文件目录
- Linux -- 文件类型
- Linux -- 绝对和相对路径
- Linux -- 常用快捷键
- Linux -- 三种帮助命令
- 帮助命令 -- man
- 帮助命令 -- help
- 帮助命令 -- info
- Linux -- 指令
- alias -- 设置别名
- history -- 查看历史命令
- cd -- 更改目录(切换文件夹)
- pwd -- 打印目录
- ls -- 列出文件内容
- mkdir -- 创建文件夹
- rmdir -- 删除一个空的目录
- touch -- 创建普通文件/修改时间
- cp -- 复制粘贴
- mv -- 移动和重名
- rm -- 删除
- cat/tac -- 查看纯文本文件
- more/less -- 分页读取信息
- head -- 从文本开头查看
- tail -- 从文本结尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 统计文件的行数、单词、字节数
- tr -- 替换、缩减或删除字符
- find -- 文件查找
- grep -- 文件当中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二进制/源代码文件 路径
- which -- 查找环境变量
- 压缩和解压
- ln -- 链接
- wget -- 下载指定的url资源
- 重定向 -- << /< />/> >
- 逻辑控制 -- &&
- echo -- 输出指定内容
- date/cal -- 查看日期和日历
- Linux -- 进程管理
- Linux-- ps 指令
- vi/vim - 文本编辑器
- 更多
- Linux-- 开关机命令
- Liunx -- 退出登录
- Linux-- 查看登录用户信息
- Linux -- 环境变量
- Linux -- 用户
- Linux -- 文件管理
- 文件权限设置 -- chmod
- 更改文件的拥有者 -- chown
- 默认权限 -- umask
- Linux -- 用户
- 新建/删除用户 -- useradd/userdel
- 修改用户属性 -- usermod/chage
- 新建/删除用户组 -- groupadd/groupdel
- 用户切换 -- su/sudo
- 用户/用户组的配置文件
- 用户家目录被删除解决
- last、 lastlog命令查看用户详细的登录信息
- Linux -- shell
- Linux -- 管道符号
- shell -- 执行
- shell -- 变量
- shell -- 字符串
- shell -- 数组
- Shell -- declare 设置变量属性
- shell -- 数学计算
- shell -- 变量作用域
- shell -- 位置参数变量
- shell -- read
- shell - if 语句
- shell -- test
- shell -- case
- Linux -- 循环
- Linux -- 软件包管理