Linux 练习题-1 入门
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、将题1的test目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy下
4、在题3基础上,用awk取passwd文件的第5行到15行的第三列重定向到/tmp/test/test.txt文件里
awk -F ":" 'NR>=5 && NR<=15 {print $3}' passwd > text.txt
5、在题3基础上要求用命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效
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位置,即将第一行的第一列和最后一列位置调换
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、描述buffer和cache的区别
总结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等,主要还是三剑客)
通配符总结
* | 通配符,代表任意(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.txt到5.txt文件 |
! | 逻辑运算中的非(not) | |
&& | and,而且。前一个命令成功,执行后一个命令 | |
|| | or,或,前一个命令失败,执行后一个命令 | |
.. | 上层目录 | |
. | 当前目录 | |
转义符,去除其后紧跟的特殊字符意义 | ||
= | 设定变量 | a=file1 |
[123] | 匹配[]中任意单一字符 | |
[!123]或[^123] | 匹配除了[]中任意单一字符 | |
[0-9] 或[a-z] | 匹配[]范围内任意单一字符 | |
[!c1-c2]或[^c1-c2] | 匹配除了[]范围内任意单一字符 | |
{string1,string2,...} | 匹配 sring1 或 string2 |
正则表达式总结
^word | 搜索以word开头的 |
wods$ | 搜索以word结尾的 |
^$ | 表示空行 |
* | 重复0个或多个前面的一个字符。例如o* |
. | 代表且只能代表任意一个字符 |
.* | 匹配所有字符。^.*以任意多个字符开头 |
转义符。.代表.本身 | |
[abc] | 匹配字符集内任意一个字符 |
[^abc] | 匹配不包含^后的任意字符的内容 |
扩展正则表达式总结
grep,sed 使用时有些地方需要转义字符转义
egrep(grep -E),sed -r不需要
+ | 表示重复"一个或一个以上"前面的字符(*是0个或多个) |
? | 表示重复“0个或一个”前面的字符 |
| | 表示同时过滤多个字符串 |
() | 分组过滤,后向引用 当在前面的匹配部分用小括号的时候,第一个括号内容,可以在后面部分用1输出。第二个括号内容,可以用2输出 |
{n} | 必须匹配n次 grep使用时,需转义:{n} |
{n,} | 必须匹配>=n |
{n,m} | 匹配次数在n与m间 |
{,m} | 匹配次数<=m |
以上是关于Linux 练习题-1 入门的主要内容,如果未能解决你的问题,请参考以下文章