Unix & Linux 大学教程 学习总结

两年前我看这本书时,是一本812页的厚书,现在我总结成了40句话,什么时候成了1句话就好了。


Unix & Linux 大学教程    Harley Hahn

0,操作系统最重要功能
控制计算机并在计算机启动或者重新启动时初始化计算机
支持与计算机交互所使用的界面
为需要使用计算机资源(磁盘空间、文件位置、处理时间、内存等)的程序提供接口
管理计算机的内存
维护并管理文件系统
调度工作
提供账户和安全服务

1,内核提供服务:
内存管理(虚拟内存管理,包括分页)
进程管理(进程创建、终止、调度)
进程间通信(本地,网络)
输入输出
文件管理
安全和访问控制
网络访问(如TCP/IP)

2,Unix=内核+使用工具(包括shell和gui)

3, Linus Torvalds

4,计算机系统:
计算机=终端+主机
终端=输入设施+输出设施

5,抽象层次
    
应用程序/用户
桌面环境
窗口管理器
X Window
内核中的设备驱动程序
硬件

6,进程线程
在Unix系统中,每个对象或者用文件表示,或者用进程表示。简单地讲,文件存放数据或者允许访问资源,而进程是正在执行的程序。
进程可以分成更小的单元,称为线程,线程是一组运行在进程环境中的指令。因此可以将程序的结构描述为,在一个进程之内,不止一个线程在同时进行。

7,运行级别
0    关机
1    单用户
2    非标准化
3    多用户:CLI
4    非标准化
5    多用户:GUI
6    重启

8,快捷键
Ctrl + Alt + Left/Right 工作区的切换(基于gnome桌面)

9,终端
stty -a 获取当前终端行设置
intr = ^C(停止正在运行程序); quit = ^\(停止程序并保存core文件); erase = ^?; kill = ^U(删除整行); eof = ^D(提示已经没有数据); start = ^Q(开始屏幕显示);erae = ^H(删除一个字符);stop = ^S(暂停屏幕显示); susp = ^Z(暂停,fg恢复到前台); rprnt = ^R(搜索history命令); werase = ^W(删除一个单词); lnext = ^V; flush = ^O;

infocmp 打印终端信息  infocmp vt100 | less  (infocmp需要安装ncurses)
echo $TERM 得到的默认终端是xterm

export IGNOREEOF=5  可以按^D提示logout或者exit退出

10,which type whereis
type 是 shell 内嵌,查看内置命令,bash 69个
help打印一些内置命令列表

11,cal -j 5 2014
查看2014年5月的每一天

12,uptime,uname

13,users,who,finger,w(谁正在做什么)

14,bc -l (支持+,-,*,/,%,^,sqrt(x),s(x),c(x),a(x),ln(x),j(n,x))

15,RTFM(Read the fucking manual),xman
(1).命令  (2).系统调用  (3).函数库  (4).特殊文件  (5).文件格式  (6).游戏  (7).杂项信息  (8).系统管理  
man -f 快速查寻命令用法    whatis
man -k 关键字        apropos
man builtin man bash

16,环境变量
env
perintenv
set/unset(csh)    set term=vt100
setenv/unsetenv(csh) setenv TEST hello
export(bash)
set -/+o 显示shell选项控制(bash)

