天天看点

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

继续阅读