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:cat >> << 多行追加
[root@oldboyedu-39 ~]# cat >> /data/oldboy.txt <<EOF
> I am studying linux.
>EOF
[root@oldboyedu-39 ~]#
1.1.4 把 oldboy.txt 文件拷贝到/tmp 下
1.1.4.1 方法:cp 复制目录或文件
[root@oldboyedu-39 ~]# cp /data/oldboy.txt /tmp
1.1.5 把/data 目录移动到/root 下
1.1.5.1 方法:mv 移动目录或文件
[root@oldboyedu-39 ~]# mv /data /root
[root@oldboyedu-39 ~]# ls /root
anaconda-ks.cfg data install.log.syslog test.txt
a.txt install.log oldboy.txt
[root@oldboyedu-39 ~]#
1.1.6 进入/root 目录下的 data 目录,删除 oldboy.txt 文件
1.1.6.1 方法:cd 切换目录
rm 删除文件或目录
[root@oldboyedu-39 ~]# cd /root/data/
[root@oldboyedu-39 data]# rm -f oldboy.txt ##-f 强制删除
[root@oldboyedu-39 data]# ls
[root@oldboyedu-39 data]#
1.1.7 接第 6 题,退出到上一级目录,删除 data 目录
1.1.7.1 方法:cd
[root@oldboyedu-39 data]# cd ..
[root@oldboyedu-39 ~]# rm -rf /root/data ## -r 删除目录
[root@oldboyedu-39 ~]# ls
anaconda-ks.cfg install.log oldboy.txt
a.txt install.log.syslog test.txt
[root@oldboyedu-39 ~]#
1.1.8 请给出输出 test.txt 文件内容时,不包含 oldboy 字符串的命令
文件 test.txt 内容为: test
liyao
oldboy
先创建测试环境:
[root@oldboyedu-39 ~]# cat >test.txt<<eof
> test
> lidao
> oldboy
> eof
[root@oldboyedu-39 ~]# cat test.txt
test
lidao
oldboy
[root@oldboyedu-39 ~]#
1.1.8.1 方法1:grep 过滤
[root@oldboyedu-39 ~]# grep -v 'oldboy' test.txt ## -v 排除
test
lidao
[root@oldboyedu-39 ~]#
1.1.8.2 方法2:sed 用于处理文本文件
[root@oldboyedu-39 ~]# sed '/oldboy/d' test.txt ## d 删除
test
lidao
[root@oldboyedu-39 ~]#
1.1.8.3 方法3:awk 用于处理文本文件
[root@oldboyedu-39 ~]# awk '!/oldboy/' test.txt ## !在awk里面表示取反
test
lidao
[root@oldboyedu-39 ~]#
1.1.9 请用一条命令完成创建目录/oldboy/test,即创建/oldboy 目录及/oldboy/test 目录
1.1.9.1 方法:mkdir
[root@oldboyedu-39 ~]# mkdir -p /oldboy/test ## -p,递归,多级创建目录
[root@oldboyedu-39 ~]#
1.1.10 复制让系统不提示是否覆盖
已知/tmp 下已经存在 test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp 下覆盖掉
/tmp/test.txt,而让系统不提示是否覆盖(root 权限下)
1.1.10.1 方法1:\ 临时取消别名
[root@oldboyedu-39 ~]# \cp /mnt/test.txt /tmp/
[root@oldboyedu-39 ~]#
1.1.10.2 方法2:使用命令绝对路径
which 查看命令绝对路径
[root@oldboyedu-39 ~]# /bin/cp /mnt/test.txt /tmp/
[root@oldboyedu-39 ~]#
1.1.11 只查看 ett.txt 文件(共 100 行)内第 20 到第 30 行的内容
创建测试环境:
[root@oldboyedu-39 ~]# seq 100 >ett.txt ## seq 生成数字序列
1.1.11.1 方法1:head + tail
[root@oldboyedu-39 ~]# head -30 ett.txt | tail -11 ##head显示前几行
20 ##tail显示后几行
21
22
23
24
25
26
27
28
29
30
[root@oldboyedu-39 ~]#
1.1.11.2 方法2:sed
[root@oldboyedu-39 ~]# sed -n '20,30p' ett.txt ##-n 取消默认输出
20
21
22
23
24
25
26
27
28
29
30
[root@oldboyedu-39 ~]#
1.1.11.3 方法3:awk
[root@oldboyedu-39 ~]# awk 'NR==20,NR==30' ett.txt
20
21
22
23
24
25
26
27
28
29
30
[root@oldboyedu-39 ~]#
1.1.11.4 方法4:grep (碰巧)-A -B -C
[root@oldboyedu-39 ~]# grep -A10 '20' ett.txt ## -A10 输入20行及其之后10行
20
21
22
23
24
25
26
27
28
29
30
[root@oldboyedu-39 ~]#
1.1.12 把/oldboy 目录及其子目录下所有以扩展名.sh 结尾的文件中包含oldboy 的字符串全部替换为oldgirl
创建测试环境
[root@oldboyedu-39 ~]# mkdir -p /oldboy/test
[root@oldboyedu-39 ~]# cd /oldboy
[root@oldboyedu-39 oldboy]# echo"oldboy">test/del.sh
[root@oldboyedu-39 oldboy]# echo"oldboy">test.sh
[root@oldboyedu-39 oldboy]# echo"oldboy">t.sh
[root@oldboyedu-39 oldboy]# touch oldboy.txt
[root@oldboyedu-39 oldboy]# touch alex.txt
1.1.12.1 方法1:find +' | xargs'
[root@oldboyedu-39 oldboy]# find /oldboy/ -type f -name"*.sh"|xargssed -i 's#oldboy#oldgirl#g'
[root@oldboyedu-39 oldboy]# find /oldboy/ -type f-name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl
1.1.12.2 方法2:sed $() 先执行小括号里内容,留下东西给前边的命令
[root@oldboyedu-39 oldboy]# sed -i 's#oldboy#oldgirl#g' $(find /oldboy/ -type f-name "*.sh")
1.1.12.3 方法3:-exec {} \; 固定搭配,把前边内容给到'{}'里
[root@oldboyedu-39 oldboy]# find /oldboy/ -type f -name"*.sh" -execsed -i 's#oldboy#oldgirl#g' {}\;
[root@oldboyedu-39 oldboy]#
转载于:https://blog.51cto.com/qizhong/1950183