1.1 第一关练习题

1.1.1 创建一个目录/data

1.1.1.1 方法:mkdir 创建目录

[root@oldboyedu-39 ~]# mkdir /data    

[root@oldboyedu-39 ~]# ls /           

a    data  etc   lib64      mnt     proc  selinux tmp

bin  date  home  lost+found oldboy  root  srv     usr

boot dev   lib   media      opt     sbin  sys     var

[root@oldboyedu-39 ~]#

1.1.2 /data 下面建立一个文件 oldboy.txt

1.1.2.1 方法:touch         创建文件

[root@oldboyedu-39 ~]# touch /data/oldboy.txt

[root@oldboyedu-39 ~]# ls /data/

oldboy.txt

[root@oldboyedu-39 ~]#

1.1.3 oldboy.txt 增加内容为“I am studying linux.

1.1.3.1 方法1:vim  文本编辑器

[root@oldboyedu-39 ~]# vim /data/oldboy.txt                

I am studying linux.

                                                                        

~                                                                          

-- INSERT --   

1.1.3.2 方法2:echo >            显示内容重定向到目标文件中

[root@oldboyedu-39 ~]# echo "I am studyinglinux." > /data/oldboy.txt

1.1.3.3 方法3&#xff1a;cat  >>  <<       多行追加

