嵌入式Linux实验三
- 格式:doc
- 大小:167.00 KB
- 文档页数:14
实验三嵌入式Linux驱动(1)一、【实验目的】1)熟悉嵌入式Linux驱动程序编写框架。
2)了解七段数码管驱动程序的工作原理,熟练掌握该驱动程序在嵌入式开发平台的移植和注册使用。
二、【实验内容】1)学习Linux驱动源代码,分析代码中各个函数模块的功能作用。
2)在宿主机上交叉编译七段数码管驱动程序,然后移植到目标机上。
3)在目标机上注册驱动程序,验证驱动的功能。
三、【实验步骤】1.了解七段数码管工作原理七段数码管是显示数字的电子元件,因为借助七个发光二极管以不同组合来显示数字,所以称为七段数码管(如图1)。
七段数码管分为共阴极和共阳极,共阳极的七段数码管的正极(或者阳极)为八个发光二极管的共有正极,其他接点为独立发光二极管的负极(或者阴极),使用者只需要把正极接电,不同的负极接地就可以控制七段数码管显示不同的数字。
共阴极的七段数码管与共阳极的只是接电的接法相反而已。
图12.开发板七段数码管电路介绍开发板上有四个七段共阴数码管,2个一组,第一组七段数码管使用系统LED_CS2作为其位选使能信号,两个数码管的段选信号分别使用数据总线的D0~D7位和D8~D15位,如图2所示。
图2第二组七段数码管使用系统LED_CS3作为其位选使能信号,两个数码管的段选信号分别使用数据总线的D0~D7位和D8~D15位,如图3所示。
图3分析可知,对七段数码管的操作主要是对其位选和段选信号的控制。
其中位选信号决定显示哪个七段数码管,段选信号决定其显示的字型信息(共阴极七段数码管段选控制信息如表1),这也是驱动程序和硬件关联的主要部分。
表13.七段数码管驱动程序分析1)添加驱动程序所需的头文件和变量:SEG_CS1和SEG_CS2就是上面硬件接口所提及的两组七段数码管的位选使能信号,LED[10]数组中保存的就是在共阴极数码管上面显示0~9的段选信号。
Seg这个结构体用于保存4个数码管即时显示的数字的段选信号。
#include <linux/module.h>#include <linux/kernel.h>#include <asm/io.h>#include <asm/uaccess.h>#include <linux/fs.h>MODULE_LICENSE("GPL");//用于声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时将收到内核被污染(kernel tainted)的警告char LED_MODULE=0;#define DEVICE_NAME "xidian_seg7"#define SEG_CS1 0x10300000#define SEG_CS2 0x10400000static char LED[10]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7F, 0x6F}; unsigned long *CS1_Address, *CS2_Address;structseg{char LED1_Val;char LED2_Val;char LED3_Val;char LED4_Val;char negative;};2)同时更新所有七段数码管驱动显示函数:CS1_address对应第一组七段数码管的位选信号,该组第一个数码管的段选信号保存在short变量的低8位,该组第二个数码管的段选信号保存在short变量的高8位。
实验三一、实验内容:1.熟悉开发板2.学会制作用于安装系统的SD卡等3.配置NFS服务二.步骤1.熟悉开发板结合Tiny4412用户手册第一章的Tiny4412开发板介绍熟悉开发板的构造。
2.准备工作结合Tiny4412用户手册第二章的内容,熟悉开发板的启动模式,设置超级终端,制作SD卡,linux系统烧写,使用minitools工具快速刷系统,使用USB烧写系统,使用MINItools工具烧写系统。
注意:在制作SD卡前,首先参考Tiny4412用户手册第49页,恢复SD卡到原始状态。
然后在开始按照45页的内容制作SD卡。
3.使用minicom操作开发板(串口或U转串模式)4.主机(Windows)、虚拟机(Ubuntu 终端、宿主机)、开发板之间的互ping——Bridged方式1.设置主机IP地址(有线网卡)2.虚拟机(Ubuntu 终端、宿主机)(1)编辑虚拟网络,指定有线网卡(2)设置网络适配器(3) 设置IP地址3. 将开发板连接上主机,测试互ping (1)虚拟机ping主机(Windows)(2)虚拟机ping开发板和主机(3)主机ping虚拟机和开发板(3)开发板ping主机和虚拟机(宿主机)5.配置NFS服务nfs服务,制作根文件系统时才算是真正用上它了,通过它“挂载”制作好的根文件系统。
它在嵌入式中的角色可用下图说明。
用网线将主机与开发板连接起来,主机开启nfs服务后,就可以像tftp一样传文件到开发板了。
NFS服务器安装配置实现Ubuntu 12.04与ARM文件共享实现步骤:1.服务器端:sudo apt-get install portmap2.服务器端:sudo apt-get install nfs-kernel-server3.服务器端配置:sudo gedit /etc/exports添加:/home/share 192.168.1.*(rw,sync,no_root_squash)(共享目录) (允许IP)(rw权限是可擦写,还有ro只读,sync代表数据会同步写入到内存与硬盘中,async则代表数据会先暂存于内存当中,而非直接写入硬盘,开放客户端使用root身份来操作服务器的文件系统,那么开no_root_squash才行,root_squash不允许)4.服务器端启动:sudo /etc/init.d/rpcbind restart5.服务器端启动:sudo /etc/init.d/nfs-kernel-server restart6.arm板连接时:主机:sudo ifconfig eth0 192.168.1.101 netmask 255.255.255.0arm板:ifconfig eth0 192.168.1.102 netmask 255.255.255.07.arm板上mount:mount -t nfs 192.168.1.101:/home/share /mnt/hosts(主机IP和共享目录) (arm板目录)mount上之后arm板上文件自动同步(1.出现问题:reason given by server: Permission denied解决:服务器端启动一定要sudo启动,不然启动失败,服务拒绝2.出现问题:svc: failed to register lockdv1 RPC service (errno 111).lockd_up: makeso、ck failed, error=-111mount: mounting 192.168.1.101:/home/share on /mnt/hosts failed: Connection refused则改成:mount -t nfs -o nolock 192.168.1.101:/home/share /mnt/hosts3.出现问题:mount: mounting 192.168.1.101:/home/share on /mnt/hosts failed: Device or resource busy解决:mount上之后在进行mount命令会出现此提示,设备正在运行,不用再次mount如果想再次mount可以先umount /mnt/hosts)。
通信与信息工程学院嵌入式系统设计实验报告实验名称ARM-Linux C语言文件编程学号姓名成绩岳X 164070504XX通信与信息工程学院二〇一八年目录目录 (1)实验三ARM-LINUX C语言文件编程 (2)一、实验目的 (2)二、实验内容 (2)三、实验材料 (3)四、实验总结 (4)实验三ARM-LINUX C语言文件编程一、实验目的(1)熟练掌握linux 文件编程函数原型与使用(2)掌握vi工具使用(3)掌握Makefile文件编写(4)掌握linux下,文件编译与交叉编译方法(5)掌握使用nfs下载程序方法二、实验内容编写一个程序,在当前目录下创建用户可读写文件“hello.txt”,在其中写入“This is My Schoolnumber:[自己的学号]”,关闭该文件。
再次打开该文件,读取其中的内容并输出在屏幕上。
#include "unistd.h"#include "fcntl.h"#include "stdio.h"#include "string.h"int main(){int fd;Char buf1[]="This is our schoolnumber:\zyc:16407050424\yw:16407050425\n";char buf2_read[sizeof(buf1)];int i,d,m;fd=open("/mnt/hello.txt",O_RDWR|O_CREAT|O_APPEND,0777);/*打开、创建一个可读可写且不会被覆盖的文件,文件名是hello.txt,用户权限是可读可写可执行*/if(fd<0){printf("open file error");return -1;}printf("open file hello.txt success\n");m=write(fd,(char*)buf1,strlen(buf1));// read(fd,(char*)buf1,strlen(buf1));close(fd);fd=open("/mnt/hello.txt",O_RDONL Y,0777);if(fd<0){printf("open file error");}d=read(fd,buf2_read,sizeof(buf1));for(i=0;i<sizeof(buf1);i++){printf("%c",buf2_read[i]);}close(fd);return 0;三、实验材料电脑,UPNET2410经典实验箱,linux虚拟机;思考题1、linux如何创建设备文件;(1)手动创建:mknod命令在驱动程序insmod成功之后,通过mknod命令手动创建设备文件至/dev目录下:mknod /dev/xxx c 主设备号次设备号。
实验3-1 Vi使用●实验目的:学会用vi编辑器●实验要求:熟练使用该节所介绍的vi创建、编辑、保存文件●实验器材:软件:1.安装了Ubunt的vmware虚拟机硬件:PC机一台●实验步骤:1. 在当前目录下键入命令vi hello.c创建名为hello.c的文上图是在命令行模式下2. 键入i进入插入模式3. 在插入模式下输入文字hello word!4. 按[Esc]键退出到命令行模式5. 按shift+;键,即:键进入底行模式6. 键入wq保存退出7. 将文件/etc/samba/smb.conf拷贝到当前目录下,下面的实验步骤是为了让大家能够熟练使用vi中的常见操作。
命令:cp /etc/samba/smb.conf ./8. 用vi打开文件smb.conf,设定显示行号,指出“ShareDefinitiongs”的所在行号在底行模式下,输入:set nu显示行号这样就可以看到“Share Definitions”所在的行为246行。
9. 将光标移动到248行命令:248G即在命令行模式下输入248shitf+g10. 复制改行以下6行内容命令:6yy11. 将光标移动到最后一行行首命令:G,即shift+g12. 粘贴复制的内容命令:p13. 删除12步粘贴的6行命令:6dd14. 撤销第13步的操作命令:u15. 查找字符串“Share Definitions”命令:/Share Definitions16. 强制退出vi,不存盘命令::q!17. 总结:对vi编辑的使用必须非常的熟练,因为vi编辑器是非常常用的。
以后编辑程序、查看文档、修改配置文件等操作都会用到,所以大家要多练习。
实验3-2 Gcc程序编译∙实验目的:学会使用gcc编译器及各种常用编译选项的使用理解库设计的功能:1)代码的封装保密 2)代码模块化设计∙实验要求:1、编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-o2等选项2、静态库和动态库的使用∙实验器材:软件:安装了ubunt 12.4的vmware虚拟机硬件:PC机一台∙第1题实验步骤:∙先用vi编辑hello.c文件,内容如下:int sum_int(int a, int b){return a+b;}int main(){int a=2,b=3,c;c=sum_int(a, b);printf(“sum of a and b is %d\n”,c);}gcc指令的一般格式为:gcc [选项] 要编译的文件[选项] [目标文件]例:使用gcc编译命令,编译hello.c生成可执行文件hello,并运行hello命令:#gcc hello.c –o hello上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、链接一步完成,下面将介绍四个流程分别做了什么工作。
大连理工大学本科实验报告实验名称:嵌入式操作系统学院(系):计算机学院实验专业:计算机系班级:0703学号:学生姓名: mqlz2010年 12 月 6 日实验一:linux内核裁剪预习报告一、实验目的:1、了解Linux内核源代码的目录结构及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件的作用4、握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验原理Linux对于计算机硬件、网络和文件系统等部件的驱动程序支持既可以放在系统内核中,也可以作为一个可加载的模块(modules)使用。
当驱动程序放在系统内核中时,Linux 假定该硬件是存在于系统中的;而作为可加载模块使用时,只有在知道该硬件存在于系统时才会作为系统内核的一部分,当 Linux 检测到硬件时,该模块才被加入到系统内核中。
三、实验步骤1、检查编译器的版本用低版本的编译器去编译高版本的内核有可能不能编译或使内核不能使用。
要查看编译器版本,可以执行命令:#gcc –v进入系统内核源代码目录。
一般系统内核的源代码放在 /usr/src/ 目录下。
用 ls –l 命令查看可能显示如下:#ls –l /usr/srcTotal 3lrwxrwxrwx 1 root root 12 May 4 14:36 >linux-2.4.20-8drwxr-xr-x 15 root root 1024 May 14 11:37drwxr-xr-x 3 root root 1024 May 4 14:38 sendmail其中、是一个链接文件,它的链接目标是指向目录,因此、cd 就是进入目录。
2、删除过时的目标文件进入 /usr/src/linux-2.4.20-8 目录,运行 make mrproper 命令以清除过时、旧的目标文件。
这是因为经过多次编译后系统会留下部分目标文件,如果没有清除干净可能造成本次编译出错。
第三篇基础实验篇本篇内容Linux设备驱动概述★LED实例★按键中断实例★数码管实例★4*4键盘实例★LCD实例★触摸屏实例★本篇目标了解Linux设备驱动的相关概念及开发基础★掌握简单字符设备驱动的程序结构及设计流程★学习嵌入式Linux中断机制及其驱动程序结构★学习数码管的显示原理及其驱动程序的设计方法★熟悉键盘驱动原理,学会为自己的系统添加键盘设备驱动程序★了解移植LCD显示设备驱动及触摸屏输入设备驱动的过程★本篇实例实例一:LED驱动及测试实例★实例二:按键中断驱动及测试实例★实例三:数码管实例★实例四:4*4键盘实例★实例五:LCD驱动移植实例★实例六:触摸屏驱动移植实例★第8章Linux设备驱动概述在前一篇中,我们介绍了开发嵌入式Linux的基本过程,本章开篇在前一篇的基础上进行设备驱动程序的开发,使得目标板上的硬件资源为板上系统所用,这也是所有设备驱动的巨大贡献。
本章将带领你走进Linux设备驱动开发的世界。
本章首先介绍的是设备驱动的作用及其分类,不同驱动程序的特点等,然后介绍驱动模块的加载和卸载方式等。
8.1 设备驱动的角色任何计算机系统的运行都是系统中软硬件相辅相成的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则只是一堆的电子元器件而已。
硬件是底层基础,是所有软件得以运行的平台,程序最终会实现为硬件上的逻辑电路;软件则是具体应用的实现,根据不同的业务需求而设计。
硬件一般是固定的,软件则很灵活,可以适应各种复杂多变的应用。
从某种程度上来看,计算机系统的软硬件相互成就了对方。
但是,软硬件之间同样存在着悖论,那就是软件和硬件不应该互相渗透入对方的领地。
为尽可能快速地完成设计,应用软件工程师不想也不必关心硬件,而硬件工程师也难有足够的闲暇和能力来顾及软件。
譬如,应用软件工程师在调用套接字发送和接收数据包的时候,他不必关心网卡上的中断、寄存器、存储空间、I/O端口、片选以及其他任何硬件词汇;在使用scanf()函数获取输入的时候,他不用知道底层究竟是怎样把终端设备的操作转化成程序输入的。
实验三嵌入式Linux驱动(2)一、【实验目的】1)熟悉嵌入式Linux驱动程序编写框架。
2)了解16键矩阵键盘驱动程序的工作原理,熟练掌握该驱动程序在嵌入式开发平台的移植和注册使用。
二、【实验内容】1)学习Linux驱动源程序,分析代码中各个函数模块的功能作用。
2)交叉编译键盘驱动程序,将驱动程序模块拷贝到目标机上。
3)在目标板上注册驱动程序,验证驱动的功能。
三、【实验步骤】1.熟悉16键矩阵键盘工作原理矩阵键盘又称为行列式键盘,它是用4条I/O线做为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4*4个(如图1),这种行列式键盘结构能够有效的提高嵌入式系统MCU的I/O的利用率(如果采用直连式的键盘,16个按键需要16个I/O口,此举节省了8个I/O口)。
图1以图1为例,介绍一下16键矩阵键盘的工作原理,P10、P11、P12、P13作为列检测口,P14、P15、P16、P17作为行检测口。
假设按键“1”(对应于S2)被按下,找其按键的特征编码,从P10~P13输出低电平,从P14~P17输出高电平,系统读取P14~P17的状态为“0111”,其值为“70H”。
然后从P10~P13输出高电平,从P14~P17输出低电平,系统读取P10~P13的状态为“1011”,其值为“0BH”,将两次读出的P0口状态值进行逻辑或运算就得到其按键的特征编码为“7BH”。
每个按键其特征编码都不同,所以可以通过这种方法区分16个按键及其键值。
2.实验板矩阵键盘硬件电路和操作的说明实验板行扫描线分别连接与PX270的KP_MKOUT0、KP_MKOUT1、KP_MKOUT2、KP_MKOUT6端口相连,列扫描线分别与PX270的KP_MKIN0、KP_MKIN1、KP_MKIN2、KP_MKIN5端口相连。
图2PX270支持最大8根行扫描线,8根列扫描线总计64个按键的矩阵键盘,通过对键盘控制寄存器KPC的操作,我们可以自由的定制键盘的扫描工作方式,行扫描线,列扫描线的个数。
《嵌入式系统》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称按键中断实验二、实验目的通过实验掌握S3C2410X的中断控制寄存器的使用;通过实验掌握S3C2410X处理器的中断响应过程;通过实验掌握ARM处理器的中断方式和中断处理过程;通过实验掌握ARM处理器中断处理的软件编程方法。
三、实验内容编写程序,当用户在实验箱按下KEY1键或KEY2键时在中断服务子程序中将相关信息打印到串口中,显示在超级终端上。
四、实验原理在本实验平台的主板上设计了两个外部按键,电路原理图如下:EXINT0和EXINT1信号作为CPLD芯片的输入信号。
CPLD内部逻辑图:五、实验结果超级终端上显示以下信息:按下KEY1键或KEY2键,超级终端上显示以下信息。
六、练习题编写程序实现:按下KEY1或KEY2后点亮实验系统的LEDs一段时间后熄灭。
任务:按下KEY1键后LED1点亮一段时间后熄灭;按下KEY2键后点亮LED2一段时间后熄灭。
#define rCPLDIntControl (*(volatile unsigned char*)0x22600000)#define rCPLDIntStatus (*(volatile unsigned char*)0x22200000)#define rCPLDLEDADDR (*(volatile unsigned char*)0x21180000)void __irq int_int(void){unsigned char Status;int i;Status = rCPLDIntStatus;Status = ~(Status & 0x6);if(Status & 0x2){uart_printf(" Eint0 interrupt occurred.\n");rCPLDLEDADDR = (rCPLDLEDADDR | 0xFF )& 0xFE;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}else if(Status & 0x4){uart_printf(" EINT1 interrupt occurred.\n");rCPLDLEDADDR =(rCPLDLEDADDR | 0xFF) & 0xFD;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}rEINTPEND=(1<<9);ClearPending(BIT_EINT8_23);}。
实验三:文件、目录及其操作命令1实验目的通过实验掌握如Linux操作系统的基本操作2实验设备硬件:PC机一台软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux3实验内容(1)文件的复制、删除和移动命令:cp, rm, mv(2)Linux文件与目录(3)目录命令:mkdir, rmdir, cd, pwd, ls(4)链接文件与ln(5)文件与目录的权限4实验预习要求仔细阅读参考书:【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心关于Linux文件与目录的部分。
5实验步骤(1)熟悉Red Hat Enterprise Linux系统。
(2)根据实验重点内容测试。
6实验重点:(1)文件的复制、删除与移动:cp, rm, mv要复制文件,请使用cp (copy) 这个命令即可。
不过,cp 这个命令的用途不仅仅于此。
除了单纯的复制之外,还可以建立连结文件(就是快捷方式),比对两文件的新旧而予以更新,以及复制整个目录等等的功能。
至于移动目录与文件,则使用mv (move),这个命令也可以直接拿来作重命名(rename) 的操作!至于(移除)删除文件,使用rm (remove) 这个命令。
cp (复制文件或目录)[root@localhost ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination)[root@localhost ~]# cp [options] source1 source2 source3 .... directory选项与参数:-a:相当于-pdr 的意思,至于pdr 请参考下列说明;(常用)-d:若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;-f :为强制(force)的意思,若目标文件已经存在则无法开启,则移除后再尝试一次;-i :若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用)-l :进行硬式连结(hard link)的连结文件建立,而非复制文件本身;-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);-r :递归持续复制,用于目录的复制行为;(常用)-s :复制成为符号链接文件(symbolic link),亦即快捷方式文件;-u :若destination 比source 旧,才更新destination !最后需要注意的,如果源文件有两个以上,则最后一个目标文件一定要是目录才行!范例一:用root身份,将主目录下的.bashrc 复制到/temp 下,并更名为bashrc (~代表目前用户身份所在的主文件夹)[root@localhost ~]# cp ~/.bashrc /temp/bashrc[root@localhost ~]# cp -i ~/.bashrc /temp/bashrccp: overwrite `/temp/bashrc'? n <==n不覆盖,y为覆盖说明:重复作两次操作,由于/temp 下已经存在bashrc 了,加上-i 选项后,则在覆盖前会询问使用者是否确定!可以按下n 或者y 来二次确认。
范例二:将主目录下的.bashrc和.bash_history 复制到/temp下。
[root@localhost ~]cp ~/.bashrc ~/.bash_history /temp可以将多个数据一次复制到同一目录中去,最后面一定是目录。
范例三:复制/etc/ 这个目录下的所有内容到/tmp 下[root@www tmp]# cp /etc/ /tmpcp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上-r 的选项[root@www tmp]# cp -r /etc/ /tmp-r 是可以复制目录,但是,文件与目录的权限可能会被改变。
所以,也可以利用cp –a /etc /tmp 来下执行!尤其是在备份的情况下!rm (移除文件或目录)[root@localhost ~]# rm [-fir] 文件或目录选项与参数:-f :就是force 的意思,忽略不存在的文件,不会出现警告信息;-i :互动模式,在删除前会询问使用者是否操作-r :递归删除!最常用在目录的删除了!这是非常危险的选项!!!范例一:将刚刚在cp 的范例中建立的bashrc 删除掉![root@localhost ~]# cd /temp[root@localhost tmp]# rm -i bashrcrm: remove regular file `bashrc'? y如果加上-i 的选项就会主动询问,避免删除到错误的文件!范例二:通过通配符*的帮助,将/temp下开头为bashrc的文件名通通删除:[root@localhost tmp]# rm -i bashrc*注意星号,代表的是0 到无穷多个任意字符!范例三:将cp 范例中所建立的/temp/etc/ 这个目录删除掉![root@localhost tmp]# rmdir /temp/etcrmdir: etc: Directory not empty <== 删不掉!因为这不是空的目录![root@localhost tmp]# rm -r /temp/etcrm: descend into directory `/temp/etc'? y ....(中间省略)....因为身份是root ,预先已经加入了-i 的选项,所以要一直按y 才会删除!如果不想要继续按y ,可以按下[ctrl]-c 来结束rm 的工作。
这是一种保护的操作,如果确定要删除掉此目录而不要询问,可以这样做:[root@localhost tmp]# \rm -r /temp/etc在命令前加上反斜杠,可以忽略掉alias 的指定的参数!对于删除命令(remove),要注意的是,通常在Linux系统下,为了怕文件被误删除,所以很多distributions 都已经默认加入-i 这个选项!而如果要连目录下的东西都一起删掉的话,例如子目录里面还有子目录时,那就要使用-r 这个选项了!不过,使用rm -r 这个命令之前,请千万注意,因为该目录或文件肯定会被root 删掉!因为系统不会再次询问你是否要删掉!所以那是个超级严重的命令!mv (移动文件与目录,或更名)[root@localhost ~]# mv [-fiu] source destination[root@localhost ~]# mv [options] source1 source2 source3 .... directory选项与参数:-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i :若目标文件(destination) 已经存在时,就会询问是否覆盖!-u :若目标文件已经存在,且source 比较新,才会更新(update)范例一:复制一文件,建立一目录,将文件移动到目录中[root@localhost ~]# cd /temp[root@localhost tmp]# cp ~/.bashrc bashrc[root@localhost tmp]# mkdir mvtest[root@localhost tmp]# mv bashrc mvtest将某个文件移动到某个目录去,就是这样做!范例二:将刚刚的目录名称更名为mvtest2[root@localhost tmp]# mv mvtest mvtest2 <== 这样就更名了!范例三:再建立两个文件,再全部移动到/temp/mvtest2 当中[root@localhost tmp]# cp ~/.bashrc bashrc1[root@localhost tmp]# cp ~/.bashrc bashrc2[root@localhost tmp]# mv bashrc1 bashrc2 mvtest2注意,如果有多个来源文件或目录,则最后一个目标文件一定是目录!这里将所有的数据移动到该目录!(2)Linux文件与目录在Linux系统中,所有的系统账号的相关信息,都是记录在/etc/passwd这个文件内。
个人的密码则是记录在/etc/shadow这个文件下。
此外,Linux所有的群组名称都纪录在/etc/group 内!这三个文件是Linux系统里面账号、密码、群组信息的集中地不能随便删除这三个文件。
Linux 文件权限概念文件的权限针对“使用者”与“群组”来设定。
尤其是当屏幕前面出现了“Permission deny”的时候,肯定是权限设定错误。
Linux文件的属性在以root的身份登入Linux之后,执行ls -al第一栏代表这个文件的类型与权限(permission):这一栏其实共有十个字符:第一个字符代表这个文件是“目录、文件或连结文件”:当为[ d ]则是目录,例如上表文件名为”.gconf”的那一行;当为[ - ]则是普通文件,例如上表文件名为”install.log”那一行;若是[ l ]则表示为连结文件(link file);若是[ b ]则表示为设备文件里面的可供储存的接口设备(可随机存取装置);若是[ c ]则表示为设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为“rwx”的三个参数的组合。
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。
第一组为“文件拥有者的权限”,第二组为“同群组的权限”;第三组为“其它非本群组的权限”。
例题:若有一个文件的类型与权限数据为”-rwxr-xr--”,请说明其意义为何?答:先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:[-] [rwx] [r-x] [r--]1 234 567 8901 为:代表这个文件名为目录或文件,本例中为文件(-);234为:拥有者的权限,本例中为可读、可写、可执行(rwx);567为:同群组使用者权限,本例中为可读可执行(rx);890为:其它使用者权限,本例中为可读(r)第二栏表示有多少文件名连结到此节点(i-node):每个文件都会将他的权限与属性记录到文件系统的i-node中,目录树是使用文件名来记录,因此每个文件名就会连结到一个i-node。