本人一直想找时间系统整理一下之前做过的一些实验,便于后续用到的时候可以尽快的使用,po出来也便于大家交流学习,有问题欢迎交流指正,与诸君共勉!
操作系统实验一,包含Linux操作系统常用命令的使用演示。
目录
背景知识
Linux是一个与DOS或Windows完全不同的操作环境,具有它自己独特的风格。
1. Linux系统的Shell
使用Linux系统时,用户多数时间是通过Shell与系统进行对话的。Shell是一个接收用户输入命令并将其转换成指令的程序,它是用户与Linux系统之间的界面之一。通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。
2. Linux系统的文件、目录和权限
Linux的文件名与DOS有许多相似之处也有其自身的特点。
Linux文件名没有标准格式。通常文件名中可以包含任何字符 (“/”字符除外,“~”字符不能作为文件名的第一个字符) ,文件名的长度限制在256个字符以内。Linux的文件名也提供了功能强大且精确的通配符。
文件的权限是Linux系统安全的核心部分,包括:
1) Read (可读) 权限:表示可以读取文件内的数据。
2) Write (可写) 权限:表示可以改变或删除该文件。
3) Execute (可执行) 权限:表示可以把该文件当成程序执行。
除文件权限之外,Linux系统上还有目录和很多其他类型的文件,其中包括特殊文件 (设备) 、Socket和符号连接等等 (平时我们经常使用的Windows设备如软驱、光驱等在Linux中也是一种特殊的文件) 。
拥有root口令的用户称为超级用户,超级用户有权访问整个系统,包括建立普通用户帐号、修改密码、安装与卸载软件等一切权限。超级用户的提示符为“#”,普通用户提示符为“$”。
几个用户在一个系统下共用一个帐号,其个人文件的安全就得不到保障。建立普通用户帐号后,系统能保证用户是唯一能够存取其个人文件的人。另一方面,即使没有与人共享一个系统,建立普通用户帐号也是必要的。因为如果总是以超级用户登录进行操作 (超级用户的权限是整个系统) ,一旦出现误操作 (如:破坏或移动、删除一个重要的系统文件) 处理起来也很棘手。
3. Linux文件系统
Linux的文件系统是文件和目录层次的集合。了解Linux文件系统的结构有助于更好地理解和使用Linux。在Linux文件系统根目录下,有如下子目录:bin、dev、etc、home、install、lib、mnt、proc、root、tmp、user、var (不同版本,目录会略有不同) 。
1) /bin目录 该目录中存放许多基本的系统程序。
2) /dev目录 该目录中存放的文件是设备驱动程序,用来访问系统设备和资源,如磁盘设备、调制解调器、内存等。
/dev目录下常用的设备文件: /fd0、/fd1:/fd0代表第一个软盘,/fd1代表第二个软盘。 /console: /console指系统控制台,也就是直接连接系统的监视器。 /hda: /hda1代表第一个硬盘。 /tty: /tty开头的设备名代表用户系统上的虚拟控制台。 /tty1代表第一个虚拟控制台, /tty2代表第二个虚拟控制台。 |
实验目的
1. 通过Internet资源,从感性上认识操作系统的功能和应用,了解市场上常见的操作系统,为进一步的学习操作系统打下基础。
2. 熟悉Linux实验环境,掌握一些有关基础知识和实验技能。
3. 熟悉使用Linux字符界面的常用命令。
4. 学习并掌握Linux编辑器vi和编译工具gcc的使用方法。
5. 掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。
实验环境
实验机房软件Ubuntu或在VMware虚拟机上安装Centos操作系统。
基本命令
1. 有关目录的命令
(1) pwd命令
pwd (即print working directory,打印工作路径) 命令的功能是显示当前的工作路径(显示当前路径的绝对路径)。如现在是在“/home/CAI”目录下,则可以用此命令来证实。例如:
$ pwd “$”表示在Linux系统的提示符下
/home/CAI pwd命令证明的确是在“/home/CAI”下
(2) cd命令
cd命令用来切换目录,如:
cd ccec /*相对路径,当前路径下的ccec目录*/
cd /home/ccec /*绝对路径*/
cd ~ /*进入当前用户的home*/
cd - /*返回上一次访问的目录*/
cd .. /*进入当前目录的父目录*/
假设在刚才的目录切换到另一目录,例:
$ cd /usr/bin 将当前的目录转到“/usr/bin”下
$ pwd
/usr/bin
$ cd 此命令返回工作目录(上一次访问的工作目录)
$ pwd
$ /home/CAI
$ cd .. ,进入当前目录的父目录
2. 有关文件的命令
(1) ls命令
ls命令的功能是显示指定目录的内容,包括
-a 显示指定目录下所有子目录与文件,包括隐藏文件。
-A 显示指定目录下所有子目录与文件,包括隐藏文件。但不列出“.”和 “..”。
-c 按文件的修改时间排序。
-l 以长格式来显示文件的详细信息。这个选项最常用。
-p 在目录后面加一个“/”。
-r 按字母逆序或最早优先的顺序显示输出结果。
-t 显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于是否使用了c或u选顶。缺省的时间标记是最后一次修 改时间。
-u 显示时按文件上次存取的时间(最近优先)而不是按名字排序。即将-t的时间 标记修改为最后一次访问的时间。
-x 按行显示出各排序项的信息
-i 显示inode号
例如:
$ cd
$ ls –a 此命令显示当前工作目录下的所有文件 (参数
“a”表示所有文件,“-”号是用来控制参数)
显示时,文件名前带“.”号表示隐含文件。
输入“ls -l”命令,参数“-l”表示额外文件的信息,给出文件或者文件夹的详细信息。
(2) cat命令
cat命令的功能是显示文件内容,也可用于文件的连接。
-n :由 1 开始对所有输出的行数编号
-b :和-n 相似,只不过对于空白行不编号
-s :当遇到有连续两行以上的空白行,就代换为一行的空白行。例如:
cat -n test1.txt 把test1.txt的内容加上行号显示出来(包括空行)
cat -b test1.txt test2.txt 把test1.txt和test2.txt的内容显示出来,test2.txt的内容显示在test1.txt后面(除空行外加上行号)
cat null > test.txt 把test.txt清空
cat test1.txt >test2.txt 把test1.txt中的内容写到test2.txt中,覆盖原内容
cat test1.txt >>test2.txt 把test1.txt中的内容写到test2.txt中,增加在原内容后
此命令常用来快速浏览文件,使用方法如:
$ cat file1.txt
(3) chown命令
chown命令的功能是改变文件的属主和组 (“属主”可以是用户名或用户ID;“组”可以是组名或组的ID;文件名是以空格分开的要改变权限的文件列表,支持通配符) 。例如:
$ chown host:cai file1 将文件file1的属主改为host组的cai
(4) cp命令
cp命令的功能是复制文件,用法是:
cp [options] 源文件 目标文件
cp命令还可以使用以下参数:
-f:强行覆盖已存在的目标文件。
-i:在强行覆盖已存在的目标文件时给出提示。
-R:整个目录复制。
如:
$cd /tmp/
$cp file1.txt /tmp/test
$cd /tmp/test
$ls
File1.txt
(5) date命令
date命令的功能是打印或设置系统日期和时间,其用法与DOS中的date命令相似,例如:
$ date
- touch命令
touch [选项]… 文件…
无参数:若文件不存在,则创建之,否则更改文件时间戳为当前时间
-c 若文件不存在,不创建任何新文件
-d 时间戳更改为指定的日期
-t 时间戳更改为指定的时间
示例:
1)若file1不存在,则创建之:touch file1
2)若file2不存在,仍不创建:touch -c file2
3)更改file1的时间戳为现在时间(file1若不存在,先创建之):touch file1
4)更改file1的时间戳为指定时间2015.11.09 22时34分(file1若不存在,先创建之) :touch -t 201511092234 file1
5)更改file1的时间戳为指定日期2016.11.09 (file1若不存在,先创建之) :touch -d 20161109 file1
例如:
$touch file1.txt
创建一个file1.txt文档。
(7) mkdir命令
创建一个目录,用法是:
mkdir [选项] dir-name,例如
$cd /tmp/
$mkdir test
$ls
Test
rmdir:删除空目录
- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。
如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
(8) mv移动文件命令
用法是:
mv 路径/文件 目标目录
如:$mv file1.txt /tmp
$cd /tmp/
$ls
file1.txt
(9) mr删除文件/目录
用法是:
rm[选项] 文件
$cd /tmp/
$ls
Test file1.txt
$rm –r /tmp/test
$ls
file1.txt
$rm file1.txt
$ls
3. 其他的命令
(1) kill命令
kill命令的功能是中止一个进程,用法是:
kill [-s信号] [p] [-a] 进程号
kill -l [信号] 列出所有进程号
(2) clear命令
clear命令的功能是清除屏幕,用法如同DOS中的cls命令:
$ clear
(3) reboot命令
reboot命令的功能是重新启动系统,用法是:
$ reboot
(4) passwd命令
passwd命令的功能是设置用户密码,用户可以使用passwd这个命令来更改自己的登录密码:一般用户只能更改自己的密码;超级用户不但能更改自身的密码,还能更改其他用户的密码。还可以用这个命令来更改用户的其他信息,如用户的全名,用户的登录Shell,用户的密码失效时间间隔等。
(5) su命令
su命令的功能是使普通用户以root帐号登录,用法是:键入su命令,Shell要求root密码。键入密码按回车键则进入root帐号。键入exit回到以前的普通用户。
(6) grep命令
grep:一个强大的文本搜索工具,它能使用正则表达式搜索文本
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
注:grep一般和其他命令一起配合使用。
(6) ps命令
ps:显示当前瞬间,进程的状态
-a 列出所有的进程
-w 显示加宽可以显示较多的信息
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的线程
表1-1 Linux常用命令
命令名 | 功能 | 使用举例 |
adduser | 创建新用户 | #adduser↙ |
cp | 复制文件 | $cp 源文件 目标文件↙ |
rm | 删除文件 | $rm 文件名 |
mkdir | 创建新目录 | $mkdir 目录名↙ |
rmdir | 删除目录 | $rmdir 目录名↙ |
pwd | 显示当前目录 | $pwd↙ |
ps | 显示进程状态 | $ps↙ |
ls | 显示当前目录下内容 | $ls -l↙ |
cat | 显示文件内容 | $cat 文件名↙ |
cd | 转换当前目录 | $cd 路径名↙ |
mv | 移动文件 | $mv 源文件 目标文件 |
more | 分页显示 | $ls –l|more↙ |
chmod | 改变文件权限 | $chmod 777 文件名↙ |
clear | 清屏 | $clear↙ |
4.vi编辑器的基本操作
(1) 进入vi编辑器:$vi文件名↙,如vi aaa.c(若aaa.c不存在,将新建该文件,否则打开该文件)
按i以插入模式进入编辑状态,就可编辑代码;按esc就从编辑状态回到命令状态;输入“:wq”回车,保存并退出。
(2) vi编辑器常用命令
表1-2 vi编辑器常用命令
输入的字符 | 功 能 | 说 明 |
Esc | 进入命令模式 | |
i | 在光标前输入文字 | |
A | 在光标后输入文字 | |
X | 删除光标后输入的文字 | |
Dd | 删除当前行 | 删除后内容自动进入剪贴板 |
/abc | 向前查找字符字符串 | 然后输入n,则继续向前查 |
?abc | 向后查找字符字符串 | |
Yw | 将光标所在单词拷入剪贴板 | |
Yy | 将光标所在行拷入剪贴板 | |
P | 将剪贴板内容贴在光标后 | |
:q | 不保存退出……..0 | :q!表示强制退出 |
:w | 保存 | :w!表示强制保存 |
:wq | 保存退出 | |
:x | 保存退出 | |
:3,7 co 9 | 将第3行至第7行拷到第9行 | |
:3,7 m 9 | 将第3行至第7行移到第9行 | |
u | 取消前次命令 | |
:g/abc/s//123/g | 将全部的abc替换成123 |
5. 编译工具gcc的使用
gcc编译常用格式为:$gcc源文件名↙
例如:$gcc aaa.c↙,将生成默认可执行文件a.out
或者$gcc -o 目标文件名 源文件名↙
例如:$gcc –o aaa aaa.c或$gcc aaa.c –o aaa.out
6. 程序的运行
$./可执行文件名↙(例如:$./a.out↙)
实验内容
1.掌握在VMware下安装Linux操作系统。
2.熟悉Linux字符界面,练习并掌握常用的Linux操作命令。
3.掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。
4.使用vi编辑一个打印“Hello,I am a C program”字串的C语言程序,然后编译并运行它。熟悉gcc等编译器、调试器的使用。
例程:
#include<stdio.h>
int main( )
{
int i=getuid( );
printf("Hello world! This is my uid: %d\\n",i);
}
实验环境
VMware虚拟机、CentOS操作系统
实验步骤
1. 在VMware下安装Linux操作系统CentOS,并进行系统环境的设置。
2. 进行常用命令的使用
3. 进行部分其他命令的使用
4. 完成vi编辑器的基本操作
5. 使用gcc编译器编译源文件
6. 运行.out文件
实验结果与分析
1. 系统环境设置
- 下载图形用户界面
安装CentOS操作系统后,在root用户下安装用户图形界面,用yum grouplist查看GNOME名称,然后用yum groupinstall "GNOME Desktop" 命令进行安装。
安装成功提示“complete!”如图1。
图1 命令行界面安装图形用户界面成功
安装完通过命令 startx (如图2)进入图形界面。
查看系统版本,如图3。
修改终端主题为暗色调。
- 设置语言为简体中文
在terminal界面输入su命令,输入密码,切换至root用户,如图4。
图4 切换至root用户
“locale”命令查看系统当前语言包,如图5。存在简体中文语言包。
图5 系统当前语言包
使用LANG=“zh_CN.UTF-8”命令修改系统语言,如图6。
图6 修改系统语言为简体中文
将配置写入文件,实现永久修改,如图7。
图7 向文件写入语言配置
输入cat i18n指令查看文件内容进行确认,如图8。
图8 查看语言配置文件内容
使用该方法修改配置文件后,再次打开系统,系统语言仍为英文,且locale查询到的仍然为en_US。故使用另一方法进行设置,如图9。
图9修改系统语言为简体中文
由于英文不易出现乱码,后又更改系统语言为英文。
- 修改时区
键入ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改时区为亚洲上海,如图8。
图8 修改时区为亚洲上海
键入reboot,重启系统。
2. 常用命令的使用
1.有关目录的命令
pwd命令:
图9 pwd命令
cd命令:
图10 cd相对路径
图11 cd – 命令返回上一次访问的目录
图12 cd绝对路径
图13 cd ..进入当前目录的父目录
图14 cd ~进入当前用户的home
图15 切换到另一目录
图16 返回上一次访问的工作目录
2.有关文件的命令
-
ls命令
ls命令的功能是显示指定目录的内容。具体命令测试结果如下。
ls -a命令显示指定目录下所有子目录与文件,包括隐藏文件,如图17。
图17 ls -a命令
ls -A命令显示指定目录下所有子目录与文件,包括隐藏文件,但不列出“.”和“..”,如图18。
图18 ls -A命令
ls -c:
图19 ls -c按文件的修改时间排序
图20 ls -l以长格式显示文件的详细信息
图21 ls -p在目录后面加一个/
图22 ls -r按字母逆序或最早优先的顺序显示输出结果
ls -t:显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于是否使用了c或u选顶。缺省的时间标记是最后一次修改时间,如图23。
图23 ls -t显示按修改时间排序
Ls -u:显示时按文件上次存取的时间(最近优先)而不是按名字排序。即将-t的时间标记修改为最后一次访问的时间,如图24。
图24 ls -u按文件上次存取时间排序
图25 ls -x按行显示出各排序项的信息
图26 ls -i显示inode号
图27 ls -1
-
cat命令
cat命令的功能是显示文件内容,也可用于文件的连接。
使用cat命令创建文件
输入cat > teatcat.txt,之后输入文本,按ctrl+c退出,如图28。使用ls命令可查看,testcat.txt文件已创建。
图28 使用cat命令创建文件
图29 ls命令查看创建的文件是否存在
使用cat命令查看文件
图30 cat命令查看文件
图 31 cat -n查看文件由1开始对所有输出的行数编号
图 32 cat -b查看文件由1开始对输出的行数(除空行外)编号
图33 cat -s两行以上空行代换为一行空行
cat -b testcat02.txt testcat03.txt 将文件testcat02.txt、testcat03.txt的内容显示出来,testcat03.txt的内容显示在testcat02.txt后面(除空行外加上行号)。
图34 文件连接显示
图35 清空testcat04.txt文件
图36 把testcat04.txt的内容写到testcat03.txt中 覆盖原内容
图37 把testcat03.txt的内容写到testcat04.txt中 在原内容后
chown命令
chown命令的功能是改变文件的属主和组 (“属主”可以是用户名或用户ID;“组”可以是组名或组的ID;文件名是以空格分开的要改变权限的文件列表,支持通配符) 。
图38 使用普通用户权限 chown命令失败
图39 使用root用户权限 chown命令成功
cp命令
图40 将testcat03.txt复制到Mycodes文件夹下
图41 强行覆盖Mycodes文件夹下testcat03.txt文件
图42 在强行覆盖文件时给出提示
date命令
date命令的功能是打印或设置系统日期和时间,其用法与DOS中的date命令相似。
图43 date命令显示时间
touch命令
图44 touch更改文件时间戳为现在时间 若文件不存在则创建之
图45 touch -c若文件不存在 不创建新文件
图46 touch更改testouch0.txt时间戳为现在时间
图47 更改testouch0.txt时间戳为指定时间2022.09.09 13时14分
图48 更改testouch0.txt时间戳为指定日期2022.10.10
mkdir/rmdir命令
mkdir创建一个目录。rmdir删除空目录。
图49 创建一个目录Mytxt
图50 删除空目录Mytxt
mv移动文件命令
图51移动文件test04.txt到Mycodes文件夹下
rm删除文件/目录命令
图52 使用rm -r删除test0文件夹
3.其他的命令
kill命令
图53 ps -au命令查看进程
图54 执行kill命令 结束pid为24683的./testrol进程
clear命令
图55 clear命令清空屏幕
reboot命令
reboot命令重启系统。
图56 键入reboot命令
passwd命令
图57 passwd命令
su命令
图58 su命令切换超级用户 exit命令返回普通用户
grep命令
图59 使用grep命令查看安装java软件的版本
图60 使用grep命令查询每个网卡和ip地址
图61 使用grep -c命令统计字符串出现的次数
图62 使用grep -w精准全匹配搜索
图63 使用grep -r所有子目录下的搜索
图64 使用grep -i忽略大小写搜索
图65 使用grep -v过滤文件中的‘bb’
图66 使用grep -n查找含有‘bb’的行 并输出行号
图67使用grep -nv查找不含有‘bb’的行 并输出行号
图68 使用grep –color高亮显示搜索结果
ps命令
图69 使用ps命令显示当前瞬间进程的状态
图70 使用ps -a命令列出所有进程
图71 ps -w命令显示加宽 可以显示较多的信息
图72 ps -au可以显示较详细的咨讯
图73 ps -aux显示所有包含其他使用者的线程、
4.vi编辑器的基本操作
图74 键入进入vi编辑器的指令
图75 进入vi编辑器
图76 按i以插入模式进入编辑状态 可编辑代码
图77 按ese返回命令状态 输入“:wq”回车 保存并退出
图78 “:1,2 co 10”前两行拷到第十行
图79 “:1,2 co 10”前两行拷到第十行结果
图80 将所有的bb换为abc
图81 将所有的bb换为abc结果
5. 编译工具gcc的使用
图82 新建c语言文件
图83 安装gcc、c++编译器及内核文件
图84 gcc、c++编译器及内核文件安装成功
图85 使用gcc命令编译源文件
6. 程序的运行
图86 运行程序a.out
实验收获及体会
本次实验过程中,通过对CentOS的基本操作以及常用指令的使用,我对操作系统的功能和应用有了更深的认识,并熟练掌握了一些指令的使用方法,可以熟练使用Linux的编辑器vi和编译工具gcc,熟练掌握了编译运行一个c语言文件的过程,学会了使用符号界面下载系统软件,为进一步的学习操作系统打下基础。
实验中每次遇到含义不够清楚的指令,我都通过网络查询相关信息,将每一条指令、每一个操作都弄懂弄通,熟练掌握。
对Linux实验环境从初期的生疏到后期的熟悉,对Linux指令从初期的陌生到逐渐的内化,是一个令人有成就感的过程。