第七章 回顾-软硬链接

命令总结:

1.echo 所见即所得,输出内容到屏幕上面。

单引号和双引号及不加引号的区别?
单引号:所见即所得。单引号里面的内容,会被看做一个整体,不会解析变量和特殊字符。
双引号:所见即所得,会解析变量。
不加引号:所见即所得,会解析变量。支持通配符。
反引号:先执行反引号里面的命令,将输出结果交给外面的命令。(反引号执行的是命令)
[[email protected] ~/shell]# mkdir date +%F
[[email protected] ~/shell]# ll
total 12
drwxr-xr-x 2 root root 6 Jun 25 19:30 2019-06-25

[[email protected] opt]# echo 123 >file.txt
[[email protected] opt]# echo 123 >>file.txt

  标准输出重定向
 标准输出追加重定向

[[email protected] opt]# echo -e "oldboy\noldgirl"
oldboy
oldgirl

2.whoami 显示当前用户
[[email protected] opt]# whoami
root

3.pwd 显示当前所在的位置,路径
[[email protected] opt]# pwd
/opt
[[email protected] opt]# cd
[[email protected] ~]# pwd
/root

4.history 显示历史执行命令
-c 清空历史记录
-d id 删除指定的命令记录
-w 保存历史记录到文件当中

[[email protected] ~]# history
[[email protected] ~]# history -d 850
[[email protected] ~]# history | grep echo

5.alias 设置别名

6.unalias 取消别名

[[email protected] ~]# alias tong=‘ping baidu.com‘
[[email protected] ~]# tong
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=128 time=25.4 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=128 time=23.7 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=3 ttl=128 time=23.9 ms
^C
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 23.736/24.364/25.449/0.790 ms
[[email protected] ~]# unalias tong
[[email protected] ~]# tong
-bash: tong: command not found

7.source 让配置文件生效

[[email protected] ~]# alias bd="ping www.baidu.com"
[[email protected] ~]# source /etc/bashrc
[[email protected] ~]# bd

8.man 命令帮助信息

[[email protected] ~]# man cd

9.help 查看系统内置命令帮助信息。