17,引用和转义
使用反斜线引用单个字符(称为转义了这个字符)
使用单引号引用一串字符
使用双引号引用一串字符,但是保留$,`,\的特殊意义

18,搜素路径
export PATH="/...:/..."
set path=(/... /...)
PS1  shell 提示
export PS1="\u\w\@\$"
prompt(csh)
``命令替换

19,fc -l history

20,自动补全
文件名补全
命令补全
变量补全
用户标识补全
主机名补全(bash)

21,别名
alias,umalias
alias 'a=alias'

22,初始化文件
.profile文件
.rc文件
登陆shell(.bash_profile)
非登陆shell(.bashrc)

23,输入输出
<重定向标准输入(同0<)
>重定向标准输出(同1>)
>>追加标准输出(同1>>)
2>重定向标准错误
2>>追加标准错误
2>&1将标准错误重定向到标准输出
>&或者&>重定向标准输出+标准错误(只适用于Bash)
|管道
2>&1 |所有输出到管道
set -o noclobber 可以禁用>,但是可以用>|(强制重写)

24,编组和子shell
(cd directory; command)

25,管道线分流tee(从标准输入读取数据发送屏幕和文件各一份)
cat 1 2 3 |tee 123|grep hh (tee可以输出保存不止一个副本)

26,条件执行
command1 && command2(命令1成功执行后执行命令2)
command1 || command2(命令1没有成功后执行命令2)

27,过滤器
cat|grep|sort|less
(1)分析问题
(2)选择工具
(3)与他人讨论
(4)选择选项

28,文件简单操作
split 分割文件
tac 反转文本行顺序
rev 反转字符
colrm 删除指定的数据列,然后将剩余的数据写入标准输出

29,比较和抽取
cmp 逐字节地比较两个文件
comm 一行一行比较两个有序文本
diff    比较无序文本文件
cut -f 1,3-5 -d ':' /etc/passwd | sort (f列,d分隔符)
cut -c1-8(c按字符)
paste 可以将几个文件(其中每个文件都包含一列数据)组成一个大表
paste 水平组合数据,cat垂直组合数据

30,统计和格式化
nl 创建行号
wc 统计行、单词和字符
:set list 可视化制表符和空格
expand将制表符转换成空格(unexpand)
fold分割行  fold -s -w 40 file  (40个字符一行,单词不分割)

31,选取、排列、组合及变换
grep (global re  print)
ls -F /etc |grep -c "/" (c统计)
-in(忽略大小写并按行号)
-l (列出文件名)
-v(reverse,相反)
-x (占整行)
-r(recursive,递归)
-s(suppress,抑制)
-E(egrep)
look
sort -dfnu(sort -u = sort|uniq = cat|sort|uniq)
uniq -cdu(d只看重复行,u只看唯一行,c统计行数)
join 合并有序数据
strings在二进制中搜索字符串 strings /usr/bin/sort
tr A-Z a-z < old > new大小写转换
[:upper:] [:lower:] [:digit:]

32,非交互式文本编辑sed
sed 's/h/H/g'ole >new   (-i in-place可以改变原始文件)
(1)从输入流中读取一行
(2)执行指定的命令,对该行进行必要的交换
(3)将该行写入到输出流中
number [,number] |/regex/ 对指定行进行操作或者包含特定字符串的行
5,10s(5到10行)
$s(最后一行)
/OK/(字符串OK所在行)
[0-9][0-9]包含两个连续数字的行
-e 多条更改
-f 文件

33,正则表达式
元字符
.
^
$
\<    匹配单词的开头
\>    匹配单词的结尾
[abc]    匹配abc中的任何字符
[^abc]    匹配不在abc中的任何字符
()    组:视为一个单独的单元
|    匹配选择之一
\    引用:从字面上解释元字符
运算符
*    0或多次
+    1或多次
?    0或1次
{n}    n次       (xyz){5}匹配字符"xyz"5次
{n,}    最少n次
{,m}    最多m次
{n,m}    n,m之间次  [0-9]{3,5}匹配3到5个数字

[:lower:]    a-z
[:upper:]    A-Z    
[:alpha:]    A-Za-z
[:alnum:]    A-Za-z0-9
[:digit:]    0-9
[:punct:]    标点符号
[:blank:]    空格或制表符

grep -w 'cat' data
grep '\<cat\>'data    \<和\>是整个数字或者单词,没有就是对字符串
grep '\bcat\b'data
man ascii
locale -a

34,显示文件
hexdump   hexdump -C /bin/grep |less   显示二进制文件 -C 文件
od      od -Ax -txlz /bin/grep |less

35,vim文本编辑器
命令模式
h
j
k
l
w
e
b
r
R
x
X
D
dd
u
U
yy
yw
y10w
y2)
y5}
10yy
p
P
xp    调换两个字符
ddp    调换两行
deep    调换2个单词
输入模式
i
a
o
I
A
O
搜索模式
:/keywords
:set number
:set all
.vimrc

36,文件系统
基于磁盘的文件系统
ext3、ext4,FAT32,HFS+(层次式文件系统),ISO 9660(CD-ROM),NTFS,UDF(可重写CD和DVD),UFS2(BSD,Solaris)
网络文件系统
NFS,SMB
特殊文件系统
devpts  伪终端的设备界面(PTY)
procfs    proc文件系统
sysfs    系统数据文件系统(设备与驱动器)
tmpfs    临时存储文件系统

37,目录操作
.
..
~
pushd
popd
dirs
ls -CrR1F(C列,r字母表从大到小显示,R全部子目录,1文件名占一行,F带标志)
ls -lrtu显示最近访问过得文件
-普通
d目录
l符号
b块
c字符
p管道
dumpe2fs /dev/sda1   | grep "Block size"
tree    文件树

38,文件操作

setuid
setgid
umask
shred -fvuz filename  清空文件内容
stat   file
ls -i
ln -s
whereis
locate
find
find  path ... test ... action...
test如下:
-name
-iname
-type
-perm
-user
-group
-empty
-size
-atime
-ctime
-mtime
action如下:
-print
-fprint file
-ls
-exec command{} \;执行命令,{}指示匹配的文件名
-ok command{} \;同上,但是运行命令之前确认
-delete    删除文件
-fls file
xargs处理查找到的文件
find ~ -type f | xargs ls -s
(whoami;date) |xargs

39, 进程和作业控制
echo $$ 显示当前shell的PID
echo $! 显示上一条移至后台的命令的PID
sleeep (sleep 20;cat /etc/passwd) && vim /etc/termcap
jobs
ps
fg
bg
suspend    挂起当前shell
^Z
kill
top
prtstat
pstree
fuser
nice

你可能感兴趣的:(操作系统,应用程序,文件管理,虚拟内存,计算机系统)