一 shell 基本指令
1.
$ --普通用户 # -- 超级用户
xx --help 查看xx 指令帮助
man xxx 查看xx指令用法
2.
pwd 当前目录
cd 。。 回到根目录
cd / 顶端根目录
cd ~ 个人主目录
3.
file xxx 读取文件中文本属性
4.linux的目录结构
/boot 存放linux 内核 和启动加载项
/bin 默认可执行程序
/usr 支持用户程序的文件 /usr/bin 用户要用的可执行程序
/sbin /usr/sbin 系统管理员专用程序,超级用户执行
/etc 操作系统设置的文件
/var 日志文件
/lib 共享库文件
/dev 设备驱动文件
5.输入输出
sort < ls.txt > sorted_ls.txt
将ls文件中内容排序输出到屏幕 然后输出到 sorted_ls
管道:|(vertical bar) 连接多个指令,表示前一个指令的输出是下一个指令的输入。
6.权限
chmod 修改文件/目录的访问权限
chown 修改文件/目录的所有权
7.多任务处理(job)
ps:系统正在运行的进程
jobs:shell中显示进程目录
8.解析(parsing)是将一连串字符串分解为有意义的令牌,创建解析树(parse tree)
shell就是一个进程,可创建其他进程。
fork系统调用创建调用进程的副本。
9.shell脚本第一行输入 #!/bin/sh , 内核识别文件为bourne shell脚本。
bash shell 是Bourne shell的升级版,大部分linux使用 Bash shell。
10.
正在执行的程序称进程或作业(job),每个进程都有其固有ID,即PID。
作业控制可选择性的执行程序,分前台和后台。
11.命令行中的编辑器
内置编辑器有两种:一般默认的是emacs 另一种是vi
emacs的基本操作:
ctrl+P/N 向上/下 移动历史文件
ctrl+A 移至行首 ctrl+E 移至行尾
ctrl+U 删除行 ctrl+Y恢复最后删除的内容
ctrl+K 删除光标到行尾的内容
Esc+ D / H 向前/后删除一个字符
12.别名
别名 alias 就是用户把 shell命令 自定义为其他的名字,便于使用。
13.元字符 / 通配符
? * [ ] { } \
14.变量
declare typeset,全局变量一般都是大写字母。
$# 的值等于参数个数。
15.重定向
启动shell的同时启动了 stdin stdout 和 stderr。
想把内容输出到某文件可使用重定向 > 配合使用的命令exec
二 检索功能
1.正则表达式 (Regular Expressions)
正则表达式是匹配用于检索的相同字符集的模式。
vim支持 使用正则表达式
2.grep检索
grep指令用于检索与输入文件的已有模式列表匹配的行,之后通过标准复制然后显示 检索到的行。
egrep 是 grep的扩展,可使用Regular Expression的元字符集。
fgrep类似于 grep,但是不能使用 Regular Expression的元字符集。
3.linux的文本处理工具
3.1 sed
sed是以行为单位的非交互式编辑器,从通过标准输入或文件获得要处理的输入文本,对指定的行进行逐行处理。
3.2 awk
awk是操作数据并创建报告的语言。
三 bash shell 编程
1.将命令合并转为文件执行,文件就称为shell 脚本。
shell脚本是非交互的。(noninteractive)
shell脚本的第一行,成为 shbang行。
shbang行是 #! /bin/bash 则使用Bash shell。
shbang行是 #! /bin/sh 则使用Bourne shell。
2.
注释 comment #
变量 variable $
read 用于从终端或文件读取输入的字符串。
3.
shift 命令按照指定数字向左移动参数目录。
内部字段分隔符IFS 评估空格、TAB 、newline字符,需要使用其他分隔符的时可重置。
function 定义函数
unset 删除内存中的函数
export 导数函数,使其可以在子shell 中使用。
source命令从定义函数的文件调用并使用需要的函数。
4.
kill -l 和 trap -l 命令可以查看所有信号目录。
getopts 函数处理命令行选项和参数。
eval 评估命令行,替换shell后执行。
set操作命令行参数,选项前加“ - ”表示设置为ON,加“ + ”表示设置为OFF。
5.启动脚本
vsftpd
6.实用指令
cut 截取文件指定的各行字段
paste 合并文件信息
join 合并字段并删除等值字段中的一个,使其唯一。
tr 通过标准输入修改或者删除字符。
split 以大小单位或行单位截取大容量的文本。
col 是更改换行字符(line feed)的过滤器。
xarg 以行为单位读取输入数据并执行参数化。
find 在目录层级检索文件。
tee 通过标准输入读取,并保存为标准输出和文件。
参考:图书 《linux shell 脚本编程入门 》 作者:【韩】金泰龙