第二章整理
终止程序命令
DELETE CTL-c可以立即终止程序
Who
-H 打印每列的内容名字
Example: List all users of using the system
who
echo
-n: 输出之后不换行
date
-s:通过字符串设定时间
-d:通过字符串显示时间
通过clock -w命令把系统时间同步到硬件时间,重启后修改不会失效
cal
cal 8 2008
展示2008年8月的日历
cal -j 8 2008
按照每年的第多少天展示2008月的日历(不是从1开始,而是从8.1是2008年的第214天开始)
cat
cat m1.c
展示m1.c的文件内容
cat m1.c m2.c
展示两个文件内容
cat m1.c m2.c>ma.c
将m1.c m2.c的文件内容合并,然后输入到文件ma.c中
more
一页一页显示文件内容
more m1.c
一页页显示m1.c的文件内容
head
head -5 aaa
显示aaa文件的前五行
tail
tail +15 aaa
显示文件aaa前15行
tail 15 aaa
出错
tail -15 aaa
显示文件aaa后15行内容
touch
touch aaa
在当前目录下新建一个空文件aaa
利用学过的命令给出公元2000年的元旦是星期几?
$ cal 1 2000
grep
grep -F aaa /etc/password
在口令文武兼/etc/password中查找包含aaa的所有行
grep -r ‘print’ mengqc
在/mengqc目录和子目录下的所有文件查找字符串’print’出现的行
find
find -maxdepth 1 -name ‘main*’ -exec cat {} ;
查找当前目录中所有以“main”开头的文件并显示这些文件的内容
find -maxdepth 1 -name ‘m?.c*’ -ok cat {} ;
查找当前中所有以”m”开头的.c文件并交互式的显示这些文件的内容
find -name’*.txt” -ctime+10 -ls
列出当前文件名以txt结尾、10天前被修改过的文件
cp
cp aaa /usr/linshi/exam1
将文件aaa拷贝到目录/usr/linshi下,并且命名为eaxm1
cp -r /usr/linshi1 /usr/linshi2
将目录/usr/linshi1中的所有文件和文件夹拷贝到/usr/linshi2的目录下
cp -i /usr/linshi1/m*.c /usr/linshi2 交互式将目录/usr/linshi1中所有以m开头的.c文件拷贝到目录/usr/linshi2中
Practice
copy the ordinary file aaa and directory files ccc from /home/liw to the directory / home / sunjob
cp -r /home/liw/aaa /home/liw/ccc /home/sunjob
rm
rm -i test example
交互式删除当前目录下的文件text和example
rm -r *
删除当前目录下除了隐含文件外所有的文件和子目录
mv
mv ex3 new1
将ex3改名为new1
mv /usr/lishi/*
将目录/usr/lishi中所有文件移到当前目录中
Compare the command of cp and mv, given their similarities and differences ?
- mv可以将文件重命名、移动到别的目录下
- cp将文件从一个目录拷贝到另一个目录下
wc
- -c 按照字节展示文件
- -w 按照单词数展示文件
- -l 展示文件行数
- wc aaa bbb
????
输入重定向
cat aaa>temp
展示aaa的文件内容,并将aaa文件内容写入到temp里面(覆盖)
cat aaa>>temp
展示aaa的文件内容,并将aaa的内容追加到temp中(追加)
|管道命令
- 将前一个命令的结果作为后面命令的输入
tee
读入标准输入流,然后写入到指定文件中
cat bbb|head -5|tee myfile
将bbb文件的前5行写入到myfile中
目录
- /bin 二进制缩写
- /boot 存放系统启动程序
- /dev 所有linux系统中使用的外部设备
- /etc 存放了系统管理要用到的各种配置文件
- /home 如果建立了一个用户名adr的用户,在这个目录下就有一个/home/adr的路径,用来存放用户主目录
- /lib library缩写 用来存放系统动态链接库的
- /root 超级用户主目录
ln
ln /usr/liw/l1/bbb /usr/sunjob/b1
将/usr/liw/l1下的bbb文件链接到/use/sunjob下的b1文件
ln -s /usr/liw/l1 /usr/sunjob/ccc
将/usr/liw/l1所代表的路径保存到目录/usr/sunjob下的文件ccc中
Please create a hard link file and soft link file and compare the difference between them
mkdir -m 700 /home/test
在/home下建立子目录test,且本文件只有文件主可以读、写、执行(rwx),其他用户没有访问权限。
注意-m是为新的目录设置权限
mkdir -p -m 750 bin/test
在当前目录中建立bin和bin下面的子目录test,权限为文件主可以读、写、执行,群组可以读、执行。
注意-p选项是创建多个目录
rmdir
cd /usr/liw
rmdir -p l1/test
递归删除子目录test和父目录l1
Gives the functions of following command
$ rm –r /usr/liw/l1
cd /usr/liw
rmdir -r /l1
?
chmod
+:添加权限 -:取消权限 =:给予特定权限(覆盖之前的权限)
u:当前用户 g:群组用户 o:其他人 a:所有人
chmod a+x,ex1
更改ex1的文件权限为所有人可以执行
chmod u=r,ug=x ex1
将文件ex1权限改为文件主可以读,文件主和群组用户可以执行
chmod 664 ex1
将文件ex1的权限改为文件主、群组用户可写、可读,其他人可读
after executing the command of “ chmod 540 test ”, please give the permission of the file
将test文件改为文件主可读、可执行,群组用户可读,其他人没有访问权限。
umask
umask u=,g=w,o=rwx
对于以后创建的文件,文件主的权限不改变,组用户的写权限,其他用户的读写执行权限都被取消
对于新创建的文件,系统不会给予执行权限,所以文件的最高权限是666,而文件夹的最高权限是777
gzip
cd /home/sunjob
gzip * (将/home/sunjob目录下的所有文件都压缩成.gz文件)
ls
gzip -l * (列出上面每个文件的详细信息)
gzip -dv *(把所有压缩文件进行解压缩并且列出详细信息)
-l 展示压缩文件详细信息
-d 解压文件
-v 显示指令执行过程
ctrl+z
将后台进程挂起
Classwork
After executing the command of “ chmod 754 test ”, please give the permission of the file
将test文件的权限改为文件主可以读、写、执行,群组可以读、执行,其他人可以读
Given the types of following file :
drwxr-xr-x
是一个目录文件,文件主可以读、写、执行,群组可以读、执行,其他人可以读、执行
/etc/passwd
密码文件存放在这个文件夹中
/dev/fd0
存放外部设备的文件,这里存放的应该是软驱动程序
–rwx–x–x
普通文件,文件主可以读、写、执行,群组可以读、执行,其他人可以读、执行
解释下列shell命令的功能
date
展示当天的日期
cal
显示日历(cal -j 按照当年的第多少天展现日历)
pwd
显示当前目录
rm
删除文件
-i:交互式删除(询问)
-r:递归式删除(删除子目录文件)
-f:不询问
wc
默认展示行数、字数、字节数
more
分页显示文件内容
uniq??
展示所有不重复的行
-d 只展示重复的行
-u 只展示不重复的行
chgrp
改变文件所属群组
chgrp bin 123.c
将123.c的所属群组改为bin
chown
改变文件所有者
chown root /var/run/http.pid
将/var/run/http.pid的所有者设置为root
kill
杀死进程
第三章vim编辑器
普通命令
0:移动到所在行的最前面
$:移动到所在行的最后
nG移动到第n行
n|移动到第n列
w,W:移动到下一个词的开头
b,B:移动到上一个词的开头
Text Delete Command
d0
删除从光标开始到行首的所有字符
d3l
从光标开始向右删除3个字符(因为l是向右)
d$
从光标删除至行尾,与D相同
d5G
从光标所在行删除至第五行
dw
删除从光标所在位置到该词末尾(包括词尾空白符)
d3B
从光标位置向前删除3个词(包括光标所在词)
dM
删除从光标所在行至屏幕中间行的所有行
替换
cW
将光标当前指向的单词进行替换
dw+i
c$
将光标到行末尾的删除然后进行替换
(dd+i)
c6G
删除光标所在行到第 6行,然后输入
d6G+i
C
删除当前行,然后输入(替换)
dd+o(O是在光标行下插入 因为dd删除之后这一行就没了)
原字符串为1234567890
3rA
结果是:
AAA4567890
RABC:
结果应该是:
ABC4567890
如果要做到PPT上的效果(ABC234567890),可以用sABC
屏幕显示(z)
10z+Enter
将第十行作为显示的行首(+是在首行显示)
10z.
将第十行作为屏幕的中间行,显示一行(.是在屏幕中间显示)
10z-
将第十行作为屏幕的底行,显示1行(-是在底显示)
10z5-
将第十行作为屏幕的底行,显示5行
查找
/8+Enter
向下查找8所在的行,并且让光标停留在该行行首
/8/-2+Enter
向下查找8所在的行,并且让光标停留在该行上面两行的行首
?8?+2+Enter
向上查找8所在的行,并且让光标停留在该行下面两行的行首
查找和替换
g/this/p+Enter
在屏幕上显示所有包含this的字符串
g/IF/s//if/
将所有的IF都替换成if(一行中包括多个IF时只替换该行的第一个)
g/IF/s//if/g
将所有的IF都替换成if(如果一行中有多个,也替换)
g/print/s/n1/value/g
对所有包含print的行,如果里面有n1就进行替换成value
g!/print/s/n1/value/g
对所有不包含print的行,如果其中有n1就替换成value
复制和粘贴命令
yw
复制光标位置到单字结束的字符
nyw
复制光标位置到单词结束以及向后n-1个单字
nyy
复制第二行内容到文档第一行
:2+Enter
yy
:$+Enter
p+Enter
现在正编辑文件ex1.c文件,需要将另一个文件mm1.c中的若干行插入到ex1.c指定位置中。
:w (保存但是不退出)
:e mm1.c
“a y 4+ 将光标所在行及其后面3行全部放到缓冲区a中
:e# 回到原来的文件中
“a p把缓冲区a的内容插入到当前行后,光标 停留在刚插入文本的第一行的行首
作业
20G
光标移动到第20行的行首
18|
将光标移到当前行的第18列上
dM
删除光标所在行到屏幕中间行
x
删除光标所在的字符
cw
删除光标所在的单词,然后输入
10cc
删除光标所在行以及下面9行,然后输入新文本
3rk
将光标所在的字符和向后两个字符替换成k
5s
将光标所在的字符和光标后面4个字符被新的输入代替
7S
将光标所在行和下面6行删除,被新的输入代替
>8M
将当前行和屏幕中间行之间的各行向右移动8个字符
/this
从光标所在行向下查找this,并停留在其所在行的行首
?abc?-5
从光标所在行向前查找abc,并停留在abc所在行的向上5行
mg
在光标所在位置上做标记
g/int/p
在屏幕上显示当前所编辑的文件中所有包含字符串”int”的行
“a p
将缓冲区a中的内容插入到当前行之后,把光标停留在插入的文本的第一行行首
6H
将光标移到距离屏幕顶部5行的行首
d4B
从光标位置开始反向删除4个词(包括光标所在词)
利用linux下的VI文本编辑器对文件ex1.c和ex2.c进行如下操作:将文件ex2.c中前10行内容插入到文件ex1.c的第15行和第16行之间,给出实现该功能的V命令组。
vi ex1.c
:w
:e ex2.c
:1
10yy
:w
:e ex1.c
:15
p
:wq
作业2
(1)进入用户主目录,建立一个新文件。
(2)录入VI means visual interface
(3)使用h,j,k,l移动光标到单词interface的子母”i”。
(4)删除光标右侧单词interface。
(5)输入文本”Interface”
(6)将文档内容重复10遍,分10行显示。
(7)保存后退出。
cd ~
touch temp
vi temp
VI means visual interface
dw
Interface
yy
10p
:wq
第七章
/etc/password文件格式
username:password(用x代替):UID:GID:identity:decription:home directory:logins shell
/etc/shadow文件格式
因为所有用户都有权限查看passwd文件,所以将真正的密码加密放在shadow文件中
登陆用户名:加密的登陆密码:上次修改密码距1970.1.1的天数:
“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
“口令”字段存放的是加密后的用户口令字,长度为13
个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0
-9A-Za-z}中的字符,则对应的用户不能登录。`
”最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970
年1
月1
日。`
“最小时间间隔”指的是两次修改口令之间所需的最小天数。`
”最大时间间隔”指的是口令保持有效的最大天数。`
“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。`
”不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。`
“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。`
保留条目,目前没用
添加用户
useradd adr 建立用户账号
tail -l /etc/passwd 查看password中添加的用户账号信息
tail -l etc/shadow
ls /home 查看所建立账号的主目录
修改用户属性
usermod -l adr2 adr 把用户adr改名为adr2(注意是后面的替换前面的)
usermod -L adr2 锁定adr2用户,不让登陆
usermod -U adr2 解锁adr2用户,可以登陆
删除用户
grep adr /etc/passwd 查询用户adr是否存在
userdel adr 删除用户adr
grep adr /etc/passwd 再次查询用户账号adr是否存在
ls -d /home 查询用户adr的主目录是否还存在
userdel -r adr 删除用户的同时删除其工作主目录(-r)
添加和删除群组
groupadd lbgroup 建立组账号 lbgroup
grep lbgroup /etc/group 查询group文件中lbgroup是否建立
groupadd -r syslbgroup 建立系统组账号(-r)
grep syslbgroup /etc/group 查询group文件中sysgroup是否建立
更改群组id
grep lbgroup /etc/group 查询group文件中的lbgroup组属性
groupmod -g 503 lbgroup 改变lbgroup组的gid为503
grep lbgroup /etc/group 查询操作结果
groupmod -n ydgroup lbgroup 改变lbgroup组名为ydgroup
grep 503 /etc/group 查询操作结果是否正确
第八章
iptables -L 列出iptables规则
iptables -F 清除iptables内置规则
iptables -X清除iptables自定义规则
练习
iptables -D INPUT 3
删除filter表INPUT链中的第三条规则(不管他的内容是什么)
iptables -D INPUT -s 192.168.0.1 -j DROP
删除filter表INPUT链中“-s 192.168.0.1 -j DROP”规则
iptables -R INPUT 3 -j ACCEPT
将原来编号为3的规则内容替换为”-j ACCEPT”
iptables -P INPUT DROP
设置filt表(-P默认是filter表吗?)INPUT链的默认规则是DROP,即数据包没有被规则表里的规则匹配的时候,按照这个默认规则进行处理
iptables -t nat -F PREROUTING
清空nat表PREROUTING链中的所有规则
iptables -t nat -vnL
用详细方式列出nat表所有链的所有规则,只显示IP地址和端口号
(-t默认是修改filter表)-i eth0
匹配是否从网络接口eth0进来
-o eth1
从eth1上发送的流量
-s’!’ 192.168.1.0/24
除了192.168.1.0/24 之外的所有网段
–sport 1000
匹配源端口是1000的数据包
–dport 80
匹配目的端口是80的数据包
classwork1
#!/bin/bash case “$1” in
start)
echo -n “Starting to write your Iptables:…”
/sbin/iptables –F
- 清楚内置规则
/sbin/iptables –X
- 删除用户自定义规则
/sbin/iptables –Z
- 清零计数器
/sbin/iptables -A INPUT -i lo -j ACCEPT
- 在INPUT链末尾增加一条规则“-i lo -j ACCEPT”
- -i 匹配输入名为lo的端口,设置为接受
/sbin/iptables -A INPUT -p input -p tcp –dport 22 -j ACCEPT
- 在INPUT链添加一条规则,默认添加到最后
- 规则是接受所有tcp协议的目的端口是22的数据包
/sbin/iptables -A INPUT -p input -p tcp –dport 80 -j ACCEPT
- 在INPUT链添加一条规则,默认添加到最后
- 规则是接受所有tcp协议的目的端口是80的数据包
/sbin/iptables -A INPUT -p input -p tcp –dport 21 -j ACCEPT
- 在INPUT链添加一条规则,默认添加到最后
- 规则是接受所有tcp协议的目的端口是21的数据包
/sbin/iptables -P INPUT DROP
- 在INPUT链上添加默认规则,丢弃所有数据包
echo “OK”
;;
stop)
echo -n “Stop iptables….”
/sbin/iptables -P INPUT ACCEPT
- 设置默认规则是接受数据包
/sbin/iptables –F
- 删除内置规则
/sbin/iptables –X
- 删除用户自定义规则
/sbin/iptables –Z
- 清零计数器
echo “OK”
;;
*)
echo “Usage: $0 {start|stop}”
- 输出脚本名
;;
esac
classwork2 -i interrface name ([+] for wildcard)
(1)The firewall prohibits customers with IP address 192.168.1.150 from accessing the Internet.
- iptables -A OUTPUT -s 192.168.1.150 -j DROP
(2) The firewall prohibits all clients of subnet 192.168.2.0 from accessing the web service of this machine.
- iptables -A INPUT -s 192.168.2.0/24 -p tcp –dport 80 -j DROP
(3)The firewall prohibits clients with IP address 192.168.3.8 from accessing the FTP service of this machine.
- iptables -A INPUT -s 192.168.3.8 -p tcp –dport 21 -j DROP
第四章
ps
- ps -uax
- 显示用户名和其他信息,列出所有进程(包括在其他终端上进行的进程)
nice
- nice -5 locate lib>file.list
- 这里的-5不是负号,是选项。nice选项的数越小,优先级越高
- nice –10 locate lib>fie.lsit
- 这里是负10
- ps -l Enter
- 查看进程的优先权
renice
- 改变进程的优先级
[-p]
特定的PID- -u user 特定的用户
- -g p grp 特定的群组
kill
- kill PID
- kill 1022 Enter
- 终止进程1022
- kill -9 1022 Enter
- 有些进程无法用kill强行终止,因为kill默认送出信号15,但是有些进程会忽略这个信号,所以用信号9,因为信号9最强有力,无法被阻止
top
- top -d 秒数
- 动态显示进程(每过几秒)
- top -q 随时更新进程
第一章
- How many disk partition formats are there in the linux system? Please compare them.
linux分区方式:ext3,swap - swap交换分区 来实现内存的交换 分区大小最好是内存的两倍
- ext3 linux分区的格式,日志文件系统,安全可靠(从ext2上发展而来)
- ext2 非日志文件系统
U盘挂载
- 终端挂载命令
- mount /mnt/ADRIN
- 终端卸载命令
- umount /mnt/ADRIN
第六章
gcc编译程序分为4个阶段 预处理 编译 汇编 连接
编译命令:gcc
- gcc f1.c f2.c
生成可执行文件a.out
gcc f1.c -o mygame
通过参数指定生成的可执行文件名称为mygame
通过./mygame运行可执行文件
喜欢的话,给博主赏一杯冰阔乐吧