01|03
kernel space 内存碎片
GUI:图形用户界面
CLI:命令行用户界面
内核功能:
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
批处理系统
jobs1$$$$$$jobs2
kernel:2w
Debian,dpt
RedHat:rpm
01|04
Linux的基本原则:
1.由目的单一的小程序组成,组合小程序完成复杂任务。
2.一切皆文件
3.尽量避免捕获用户接口
4.配置文件保存为纯文本格式
CLI接口:
命令提示符:prompt,bash(shell)
#:root
$:普通用户
命令格式:
命令 选项 参数
短选项:-v 多个选项可以组合 -a -b=-ab
长选项:--word
参数:命令的作用对象
使用凭证:root redhat
虚拟终端(terminal):Ctrl+Alt+F2(默认由六个终端可以启动)
startx &_启动图形界面
linux灵活之处在于可以启动多个图形界面。
GUI:
Gnome:c
KDE:c++
XFace
CLI:
bash\csh\zsh\ksh\tcsh
su:switch user
su -l student 完全切换
su student半切换
exit退回原来的位置
#passwd修改当前用户密码,密码复杂性规则
02|01
GUI:Graphic User Interface
CLI:Command Line Interface
IDE:程序员所使用的程序开发环境
DLL:Dynamic Link Library(windows)
.so:shared object共享对象
认证机制:Authentication
授权:Authorization
审计:Audition(日志)
命令:
magic number魔数
shebang
#!/bin/bash看是不是当前程序所能理解的可执行格式,执行入口标志魔数等等
目录:文件,路径映射
路径:从指定起始点到目的地所经过位置。实现层次化管理的一种机制
相对目录:相对于现在所处位置
FHS:文件系统层级目录标准
文件名是不是文件的数据?
pwd:printing working directory显示当前目录,根目录/
ls
-l 长格式 显示完整信息
文件类型:
-:普通文件(f)
d: 目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件(symbolic link file),软链接文件
p:命令管道(pipe)
s:套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读、写、执行)rw-能读能写不能执行
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify改变文件内容
改变:change,metadata,元数据,改变文件属性或者元数据
-h:做单位转换的默认是b
-a:显示以.开头的隐藏文件
. 当前目录
..表示上一级目录(父目录)
-A:显示所有隐藏文件但是不包括.或者..
-d:显示目录自身属性
-i:index node,inode显示文件索引节点号
-r:逆序显示文件
-R:递归(recursive)显示 递归很消耗资源
cd:change directory
家目录:主目录,home directory用户有所有操作权限
cd ~
cd ~student 到student用户的家目录中
cd -:在前一个目录和当前目录来回切换
命令类型:
内置命令(shell内置):内部,内建
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
环境变量:命名的内存空间
变量赋值
NAME=Jerry
type:显示指定属于哪种类型
printenv显示环境
PATH:使用:分割的一堆路径
hash缓存:记录下来所用过的命令的缓存
cache is keen
Hash在键-值中查找速度O(1):无论队列多长,查找时间是一样的
date:时间管理
Linux:rtc当前时间
硬件时钟 clock hwclock
系统时钟 date
获取命令的使用帮助:
内部命令:
help COMMAND
外部命令:
COMMAND --help
命令手册:manual
man COMMAND打开查看命令的使用手册
man 2 read
whatis COMMAND显示命令摘要
分章节:
1:用户命令(/bin,/usr/bin,/usr/local/bin)
2:系统调用
3:库用户
4:特殊文件(设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项:Miscellaneous
8:管理命令(/sbin,/usr/sbin,/usr/local/sbin)管理员使用
如果出现乱码,则输入man 2 read
man mount
[]可省的<>必须给出的内容,非可选的…可以出现多次
|:多选一
{}:分组
man lvcreate
MAN:
NAME
SYNOPSIS 用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每个选项的意义
FILES:此命令相关的配置文件
EXAMPLES:使用示例
SEE ALSO:另外参照
翻屏:
向后翻一屏: SPACE
向前翻一屏:b
向后翻一行:ENTER
向前翻一行:k
查找:
/KEYWORD:向后
n:下一个
N:前一个
q:退出
?KETWORD:向前
date +%D 显示月/日/年
date +%F 显示年-月-日
date 时间 直接修改系统时间
hwclock -s读取硬件时间到系统中来
在线文档:
info ls
cal 12 2012 显示12月日历
练习:
1.echo是内部命令还是外部命令?
type echo 内部命令
2.其作用?
help echo
man echo显示一行文本echo -n
3.如何换行显示?
echo -e “The year is 2013. \nToday is 26.”
printf默认没有换行符 \n
02|03 Linux根文件详解
file命令及其用法
windows:PE
Linux:ELF
文件系统:
rootfs:根文件系统
除了目录,就是文件
ls / 查看到根文件下的一级子目录
/boot : 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev : 设备文件
设备文件:
块设备:随机访问,数据块
字符设备:线性访问,按字符为单位。显示器,鼠标
设备号:主设备号(major)和次设备号(minor)
/etc:配置文件:纯文本文件形式保存
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:管理员的家目录,生产环境中不建议直接用root登录
/lib:库文件
静态库, .a
动态库, .dll,.so (shared object)
/lib/modules:内核模块文件
库文件没有程序的直接访问入口,是直接调用的。
/media : 挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt : 可选目录,第三方程序的安装目录
/proc : 伪文件系统,内核映射文件(系统性能监控)
/sys : 伪文件系统,跟硬件设备相关的属性映射文件
/tmp : 临时文件,/var/tmp
/var : 可变化的文件
/bin : 可执行文件,用户命令
/sbin: 管理命令
/usr:shared,read-only,全局的共享的只读文件
/usr/bin
/usr/sbin
/usr/lib
/usr/local:(不影响系统启动)
第三方软件安装路径
/usr/local/bin;/usr/local/sbin;/usr/local/lib
命名规则:
1、长度不能超过255个字符
2、不能使用/当文件名
3、严格区分大小写
文件管理、目录管理、运行程序、设备管理、软件管理、进程管理、网络管理
目录管理:
ls cd pwd
mkdir: 创建空目录
-p:如果要创建的目录的父目录不存在,则同时创建
-v:verbose详细信息
命令行展开:自动将{}中的内容展开为两个
mkdir -pv /mnt/test/{x/m,y}
展开为:mkdir -pv /mnt/test/x/m /mnt/test/y
如果要创建a_b,a_c,d_b,d_c
mkdir {a,d}_{b,c} 神奇的Linux!!!(注:(a+b)(b+c)=ab+ac+db+bc)
#tree:查看目录树
删除目录:rmdir (remove directory)
删除空目录
一线单传空目录删除 rmdir -p xxxxx
文件创建和删除:
#touch 修改文件的时间戳
touch -a a改变文件访问时间
#stat显示文件和文件的状态信息
创建文件,可以使用文件编辑器
删除文件 rm
-i : 交互式(只有管理员有这个)
-f 强行删除
-r递归删除这个目录下的所有文件
rm -rf /
\rm a 直接删除不提示(有别名的命令前加,以原始形式使用)
02|04
复制和移动文件
cp SRC DEST
-r,-i,-f
-p 保留源文件的属组,属主
-a 保留文件所有原来的属性(用于实现备份,表示归档复制)
-d 保持链接自己(期望复制链接自己)
只能复制一个文件到一个文件,多个文件到一个目录
mv : move 移动文件
mv SRC DEST
重命名:
mv abc mn把当前目录下的abc重命名为mn
install uninstall
install复制文件并且设置属性
创建两个目录:
install -d /tmp/{install.1,install.2}
指定权限 -m