针对于VirtualBox或VMware虚拟机,Centos操作系统或 Ubuntu操作系统
目录
1、cp、ls、mv、chmod、rm、find、gzip、tar等命令(综合)
2、“;”、“&”、“||”、“&&”的使用
3、vi 或 vim 命令
4、vi 命令编辑一个shell程序并执行
(1)在20181422a目录下建立文件kk.c
cd /home/yuwenbin/20181422/20181422a
touch kk.c
【结果记录】
(2)查看文件kk.c的属性
ls - tail kk.c
【结果记录】
(3)把kk.c更名为aa.c
ls
mv kk.c aa.c
ls
【结果记录】
(4)把文件夹20181422a下的文件aa.c拷贝到20181422目录下,文件取名为kk.c
cp -r 20181422a/ aa.c
ls
【结果记录】
(5)用符号模式修改文件 kk.c 的权限,使得文件所有者为可读、可写、可执行,对组内 人及其他人可读、不可写、不可执行。用命令 ls 查看修改结果。
chmod 744 kk.c
【结果记录】
(6)删除文件与文件夹
rm aa.c
ls
rm -r 20181422a
ls
【结果记录】
(7)新建一个Linux_d目录,并设置它的权限为666
mkdir -p Linux_d
chmod 666 Linux_d
(8)在指定的目录中搜索文件,利用find命令搜索含有通配符的文件*.c
(9)在根目录下用find查找.c文件
同上
(10)用gzip压缩文件/home/stu1/20181422/kk.c,再对压缩文件进行解压
sudo gzip kk.c
ls
sudo gunzip kk.c
ls
(11)用tar命令打包当前目录
sudo tar -cvf data.tar *
【分析】
本题目中涉及到了多个命令,可以说是一个集合,而且在运用这些命令时也有很多需要注意的点以及参数的区分,所以对此游客进行网络查询以获得更多的参数信息,我大概总结了一下上述题目中的要点和注意点,如下表所示:
命令 |
所需参数 |
注意点 |
touch |
/ |
该命令在某些情况下是无法进行的,需要借助sudo,超级用户状态下才能新建文件 |
mkdir |
-p |
使用该参数是为了确认新建的目录不存在的情况,如果存在则创建失败 |
cp |
-r |
若给出的源文件是一个目录文件,此时将复制该目录西下所有的子目录和文件 |
ls |
-a |
现实所有文件及其目录(.开头的隐藏文件也会列出) |
-l |
除文件名称外,也会将文件型态、权限、拥有者、文件大小等资讯详细列出 |
|
-tail |
列出目录或文件的详细信息和属性等 |
|
mv |
/ |
重命名文件 |
chmod |
/ |
改变文件权限,即改变可读状态、可写状态、可执行状态 |
rm |
/ |
删除文件 |
-r |
删除目录 |
|
find |
-name |
找出所有符合的文件 |
gzip |
/ |
压缩文件,且文件名称后面多出“.gz”的扩展名 |
gunzip |
/ |
解压文件,复归其貌 |
tar |
-cvf |
将当前目录下的文件打包成data.tar |
(1)用;实现多个命令date、echo、who 的顺序执行
date;echo "Hello! Linux";who;
【结果记录】
(2)用&实现多个命令date、echo、who的并发执行。多次执行,以观察并发执行的结果
date & echo "Hello! Linux"& who
(3)用OR||和AND&&操作实现查看文件,创建文件和显示创建结果
ls sample || touch sample && echo "文件sample已经被创建"
(4)用&&操作实现查看文件、删除文件并显示结果
【分析】
从上述四个小题中可以知道命令的顺序执行、并发执行都是可以用“;”、“&”、“||”、“&&”来操作的,那么执行了以后也可以知道结果和它们的用途,所以下面是我对于这个方法的总结:
方法 |
|
; |
命令按顺序从左至右依次执行,如果某个命令执行出错了,直接跳到了下一个命令继续执行,那么这个过程中可能会出现问题,还是要注意一下的。 |
& |
命令是同时进行的,所以显示的时候会出现不一样的布局,这是因为并发执行的时候,每个命令执行完成的时间不同。 |
|| |
忽略第一个有效命令的所有命令。如果第一个命令就成功了,那后面的都被忽略;如果第一个命令失败,则继续执行第二个,如果第二个成功了,那后面的命令就被忽略;以此类推……简单来说,就是有一个条件为真,那么其他的就不用考虑了。 |
&& |
这个和编程语言的功能很相似,短路效果,如果某个命令执行错误,那么后面的命令全部被忽略,也就是有一个条件为假,那么其他的也就不用考虑了。 |
(1)打开终端,在终端输入命令,然后按i键,进入插入状态
vi aboutlinux20181422
(2)输入以下文本内容
(此处文本内容可自拟)
【结果记录】
(3)发出命令显示行号
:set nu (非编辑状态下)
【结果记录】
(4)保存文件,不退出
:w (非编辑状态下)
【结果记录】
(5)删除一句 “It is this kernel that forms the base around which a Linux operating system is developed.”。
D(大写d,必须大写,且在非编辑状态下)
【结果记录】
(6)查找单词“Finland”。
/Finland (非编辑状态下)
【结果记录】
(7)复制第二行的内容到文档的最后
光标移到行号为1的地方,第一段开头,在非编辑的状态下按下
yy
然后光标移到第二段的最后一行,按下
p
【结果记录】
(8)删除第三行的内容(利用dd)
光标移到第三段开头,按下
dd
【结果记录】
(9)恢复被删除的一行内容
u (非编辑状态下)
【结果记录】
(10)查找所有的“MInix”并全部改为“MINIX”。
:%s/Minix/MINIX/g
【结果记录】
(11)保存并退出
指令为“:wq”
【分析】
这道题目对于用vi编辑器做了很详细的指令教程,之前对于vi编辑器的练习很少,这一次确实是一个非常好的机会,我也有了一个较为深刻的印象,但是由于其中的指令较多,还是需要多进行练习。同样的我也整理了一个表格为了自己更好的理解,如下表:
作用 |
指令 |
详细解释 |
打开一个编辑器 |
vi [name] |
新建编辑 |
进入插入状态 |
i |
可以输入文字等 |
进入命令模式 |
esc |
命令模式下可对内容进行操作 |
显示行号 |
:set nu |
使输入的内容显示行号 |
保存文件 |
:w |
保存文件但不退出 vi |
:w file |
将修改另外保存到 file中,不退出 vi |
|
:w! |
强制保存,不退出 vi |
|
:wq |
保存文件并退出 vi |
|
:wq! |
强制保存文件,并退出 |
|
vi q: |
不保存文件,退出 vi |
|
:q! |
不保存文件,强制退出 vi |
|
删除 |
x: |
删除光标所在字符 |
dw: |
删除光标所在单词 |
|
dd: |
删除当前行 |
|
ndd: |
删除当前光标所在行开始的 n 行 |
|
D: |
删除从光标所在处到行尾 |
|
查找 |
/单词 |
正向查找单词 |
n |
向下查找 |
|
N |
向上查找 |
|
复制 |
yy: |
复制光标所在行 |
p: |
粘贴复制的内容到光标所在行的下一行 |
|
删除 |
dd |
删除光标所在行 |
恢复 |
u |
恢复被删除的一行内容,取消当前一个动作 |
修改 |
:%s/原单词/替换单词/g |
查找所有的被替换单词并全部改为替换单词 |
(1)新建并编辑一个shell程序hello.sh
vi hello.sh
【结果记录】
#!/bin/sh
echo "Mr.$USER,TODAY is:"
echo &date "+%B%d%A"
echo "Wish you a lucky day ! "
(2)执行hello.sh
【结果记录】
(3)思考什么是shell程序,如何执行shell程序?
答:shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。即是一种命令语言,又是一种程序设计语言。shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。可以用指令“bash”、“sh”、“. ”、“source”、“./”来执行文件。
【分析】
根据指导书中的代码来看,和我之前学过的C语言和Java语言都有点像,一段程序就是输出日期和两句话,如何学习用vi编辑器来编写一个shell程序还需要多进行练习,而且我在做题目的思考题时在网上查询了很多种执行程序的方法,所以下面我就对此做一个总结和整理,作为我学习的痕迹和理解。
首先是一个权限问题,可以看到图7-2-5中我写好程序后,想和.c文件一样运行时,发现没有权限,所以用chmod u+x,表示增加用户的可执行权限,u代表user,+代表增加,x代表可执行,所以这样我就可以使用“./”来执行该程序了。
执行方式 |
作用 |
① bash ② sh |
打开一个子shell来读取并执行FileName中的命令。该filename文件可以无执行权限。 shell是提供与内核沟通借口的命令解释器程序,但是shell是统称,sh全称为Bourne shell,bash全称为Bourne Again shell。两者都是shell的一种,其中bash命令是是sh命令的超集,大多数sh脚本都可以在bash下运行。Linux系统中预设默认使用的就是bash。 |
③ . ↑两者等效↓ ④ source |
在当前bash环境下读取并执行FileName中的命令,该filename文件可以无“执行权限”。source和.的效果是一样,通常用“.”替代,二者通常用于重新执行刚修改的初始化文件。 source的程序主体是bash,脚本中国的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效。 |
⑤ ./ |
需要给用户赋予执行权限后,方可使用,使用方法与执行.c文件是相同 的。 |