配置文件加载
非登陆式shell分为交互式和非交互式。交互式会在终端里面等待用户输入,处理之后将结果反馈出来,和用户有一个直接的交互;如果直接用sh去执行一个脚本,就是一个非交互式的shell,它没有等待用户的输入。
登陆式shell首先加载/etc/profile,然后加载~/.bash_profile、/.bash_login和/.profile的其中之一,接下来找~/.bashrc文件,接着执行/etc/bashrc。
非登录式直接加载~/.bashrc以及/etc/bashrc。
当我们修改了某一个配置文件之后,想要让它在当前的shell当中生效,需要用source执行一下这个脚本。
source ~/.bashrc
运算符和引用
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
创建服务器: 创建一个server.js 的文件,并写入以下代码:
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888/');
在终端使用 node 命令执行以上的代码:
node server.js
返回以下结果:
Server running at http://127.0.0.1:8888/
&的一个弊端:如果当前shell关闭,服务仍然会关闭。
如果想要shell关闭,后台依然能运行,就要搭配nohup去使用。
管道
管道与管道符|,作用是将前一个命令的结果传递给后面的命令
语法:cmd1|cmd2
要求:管道右侧的命令必须能接受标准输入才行,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理
注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出
#!/bin/bash
//使用cat查看access.log的内容,并且将这个内容作为grep命令的输入
cat platform.access.log | grep ERROR
//使用netstat查看网络连接状态,传递给grep,grep筛选之后的结果再传递给wc命令做统计
netstat -an|grep ESTABLISHED | wc -l
find . -maxdepth l -name "*.sh" | eargs ls -l