1.用cat显示/etc/passwd,并显示行号
- cat -n /etc/passwd
2.将/etc/passwd文件中的前20行重定向保存到/hoem下改名20_pass.txt。
- su root
- head -20 /etc/passwd>/home/20_pass.txt
- Ls /home
3.在当前目录下创建空文件夹/web/test1。
- mkdir -p /web/test1
4.查看当前工作目录的命令。
- pwd
5.将根目录/tmp 下的文件file1复制到当前目录下,文件名仍为file1。
- mkdir /temp
- cd /temp
- touch file1
- cd /
- cp /temp/file1 .
显示环境变量path,将/root加入到$PATH中。
echo $PATH
export PATH=$PATH:/root
拷贝文件/etc/passwd到/tmp目录下
cp /etc/passwd /tmp
查看/tmp/目录的使用空间
du /tmp
删除空目录old
redir old //空目录
rm -r old
将host03下的所有文件删除
rm -r host03
将目录dir1设定成任何人皆有读取及执行的权利,但只有拥有者可作写修改
chmod 755 dir1
在/下建立目录test20912,在test20912建立文件1.txt和2.txt,分别在文件1.txt和2.txt,中输入“I am chinese”,“are you ok?”
mkdir /test20912
cd /test20912
touch 1.txt 2.txt
vi 1.txt
13 在/dev下查找所有以“cu”开头的文件
- find /dev -name ‘cu*’
14在new目录中建立一个空文件file3
- mkdir new
- touch new/file3
15 在/下建立目录think,把/etc/inittab文件复制到/think下
- mkdir -p /think
- ls /
- cp /etc/inittab /think
- ls /think
16 创建用户win1,UID、GID等均按默认
- useradd win1
- id win1
17 创建用户win2,默认主目录为/think,其余默认
- useradd -d /think win2
- tail /etc/passwd
18 用cat命令将file1、file2、file3合并为文件filenew
- touch file1 file2 file3
- cat file1 file2 file3 > filenew
19 将win2用户名改为tin,UID改为700,密码改为1330855
- usermod -l tin win2 -u 700 -p 1330855
20 连同主目录一起删除tin用户
- userdel -r tin(仅限目录属于该删除的用户)
21 将newdir目录改名为new
- mkdir newdir
- mv newdir new
22 创建一个名为goup的用户组,GID为5000
- groupadd -g 500 goup
- tail /etc/group
23 试将win1添加到goup中,明文查看win1所属组
- usermod -g goup win1
- groups win1
24 建立source文件的符号链接,命名为target2
- touch source
- ln -s source target2
25 查看new目录下有哪些文件和目录
- ls new/
26 在/think/下建立文件book.txt,将文件所属用户变为win1,对于book.txt,给属组用户添加写权限,取消其他用户的读写权限
- chown win1 book.txt
- chmod u+rwx,g+w,o-rw book.txt
27 修改book.txt的权限为属组可读可写,同组可读,其他用户不可读不可写
- chmod 640 book.txt
28 在当前目录下查找文件名包含字符"Name"的文件
- find . -name “Name”
29 查看/etc/passwd文件的前10行
- head -10 /etc/passwd
30 将/etc/man.config复制到/think下,将/think/man.config压缩为good.tar
- cp /etc/man.config /think
- tar -zcvf good.tar /think/man.config
31 将new目录的所有文件、目录名定向输出到文件your/text1
- ls new>your/text1
32 显示系统中所有进程
- ps -ef | more 或者 ps -aux
33 删除用户testuser
- adduser testuser
- deluser testuser
34 显示你所用机器CPU的利用率,内存利用情况,10秒刷新一次
- top -d 10
35 查看你的系统内存和磁盘空间的使用情况、统计分区的使用情况
- free
- df
- du
36 挂载你的光盘,实现linux中访问光盘中的内容,写出完整过程
- sudo mkdir /home/leo/local-disk
- sudo mount /dev/sr0 /home/leo/local-disk
37将目录dir1设定成任何人皆有读取及执行的权利,但只有拥有者可作写修改
- mkdir dir1
- chmod 755 dir1
38查看当前目录中filenew的文件内容
- cat filenew
- vim filenew
- gedit filenew
39在用户目录中创建目录/a/b/c/d ,在/root目录下创建1/2/3/4
- mkdir -p ~/a/b/c/d
- sudo mkdir -p /a/b/c/d
40创建install.log文件的软连接文件install.s,硬链接文件install.h
- ln -s install.log install.s
- ln install.log install.h
41 把/root目录下所有文件和子目录拷贝到/a/b/c/d目录下
- sudo cp -r /root /a/b/c/d
42 将文件file1,更名为file2
- mv file1 file2
43 把/root目录下的install.log拷贝成1.txt,2.txt,3.txt,把install.log拷贝成a.txt,a.doc
- sudo cp -r /root/install.log ./1.txt
- sudo cp -r /root/install.log ./2.txt
- sudo cp -r /root/install.log ./3.txt
- sudo cp -r /root/install.log ./a.txt
- sudo cp -r /root/install.log ./a.doc
44 把/root下的以txt结尾的文件拷贝到/a目录下。把/root下的以a开头的文件拷贝到/a/b目录下
- sudo cp /root/*.txt /a
- sudo cp /root/a* /a/b
45 将文件file复制成file1
- cp file1 file1
46 把/a目录下1.txt改名为1.c,把/a/b下的a.txt改名a.c
- mv /a/1.txt /a/1.c
- mv /a/b/a.txt /a/b/a.c
47 把/a目录打包成/a.tar,用zip打包压缩成/a.tar.gz,用bzip2打包压缩成/a.tar.bz;创建目录/1;/2;/3,解包/a.tar到/1; 解包/a.tar.gz到/2; 解包/a.tar.zz到/3.
- tar -cvf /a.tar /a
- tar -czvf /a.tar.gz /a
- tar -cjvf /a.tar.bz /a
- sudo mkdir /1 /2 /3
- tar -xvf /a.tar -C /1
- tar -xzvf /a.tar.gz -C /2
- tar -xjvf /a.tar.bz -C /3
48 把/a/b/c目录移动到/root/1/2/3/4目录下
- sudo mv -r /a/b/c /root/1/2/3/4
49 把/root目录下install.log的前10行内容输出到文件/a/b/a.log中
- touch /a/b/a.log
- head -10 /root/install.log > /a/b/a.log
50 查找/a 目录下,以txt结尾的文件;查找/a 目录下,以a开头的文件
- find /a -name *.txt
- find /a -name a*
51 查找3.txt文件,找到后删除掉该文件
- rm -rf $(find / -name 3.txt)
52 删除/a/b目录下的所有文件和子目录。删除/root/a/b目录下所有文件和子目录
- rm -r /a/b
53 列出/root目录下的所有文件和子目录。把输出内容重定向到文件/root/abc.log
- ls /root > /root/abc/log
54 查找文件名是5个字符的文件,把找到的文件拷贝到 /abc目录
- cp -r $(find / -type f -name ‘?????’) /abc 或者 cp ???? /abc
55 执行touch /abc/12345 命令,列出/abc目录下的文件,把输出重定向到 /abc/a.txt文件,在/abc目录下查找12345文件,找到后直接删除
- touch /abc/12345
- ls /abc > /abc/a.txt
- rm -rf $(find /abc -name ‘12345’
56 强制结束PID为48933的进程
- kill -9 48933
57 将VI命令放在后台执行
- vi
- ctrl + z
或者 vi&
58 把文件file1的所属组改成test
- chgrp test file1
59 查找文件/etc/group包含“test”的行,并输出
- cat /etc/group | grep test 或者 grep 'test' /etc/group
60 测试本机与IP为218.76.65.13的连通性
- ping 218.76.65.13
61 修改网卡IP地址为192.168.1.100,子网掩码为255.255.0.0
- ifconfig enp2so 192.168.1.100 netmask 255.255.0.0
62 查阅passwd命令的使用手册
- passwd --help
- man passwd
63 在/home下创建"zb"目录
- mkdir /home/zb
64 在当前目录下新建一个名称为a.txt的文件,并在文件里面输入如下内容:
Hello Linux!
Jishou university!
touch a.txt
vim a.txt
或者
- touch a.txt
- echo 'Hello Linux!' >>a.txt
- echo 'Jishou university!' >>a.txt
65 将文件a.txt重命名为aaa.txt
- mv a.txt aaa.txt
66 将/etc/apt中的所有文件复制到当前目录中
- cp -r /etc/apt .
67 删除当前目录下的source.list文件
- rm source.list
68 搜索/etc/passwd中包含root的行,并显示出来
- cat /etc/passwd | grep root
69 在所有目录中查找文件名为grub.conf的文件
- find / -name grub.conf
70 显示file.txt的前5行
- head -5 file.txt
71 显示file.txt的后2行
- tail -2 file.txt
72 统计/etc/passwd文件的行数
- wc -l /etc/passwd
73 复制/bin目录到当前目录下,并将文件打包成bin.tar(用gzip压缩)
- cp -r /bin .
- tar -zcvf bin.tar ./*
74 删除当前目录下胡bin子目录,将bin.tar文件解压至当前目录下
- rm -rf bin
- tar -zxvf bin.tar
75 修改当前用户的密码
- passwd
76 强行终止一个PID为1752的进程
- kill -9 1752
77 用echo和管道命令计算:355/133(保留3位小数)
- echo “scale=3;355/133” | bc
78 测试本机与210.43.65.196是否能正常通信
- ping 210.43.65.196
79 将当前目录下的文件a.txt所有者的可读和可执行权限删除
- chmod u-rw a.txt
80 将当前目录下的文件a.txt设为只有文件所有者可写
- chmod 200 a.txt
81 删除当前目录下子目录dir1中的文件tmp.old
- rm /dir1/tmp.old
82 将当前目录下的文件打包成data.tar
- zip -r data.tar
83 将当前目录下acmd文件的所有者改成 root
- sudo chown root ./acmd
84 用echo和管道命令把10进制2576转换成16进制输出
- echo “obase=16;2576” | bc
85 将文件file1.txt设为所有人皆可读取
- chmod a+r file1.txt
86 把文件shiyan.c的所有者改为wan
- sudo chown wan shiyan.c
87 显示所有包含其他使用者的进程
- ps -aux
88 显示当前登录系统的用户
- whoami
89 查看/etc目录占用的磁盘空间
- du -h /etc
90 查看当前内存的使用情况
- free
91 把top命令放后台执行
- top &
92 显示环境变量USER的值
- echo $USER
93 利用重定向将create.c 的数据输出到 output.c
- create.c > output.c
94 利用管道命令查看/etc目录中有多少子目录,并列出
- ls -l /etc | grep -n '^d'
95 在你的主目录下建立目录树:
- mkdir -p ~/mydir/shell/linux ~/mydir/shell/docs ~/mydir/program/standart
五、实验总结
本次实验的主要内容是95条指令的使用,基本覆盖了大部分日常使用的场景,包括复制文件,修改文件权限,压缩文件,创建目录,查找文件内容,计算表达式和进制转换等等。
很多条指令要求都可以从很多方向进行实现,但我选取的方向首先就是我自己本身经常使用的或者在逻辑上非常贴切的。例如在查找文件然后删除的这个指令时,我首先想到的就是通过$()设置变量,而非通过-exec传递参数。因为在逻辑上我们仅需删除对应找到的变量即可
六、结果分析及问题讨论
1.输出重定向需要创建文件问题
在完成输出重定向到文件中的题目时,如果我通过普通的账号进行操作的话则会报出没有权限的错误。
于是我尝试添加sudo增加执行权限,依旧失败。
只有当我切换至管理员身份后,执行同样的命令才不会报错。
猜测原因:输出重定向必须以管理员身份运行,而不是简单的提升管理员权限,或许是Linux对权限做的专门处理。
根据查询得知,与我猜想的大致一致,sudo得到的权限并不会随着重定向符号而输出,所以需要切换shell拥有root权限,才能再进行相关操作。
2.查找子目录问题
在95道题目中倒数第二道题看着十分简单,但若是需要完全实现还是有一些困难的。正常情况,我们会很自然的使用
- ls /etc | wc -l
但是这样就无法列出子目录,仅能获取数量而已。
解决办法:通过 grep 命令查找ll中的第一个为 d 的文件。
- ls -l /etc | grep -n '^d'
首先列出/etc中的所有文件详细信息,将该信息通过管道送入grep 中,查找第一个属性是否为。并为显示方便,添加 -n 选项显示行数。
版权归原作者 Leo的蕾奥拉 所有, 如有侵权,请联系我们删除。