[root&#64;oldboyedu-39 ~]# cat >> /data/oldboy.txt <

> I am studying linux.

>EOF

[root&#64;oldboyedu-39 ~]#

1.1.4 oldboy.txt 文件拷贝到/tmp

1.1.4.1 方法&#xff1a;cp       复制目录或文件

[root&#64;oldboyedu-39 ~]# cp /data/oldboy.txt /tmp   

1.1.5 /data 目录移动到/root

1.1.5.1 方法&#xff1a;mv             移动目录或文件

[root&#64;oldboyedu-39 ~]# mv /data /root

[root&#64;oldboyedu-39 ~]# ls /root

anaconda-ks.cfg data        install.log.syslog  test.txt

a.txt           install.log  oldboy.txt

[root&#64;oldboyedu-39 ~]#

1.1.6 进入/root 目录下的 data 目录&#xff0c;删除 oldboy.txt 文件

1.1.6.1 方法&#xff1a;cd 切换目录

              rm         删除文件或目录

[root&#64;oldboyedu-39 ~]# cd /root/data/

[root&#64;oldboyedu-39 data]# rm -f oldboy.txt         ##-f 强制删除

[root&#64;oldboyedu-39 data]# ls

[root&#64;oldboyedu-39 data]#

1.1.7 接第 6 题&#xff0c;退出到上一级目录&#xff0c;删除 data 目录

1.1.7.1 方法&#xff1a;cd

[root&#64;oldboyedu-39 data]# cd ..

[root&#64;oldboyedu-39 ~]# rm -rf /root/data       ## -r       删除目录

[root&#64;oldboyedu-39 ~]# ls

anaconda-ks.cfg install.log         oldboy.txt

a.txt           install.log.syslog  test.txt

[root&#64;oldboyedu-39 ~]#

1.1.8 请给出输出 test.txt 文件内容时&#xff0c;不包含 oldboy 字符串的命令

文件 test.txt 内容为&#xff1a; test

liyao

oldboy

先创建测试环境&#xff1a;

[root&#64;oldboyedu-39 ~]# cat >test.txt<

> test

> lidao

> oldboy

> eof

[root&#64;oldboyedu-39 ~]# cat test.txt

test

lidao

oldboy

[root&#64;oldboyedu-39 ~]#

1.1.8.1 方法1&#xff1a;grep 过滤

[root&#64;oldboyedu-39 ~]# grep -v &#39;oldboy&#39; test.txt   ## -v   排除

test

lidao

[root&#64;oldboyedu-39 ~]#

1.1.8.2 方法2&#xff1a;sed          用于处理文本文件

[root&#64;oldboyedu-39 ~]# sed &#39;/oldboy/d&#39; test.txt    ## d 删除

test

lidao

[root&#64;oldboyedu-39 ~]#

1.1.8.3 方法3&#xff1a;awk 用于处理文本文件

[root&#64;oldboyedu-39 ~]# awk &#39;!/oldboy/&#39; test.txt       ## &#xff01;在awk里面表示取反

test

lidao

[root&#64;oldboyedu-39 ~]#

1.1.9 请用一条命令完成创建目录/oldboy/test&#xff0c;即创建/oldboy 目录及/oldboy/test 目录

1.1.9.1 方法&#xff1a;mkdir

[root&#64;oldboyedu-39 ~]# mkdir -p /oldboy/test       ## -p,递归&#xff0c;多级创建目录

[root&#64;oldboyedu-39 ~]#

1.1.10 复制让系统不提示是否覆盖

已知/tmp 下已经存在 test.txt文件&#xff0c;如何执行命令才能把/mnt/test.txt拷贝到/tmp 下覆盖掉

/tmp/test.txt&#xff0c;而让系统不提示是否覆盖&#xff08;root 权限下&#xff09;

1.1.10.1 方法1&#xff1a;\            临时取消别名

[root&#64;oldboyedu-39 ~]# \cp /mnt/test.txt /tmp/

[root&#64;oldboyedu-39 ~]#

1.1.10.2 方法2&#xff1a;使用命令绝对路径

which  查看命令绝对路径

[root&#64;oldboyedu-39 ~]# /bin/cp /mnt/test.txt /tmp/

[root&#64;oldboyedu-39 ~]#

1.1.11 只查看 ett.txt 文件&#xff08;共 100 行&#xff09;内第 20 到第 30 行的内容

创建测试环境&#xff1a;

[root&#64;oldboyedu-39 ~]# seq 100 >ett.txt        ## seq  生成数字序列

1.1.11.1 方法1&#xff1a;head &#43; tail

[root&#64;oldboyedu-39 ~]# head -30 ett.txt | tail -11    ##head显示前几行

20                                                    ##tail显示后几行

21

22

23

24

25

26

27

28

29

30

[root&#64;oldboyedu-39 ~]#

 

1.1.11.2 方法2&#xff1a;sed

[root&#64;oldboyedu-39 ~]# sed -n &#39;20,30p&#39; ett.txt            ##-n    取消默认输出

20

21

22

23

24

25

26

27

28

29

30

[root&#64;oldboyedu-39 ~]#

1.1.11.3 方法3&#xff1a;awk     

[root&#64;oldboyedu-39 ~]# awk &#39;NR&#61;&#61;20,NR&#61;&#61;30&#39; ett.txt

20

21

22

23

24

25

26

27

28

29

30

[root&#64;oldboyedu-39 ~]#

1.1.11.4 方法4&#xff1a;grep      &#xff08;碰巧&#xff09;-A  -B  -C

[root&#64;oldboyedu-39 ~]# grep -A10 &#39;20&#39; ett.txt      ## -A10 输入20行及其之后10行

20

21

22

23

24

25

26

27

28

29

30

[root&#64;oldboyedu-39 ~]#

1.1.12 /oldboy 目录及其子目录下所有以扩展名.sh 结尾的文件中包含oldboy 的字符串全部替换为oldgirl

创建测试环境

[root&#64;oldboyedu-39 ~]# mkdir -p /oldboy/test

[root&#64;oldboyedu-39 ~]# cd /oldboy

[root&#64;oldboyedu-39 oldboy]# echo"oldboy">test/del.sh

[root&#64;oldboyedu-39 oldboy]# echo"oldboy">test.sh

[root&#64;oldboyedu-39 oldboy]# echo"oldboy">t.sh

[root&#64;oldboyedu-39 oldboy]# touch oldboy.txt

[root&#64;oldboyedu-39 oldboy]# touch alex.txt

1.1.12.1 方法1&#xff1a;find &#43;&#39; | xargs&#39;   

[root&#64;oldboyedu-39 oldboy]# find /oldboy/ -type f -name"*.sh"|xargssed -i &#39;s#oldboy#oldgirl#g&#39;

[root&#64;oldboyedu-39 oldboy]# find /oldboy/ -type f-name "*.sh"|xargs cat

oldgirl

oldgirl

oldgirl

1.1.12.2 方法2&#xff1a;sed  $()      先执行小括号里内容&#xff0c;留下东西给前边的命令

[root&#64;oldboyedu-39 oldboy]# sed -i &#39;s#oldboy#oldgirl#g&#39; $(find /oldboy/ -type f-name "*.sh")

1.1.12.3 方法3&#xff1a;-exec    {} \;       固定搭配&#xff0c;把前边内容给到&#39;{}&#39;

[root&#64;oldboyedu-39 oldboy]# find /oldboy/ -type f -name"*.sh" -execsed -i &#39;s#oldboy#oldgirl#g&#39; {}\;

[root&#64;oldboyedu-39 oldboy]#