Linux 练习题-1 入门

1、创建目录/data/test ,在该目录下创建文件your_name.txt,在文件里写入内容"inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0 "(不含引号)

 

2、过滤题1文件内容,只输出以下内容

10.0.0.8 10.0.0.255 255.255.255.0

awk -F "[ :]+" '{print $3,$5,$7}' sxr.txt

 

3、将题1test目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy

 

4、在题3基础上,用awkpasswd文件的第5行到15行的第三列重定向到/tmp/test/test.txt文件里

awk -F ":" 'NR>=5 && NR<=15 {print $3}' passwd > text.txt

 

5、在题3基础上要求用命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效

image.png

alias rm='echo You not use rm command'  #别名里不能有'号,如can't这种是不行的

永久生效需要将命令复制到/etc/profile  /etc/bashrc

 

6、在题3的基础上,删除/tmp/test/下除passwd以外的其他文件

find /tmp/data/ -type f ! -name "passwd" | xargs rm -f

 

7、在题3基础上,打印/etc/passwd文件中的第2-5行(最少三种方法)

head -5 passwd | tail -4

tail -n +2 passwd | head -4

sed -n '2,5p' passwd

awk 'NR>1 && NR<6 {print $0}' passwd

 

8、在题3基础上,用命令调换passwd文件里root位置和/bin/bash位置,即将第一行的第一列和最后一列位置调换

image.png

 

awk -F":" 'NR==1{print $7":"$2":"$3":"$4":"$5":"$6";"$1}' passwd

 head -1 /etc/passwd | \sed -nr 's#([^:]+)(:.*:)(/.*$)#\2#gp'

 

9、把/test目录及其子目录下所有以扩展名.txt结尾的文件中包含sorry的字符串全部替换为thank

 find /data/test -type f -name "*.txt" | xargs sed -i 's/sorry/thank/g'

 find /data/test -type f -name "*.txt" | xargs -i sed -i 's/sorry/thank/g {}'

 

10、查找/test 下所有7天以前以log结尾的大于1M的文件移动/tmp

find /data/test -type f -name "*.log" -mtime +7 -size +1M | xargs -i mv {} /tmp

注:ls -l 显示的文件修改时间是mtime

         rename .txt .log * #将所有.txt文件修改为.log文件

 

11、什么是Linux的运行级别,描述linux的运行级别不同数字的含义

运行级别就是操作系统运行的功能级别。不同的运行级别在功能上会有所差异

inux下有7个运行级别 0123456

0系统停机模式

1单用户模式

2多用户模式

3完整的多用户文本模式

4系统未使用

5图形化模式

6重启模式

 

12、描述buffercache的区别

总结1

cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到**加快访问速度**的作用。

buffer 的主要目的进行流量×××,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以**减少响应次数**

总结2

cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了

总结3

cache的数据没了,还能在算一遍得到,buffer空间的数据没了可能就真没了。而且通常buffer会顺序读取,而cache会随机、反复读取/处理

cache还有一个就是用来保持冗余的、可以被重复计算的、计算后的数据的,这个你叫buffer就不行。

 

13、区别并总结linux通配符和正则表达式

通配符和正则表达式是不一样的。通配符用在用户命令行bash环境。而Linux 正则表达式用于三剑客grep,sed,awk(还有一些其他命令,如find,ergrep等,主要还是三剑客)

  1. 通配符总结

*

 通配符,代表任意(0到多个)字符

ls *.txt #显示所有.txt文件

通配符,代表任意1个字符


连续不同命令的分隔符(在前一个命令结束时,而忽略其返回值,继续执行下一个命令)

seq 10 > a.txt ; cat a.txt #结果输出   seq 10 的结果

#

配置文件注释


|

管道,传递上个命令的输出给下个命令


~

用户的家目录


-

上次的目录


$

变量前需加的符号


/

路径分隔符号


>1>

重定向,覆盖原有内容


>>

追加重定向


<

输入重定向

cat   < 1.txt

<<

标准限制符输入

<<EOF 输入到EOF时,停止

'

单引号,不具有变·量置换功能,输入所见即所得

echo '$date' #结果输出'$date'

"

双引号,具有变量置换功能,解析变量后输出。不加引号相当于双引号

echo "$date"=echo   "~date~"=echo ~date~ #输入结果是当前时间

~

tab上面的键,反引号。两个~ ~中间为命令,会先执行,等价于$()


{}

中间为区块组合或内容序列。与seq命令比,{}里可以加字符

touch {1..5}.txt #创建1.txt5.txt文件
    
cp 1{.txt,.ori}#复制1.txt 1.ori
    touch {b..z}.txt

逻辑运算中的非(not


&&

and,而且。前一个命令成功,执行后一个命令


||

or,或,前一个命令失败,执行后一个命令


..

上层目录


.

当前目录


\

转义符,去除其后紧跟的特殊字符意义


=

设定变量

a=file1
    echo $a #
输出的是file1

[123]

匹配[]中任意单一字符


[!123][^123]

匹配除了[]中任意单一字符


[0-9] [a-z]

匹配[]范围内任意单一字符


[!c1-c2][^c1-c2]

匹配除了[]范围内任意单一字符


{string1,string2,...}

匹配 sring1  string2


  1. 正则表达式总结

^word

搜索以word开头的

wods$

搜索以word结尾的

^$

表示空行

*

重复0个或多个前面的一个字符。例如o*

.

代表且只能代表任意一个字符

.*

匹配所有字符。^.*以任意多个字符开头

\

转义符。\.代表.本身

[abc]

匹配字符集内任意一个字符

[^abc]

匹配不包含^后的任意字符的内容

  1. 扩展正则表达式总结

grep,sed 使用时有些地方需要转义字符转义

egrep(grep -E),sed -r不需要

+

表示重复"一个或一个以上"前面的字符(*0个或多个)

表示重复“0个或一个”前面的字符

|

表示同时过滤多个字符串

()

分组过滤,后向引用
    
sed -n 's#()()#\1\2#gp'   file

当在前面的匹配部分用小括号的时候,第一个括号内容,可以在后面部分用\1输出。第二个括号内容,可以用\2输出

{n}

必须匹配n  grep使用时,需转义:\{n\}

{n,}

必须匹配>=n

{n,m}

匹配次数在nm

{m}

匹配次数<=m



猜你喜欢

转载自blog.51cto.com/12758568/2123156