查看文本:
cat、tac、more、less、head、tail
cat:连接并显示
-n 显示行号
-E 显示行结束符 $是回车符
-A 显示所有的控制符
tac反过来查看
Ctrl+c 终止当前命令
分屏显示:
more、less
more: 向后翻
less:
head:查看前n行
tail:查看后n行
-n
tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;用于查看日志等类似的文件。
文本处理:
cut、join、sed、awk
database:数据库
关系型数据库:
表:二维表
文本文件:
Tom:23:male:2013/05/06
cut:
-d: 指定字段分隔符,默认是空格
-f: 指定要显示的字段
-f1,3
-f1-3
文本排序:sort
-n:数值排序
-r: 降序
-t: 字段分隔符
-k: 以哪个字段为关键字进行排序
-u: 排序后相同的行只显示一次
-f: 排序时忽略字符大小写
sort-t: -k3 -n /etc/passwd
uniq:
-c: 显示文件中行重复的次数
-d: 只显示重复的行
文本统计:wc (word count) 行数单词数 字符数
-l 行数
-w 单词数
-c 字符数
-L 最长的一行包含多少个字符
字符处理命令:tr ——转换或删除字符
tr [OPTION]... SET1 [SET2] tr 'ac' 'AB' 把a替换成A b替换成B
-d: 删除出现在字符集中的所有字符
tr ab AB
tr -d 'ab'
bash及其特性:
shell: 外壳
GUI:Gnome, KDE, Xfce
CLI: sh, csh, ksh, bash(开源协定), tcsh,zsh(最新的sh)
root, student
程序:进程
进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例
用户工作环境:
bash:
#root用户
$普通用户
tom,jerry
shell,子shell
pstree 显示进程树
bash—bash从init进程开始每个进程都是其子进程创建
bash:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程 man bash可以查看bash帮助文档
命令行编辑:
光标跳转:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏
命令历史:
查看命令历史:history 当前目录下,.bash_history
-c:清空命令历史
-dOFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
环境变量
PATH:命令搜索路径
HISTSIZE: 命令历史缓冲区大小1000条
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
Esc, .
Alt+.
tab
命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,
如果多于一个,两次tab,可以给出列表;否则将直接补全;
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;
命令别名(提高效率)
alias CMDALIAS='COMMAND [options][arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
alias cls=clear
unalias cls
unalias CMDALIAS
.bashrc 设置永久别名
more.bashrc
\CMD 用命令本身而不是命令的引用
命令替换
命令替换: $(COMMAND), 反引号:`COMMAND` 使用命令执行结果
echo "The current directory is$(pwd)."
把命令中某个子命令替换为其执行结果的过程
file-2013-02-28-14-53-31.txt
touch ./file-$(date +%F-%H-%M-%S).txt
bash支持的引号:
``: 命令替换
"": 弱引用,可以实现变量替换
'': 强引用,不完成变量替换
文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z],[0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
# man 7 glob可以看上面的
[^]: 匹配指定范围之外的任意单个字符
[[:alpha:]]*[[:space:]]*[^[:alpha:]]
文件名通配练习:
1、创建a123, cd6, c78m,c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;
2、显示所有以a或m开头的文件;
ls [am]*
3、显示所有文件名中包含了数字的文件;
ls *[0-9]*
ls *[[:digit:]]*
4、显示所有以数字结尾且文件名中不包含空白的文件;
ls *[^[:space:]]*[0-9]
5、显示文件名中包含了非字母或数字的特殊符号的文件;
ls *[^[:alnum:]]*
用户、组、权限
安全上下文(secure context):
权限:
r, w, x
文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行;
目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls-l查看内部文件的详细信息;
rwx:
r--:只读4
r-x:读和执行6
---:无权限0
0 000 ---:无权限
1 001 --x: 执行
2 010 -w-: 写
3 011 -wx: 写和执行
4 100 r--: 只读
5 101 r-x: 读和执行
6 110 rw-: 读写
7 111 rwx: 读写执行
755:rwxr-xr-x
rw-r-----: 640
660:rw-rw----
rwxrwxr-x:775
用户:UID, /etc/passwd
组:GID, /etc/group
影子口令:
用户:/etc/shadow
组:/etc/gshadow
用户类别:
管理员:0
普通用户: 1-65535
系统用户:1-499
一般用户:500-60000
用户组类别:
管理员组:
普通组:
系统组:
一般组:
用户组类别:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
基本组:用户的默认组
附加组,额外组:默认组以外的其它组
进程:tom tom
对象:rwxrw-r-- jerry tom a.txt
tom: ls
rwxr-xr-x root root /bin/ls
ls
man 5 passwd
/etc/passwd
account: 登录名
password: 密码 密码!!被锁定用户
UID:
GID:基本组ID
comment: 注释
HOME DIR:家目录
SHELL:用户的默认shell
/etc/shadow 1表示md5后八位表示salt杂质
account: 登录名
encrypted password: 加密的密码
加密方法:
对称加密:加密和解密使用同一个密码
公钥加密:每个密码都成对儿出现,一个为私钥(secret key),一个为公钥(public key)
单向加密,散列加密:提取数据特征码,常用于数据完整性校验
1、雪崩效应 计算文件MD5码 md5sum 文件名
2、定长输出
MD5:Message Digest, 128位定长输出信息摘要 密码!!被锁定用户
SHA1:Secure Hash Algorithm, 160位定长输出 安全哈希加密