shell:人机交换接口
内核功能:进程管理、内存管理、文件系统、网络功能、硬件驱动、安全机制
历史:
1、GE,BELL,MIT弄了一个Multics,汇编弄得
2、Ken制作了Space Travel,但这个游戏只能在Multics上运行,就自己整了一个Unics
3、Ken和他同时在B语言的基础上开发了C语言,用C重写了Unics
4、伯克利学生学习,加了些功能,出了BSD
5、BSD和BELL打官司
6、80年代,PC机到来,但是Unix不能在PC上运行
7、美国教授开发CP/M(贵)
8、微软成立,弄了个DOS,运行在PC上
9、微软弄了Windows
10、FreeBSD(运行在PC上),OpenBSD(安全),NetBSD(服务)
11、Andrew:Minix
12、Linus:Linux
13、80年代,GNU:GNU is Not Unix;GPL(宣言):General Public License;gcc:GUN C Complier;GNU/Linux
linux基本原则:
- 1.由目的单一的小程序组成,组合小程序完成复杂任务
- 2.一切皆文件
- 3.尽量避免捕获用户接口
- 4.配置文件保存为纯文本格式
#:管理员root
$:普通用户
命令格式:
命令 选项 参数
选项:短选项:-;长选项:--word
GUI:Gnome:C;KDE:C++;XFace
CLI:sh,bash,csh,zsh,ksh,tcsh
su:switch user
pwd:printing working directory
ls
文件类型:
- -:普通文件(f)
- d:目录文件
- b:块设备文件(block)
- c:字符设备文件(character)
- l:符号链接文件(symbolic link file)
- p:命令管道文件(pipe)
- s:套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行)例如:r--,文件智能被读
文件硬链接的次数
文件的属主(owner)
文件的数组(group)
文件大小(size),默认单位是字节
时间戳(timestamp):最近一次被修改的时间
- 访问:access
- 修改:modify,改变了文件的内容
- 改变:change,metadata,元数据,改变了文件的属性
-l:长格式
-h:做单位转换
-a:显示以.开头的隐藏文件,.表示当前目录,..表示父目录
-A:显示隐藏文件,不显示.和..
-d:显示目录自身属性
-i:index node,inode,文件号
-r:逆序显示
-R:递归显示
cd:
家目录,主目录,home directory
cd:回到家目录
cd ~:回到家目录
cd -:返回上一次目录
cd ~username:进入其他用户家目录
命令类型:
内置命令(shell内置)
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
type:显示指定命令属于哪种类型
printenv:显示环境变量
hash:查看缓存
date:时间管理
硬件时钟,系统时钟
获得命令的使用帮助:
内部命令:help command
外部命令:command --help
命令手册:manual
man command
man一般用来查看外部命令,使用man来查看内部命令时,报错。
man分章节
whatis command:查看一个命令在哪个章节
1.用户命令(/bin,/usr/bin,/usr/local/bin)
2.系统调用
3.库用户
4.特殊文件(设备文件)
5.文件格式(配置问价你的语法)
6.游戏
7.杂项
8.管理命令(/sbin,/user/sbin,/usr/local/sbin)
man:
- NAME:命令名称
<>:必选
[]:可选的
...:可以出现多次
|:多选一
{}:分组
- SYNOPSIS:用法说明
- DESCRIPTION:命令的详细说明,可能包括每一个选项的意义
- OPTIONS:说明每一个选项的意义
- FILES:此命令相关的配置文件
- BUGS:出现bug向谁报告
- EXAMPLES:使用实例
- SEE ALSO:另外参照
翻屏:
- 向后翻一屏:space
- 向前翻一屏:b
- 向后翻一行:enter
- 向前翻一行:k
查找:
- /keyword:向后
- n:下一个
- N:前一个
- ?keyword:向前
- n:下一个
- N:前一个
q:退出
在线文档:
info command,用的比较少
文档:/usr/share/doc
cal:calendar
练习:echo
1.echo是内部命令还是外部命令
2.其作用?
3.输出内容换行
printf
根文件系统
/boot:系统启动相关的文件,如内核,initrd,以及grub(bootloader)
/dev:设备文件
- 块设备:随机访问,数据块,磁盘
- 字符设备:线性访问,键盘,鼠标,显示器
- 设备号:主设备号(major),次设备号(minor)
/etc:配置文件,纯文本文件
/home:家目录,每一个用户的家目录通常默认为/home/username
/root:管理员的家目录
/lib:库文件
- 静态库,.a;程序编译时把静态库包含进去,可以在其他机器上运行
- 动态库,.so(shared object),在其他机器上运行需要有动态库
- /lib/modules:内核模块文件
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/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
mkdir:创建空目录
-p:mkdir x/y/x -p,
-v:verbose,显示创建时候的详细信息
创建1/2/3/x,1/2/y
mkdir 1/2/{3/x,y} -pv
命令行展开:
创建a_b,a_c,d_b,d_c
mkdir {a,d}_{b,c} -pv
touch创建文件:
touch:本来是修改文件的时间戳的,文件不存在的时候,会默认创建一个
touch -a改变访问时间--默认为当前时间
touch -m改变修改时间--默认为当前时间
文件的改变时间不能自己该。
touch -t改变修改时间---自己设定时间
创建文件,可以使用文本编辑器
word不是文本编辑器
nano:功能少
删除文件:rm
-i:删除时给提示
-f:不提示,直接删除
-r:递归删目录
复制文件:cp
cp scr dest(目标只能有一个)
一个文件到一个文件/目录
将一个文件复制到一个文件,如果文件已存在,则会覆盖文件的内容
cp hy.txt hy.py
hy.txt的内容到hy.cp,hy.py文件名不变。
如果目标文件不存在,则会自动创建一个。
多个文件到一个目录
cp file1 file 2 file3将file1和file2复制到目录file3下
复制目录
cp -r
-p 保留文件的mode,ownership,timestamps等属性;默认哪个用户复制的文件,文件就属于哪个用户。hy复制的root的文件,复制后的文件就属于hy的。
移动文件mv
mv src dest
移动文件夹不用加-r,和cp不同。
src和dest在同一个目录下,就是重命名。
install
install src dest:复制文件,复制后的文件有执行权限
install -r directory:创建目录
目录管理:
ls,cd,pwd,mkdir.rm,tree
文件管理:
touch,stat,file,cp,mv,mano
文本处理命令:
cat,more,less,head,tail,cut,sort,uniq,grep
查看文本:
cat、tac、more、less、head、tail
cat:连接并显示
- -n:显示的时候加行号
- -E:每行加一个结束符$
tac:从后往前输出
more:空格向后翻
less:光标上下滑动
head:查看文件的前n行,默认为10
tail:查看文件的后n行,默认为10
-n