[[email protected]oldboy250 ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

10.info 详细显示命令信息

11.shutdown 关机重启命令 ****

-h   0(时间信息,默认按分钟)  关机
-r   0(时间信息,默认按分钟) 重启

-c   取消你所设置关机或重启        

12.reboot 重启 ****

13.halt 关机命令,只会关闭系统,不会关掉电源,需要手动关闭电源。

14.poweroff 关机命令 ****

15.ls 显示文件详细信息
-l 以长格的形式显示属性信息
-a 显示所有文件
-h 以人类的可读形式显示
-i 显示inode号
-d 只显示目录信息
-t 按照时间排序
-r 倒叙排序
-1 列表形式显示。

16.cd 切换目录
. 当前目录
.. 当前目录的上一级目录
- 返回上一次所在的位置
~ 返回到当前用户的家目录
cd 返回到当前用户的家目录
/ 进入/目录,顶点目录。

17.mkdir 创建目录
-p 递归创建
-v 显示创建过程
{}
[[email protected] ~]# mkdir oldboy{01..05}
[[email protected] ~]# mkdir old{boy,girl,dog} -p
[[email protected] ~]# mkdir oldboy{a..z}

18.touch 创建文件
{}

19.tree 以树状型显示目录结构。
-d 只显示目录
-L 显示目录层级
-f 只显示文件信息
-a 显示所有文件信息

20.cp 复制或者拷贝文件
-r 递归复制
-p 保持属性
-a =-pdr
-i 提示文件存在时是否覆盖(系统默认别名有)
-v 显示复制的过程
-t 把源路径和目标位置进行调换。
[[email protected] ~]# cp passwd passwd.bak
[[email protected] ~]# cp passwd{,.org}
[[email protected] ~]# cp -r oldboy oldboy_bak
[[email protected] ~]# cp -a oldboy oldboy_org

21.mv 移动和重命名
-i 提示文件存在时是否覆盖(系统默认别名有)
-t 把源路径和目标位置进行调换。

22.rm 删除命令
-i 提示文件存在时是否覆盖(系统默认别名有)
-f 强制删除,不提示
-r 递归删除,删除目录
企业当中会给rm命令设置别名,给危险的命令加上一个保险。
rm -rf /*
rm -rf ./
rm -rf . /

文件查看命令
23.cat 查看文件的内容,会将文件的所有内容显示出来。
-n 显示行号
-A 给文件内容的每行结尾加个标识符。

24.tac 倒叙查看文件的内容,把行进行倒叙

25.more 分页显示文件的内容
空格/f 向下翻页
b 向上翻页
q 退出
/ 搜索关键字,不会高亮显示
= 显示当前光标所在行
-N(数字) 指定分页显示内容的行数
+N(数字) 指定从第几行显示文件内容
文件显示完成会自动退出。

26.less 分页显示文件的内容
空格/f 向下翻页
b 向上翻页
q 退出
/ 搜索关键字,会高亮显示
-N 显示行号
文件显示完成不会自动退出。

27.head 显示文件头部信息,默认显示前十行。
-n 取消默认输出,指定你要输出的行数
-N(数字)
-cN(数字) 显示文件内容的前多少个字符

28.tail 显示文件尾部信息,默认显示最后十行。
-n 取消默认输出,指定你要输出的行数
-N(数字)
-cN(数字) 显示文件内容的最后多少个字符
[[email protected] ~]# tail -c5 passwd
dboy #有一个换行符
-f 实时查看文件内容的更新
-F 实时查看文件内容的更新,当文件不存在时,会一直尝试。

29.tailf 实时查看文件内容的更新

30.grep 文件字符过滤命令,将过滤出来的内容显示颜色
-n 给过滤出来的内容加上内容所在行的行号。
-o 只显示过滤出来的内容。
-c 统计过滤出来的内容总共多少行。
-i 忽略大小写
-v 排除,取反。
-r 递归过滤
-E 配合正则表达式使用
-w 只过滤匹配的字符串。
-AN(数字) 过滤出内容的后几行
-BN(数字) 过滤出内容的前几行
-CN(数字) 过滤出内容的前后几行
^ 以什么开头的行
$ 以什么结尾的行

[[email protected] ~]# ip a s eth0 |grep -wA1 inet
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
[[email protected] ~]# ip a s eth0 |grep -wB1 inet
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] ~]# ip a s eth0 |grep -wC1 inet
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# cp passwd /opt/
[[email protected] ~]#
[[email protected] ~]# cd /opt/
[[email protected] opt]# ll
total 8
-rw-r--r--. 1 root root 4 Jun 25 16:50 file.txt
-rw-r--r--. 1 root root 965 Jun 25 18:34 passwd
[[email protected] opt]# grep "root" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
rootoldboy
[[email protected] opt]# grep -n "root" passwd
1:fbgroot?0:0:root:/root:/bin/bash
10:operator?11:0:operator:/root:/sbin/nologin
23:rootoldboy
[[email protected] opt]# grep -i "root" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
ROOT
rootoldboy
[[email protected] opt]# grep -o "root" passwd
root
root
root
root
root
[[email protected] opt]# grep -v "root" passwd
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync
shutdown?6:0:shutdown:/sbin:/sbin/shutdown
halt?7:0:halt:/sbin:/sbin/halt
mail?8:12:mail:/var/spool/mail:/sbin/nologin
games?12??games:/usr/games:/sbin/nologin
ftp?14:50:FTP User:/var/ftp:/sbin/nologin
nobody?99:99:Nobody:/:/sbin/nologin
systemd-network?192:192:systemd Network Management:/:/sbin/nologin
dbus?81:81:System message bus:/:/sbin/nologin
polkitd?999:998:User for polkitd:/:/sbin/nologin
tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt?173:173::/etc/abrt:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix?89:89::/var/spool/postfix:/sbin/nologin
ROOT
oldboy.
[[email protected] opt]# grep -c "root" passwd
3
[[email protected] opt]# grep -w "root" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
[[email protected] opt]# grep "root" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
rootoldboy
[[email protected] opt]# grep "root|sshd" passwd
[[email protected] opt]# grep -E "root|sshd" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rootoldboy
[[email protected] opt]# egrep "root|sshd" passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rootoldboy
[[email protected]dboyedu opt]#
[[email protected] opt]# echo root >123.txt
[[email protected] opt]# echo oldboy >12.txt
[[email protected] opt]#
[[email protected] opt]#
[[email protected] opt]# ll
total 16
-rw-r--r--. 1 root root 5 Jun 25 18:38 123.txt
-rw-r--r--. 1 root root 7 Jun 25 18:38 12.txt
-rw-r--r--. 1 root root 4 Jun 25 16:50 file.txt
-rw-r--r--. 1 root root 965 Jun 25 18:34 passwd
[[email protected] opt]# grep "root" ./
./123.txt:root
./passwd:fbgroot?0:0:root:/root:/bin/bash
./passwd:operator?11:0:operator:/root:/sbin/nologin
./passwd:rootoldboy
[[email protected] opt]# grep -r "root" ./

./123.txt:root
./passwd:fbgroot?0:0:root:/root:/bin/bash
./passwd:operator?11:0:operator:/root:/sbin/nologin
./passwd:rootoldboy
[[email protected] opt]# mkdir old
[[email protected] opt]# echo root >old/123.txt
[[email protected] opt]#
[[email protected] opt]# grep "root" ./
./123.txt:root
grep: ./old: Is a directory
./passwd:fbgroot?0:0:root:/root:/bin/bash
./passwd:operator?11:0:operator:/root:/sbin/nologin
./passwd:rootoldboy
[[email protected] opt]# grep -r "root" ./

./123.txt:root
./old/123.txt:root
./passwd:fbgroot?0:0:root:/root:/bin/bash
./passwd:operator?11:0:operator:/root:/sbin/nologin
./passwd:rootoldboy
[[email protected] opt]# grep -R "root" ./*
./123.txt:root
./old/123.txt:root
./passwd:fbgroot?0:0:root:/root:/bin/bash
./passwd:operator?11:0:operator:/root:/sbin/nologin
./passwd:rootoldboy
[[email protected] opt]#
[[email protected] opt]#
[[email protected] opt]# grep ^r passwd
rootoldboy
[[email protected] opt]# grep root passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
rootoldboy
[[email protected] opt]# grep y$ passwd
rootoldboy
[[email protected] opt]#

字符处理命令

31.sort 排序,默认以空格为分隔符
-t 指定分隔符
-r 倒叙排序
-kN(数字) 指定列进行排序
-n 以数字形式进行排序

[[email protected] opt]# cat sort.txt
b:3
c:2
a:4
e:5
d:1
f:11
[[email protected] opt]# sort -t ‘:‘ -k1 sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
[[email protected] opt]# sort -t ‘:‘ -k2 sort.txt
d:1
f:11
c:2
b:3
a:4
e:5
[[email protected] opt]# sort -t ‘:‘ -nk2 sort.txt
d:1
c:2
b:3
a:4
e:5
f:11
[[email protected] opt]# sort -t ‘:‘ -rnk2 sort.txt
f:11
e:5
a:4
b:3
c:2
d:1

32.uniq 去重

-c     统计次数
-d     只显示重复的行数
-u     只显示不重复的行数

[[email protected] opt]# cat oldboy.txt
oldboy
123
oldboy
123
def
abc
def
[[email protected] opt]# uniq oldboy.txt
oldboy
123
oldboy
123
def
abc
def
[[email protected] opt]# sort oldboy.txt
123
123
abc
def
def
oldboy
oldboy
[[email protected] opt]# sort oldboy.txt | uniq
123
abc
def
oldboy
[[email protected] opt]# sort oldboy.txt | uniq -c
2 123
1 abc
2 def
2 oldboy
[[email protected] opt]# sort oldboy.txt | uniq -c| sort -n
1 abc
2 123
2 def
2 oldboy
[[email protected] opt]# sort oldboy.txt | uniq -c| sort -rn
2 oldboy
2 def
2 123
1 abc
[[email protected] opt]# sort oldboy.txt | uniq -d
123
def
oldboy
[[email protected] opt]# sort oldboy.txt | uniq -u
abc
[[email protected] opt]#

33.wc 统计
-l 统计行号
-c 统计文件大小,字节数
-w 统计列数,默认以空格为分隔符

[[email protected] opt]# wc -l passwd
23 passwd
[[email protected] opt]# wc -c passwd
965 passwd
[[email protected] opt]# ll passwd
-rw-r--r--. 1 root root 965 Jun 25 18:34 passwd
[[email protected] opt]# wc -w oldboy.txt
7 oldboy.txt
[[email protected] opt]# wc -w /etc/hosts
10 /etc/hosts
[[email protected] opt]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[[email protected] opt]#

34.cut 截取字符,没有默认的分隔符
-d 指定分隔符
-fN(数字) 取指定的列
-cN(数字) 取指定的字符
[[email protected] opt]# head -1 passwd
fbgroot?0:0:root:/root:/bin/bash
[[email protected] opt]# cut -d ‘:‘ -f7 passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
ROOT
oldboy.
rootoldboy
[[email protected] opt]# cut -d ‘:‘ -f7 passwd | head -1
/bin/bash

[[email protected] opt]# cut -c3-5 passwd

[[email protected] opt]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip a s eth0 | head -3
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 | head -3 | tail -1
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 | head -3 | tail -1 | cut -d ‘ ‘ -f6
10.0.0.100/24
[[email protected] opt]# ip a s eth0 | head -3 | tail -1 | cut -d ‘ ‘ -f6 |cut -d ‘/‘ -f1
10.0.0.100

[[email protected] opt]# ip a s eth0 | grep -w inet | cut -d ‘ ‘ -f6 |cut -d ‘/‘ -f1
10.0.0.100
[[email protected] opt]# ip a s eth0 | grep -w inet
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0

[[email protected] opt]# ip a s eth0 | grep -w inet |tr ‘/‘ ‘ ‘ |cut -d ‘ ‘ -f6
10.0.0.100

35.tr 替换命令,单对单替换
-d 删除字符

[[email protected] opt]# tr ‘1‘ ‘2‘ < oldboy.txt
oldboy
223
oldboy
223
def
abc
def
[[email protected] opt]# tr -d 1 < oldboy.txt
oldboy
23
oldboy
23
def
abc
def

2
3

36.df 查看磁盘状态
-h 以人类的可读形式显示
-i 显示inode号的数量
[[email protected] opt]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 50101352 1875312 48226040 4% /
devtmpfs 1003144 0 1003144 0% /dev
tmpfs 1014044 0 1014044 0% /dev/shm
tmpfs 1014044 9808 1004236 1% /run
tmpfs 1014044 0 1014044 0% /sys/fs/cgroup
/dev/sda1 201380 107052 94328 54% /boot
tmpfs 202812 0 202812 0% /run/user/0
[[email protected] opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 1.8G 46G 4% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
[[email protected] opt]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 25062912 60423 25002489 1% /
devtmpfs 250786 377 250409 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 723 252788 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 253511 1 253510 1% /run/user/0

文件的上传和下载

yum install -y lrzsz

37.rz 上传,不支持大于4G的文件,不可以断点续传,不可以上传目录。

38.sz 下载文件到本地

[[email protected] opt]# sz passwd

联网下载命令

39.wget 下载软件包命令,下载软件包,
-O 指定下载文件名
[[email protected] opt]# wget -O 123.txt https://www.baidu.com

40.curl 下载命令,访问或者测试网站使用
-o 指定下载文件名
[[email protected] opt]# curl -o 456.txt https://www.baidu.com

显示ip地址命令

41.ip 显示ip地址

[[email protected] opt]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:a2 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.100/24 brd 172.16.1.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::8a2a:8884:9bb5:fd5f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:a2 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.100/24 brd 172.16.1.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::8a2a:8884:9bb5:fd5f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]#

42.ifconfig 显示ip地址命令,centos-7默认没有安装此命令。需下载
yum install -y net-tools

[[email protected] opt]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::80b2:dc89:7adf:c7b1 prefixlen 64 scopeid 0x20
ether 00:0c:29:71:30:98 txqueuelen 1000 (Ethernet)
RX packets 7419 bytes 684584 (668.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4757 bytes 771409 (753.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.1.100 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fe80::8a2a:8884:9bb5:fd5f prefixlen 64 scopeid 0x20
ether 00:0c:29:71:30:a2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16 bytes 1202 (1.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] opt]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::80b2:dc89:7adf:c7b1 prefixlen 64 scopeid 0x20
ether 00:0c:29:71:30:98 txqueuelen 1000 (Ethernet)
RX packets 7445 bytes 686696 (670.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4771 bytes 774255 (756.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] opt]#

43.hostname 显示主机名
-I 显示所有的IP地址
-i 显示所有的IP地址,还会显示物理Mac地址
[[email protected] opt]# hostname -I
10.0.0.100 172.16.1.100

文件查找命令
44.which 查找命令的绝对路径

[[email protected] opt]# which ifconfig
/usr/sbin/ifconfig

45.whereis 查找包含命令的名称绝对路径
[[email protected] opt]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

46.type 显示命令的绝对路径
-a 显示内部命令绝对路径
[[email protected] opt]# type passwd
passwd is /usr/bin/passwd
[[email protected] opt]# type cd
cd is a shell builtin
[[email protected] opt]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd

链接命令
47.ln 创建软硬链接
-s 创建软链接
[[email protected] opt]# ln -s /opt/old/123.txt /tmp/123.txt
[[email protected] opt]# ll /tmp
total 32
lrwxrwxrwx. 1 root root 16 Jun 25 20:09 123.txt -> /opt/old/123.txt

[[email protected] opt]# ln /opt/old/123.txt /tmp/123_link.txt
[[email protected] opt]# ll -i /tmp/123_link.txt
101742477 -rw-r--r--. 2 root root 5 Jun 25 18:39 /tmp/123_link.txt
[[email protected] opt]# ll -i /opt/old/123.txt
101742477 -rw-r--r--. 2 root root 5 Jun 25 18:39 /opt/old/123.txt

bash快捷键
Ctrl键+a 将当前光标移动到命令行的行首
Ctrl键+e 将当前光标移动到命令行的行尾
Ctrl键+u 将当前光标之前的所有字符剪切
Ctrl键+k 将当前光标之后的所有字符剪切
Ctrl键+w 将当前光标之前的字符剪切,以空格为结尾
Ctrl键+c 取消当前的操作
Ctrl键+d 退出当前会话窗口
Ctrl键+z 将当前前台运行的程序,放到后台运行。
Ctrl键+l 清屏
Ctrl键+r 搜索历史命令
Ctrl键+y 粘贴剪切板上的内容
Ctrl键+左右方向键 向指定的方向键移动一组字符,以空格为分隔符
ESC键+. 使用上一条命令的最后的参数或者路径,以空格为分隔符,空格之后的内容,
delete键 从前往后删除一个字符
!命令 执行最近的一次以该命令为开头的命令
!! 执行上一条命令

bash特性
1.命令补全
2.选项补全,需要一个软件包
3.参数补全
4.历史命令
5.命令别名
6.命令帮助
7.echo输出颜色

文本编辑器

48.vi/vim 文本编辑工具

三种模式:
普通模式(命令模式)
编辑模式
底行模式(末行模式)

普通模式:删除、复制、粘贴、撤销等操作,
G 跳转到最后一行
gg/1G 跳转到首行
N(数字)G/Ngg 跳转到某行
yy 复制当前行
Nyy 复制当前行及向下多少行,包含当前行。
p 在当前行的所在位置的下一行进行粘贴
Np 向下粘贴多次
P 在当前行的所在位置的上一行进行粘贴
NP 向上粘贴多次
u 撤销
dd 删除当前行
Ndd 删除当前行及向下多少行,包含当前行。
dG 删除当前光标以下所有行。
x/delete 删除当前光标从前往后删除一个字符
X 删除当前光标从后往前删除一个字符
r 替换当前字符,单个进行替换
R 进行连续替换,在当前光标所在字符
^ 从前当前光标移动行首
$ 从前当前光标移动行尾
Ctrl键+f 向下翻页
Ctrl键+b 向上翻页
D 删除当前光标所在位置之后的内容,针对当前行的操作
de/dw 删除一组字符串
j 向下一个字符
k 向上一个字符
h 向左一个字符
l 向右一个字符
Nj 向下指定多少个字符
Nk 向上指定多少个字符
Nh 向左指定多少个字符
Nl 向右指定多少个字符
ZZ 保存退出

编辑模式
i 在当前光标所在位置前插入字符
a 在当前光标所在位置后插入字符
I 在当前光标所在行的行首插入字符
A 在当前光标所在行的行尾插入字符
o 在当前光标所在行的下一行插入字符
O 在当前光标所在行的上一行插入字符
s 删除当前光标所在字符,并在当前光标所在位置前插入字符
S 删除当前光标所在行,并进入编辑模式
C 删除当前光标所在位置之后的内容,并进入编辑模式
cw 删除一组字符串,会进入编辑模式

底行模式(末行模式)
:N 跳转到某行
:w 保存
:q 退出
:wq 保存退出
:q! 强制退出
:x 保存退出
/ 搜索
:%s###g 全局替换
:1,3s###g 替换第一行到第三行的内容

vim变量
:set nu 显示行号
:set nonu 取消
:set list 给每行的结尾添加一个标识符
:set nolist 取消

vim故障
vim -r

特殊符号

  标准输出重定向
 标准输出追加重定向

< 标准输入重定向
{} 生成序列

  •   所有

正则
. 任意一个字符
^ 以什么开头
$ 以什么结尾
| 前面的命令执行结果交给后面的命令
&& 前面的命令执行成功,后面的命令才会执行。
|| 前面的命令执行失败,后面的命令才会执行。
! 非

注释,注释后面的内容不识别

sed 替换

取单行,第一行

[[email protected] opt]# sed -n ‘1p‘ passwd
fbgroot?0:0:root:/root:/bin/bash

取多行,不连续的多行,1和4行

[[email protected] opt]# sed -n ‘1p;4p‘ passwd
fbgroot?0:0:root:/root:/bin/bash
adm?3:4:adm:/var/adm:/sbin/nologin

取连续的多行,1到4行

[[email protected] opt]# sed -n ‘1,4p‘ passwd
fbgroot?0:0:root:/root:/bin/bash
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin

取连续的多行,11到20行

[[email protected] opt]# sed -n ‘11,20p‘ passwd
games?12??games:/usr/games:/sbin/nologin
ftp?14:50:FTP User:/var/ftp:/sbin/nologin
nobody?99:99:Nobody:/:/sbin/nologin
systemd-network?192:192:systemd Network Management:/:/sbin/nologin
dbus?81:81:System message bus:/:/sbin/nologin
polkitd?999:998:User for polkitd:/:/sbin/nologin
tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt?173:173::/etc/abrt:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix?89:89::/var/spool/postfix:/sbin/nologin
[[email protected] opt]#

过滤字符串

[[email protected] opt]# sed -n ‘/root/p‘ passwd
fbgroot?0:0:root:/root:/bin/bash
operator?11:0:operator:/root:/sbin/nologin
rootoldboy

排除字符串

[[email protected] opt]# sed ‘/root/d‘ passwd
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync

删除当行,删除第一行

[[email protected] opt]# sed ‘1d‘ passwd
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync

删除不连续的多行,删除第一行和第四行

[[email protected] opt]# sed ‘1d;4d‘ passwd
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync
shutdown?6:0:shutdown:/sbin:/sbin/shutdown

删除连续的多行,删除第一行到第15行

[[email protected] opt]# sed ‘1,15d‘ passwd
polkitd?999:998:User for polkitd:/:/sbin/nologin
tss?59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt?173:173::/etc/abrt:/sbin/nologin
sshd?74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix?89:89::/var/spool/postfix:/sbin/nologin

替换

[[email protected] opt]# grep ‘root‘ passwd
fbgroot?0:0:root:/root:/bin/bash

将你要替换的内容打印到屏幕上面,确认修改是否正确

[[email protected] opt]# sed ‘s#root#admin#g‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync
shutdown?6:0:shutdown:/sbin:/sbin/shutdown

真正替换,会修改文件的内容

[[email protected] opt]# sed -i ‘s#root#admin#g‘ passwd
[[email protected] opt]# grep root passwd
[[email protected] opt]# grep admin passwd
fbgadmin?0:0:admin:/admin:/bin/bash

取ip地址

[[email protected] opt]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::80b2:dc89:7adf:c7b1 prefixlen 64 scopeid 0x20
ether 00:0c:29:71:30:98 txqueuelen 1000 (Ethernet)
RX packets 10434 bytes 945192 (923.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6809 bytes 986561 (963.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] opt]# ifconfig eth0 | sed -n ‘2p‘
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
[[email protected] opt]# ifconfig eth0 | sed -n ‘2p‘ |cut -d ‘ ‘ -f 10
10.0.0.100

[[email protected] opt]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip a s eth0 |sed -n ‘3p‘
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 |sed -n ‘3p‘ |sed ‘s#/# #g‘
inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 |sed -n ‘3p‘ |sed ‘s#/# #g‘ |cut -d ‘ ‘ -f 10
scope
[[email protected] opt]# ip a s eth0 |sed -n ‘3p‘ |sed ‘s#/# #g‘ |cut -d ‘ ‘ -f 6
10.0.0.100
[[email protected] opt]# ip a s eth0 |sed -n ‘3s#/# #gp‘
inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 |sed -n ‘3s#/# #gp‘ |cut -d ‘ ‘ -f6
10.0.0.100

awk 擅长取列

取单行,取出第一行

[[email protected] opt]# awk ‘NR==1‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash

取不连续的多行,第一行和第三行

[[email protected] opt]# awk ‘NR==1;NR==3‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash
daemon?2:2:daemon:/sbin:/sbin/nologin

取连续的多行,第一行到第三行

[[email protected] opt]# awk ‘NR==1,NR==3‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
[[email protected] opt]#

过滤字符串 (格式:awk ‘//‘ 过滤字符串)

[[email protected] opt]# awk ‘/admin/‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash

取反。(!代表“非”,排除(取反))

[[email protected] opt]# awk ‘!/admin/‘ passwd
bin?1:1:bin:/bin:/sbin/nologin
daemon?2:2:daemon:/sbin:/sbin/nologin
adm?3:4:adm:/var/adm:/sbin/nologin
lp?4:7:lp:/var/spool/lpd:/sbin/nologin
sync?5:0:sync:/sbin:/bin/sync
shutdown?6:0:shutdown:/sbin:/sbin/shutdown

取列 NF表示最后一列(NR代表行)

[[email protected] opt]# awk ‘NR==1‘ passwd
fbgadmin?0:0:admin:/admin:/bin/bash
[[email protected] opt]# awk ‘NR==1‘ passwd | awk -F ‘[:]‘ ‘{print $7}‘
/bin/bash
[[email protected] opt]# awk ‘NR==1‘ passwd | awk -F ‘[:]‘ ‘{print $NF}‘
/bin/bash
[[email protected] opt]# awk -F: ‘{print $7}‘ passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
[[email protected] opt]# awk -F: ‘NR==1{print $7}‘ passwd
/bin/bash
[[email protected] opt]#

取ip地址

[[email protected] opt]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::80b2:dc89:7adf:c7b1 prefixlen 64 scopeid 0x20
ether 00:0c:29:71:30:98 txqueuelen 1000 (Ethernet)
RX packets 11563 bytes 1044609 (1020.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7517 bytes 1065277 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

先取出IP所在的行

[[email protected] opt]# ifconfig eth0 | awk ‘NR==2‘
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255

再取出IP所在的列

[[email protected] opt]# ifconfig eth0 | awk ‘NR==2‘ |awk ‘{print $2}‘
10.0.0.100

简化过程1

[[email protected] opt]# ifconfig eth0| awk ‘{print $2}‘
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
10.0.0.100
fe80::80b2:dc89:7adf:c7b1
00:0c:29:71:30:98
packets
errors
packets
errors

简化过程2

[[email protected] opt]# ifconfig eth0| awk ‘NR==2{print $2}‘
10.0.0.100

取IP地址

[[email protected] opt]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:71:30:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::80b2:dc89:7adf:c7b1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[[email protected] opt]# ip a s eth0 | awk ‘NR==3‘
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[[email protected] opt]# ip a s eth0 | awk ‘NR==3‘ |awk -F ‘[ /]‘ ‘{print $6}‘
10.0.0.100
[[email protected] opt]# ip a s eth0 |awk -F ‘[ /]‘ ‘NR==3{print $6}‘
10.0.0.100

[[email protected] ~]# ip a s eth0|awk -F‘[ /]+‘ ‘NR==3 {print $6}‘
10.0.0.255

原文地址:https://www.cnblogs.com/ronglianbing/p/11734755.html

时间: 2024-08-01 03:28:09

第七章 回顾-软硬链接的相关文章

《深入理解计算机系统》读书笔记 第七章 链接

第七章链接 链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时. 运行时,由应用程序执行. 在现代系统中,链接是由链接器自动执行的. 链接器的关键角色:使分离编译称为可能. 7.1 编译器驱动程序 驱动程序的工作:1.运行C预处理器,将C源程序(.c)翻译成一个ASCⅡ码中间文件(.i):2.运行C编译器,将.i文件翻译

《深入理解计算机系统》第七章 链接 读书笔记

第七章链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载.连接可执行于编译时.加载时.运行时.由叫链接器的程序执行. 链接器使得分离编译成为可能.使得可以把 大程序分解成小模块,利于管理. 理解链接器将帮助你构筑大程型序:避免一些危险的编程错误:帮助你理解语言的作用域规则是如何实现的:帮助你理解其他重要的系统概念:使你能够利用共享库. 7.1 编译器驱动程序 驱动程序的工作:1.运行C预处理器,将C源程序(.c)翻译成一个ASCⅡ码中间文件(.i):2.运行C

Linux内核分析——第七章 链接

第七章——链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行. 2.链接可以执行于编译时,加载时,运行时. 7.1编译器驱动程序 1.大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 7.2 静态链接 1.像Unix ld程序这样的静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载运行的可执行目标文件作为输出. 2.输入的可重定位目标文件由各种不同的代码和数据节组成.

《深入理解计算机系统》读书笔记第七章——链接

<深入理解计算机系统>第七章 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时. 运行时,由应用程序执行. 在现代系统中,链接是由链接器自动执行的. 7.1 编译器驱动程序 编译系统提供编译驱动程序——调用语言预处理器.编译器.汇编器和链接器. (1)运行C预处理器:源程序main.c->ASCII码中间文件main.i (2)

《深入理解计算机系统》第七章 链接

<深入理解计算机系统>第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序

第七章:错误处理

感谢作者 –> 原文链接 本文翻译自The Flask Mega-Tutorial Part VII: Error Handling 这是Flask Mega-Tutorial系列的第七部分,我将告诉你如何在Flask应用中进行错误处理. 本章将暂停为microblog应用开发新功能,转而讨论处理BUG的策略,因为它们总是无处不在.为了帮助本章的演示,我故意在第六章新增的代码中遗留了一处BUG. 在继续阅读之前,看看你能不能找到它! 本章的GitHub链接为:Browse, Zip, Diff.

操作系统 庞丽萍 第七章

1. 存储管理的功能与目的是什么? 主要包括以下四个方面:(1)映射逻辑地址到物理主存地址:(2)在多用户之间分配物理主存:(3)对各个用户区的信息提供保护措施:(4)扩充逻辑主存区. 2.物理地址 VS 逻辑地址 把内存分成若干个大小相等的单元,每个单元给个编号,就是物理地址,又称为绝对地址或者实地址: 逻辑地址是用户编程序时所用的地址,又称为程序地址或者虚地址. 为了支持多道程序运行,方便用户使用:使得多用户程序共享主存, 必须要解决主存区域如何分配.各个区域内信息如何保护等问题.如果直接以

JavaScript DOM编程艺术-学习笔记(第七章)

第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文本节点:createTextNode(); ④设置属性节点:setAttribute(); ⑤外部前插入:父元素.insertBefore(插入的元素,目标元素);                  插入的元素被插入到,目标元素的前面. ⑥没有inserAfter()函数. 2.小知识点:①appe

第六七章读后感

第六章主要讲敏捷流程,而其的开发流程为: 1.找出完成产品需要做的事情 - Product Backlog. 2.决定当前的冲刺(Sprint)需要解决的事情--Sprint Backlog. 3.冲刺(Sprint). 4.得到软件的一个增量版本.发布给用户.然后在此基础上又进一步计划增量的新功能和改进. 这一章以敏捷流程的Scrum方法论而展开,其中 SCRUM框架包括3个角色.3个工件.5个活动.5个价值 3个角色 产品负责人(Product Owner) Scrum Master Scr