1.由目的单一的小程序组成
2.一切皆文件
3.尽量避免捕获用户接口
4.配置文件保存为纯文本格式
GUI接口:
CLI接口:
命令提示符,prompt,bash
#:root
$:普通用户
命令:
命令格式:
命令 选项 参数
选项:
短选项:-
多个选项组合:-a -b = -ab
长选项:–
参数:命命令的作用对象
使用凭证:root centos
虚拟终端(terminal),ctrl+Alt+F1-F6
切换到图像化界面:startx &
su:switch user
#su -l 用户名
#passwd
Shell:
GUI:Graphic User Interface(图形化界面)
CLI:Command Line Interface(命令操作界面)
IDE:集成开发环境
login:
用户名:用户ID
认证机制:Authentication
授权:Authorization
审计:Audition(日志)
prompt:命令提示符
command options。。。 argument。。。
选项:修改命令执行特性
短选项
长选项
参数:对谁起作用
list:ls 列出,列表
目录:文件,路径映射
列出指定路径下的文件
ls:默认显示当前目录下文件
-l:显示完整信息
文件类型:
-:普通文件(f)
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件(symbolic link file)
p:命令管道文件(pipe)
s:套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行)
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify,修改文件内容
改变:change,改变文件属性
-h:作单位换算
-a:显示以.开拓的隐藏文件
. 显示当前目录
… 显示父目录
-A
-d:显示目录自身属性
-i:索引节点号 index node,iNode
-r:逆序显示
-R:递归显示
cd:change directory
家目录:主目录,home directory
cd -username:进入指定用户的家目录
cd -:在当前目录和前一次所在的目录之间来回切换
命令类型:
内置命令(shell内置)
外部命令:在文件系统e1某个路径下有一个与命令名称相应的可执行文件
环境变量:命名的内存空间
变量赋值
NAME=Jerry
PATH:使用冒号分隔的路径
type:显示指令属于哪一种类型
date 时间管理
Linux:RTC
ntp:网络时间协议
获得命令的使用帮助;
内部命令:help command
外部命令:command –
命令手册:manual command
<>:必选
[]:可选
…:可以出现多次
|:多选一
{}:分组
翻屏:
向后翻一屏:SPACE
向前翻一屏:b
向后翻一行:enter
向前翻一行:k
查找:
/keyword:向后
n:下一个
N:前一个
?KEYWORD:向前
n:下一个
N:前一个
q:退出
在线文档:
info COMMAND
文档:/user/share/doc
google
hwclock:查看时钟
-w:
-s:
文件系统:
rootfs:根文件系统
FHS:文件系统层次标准
/boot:系统启动相关文件,如内核,initrd,以及grup(bootlcader)
/dev:设备文件
块设备:随机访问,数据块
字符设备:线性访问,安字符为单位
设备号:主设备号(major)和次设备号(minor)
/etc:配置文件
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:root用户的家目录在/root下
/lib:库文件
静态库:.a
动态库:.dll,.so(share object)
/lib/modules:内核模块文件
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件,
/var:可变化文件
/bin:可执行文件,用户命令
/sbin:管理命令
/user:shared,read-only
/user/bin
/user/sbin
/user/lib
/user/local
文件管理
目录管理
ls
cd
pwd
mkdir:创建空目录
-p:创建多层目录(会自动创建原本没有的二级目录)
-v:显示详细过程信息
tree:查看目录树
一次性创建/mnt/test/x/m,y
mkdir -pv /mnt/test/{x/m,y}
mkdir -pv /mnt/test/x/m /mnt/test/y
删除目录:rmdir
删除空目录
-p
文件创建和删除
touch
-a
-m
-t
-c
stat
创建文件,使用文本编辑器
nano
删除:rm
运行程序
设备管理
软件管理
网络管理
文件处理:cat,less,head,tail,cut,sort,uniq,grep 正则表达式
目录管理:
ls,cd,pwd,mkdir,rmdir,tree
文件管理:
touch,stat,file,rm,cp,mv,nano
日期时间:
date,clock,hwclock,cal
查看文本:
cat,tac,more,less,head,tail
cat:连接并显示
cat -n 显示行号
cat -E 显示每一行结束符
tac:倒着显示
分屏显示:
more,less
more:向后翻(在没翻到尾部之前,B向前)
less:
head:查看前n行
tail:查看后n行
head -n 1 文件
tail -n 2 文件
tail -f 查看文件尾部,不退出,等待显示后续追加的新内容
文本处理:
cut,join,sed,awk
database:数据库
关系型数据库:
表:二维表
文本文件:
TOM;23;male;2012/05/06
cut:
-d:指定字段分隔符,默认是空格
-f:指定显示的字段
-f 1,3 显示第一个,第三个
-f 1-3 显示第一个到第三个
文本排序:sort:根据字母在ASCII码中的升序进行排序(从第一个字母或数字开始比较)
sort -n 按照数字大小排序
sort -r 逆序
-t 指定字段分隔符 -k指定以第几个为关键字
sort -t -k3 文件 :指定第三个为准比较数值大小
sort -u:相同的行只显示一次
sort -f:忽略字符大小写
uniq:报告并忽略重复出现的行(相邻且一样的行)
-d:只显示重复的行
-D:显示所有重复的行
-c:显示每一行重复的次数
文本统计:wc:显示行数单词数字节数
-l:行数
-w:单词数
-c:只显示字节数
-L:最长的字符包含多少字节
字符处理命令:tr-——转换或删除字符
tr ‘ab’ ‘AB’ :将a换为A,b换为B
tr -d ‘ab’ :删除出现的所有ab
bash及其特性:
shell:外壳
GUI:Gnome,KDE,Xfce
CLI:sh,csh,ksh,bash
进程,程序
进程:在每一个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行的实例
用户工作环境:
bash:# ¥
shell,子shell (pstree查看)
bash:
1.命令历史
2.管道,重定向
3.命令别名
4.命令行编辑
5.命令行展开
6.文件名通配
7.变量
8.编程
命令行编辑:
命令光标跳转:
Ctrl+a 调到命令行首;Ctrl+e 跳到命令行尾
ctrl+u:删除光标至命令行首的内容
Ctrl+k:删除光标至命令行尾
ctrl+l:清屏
命令历史:
history:查看命令历史
history -c:清空命令历史
history -d 500:删除第500个命令历史
history -d 500 10:删除第500个之后10个的命令历史
history -w:保存命令历史至历史文件
环境变量
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
命令历史的使用技巧:
!n:执行命令中历史中第n条命令
!-n:执行命令历史中的倒数第n条命令
!!:执行上一条命令
!strin执行最近一次以字符串开头的命令
!$:引用前一个命令的后一个参数——》esc之后.
命令补全:
PATH:两下tab键显示全部,一下tab补全唯一的命令
路径补全:一下tab补全,不唯一的话连敲两下tab
命令别名:
alias ddd=‘command 【option】【arguments】
在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围仅为当前shell进程
alias,显示所有命令别名
unalias ddd
\CMD 使用本身命令
命令替换:$(command),反引号`command`
把命令中某个子命令替换为其执行结果的过程
echo “The current directory is $(pwd)”
touch ./file-&(deta +%F+%H+%M+%S) 创建以当前时间命名的文件(file-当前时间)
bash支持的引号:
``:命令替换
“”:弱引用,可以实现变量替换
‘’:强引用,不完成变量替换
文件名通配:
*:匹配任意长度的任意字符 ls a*显示以a开头的文件
?:匹配任意单个字符 ls ?a*
【】:匹配制定范围内的任意单个字符 [a-zA-Z] ; ls [a-zA-z]*[0-9]显示字母开头,数字结尾
[^0-9]非数字开头
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
[[:alpha:]]*[[:alpha:]]:字母开头,字母结尾
计算资源:
权限
用户
用户,容器,关联权限:用户组,方便的指派权限
权限:r,w,x
文件:
r:可读,可以使用类似cat等命令查看文件内容
w:可写,可以编辑或删除此文件
x:可执行,可以命令提示符下当作命令提交给内核运行
目录:
r:可以对此目录执行ls以列出内部所有文件 1
w:可以再次目录创建文件 2
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件详细信息 4
用户: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,属组为tom,该进程发起时用于对象是jerry,使用只能看这个对象的属组,这个对象的属组是tom,和进程的属组是一样的,使用进程只有对对象进行rw-的权限。
tom:ls
rwx-xr--x root root /etc/ls
当同名执行ls命令时,由于tom的用户和属组和/etc/ls的用户名和属组都不一样,所以tom只有--x的权限,也就是只能对其执行。
cat /etc/shadow
accont:登录名
password:密码
UID:
GID:基本组ID
command:用户注释信息
HOME DIR:家目录
SHELL:用户默认shell
/etc/shadow
accont:登录名
encrypted password:加密密码
加密方法:
对称加密:加密解密使用同一个密码
公钥加密:每个密码成对出现,一个为私钥(secret key),一个为公钥(public key)
单向加密,散列加密(指纹加密):提取数据特征码,做完整性校验
1.雪崩效应
2.定长输出
MD5:message digest,128位定长输出
sha1:secure Hash algorithm,160位定长输出
useradd USERNAME:创建用户名
passwd tom 输入密码:修改用户密码
groupadd GRPNAME:创建用户组
用户管理:useradd,usermod,userdel,passwd,cash,finger,id,chage
组管理:groupadd,groupdel,groupmod,gpasswd
权限管理:chown,chgrp,chmod