Linux基本操作实验Word文档下载推荐.docx
《Linux基本操作实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Linux基本操作实验Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。
cata.txt显示a.txt内容
wca.txt显示a.txt的行数,字数与字节数
find/-name*conf在根目录下(包括子目录)查找以conf结尾的文件
sudomount/dev/fd0fd0将软盘镜像挂载到目录fd0上
cdfd0进入软盘镜像所挂载的目录
ls-lh查看软盘镜像中的文件
cd..“..”表示进入上一层目录
gzipa.txt使用gzip压缩a.txt
ls-lh查看当前文件夹
sudocpa.txt.gzfd0/将a.txt复制到fd0目录下,即将其复制到软盘镜像中
sudomvfd0/a.txt.gz./将a.txt移动到当前目录下,“.”表示当前目录
sudoumount/dev/fd0将软盘镜像卸载
lsfd0显示fd0目录内容
gzip-da.txt.gz解压缩a.txt.gz
权限管理:
假设当前处于/home/dsl目录下,且有a.txt(文件)与fd0(目录),当前用户名为dsl。
sudocat/etc/passwd用户
sudocat/etc/shadow密码
sudocat/etc/group组
users查看当前登录用户
sudochmod-xfd0更改文件夹权限
lsfd0fd0不能被执行,则意味着无法打开!
sudochmod+xfd0更改文件夹权限
lsfd0fd0能被打开
sudochownrootfd0更改目录fd0的所有者
ls-lh注意看fd0目录的属性
sudochowndsl:
rootfd0更改目录fd0的所有者为dsl,所属组为root
chmoda-ra.txt现在a.txt不具有“读”权限,不能被读取
cata.txt#a.txt被设置为“不能被读取”,无法显示a.txt文件内容,显示相关提示!
chmodu+ra.txt现在a.txt文件所有有“读”权限
cata.txt能看到a.txt的内容了
四、实验步骤
1.进入命令行
开机默认工作在fluxbox桌面环镜下,为了能够输入命令须要采用下面两种方法之一:
2.在fluxbox桌面上打开一个终端
这时单击桌面的"
ATerminal"
图标可以打开一个终端窗口,其背景为桌面背景。
或者:
-在桌面空白处单击右键,选择:
XShells->
Light可打开一个白色背景的终端,
-选择XShells->
Dark打开一个黑色背景终端。
3.关闭DSL图形窗口,使用图形界面
-同时按下“Ctrl”与“Alt”,不要松开,这时再按下“<
--”(Backspace,退格)键,可以退出图形界面;
-或者右键单击桌面,选择:
WindowManager->
Exit退出图形界面。
4.命令行提示符
--打开终端窗口会看到如下提示符:
dsl@box$
--进入字符界面会看到如下提示符:
dsl@tty1[dsl]$
前面的dsl表示当前用户名是dsl,后面的$表示这是普通用户。
若输入:
sudosu
sudo表示以超级用户的身份执行后面的命令,su表示暂时进入超级用户状态。
这时会发现"
$"
变成了"
#"
,"
表示超级用户(用户名一般为“root”),这时拥有最高的权限,通常仅用于系统设置、管理工作,不用它执行普通用户权限下也能完成的任务。
输入:
exit
可退回到dsl用户状态。
"
变回"
5.用户管理
输入下面的命令可改变dsl用户的密码:
sudopasswddsl
必须连续输入同样的密码两次确认。
同理:
sudopasswdroot
改变root用户的密码。
更改完毕后可输入:
su
根据提示输入root用户的密码,即可进入超级用户状态。
若要退出,则输入:
6.进程管理
查看进程,输入
ps
注意,DSL中使用的不是标准的shell,而是busybox,所以不接受任何参数,但是可以加"
--help"
显示帮助信息,如:
ps--help
会列出关于"
ps"
命令的介绍。
7.中断进程
为了演示如何中断进程,首先运行一个持续时间比较长(不然尚未发送信号它自己就退出了)的程序,如:
find/-name*f
这个名令是在根目录("
/"
)下查找以"
f"
结尾的文件,并将结果列出。
*"
为通配符,表示任意个数的任意字符。
输入如下命令可看到"
find"
的帮助:
find--help
现在再次输入:
然后按住"
Ctrl"
,再按"
z"
(这个操作记作:
Ctrl+z),即可将当前正在运行的程序切换到后台。
现在输入:
从列表中可以看类似下面的一行:
679dsl536Tfind/-name*f
其中679是我进行实验时"
的PID号,每一次实验都有可能不同。
下面输入:
kill679
这将向进程号为679的进程(即"
进程)发送TERM信号,中止进程的运行。
现在输入
fg
这条命令将刚才利用"
+"
切换到后台的进程切换到前台,如果命令"
kill"
执行成功,将显示:
Terminated
表示"
进程中止运行。
查看是否属实。
如果刚才没有输入"
命令,或进程号(PID)输入错误,则"
进程会继续运行。
另外,可使用Ctrl+c退出当前进程。
8.文本编辑
nano
则进入文本编辑器nano,在屏幕下方有两排菜单,前面的两个符号,如"
^X"
,表示使用这项菜单的快捷方式,"
^"
表示按下"
键,再按后面的字符,"
再按"
x"
,就执行"
Exit"
(退出)。
这个操作通常表示为:
Ctrl+x
现在随便输入一些内容。
若要保存文件,输入:
Ctrl+o
注意是英文字母(oh),不是0(zero),nano会提示你输入文件名,输入文件名a.txt,如果当前文件夹下的已经有了一个文件叫做a.txt则会提示你是否覆盖文件。
输入"
y"
表示覆盖,输入"
n"
表示不覆盖,可重新取名。
9.文件目录操作
要想删除文件a.txt,输入:
rma.txt
系统提示否删除,输入"
表示是,"
表示否。
删除目录用:
rmdiradir
如果adir是一个空目录,则删除这个目录。
若要对文件改名,可利用移动文件的命令:
mva.txtb.txt
将文件a.txt的名字改为b.txt
目录改名也是如此:
mvadirbdir
则将adir改为bdir
注意:
新建目录可输入:
mkdiradir
新建一个目录,名字为adir,(不可与已有目录重名)
五、结果与分析
1.DSLLinux特点
DSLLinux是集成了多种软件包的小型Linux发行版,从可引导CD或USB驱动器上使用。
使用方式如下:
-使用光盘引导系统
-从USB驱动器引导
DSL中的应用程序包括:
-FluxBox:
轻量级的快速窗口管理器
-Firefox浏览器
-Dillo浏览器
-Links基于文本的浏览器
-Naim多协议控制台即时消息工具,支持AOLInstantMessenger(AIM)、AOLISeekYou(ICQ)、InternetRelayChat(IRC)以及ThelilyCMC。
-Xpdf开放源码的AdobeAcrobat查看器,用来显示PDF(PortableDocumentFormat)文件。
-XMMS用来播放CD、MP3和MPEG媒体文件(音乐和电影!
)。
-BashBurn,CD刻录程序
-Xpaint彩色图像编辑工具,它具有大部分标准画图程序的特性,可以同时编辑多个图像文件。
它可以支持诸如PPM、XBM和TIFF之类的格式。
-VNCviewer/RDesktop用来远程控制和管理其他Windows或Linux操作系统。
-SSH/SCP、FTP、HTTPD、DHCP客户机以及NFS等网络服务
-Sylpheed基于GTK+的e-mail客户机和新闻阅读器。
-Vim(Vi)、Nano(PicoClone)等文本编辑器。
2.加上参数"
得到的信息有什么作用?
答:
这是命令的原型程序里定义的就是解释命令处理的一种方法
一般来说,--用于帮助
比如:
ls--help或ls--h
-用于命令的选项
gcc-otttt.c中-o
3.同一条命令加上不同参数有什么不同结果?
输出结果有类同之处!
例如:
shutdown-hnow立刻关机,其中now相当于时间为0,halt,poweroff也可以关机,或者直接init0
shutdown-h20:
30系统将在今晚的8:
30关机
shutdown-h+10系统再过十分钟后自动关机.
shutdown-t3-rnow立刻重新开机,但在警告和删除processes这间,
shutdown-know'
Hey!
Goaway!
now...'
发出警告信息,但没有真的关机.
又如:
top查看后台程序,监控系统性能
top-d2每两秒列新一次
top-d-2-p3690查看某个PID
top-b-n2>
/tmp/top.txt将top的信息进行2次,然后将结果输出到/tmp/top.txt
4.能否使用不同的方式实现同一个功能?
可以。
查看找文件(find,grep,awk更多的请参照manpage或shell编程专题讲解)
几种介绍:
find路径-name文件名
find/etc-namenamed.conf
locate通过文件名搜索文件的工具(要先通过updatedb建立索引数据库)
localtenamed.conf
whereis是寻找二进制文件,同时也会找到其帮助文件
which和where相似,只是我们所设置的环境变量中设置好的路径中寻找
5.linux下命令参数前-和--有什么不同?
等同的关系,
-"
是简写
--"
是全称
6.linux命令行中-r与-R有什么区别?
哪些地方用大写,哪些地方用小写?
linux命令行中-r与-R就是代表不同参数,根据需求用的参数不一样。
只是刚好用了r这个字母,其实没有任何关联。
看参数可以用man或者后面加--help,具体用什么参数要根据事情决定。
六、心得体会:
通过对Linux基本操作实验的进行并且对结果进行分析,使我从Linux的运行环境基本操作指令有了一个很系统的了解,我需要做的是对其基本指令进行记忆,并且要达到的目的是很熟练的掌握和运用基本指令去完成指令的操作。
GNU/Linux程序设计实验
1.掌握GNUGCC/G++的基本使用方法;
2.掌握GNUmake基本使用方法;
3.掌握调试工具gdb的基本使用方法。
1.熟悉C/C++的程序设计方法。
2.了解GNUGCC/G++的特点
3.掌握GNU/Linux下的程序编译与调试方法
4.掌握多进程、多线程程序设计方法
5.掌握进程间通信的程序设计方法
1.GCC/G++使用
(1)基本使用
从功能上分,预处理、编译、汇编是三个不同的阶段,但GCC的实际操作上,它可以把这三个步骤合并为一个步骤来执行。
以C语言为例:
在预处理阶段,输入的是C语言的源文件,通常为*.c。
它们通常带有.h之类头文件的包含文件。
这个阶段主要处理源文件中的#ifdef、#include和#define命令。
该阶段会生成一个中间文件*.i,但实际工作中通常不用专门生成这种文件,因为基本上用不到;
若非要生成这种文件不可,可以利用下面的示例命令:
gcc–Etest.c-otest.i
在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s。
这个阶段对应的GCC命令如下所示:
gcc-Stest.i-otest.s
在汇编阶段,将输入的汇编文件*.s转换成机器语言*.o。
gcc-ctest.s-otest.o
最后,在连接阶段将输入的机器代码文件*.o(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。
这一步骤,可以利用下面的示例命令完成:
gcctest.o-otest
GCC有两种常用模式:
编译模式和编译连接模式。
下面以一个例子来说明各种模式的使用方法。
为简单起见,假设我们全部的源代码都在一个文件test.c中,要想把这个源文件直接编译成可执行程序,可以使用以下命令:
$gcc-otesttest.c
这里test.c是源文件,生成的可执行代码存放在一个名为test的文件中(该文件是机器代码并且可执行)。
-o是生成可执行文件的输出选项。
如果我们只想让源文件生成目标文件,可以使用标记-c,详细命令如下所示:
$gcc-ctest.c
默认情况下,生成的目标文件被命名为test.o,但我们也可以为输出文件指定名称,如下所示:
$gcc-ctest.c-omytest.o
上面这条命令将编译后的目标文件命名为mytest.o,而不是默认的test.o。
现一个程序的源代码通常包含在多个源文件之中,见下例:
$gcc-otestfirst.csecond.cthird.c
该命令将同时编译三个源文件,即first.c、second.c和third.c,然后将它们连接成一个可执行程序,名为test。
需要注意的是,要生成可执行程序时,一个程序无论有有一个源文件还是多个源文件,所有被编译和连接的源文件中必须有且仅有一个main函数,因为main函数是该程序的入口点(换句话说,当系统调用该程序时,首先将控制权授予程序的main函数)。
但如果仅仅是把源文件编译成目标文件的时候,因为不会进行连接,所以main函数不是必需的。
(2)常用选项
许多情况下,头文件和源文件会单独存放在不同的目录中。
例如,假设存放源文件的子目录名为./src,而包含文件则放在层次的其他目录下,如./inc。
当我们在./src目录下进行编译工作时,如何告诉GCC到哪里找头文件呢?
方法如下所示:
$gcctest.c–I../inc–otest
上面的命令告诉GCC包含文件存放在./inc目录下,在当前目录的上一级。
如果在编译时需要的包含文件存放在多个目录下,可以使用多个-I来指定各个目录:
$gcctest.c–I../inc–I../../inc2-otest
这里指出了另一个包含子目录inc2,较之前目录它还要在再上两级才能找到。
另外,我们还可以在编译命令行中定义符号常量。
为此,我们可以简单的在命令行中使用-D选项即可,如下例所示:
$gcc-DTEST_CONFIGURATIONtest.c-otest
上面的命令与在源文件中加入下列命令是等效的:
#defineTEST_CONFIGURATION
在编译命令行中定义符号常量的好处是,不必修改源文件就能改变由符号常量控制的行为。
(3)警告功能
当GCC在编译过程中检查出错误的话,它就会中止编译;
但检测到警告时却能继续编译生成可执行程序,因为警告只是针对程序结构的诊断信息,它不能说明程序一定有错误,而是存在风险,或者可能存在错误。
虽然GCC提供了非常丰富的警告,但前提是你已经启用了它们,否则它不会报告这些检测到的警告。
在众多的警告选项之中,最常用的就是-Wall选项。
该选项能发现程序中一系列的常见错误警告,该选项用法举例如下:
$gcc-Walltest.c-otest
该选项相当于同时使用了下列所有的选项:
◆unused-function:
遇到仅声明过但尚未定义的静态函数时发出警告。
◆unused-label:
遇到声明过但不使用的标号的警告。
◆unused-parameter:
从未用过的函数参数的警告。
◆unused-variable:
在本地声明但从未用过的变量的警告。
◆unused-value:
仅计算但从未用过的值得警告。
◆Format:
检查对printf和scanf等函数的调用,确认各个参数类型和格式串中的一致。
◆implicit-int:
警告没有规定类型的声明。
◆implicit-function-:
在函数在未经声明就使用时给予警告。
◆char-subscripts:
警告把char类型作为数组下标。
这是常见错误,程序员经常忘记在某些机器上char有符号。
◆missing-braces:
聚合初始化两边缺少大括号。
◆Parentheses:
在某些情况下如果忽略了括号,编译器就发出警告。
◆return-type:
如果函数定义了返回类型,而默认类型是int型,编译器就发出警告。
同时警告那些不带返回值的return语句,如果他们所属的函数并非void类型。
◆sequence-point:
出现可疑的代码元素时,发出报警。
◆Switch:
如果某条switch语句的参数属于枚举类型,但是没有对应的case语句使用枚举元素,编译器就发出警告(在switch语句中使用default分支能够防止这个警告)。
超出枚举范围的case语句同样会导致这个警告。
◆strict-aliasing:
对变量别名进行最严格的检查。
◆unknown-pragmas:
使用了不允许的#pragma。
◆Uninitialized:
在初始化之前就使用自动变量。
需要注意的是,各警告选项既然能使之生效,当然也能使之关闭。
比如假设我们想要使用-Wall来启用个选项,同时又要关闭unused警告,利益通过下面的命令来达到目的:
$gcc-Wall-Wno-unusedtest.c-otest
下面是使用-Wall选项的时候没有生效的一些警告项:
◆cast-align:
一旦某个指针类型强制转换时,会导致目标所需的地址对齐边界扩展,编译器就发出警告。
例如,某些机器上只能在2或4字节边界上访问整数,如果在这种机型上把char*强制转换成int*类型,编译器就发出警告。
◆sign-compare:
将有符号类型和无符号类型数据进行比较时发出警告。
◆missing-prototypes:
如果没有预先声明函数原形就定义了全局函数,编译器就发出警告。
即使函数定义自身提供了函数原形也会产生这个警告。
这样做的目的是检查没有在头文件中声明的全局函数。
◆Packed:
当结构体带有packed属性但实际并没有出现紧缩式给出警告。
◆Padded:
如果结构体通过充填进行对齐则给出警告。
◆unreachable-code:
如果发现从未执行的代码时给出警告。
◆Inline:
如果某函数不能内嵌(inline),无论是声明为inline或者是指定了-finline-functions选项,编译器都将发出警告。
◆disabled-optimization:
当需要太长时间或过多资源而导致不能完成某项优化时给出警告。
一个常用的警告选项是-Werror。
使用该选项后,GCC发现可疑之处时不会简单的发出警告就算完事,而是将警告作为一个错误而中断编译过程。
该选项在希望得到高质量代码时非常有用。
2.GDB用法
编译的时候需要加上-g参数,以打开调试信息。
例如:
gcc-g-ohellohello.c
启动gdb进行调试:
knoppix$gdbhello
设置断点:
break或简单打b后面加行号或函数名
(gdb)b<
function_name>
line_number>
执行程序:
打入r或run后,程序就开始运行直到遇到断点停止。
(gdb)run
如果需要为程序指定命令行参数的话,参数可以跟在run后面,如:
(gdb)run123
同样也可以使用setargs来指定参数。
gdb提供两种方式:
1.单步进入,stepinto即跟踪到函数内。
命令是step或s
2.单步,next,就是简单的单步,不会进入函数。
命令是next或n
可以用l/list命令来显示源代码。
(gdb)list
不带参数,将显示当前位置之后的,或者是上一个list命令之后的十行代码。
如果带参数(-),即list-,则表示列表当前位置之前,或者上一个list命令之前的十行代码。
list命令可带的参数有:
LINENUM,表示列出以linenum行为