版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 LinuxLinux操作系统下嵌入操作系统下嵌入 式系统开发环境的建立式系统开发环境的建立 3.1 3.1 嵌入式系统为什么要配用操作系统嵌入式系统为什么要配用操作系统 嵌入式系统通常是一个资源受限的系统,嵌入式系统通常是一个资源受限的系统, 因此直接在嵌入式系统的硬件平台上编写软因此直接在嵌入式系统的硬件平台上编写软 件比较困难,有时候甚至是不可能的。件比较困难,有时候甚至是不可能的。 解决办法:解决办法: 首先首先在通用计算机上编写程序;在通用计算机上编写程序; 然后然后通过通过交叉编译交叉编译生成目标平台上可以运生成目标平台上可以运 行的二进制代码格式;行的二进制代码格式;
2、 最后最后再下载到目标平台上再下载到目标平台上的特定位置上运的特定位置上运 行。行。 使用操作系统支持嵌入式系统的优点:使用操作系统支持嵌入式系统的优点: 1.1.利用操作系统提供的并发操作机制,可利用操作系统提供的并发操作机制,可 以方便的处理多进程、多线程应用,使复以方便的处理多进程、多线程应用,使复 杂程序的编写变得简单;杂程序的编写变得简单; 2.2.将系统的硬件资源交由操作系统管理。将系统的硬件资源交由操作系统管理。 与硬件资源的信息交换通过规范化操作与硬件资源的信息交换通过规范化操作- -设设 备文件完成,用户只需按照规定的格式编备文件完成,用户只需按照规定的格式编 写应用程序即可
3、方便的使用这些硬件资源。写应用程序即可方便的使用这些硬件资源。 3.1 3.1 嵌入式系统为什么要配用操作系统嵌入式系统为什么要配用操作系统 3.3.将中断组织、内存管理、文件系统、进将中断组织、内存管理、文件系统、进 程调度等复杂的软件管理工作交由操作系程调度等复杂的软件管理工作交由操作系 统负责,用户只需按照规定的格式编写应统负责,用户只需按照规定的格式编写应 用程序或利用操作系统提供的命令即可使用程序或利用操作系统提供的命令即可使 用这些系统软件资源。用这些系统软件资源。 4.4.利用操作系统对网络的完美支持,可以利用操作系统对网络的完美支持,可以 将嵌入式系统快速的纳入网络系统。将嵌入
4、式系统快速的纳入网络系统。 5.5.利用操作系统支持下的各种高级语言以利用操作系统支持下的各种高级语言以 及相关专业的程序库,可方便快捷高效的及相关专业的程序库,可方便快捷高效的 完成复杂任务。完成复杂任务。 6.6.使系统具有较高的可靠性。使系统具有较高的可靠性。 3.1 3.1 嵌入式系统为什么要配用操作系统嵌入式系统为什么要配用操作系统 目前,在嵌入式系统上配用的主流操作系目前,在嵌入式系统上配用的主流操作系 统主要由统主要由LinuxLinux、WinCEWinCE等。针对实时性要求等。针对实时性要求 较高的嵌入式系统,可配用嵌入式实时操作较高的嵌入式系统,可配用嵌入式实时操作 系统,
5、如系统,如VxWorksVxWorks、RTLinuxRTLinux、 C/OS-C/OS-II等。 鉴于应用对象和系统组成不同,嵌入式系鉴于应用对象和系统组成不同,嵌入式系 统所配用的操作系统应具有:可裁剪、可支统所配用的操作系统应具有:可裁剪、可支 持多种外部设备、软件资源丰富、具有实时持多种外部设备、软件资源丰富、具有实时 性等,以满足针对各种需求、组成形式各异性等,以满足针对各种需求、组成形式各异 的嵌入式系统的需要。的嵌入式系统的需要。 3.1 3.1 嵌入式系统为什么要配用操作系统嵌入式系统为什么要配用操作系统 3.2 3.2 认识一个配有认识一个配有LinuxLinux操作系统的
6、操作系统的S3C2440S3C2440 嵌入式系统开发板嵌入式系统开发板 3.2 3.2 认识一个配有认识一个配有LinuxLinux操作系统的操作系统的S3C2440S3C2440 嵌入式系统开发板嵌入式系统开发板 3.33.3建立嵌入式系统开发环境建立嵌入式系统开发环境 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 1 1)在)在PCPC上建立上建立LinuxLinux操作系统的虚拟机操作系统的虚拟机 VmwareVmware虚拟机简介:虚拟机简介:VMware WorkstationVMware Workstation虚拟机虚拟机是是 一个在一个在Wi
7、ndowsWindows或或LinuxLinux计算机上运行的应用程序,计算机上运行的应用程序, 它可以模拟一个基于它可以模拟一个基于x86x86的标准的标准PCPC环境。这个环境和环境。这个环境和 真实的计算机一样,都有芯片组、真实的计算机一样,都有芯片组、CPUCPU、内存、显卡、内存、显卡、 声卡、网卡、软驱、硬盘、光驱、串口、并口、声卡、网卡、软驱、硬盘、光驱、串口、并口、USBUSB 控制器、控制器、SCSISCSI控制器等设备,提供这个应用程序的控制器等设备,提供这个应用程序的 窗口就是窗口就是虚拟机虚拟机的显示器。的显示器。 在使用上,这台在使用上,这台虚拟机虚拟机和真正的物理主
8、机没有和真正的物理主机没有 太大的区别,都需要分区、格式化、安装太大的区别,都需要分区、格式化、安装操作系统操作系统、 安装应用程序和软件,总之,一切操作都跟一台真安装应用程序和软件,总之,一切操作都跟一台真 正的计算机一样。正的计算机一样。 安装安装vmware workstation vmware workstation 虚拟机软件虚拟机软件 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 3.
9、3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 Linux Linux操作系统可简单分为操作系统可简单分为3 3层:应用层、内核层:应用层、内核 层、驱动层。层、驱动层。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 Linux Linux下的文件系统为树形结构,入下的文件系统为树形结构,入 口为口为/ /树形结构下的文件目录:树形结构下的文件目录: 无论哪个无论哪个 版本的版本的LinuxLinux系统,都有这些目录,这些目系统,都有这些目录,这些目 录应该是标准的。各个录应该是标准的。各个LinuxLinux发行版本会存发行
10、版本会存 在一些小小的差异。在一些小小的差异。 1. 1. / /文件系统的入口,最高一级目录;文件系统的入口,最高一级目录; 2. 2. /bin/bin基础系统所需要的命令位于此目录,基础系统所需要的命令位于此目录, 是最小系统所需要的命令,如:是最小系统所需要的命令,如:ls, cp, ls, cp, mkdirmkdir等。等。 这个目录中的文件都是可执行的,一般的这个目录中的文件都是可执行的,一般的 用户都可以使用。用户都可以使用。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 3. 3. /boot/boot包含包含LinuxLinux内核及系统
11、引导程序所内核及系统引导程序所 需要的文件,比如需要的文件,比如vmlinuz initrd.imgvmlinuz initrd.img文文 件都位于这个目录中。在一般情况下,件都位于这个目录中。在一般情况下, GRUBGRUB或或LILOLILO系统引导管理器也位于这个目系统引导管理器也位于这个目 录;录; 4. 4. /dev/dev设备文件存储目录。设备文件存储目录。 5. 5. /etc/etc存放系统程序或者一般工具的配置存放系统程序或者一般工具的配置 文件。文件。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 6. 6. /home/home普通
12、用户默认存放目录。普通用户默认存放目录。LinuxLinux是是 多用户环境,所以每一个用户都有一个只有多用户环境,所以每一个用户都有一个只有 自己可以访问的目录(当然管理员也可以访自己可以访问的目录(当然管理员也可以访 问)。它们以问)。它们以/home/username/home/username的方式存在。的方式存在。 这个目录也保存一些应用对于这个用户的配这个目录也保存一些应用对于这个用户的配 置。置。 7. 7. /lib/lib库文件存放目录。这里包含了系统程库文件存放目录。这里包含了系统程 序所需要的所有共享库文件,类似序所需要的所有共享库文件,类似 于于WindowsWindo
13、ws的共享库的共享库DLLDLL文件。文件。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 8. 8. /lost+found/lost+found文件系统损坏后,管理系文件系统损坏后,管理系 统恢复文件的存放目录。统恢复文件的存放目录。 9. /mnt9. /mnt这个目录一般是用于存放挂载储存这个目录一般是用于存放挂载储存 设备的挂载目录的,比如有设备的挂载目录的,比如有cdromcdrom等目录。等目录。 有时我们可以让系统开机自动挂载文件系有时我们可以让系统开机自动挂载文件系 统,把挂载点放在这里也是可以的。比如统,把挂载点放在这里也是可以的。比如
14、光驱可以挂载到光驱可以挂载到/mnt/cdrom/mnt/cdrom。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 11. 11. /root/rootLinuxLinux超级权限用户的主目录;超级权限用户的主目录; 12. 12. /sbin/sbin系统管理员使用的管理程序存放目系统管理员使用的管理程序存放目 录。大多是涉及系统管理的命令的存放,是超录。大多是涉及系统管理的命令的存放,是超 级权限用户级权限用户rootroot的可执行命令存放地,普通用的可执行命令存放地,普通用 户无权限执行这个目录下的命令;户无权限执行这个目录下的命令; 这个目录和这
15、个目录和/usr/sbin;/usr/X11R6/sbin/usr/sbin;/usr/X11R6/sbin或或 /usr/local/sbin/usr/local/sbin目录是相似的;凡是目录目录是相似的;凡是目录 sbinsbin中包含的都是中包含的都是rootroot权限才能执行的。权限才能执行的。 13.13./sys /sys 文件系统挂载点。文件系统挂载点。 14.14./tmp /tmp 临时文件存放目录。临时文件存放目录。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 15. 15. /var/var系统运行过程中文件内容会发生变系统运行过
16、程中文件内容会发生变 化的目录。这个目录的内容是经常变动的,化的目录。这个目录的内容是经常变动的, / /varvar下有下有 / /var/logvar/log是用来存放系统日志的目录。是用来存放系统日志的目录。 / /var/wwwvar/www是定义是定义ApacheApache服务器站点存放目录;服务器站点存放目录; / /var/libvar/lib用来存放一些库文件,比如用来存放一些库文件,比如MySQLMySQL 的,以及的,以及MySQLMySQL数据库的的存放地;数据库的的存放地; / /var/spoolvar/spool打印机、邮件、代理服务器等假打印机、邮件、代理服务器
17、等假 脱机目录;脱机目录; 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 16. 16. /opt/opt表示的是可选择的意思,有些软表示的是可选择的意思,有些软 件包也会被安装在这里,也就是自定义软件包也会被安装在这里,也就是自定义软 件包。有些我们自己编译的软件包,就可件包。有些我们自己编译的软件包,就可 以安装在这个目录中;以安装在这个目录中; 这个目录包含所有默认系统安装之外的软这个目录包含所有默认系统安装之外的软 件和添加的包。件和添加的包。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 17. 17. /usr
18、 /usr 供用户使用的应用程序和文件存供用户使用的应用程序和文件存 放目录。放目录。 这个目录下有很多的文件和目录。这个目录下有很多的文件和目录。 当安装一个当安装一个LinuxLinux发行版官方提供的软件包发行版官方提供的软件包 时,大多安装在这里。如果有涉及服务器时,大多安装在这里。如果有涉及服务器 配置文件的,会把配置文件安装在配置文件的,会把配置文件安装在/etc/etc目目 录中。录中。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 /usr/usr目录下包括:目录下包括: 涉及字体目录涉及字体目录/ /usr/share/fontsusr/s
19、hare/fonts, 帮助目录帮助目录/ /usr/share/manusr/share/man或或/ /usr/share/docusr/share/doc, 普通用户可执行文件目录普通用户可执行文件目录/ /usr/binusr/bin或或 / /usr/local/binusr/local/bin或或/ /usr/X11R6/binusr/X11R6/bin, 超级权限用户超级权限用户rootroot的可执行命令存放目录,比的可执行命令存放目录,比 如如/ /usr/sbinusr/sbin或或/ /usr/X11R6/sbinusr/X11R6/sbin或或 / /usr/local
20、/sbinusr/local/sbin等;等; 还有程序的头文件存放目录还有程序的头文件存放目录/ /usr/includeusr/include。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 /usr/bin/usr/bin这个目录是可执行程序的目录,这个目录是可执行程序的目录, 普通用户就有权限执行;普通用户就有权限执行; 当我们从系统自当我们从系统自 带的软件包安装一个程序时,他的可执行带的软件包安装一个程序时,他的可执行 文件大多会放在这个目录。文件大多会放在这个目录。 /usr/sbin/usr/sbin这个目录也是可执行程序的目录,这个目录也是
21、可执行程序的目录, 但大多存放涉及系统管理的命令。只有但大多存放涉及系统管理的命令。只有 rootroot权限才能执行;相似目录是权限才能执行;相似目录是/sbin/sbin或或 /usr/local/sbin/usr/local/sbin或或/usr/X11R6/sbin/usr/X11R6/sbin等;等; 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 /usr/local/usr/local这个目录一般是用来存放用户这个目录一般是用来存放用户 自编译安装软件的存放目录;一般是通过自编译安装软件的存放目录;一般是通过 源码包安装的软件,如果没有特别指定安
22、源码包安装的软件,如果没有特别指定安 装目录的话,一般是安装在这个目录中。装目录的话,一般是安装在这个目录中。 这个目录下面有子目录。这个目录下面有子目录。 /usr/lib/usr/lib和和/lib/lib目录相似,是库文件的存目录相似,是库文件的存 储目录;储目录; 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 /usr/share/usr/share系统共用的东西存放地,比系统共用的东西存放地,比 如如/usr/share/fonts/usr/share/fonts是字体目录,是用户是字体目录,是用户 都共用的。都共用的。 /usr/share/do
23、c/usr/share/doc和和/usr/share/man/usr/share/man帮助文帮助文 件,也是共用的;件,也是共用的; /usr/src/usr/src是内核源码存放的目录,是内核源码存放的目录, 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 2 2)用网线将开发板与)用网线将开发板与PCPC连接起来,建立开发连接起来,建立开发 板,虚拟机,板,虚拟机,PCPC之间的网络联系,使三者可之间的网络联系,使三者可 以相互通信。以相互通信。 注:注:3 3个个IPIP地址应处于同网段,即地址应处于同网段,即IPIP地址的前地址的前3 3 个域的地
24、址码是一致的,虚拟机的网络连接个域的地址码是一致的,虚拟机的网络连接 方式为桥接,以保证三者正常通信。方式为桥接,以保证三者正常通信。 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 开发板上可用开发板上可用ifconfig eth0 XXX.XXX.XXX.XXXifconfig eth0 XXX.XXX.XXX.XXX 命令临时修改命令临时修改IPIP,关机后恢复原地址。如,关机后恢复原地址。如 需一劳永逸的修改开发板上的需一劳永逸的修改开发板上的IPIP,可对开,可对开 发板发板/etc/init.d/rcS/etc/init.d/rcS文件中的对应命令
25、进文件中的对应命令进 行修改。行修改。IPIP设置完成且确认正确后,在设置完成且确认正确后,在PCPC 命令窗口,开发板串口终端,虚拟机终端命令窗口,开发板串口终端,虚拟机终端 分别使用分别使用pingping命令测试网络连通情况。命令测试网络连通情况。 3 3)在虚拟机上安装并启动网络文件系统)在虚拟机上安装并启动网络文件系统 NFSNFS,为后续的文件共享、登录、挂载做准,为后续的文件共享、登录、挂载做准 备。备。 4 4)在虚拟机、)在虚拟机、PCPC之间设置文件共享服务,之间设置文件共享服务, 以保证资源的充分共享。以保证资源的充分共享。 5 5)在虚拟机上设置被挂载目录,将虚拟机)在
26、虚拟机上设置被挂载目录,将虚拟机 硬盘划出一块区域准备与开发板共用。硬盘划出一块区域准备与开发板共用。 6 6)虚拟机上的网络文件系统)虚拟机上的网络文件系统NFSNFS启动后,启动后, 即可在虚拟机上使用命令登录开发板:即可在虚拟机上使用命令登录开发板: telnet XXX.XXX.XXX.XXXtelnet XXX.XXX.XXX.XXX 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤 7)7)在虚拟机上,使用在虚拟机上,使用minicomminicom命令可生成开命令可生成开 发板串口终端,其功能与发板串口终端,其功能与XshellXshell工具生成
27、工具生成 的开发板串口终端相同。的开发板串口终端相同。 注:串口终端只能有一个,如果使用注:串口终端只能有一个,如果使用 minicomminicom串口终端就必须关掉串口终端就必须关掉XshellXshell串口终串口终 端,反之亦然。端,反之亦然。 8 8)在开发板上挂载虚拟机上的指定目录。)在开发板上挂载虚拟机上的指定目录。 挂载完成后,在开发板的挂载完成后,在开发板的“/mnt/mnt/开发板挂开发板挂 载目录路径载目录路径”下可看到虚拟机挂载目录路下可看到虚拟机挂载目录路 径下的所有文件径下的所有文件 3.3.1 3.3.1 建立嵌入式系统开发环境的步骤建立嵌入式系统开发环境的步骤
28、.2嵌入式系统开发过程中经常使用的嵌入式系统开发过程中经常使用的 LinuxLinux操作系统命令操作系统命令 命令命令功能功能 ls目录目录显示指定目录下的文件显示指定目录下的文件 ls-l目录名(文件名)目录名(文件名)显示指定目录下文件的详细信息显示指定目录下文件的详细信息 cd目录名目录名进入指定目录进入指定目录 chmod属性属性目录目录/文件名文件名修改目录或文件属性修改目录或文件属性 rm目录目录/文件名文件名删除文件删除文件 rmr目录目录/目录目录删除指定目录删除指定目录 rm-f目录目录/文件名文件名强制删除文件强制删除文件 rmfr目录目录/目录目录强制删
29、除指定目录强制删除指定目录 cp源目录源目录/文件名文件名目标目录目标目录/文件名文件名同名复制和更名复制同名复制和更名复制 cpr源目录源目录/文件名文件名目标目录目标目录/文件名文件名连同目录一道同名复制和更名复制连同目录一道同名复制和更名复制 基本命令基本命令 mv源目录源目录/文件名文件名目标目录目标目录/文件名文件名文件移动或更名文件移动或更名 mvr源目录源目录/文件名文件名目标目录目标目录/文件名文件名连同目录一道进行同名复制和更名复制连同目录一道进行同名复制和更名复制 mkdir目录目录/目录名目录名在指定目录下建立指定目录在指定目录下建立指定目录 which文件名文件名在系统
30、指定目录下定位一个命令的位置在系统指定目录下定位一个命令的位置 ifconfig查看虚拟机系统查看虚拟机系统IP地址地址 locate文件名文件名查看指定文件所在目录查看指定文件所在目录 cat文件名文件名查看查看ASCII文件内容文件内容 pingip地址地址测试本机与指定测试本机与指定IP地址网络终端的连接地址网络终端的连接 pwd显示当前目录路径显示当前目录路径 基本命令(续表)基本命令(续表) .2嵌入式系统开发过程中经常使用的嵌入式系统开发过程中经常使用的 LinuxLinux操作系统命令操作系统命令 命令命令功能功能 cat/var/log/messages观察虚拟
31、机侧模块的输出信息观察虚拟机侧模块的输出信息 tail-8/var/log/messages观察虚拟机侧模块的输出信息的最后观察虚拟机侧模块的输出信息的最后8行行 cat/proc/kmsg观察开发板侧模块的输出信息观察开发板侧模块的输出信息 cat/proc/interrupts观察已加载模块(两侧)的中断信息观察已加载模块(两侧)的中断信息 cat/proc/devices观察已加载模块(两侧)的观察已加载模块(两侧)的主设备号主设备号 cat/proc/driver/rtc观察观察rtc模块(两侧)当前工作情况模块(两侧)当前工作情况 cat/proc/version显示内核版本号显示内
32、核版本号 常用虚拟内核观察命令常用虚拟内核观察命令 .2嵌入式系统开发过程中经常使用的嵌入式系统开发过程中经常使用的 LinuxLinux操作系统命令操作系统命令 命令命令功能功能 date显示系统时间显示系统时间 date051222362010设置系统时间:设置系统时间:2010.05.1222:36 hwclockr显示显示RTC时钟与日期时钟与日期 hwclocks将系统时钟调整为与目前的将系统时钟调整为与目前的rtc时钟一致时钟一致 hwclock-w将将rtc时钟调整为与目前系统时钟一致时钟调整为与目前系统时钟一致 系统时间命令系统时间命令 .2嵌入
33、式系统开发过程中经常使用的嵌入式系统开发过程中经常使用的 LinuxLinux操作系统命令操作系统命令 命令命令功能功能 insmod模块名模块名.o插入模块插入模块 rmmod模块名模块名删除已插入模块的模块删除已插入模块的模块 lsmod显示已插入的模块显示已插入的模块 mknod/dev/模块名模块名c主设备号主设备号次设备号次设备号为已插入的模块建立字符设备文件为已插入的模块建立字符设备文件 modinfo模块名模块名观察设备驱动模块的简要说明观察设备驱动模块的简要说明 常用设备驱动模块操作命令常用设备驱动模块操作命令 编译命令:编译命令:gcc生成供生成供80 x系列系列CPU使用的
34、机器码文件使用的机器码文件 交叉编译命令:交叉编译命令:arm-linux-gcc生成供生成供arm系列系列CPU使用的机器码文件使用的机器码文件 .2嵌入式系统开发过程中经常使用的嵌入式系统开发过程中经常使用的 LinuxLinux操作系统命令操作系统命令 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 在使用在使用vivi之前,首先应该了解一下之前,首先应该了解一下vivi 的工作模式。的工作模式。 vi vi有两种工作模式:有两种工作模式:编辑模式编辑模式和和指令指令 模式模式。在。在vivi中用户可以在这两种模式间切中用户可以在这两种模式间切 换。换。 编辑模
35、式编辑模式:用来输入和编辑文件的模:用来输入和编辑文件的模 式,屏幕上会显示用户的键入,按键不是式,屏幕上会显示用户的键入,按键不是 被解释为命令执行,而是作为文本写到用被解释为命令执行,而是作为文本写到用 户的文件中。户的文件中。 指令模式:指令模式:用来编辑、存盘和退出文件用来编辑、存盘和退出文件 的模式。运行的模式。运行vivi后,首先进入指令模式。后,首先进入指令模式。 此时输入的任何字符都被视为指令对待,此时输入的任何字符都被视为指令对待, 键入的命令不会在屏幕上显示。键入的命令不会在屏幕上显示。 状态行:状态行:屏幕底部一行,通常是第屏幕底部一行,通常是第2424行,行, 被被vi
36、vi编辑器用来反馈编辑操作结果。错编辑器用来反馈编辑操作结果。错 误消息或者提供信息的消息会在状态行误消息或者提供信息的消息会在状态行 中显示出来。中显示出来。vivi还会在还会在2424行显示那些以行显示那些以 冒号冒号( (:) )或者问号或者问号( (?) )开头的命令。开头的命令。 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 如果从指令模式切换到编辑模式,如果从指令模式切换到编辑模式, 则可以按则可以按【InsertInsert】键;如果从编辑模键;如果从编辑模 式切换到指令模式,则可以按式切换到指令模式,则可以按【EscEsc】键。键。 如果不能断定目前处于什么模式,则
37、可如果不能断定目前处于什么模式,则可 以多按几次以多按几次【EscEsc】键,这时系统会发出键,这时系统会发出 蜂鸣声,证明已经进入指令模式。蜂鸣声,证明已经进入指令模式。 【注意注意】 Linux Linux下的命令是大小写敏感的。下的命令是大小写敏感的。 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 vivi的启动和退出的启动和退出 1. 1. 启动启动vivi 要进入要进入vivi,可以直接在系统提示字符下键,可以直接在系统提示字符下键 入入vivi,按空格,然后再输入文件名,按空格,然后再输入文件名( (本例中本例中 以以test.txttest.txt作为文件名作为文件名
38、) ),像下面一行:,像下面一行: vi test.txtvi test.txt 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 “test.txt” new file 0 lines 0 characters 图图3-1进入进入vi的初始化画面的初始化画面 图图3-13-1显示了用显示了用vivi新建文件新建文件test.txttest.txt 的初始画面。的初始画面。 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 vivi可以自动帮你载入所要编辑的文可以自动帮你载入所要编辑的文 件或是开启一个新文件。如果件或是开启一个新文件。如果test.txttest.txt 文件
39、已存在,文件已存在,vivi就会在屏幕上显示文件就会在屏幕上显示文件 的第一页的第一页( (前前2323行行) )。如果。如果test.txttest.txt是一是一 个新文件,个新文件,vivi就会清屏,光标会出现在就会清屏,光标会出现在 屏幕的左上角,屏幕左方会出现波浪符屏幕的左上角,屏幕左方会出现波浪符 号号“”,凡是列首有该符号就表示此,凡是列首有该符号就表示此 列目前是空的。列目前是空的。 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 2. 2. 退出退出vivi 要离开要离开vivi可以在指令模式下键入可以在指令模式下键入“:q”:q”, “q!”q!”或或“:wq”:
40、wq”离开离开( (注意冒号注意冒号) )。 (1) (1) :q :q 如果用户只是读文件的内容而未如果用户只是读文件的内容而未 对文件进行修改,可以使用对文件进行修改,可以使用“:q”:q”退出退出vivi; 如果用户对文件的内容作了修改,则用如果用户对文件的内容作了修改,则用“:q”:q” 退出退出vivi,那么,那么vivi在屏幕的底行会提示下面在屏幕的底行会提示下面 的信息,的信息,vivi编辑器还保留在屏幕上:编辑器还保留在屏幕上: No write since last change (:q! No write since last change (:q! overrides).
41、overrides). 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 (2) :q! (2) :q! 如果用户对文件的内容作了修如果用户对文件的内容作了修 改,然后决定要放弃对文件的修改,可改,然后决定要放弃对文件的修改,可 以使用以使用“:q!”:q!”强行退出强行退出vivi,在这种情况,在这种情况 下文件的内容不变。下文件的内容不变。 (3) :wq(3) :wq在大多数情况下,用户在编辑结在大多数情况下,用户在编辑结 束时,用束时,用“:wq”:wq”命令保存文件,然后退命令保存文件,然后退 出出vivi。 (4) :n,mw filename (4) :n,mw file
42、name 该指令将第该指令将第n nm m 行的文本保存到指定的文件行的文本保存到指定的文件filenamefilename中。中。 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 (5) ZZ (5) ZZ 该指令表示快速保存文件的内容,该指令表示快速保存文件的内容, 然后退出然后退出vivi,功能和,功能和“:wq”:wq”一样。一样。 (6) :w! vi(6) :w! vi编辑器通常防止覆盖一个已存编辑器通常防止覆盖一个已存 在的文件。比如用户键入在的文件。比如用户键入“:w test.txt”:w test.txt” 并按回车键,而并按回车键,而test.txttest.t
43、xt文件已存在时,文件已存在时, vivi会显示如下的信息提出警告:会显示如下的信息提出警告: test.txt File exist test.txt File exist use :w! to use :w! to overwriteoverwrite 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 表表3-2 3-2 编辑状态下进入插入状态的命令编辑状态下进入插入状态的命令 命令命令作用作用 a在光标后输入文本在光标后输入文本 A在当前行末尾输入文本在当前行末尾输
44、入文本 i在光标前输入文本在光标前输入文本 I在当前行开始输入文本在当前行开始输入文本 o在当前行后输入新一行在当前行后输入新一行 O在当前行前输入新一行在当前行前输入新一行 S删除当前行,光标移至行首并转入插入状态删除当前行,光标移至行首并转入插入状态 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 3 3种状态相互转换示意图:种状态相互转换示意图: 命令方式命令方式 插入方式插入方式 行方式行方式 插入命令插入命令 Esc Esc 命令执行完命令执行完 : 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 ViVi编辑器常用命令:编辑器常用命令: 命令命令功能功能 vi
45、filename打开或新建文件,并将光标置于第一行首打开或新建文件,并将光标置于第一行首 vi +n fillename vi + filename 表表3-3进入进入vi编辑器的命令编辑器的命令 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 命令命令功能功能 :e filename编辑文件名为编辑文件名为filenamefilename的文件,若不存在则新的文件,若不存在则新 建。建。 :w filename保存文件保存文件filenamefilename :w! filename强制性存入文件强制性存入文件 filename filename 中中 :w保存当前文件,文件已有文
46、件名保存当前文件,文件已有文件名 :q!不保存强制性退出不保存强制性退出 :wq保存退出保存退出 :q不保存退出,若文件已修改不能退出不保存退出,若文件已修改不能退出 :set nu显示行号显示行号 :set nonu取消行号显示取消行号显示 表表3-4文件保存、退出常用命令文件保存、退出常用命令 3.4.1 vi3.4.1 vi编辑器的使用编辑器的使用 表表3-5 3-5 移动光标、屏幕翻滚类命令移动光标、屏幕翻滚类命令 命令命令功能功能命令命令功能功能 0移至当前行行首移至当前行行首Enter光标下移一行光标下移一行 $移至当前行行尾移至当前行行尾Home光标移至当前行首光标移至当前行首
47、gg移至文件首部移至文件首部End光标移至当前行尾光标移至当前行尾 G移至文件尾部移至文件尾部PageUp光标上移一页光标上移一页 n-向上移动向上移动n行行Page Down 光标下移一页光标下移一页 n+向下移动向下移动n行行Ctrl+f屏幕向前翻动一页屏幕向前翻动一页 nG移到第移到第n行行Ctrl+b屏幕向后翻动一页屏幕向后翻动一页 H移到当前屏幕顶部移到当前屏幕顶部Ctrl+u屏幕向前翻动半页屏幕向前翻动半页 M移到当前屏幕中间行的行首移到当前屏幕中间行的行首Ctrl+d屏幕向后翻动半页屏幕向后翻动半页 L移到当前屏幕底部最后一行移到当前屏幕底部最后一行 行首行首 3.4.1 vi3
48、.4.1 vi编辑器的使用编辑器的使用 分类分类命令命令功能功能 复制复制yy复制光标所在行复制光标所在行 nyy复制光标所在行开始的复制光标所在行开始的n行行 y 复制光标至行首复制光标至行首 y$复制光标至行尾复制光标至行尾 yw复制一个字复制一个字 粘贴粘贴p粘贴至光标后粘贴至光标后 P粘贴至光标前粘贴至光标前 删除删除dw删除光标所在字删除光标所在字 ndw删除光标处开始及其后的删除光标处开始及其后的n个字个字 d$删至行尾删至行尾 dd删除当前行删除当前行 ndd删除从当前光标所在行开始的删除从当前光标所在行开始的n行内容行内容 恢复恢复u撤销上一步操作,可多次撤销撤销上一步操作,可
49、多次撤销 U在光标离开前,恢复所有的编辑操作在光标离开前,恢复所有的编辑操作 Ctrl+r返回至撤销操作之前的状态返回至撤销操作之前的状态 表表3-6文本编辑命令文本编辑命令 分类分类命令命令功能功能 查找查找/pattern从光标开始处向文件尾搜索从光标开始处向文件尾搜索pattern ?pattern从光标开始处向文件首搜索从光标开始处向文件首搜索pattern n在同一方向重复上一次搜索命令在同一方向重复上一次搜索命令 N在反方向上重复上一次搜索命令在反方向上重复上一次搜索命令 替换替换:s/p1/p2/g将当前行中所有将当前行中所有p1均用均用p2替代替代 :n1,n2s/p1/p2/
50、g将将n1至至n2行中所有行中所有p1均用均用p2替代替代 r替换光标所在的字符替换光标所在的字符 R替换字符序列并转入插入状态替换字符序列并转入插入状态 cw替换一个单词并转入插入状态替换一个单词并转入插入状态 cb替换光标所在的前一个字符并转入插入替换光标所在的前一个字符并转入插入 状态状态 cc替换当前行并转入插入状态替换当前行并转入插入状态 ncw修改指定书目修改指定书目n个字并转入插入状态个字并转入插入状态 ncc修改指定数目修改指定数目n行并转入插入状态行并转入插入状态 表表3-7查找与替换命令查找与替换命令 3.4.2 3.4.2 对源程序的编译、交叉编译及执行对源程序的编译、交
51、叉编译及执行 1.1.目录命名和文件命名规则目录命名和文件命名规则 在在LinuxLinux操作系统下,目录命名和文件操作系统下,目录命名和文件 命名的规则是相同的,可以使用长文件名命名的规则是相同的,可以使用长文件名 和目录名,最长可达和目录名,最长可达256256个字符,可为目录个字符,可为目录 或文件命名任何名字。虽然没有扩展名的或文件命名任何名字。虽然没有扩展名的 概念,但一些文件名还是遵守了约定俗成概念,但一些文件名还是遵守了约定俗成 的后缀规则。的后缀规则。 后缀后缀说明说明 .s汇编源文件汇编源文件 .cC语音源文件语音源文件 .o经过编译但未连接的模块经过编译但未连接的模块 .
52、a静态库文件静态库文件 .so动态库文件动态库文件 .shShell程序程序 表表3-8常见文件后缀约定规则常见文件后缀约定规则 除了字符除了字符/ /外,所有的字符都是合法的,但有些字符最好不用,如:外,所有的字符都是合法的,但有些字符最好不用,如: 空格符、制表符、退格符、空格符、制表符、退格符、 、:、?、:、?、# #、$ $、then 语句语句 elif 条件条件 ;then 语句语句 else 语句语句 fi 注意:注意:条件条件中,条件前后必须留有一个空格中,条件前后必须留有一个空格 条件条件;then连在一起写,必须加上分号连在一起写,必须加上分号; 1 1. . if if
53、条件语句条件语句 单分支单分支 if 条件条件 then 语句语句 fi 或者或者 if 条件条件 ; then 语句语句 fi 3.5.6 shell3.5.6 shell程序的流程控制程序的流程控制 2. case语句语句 if条件语句用于在两个选项中选定一项,而条件语句用于在两个选项中选定一项,而case条件选择为用条件选择为用 户提供了根据字符串或变量的值从多个选项中选择一项的方法,户提供了根据字符串或变量的值从多个选项中选择一项的方法, 其格式如下:其格式如下: casestringin exp-1) 若干个命令行若干个命令行1 ; exp-2) 若干个命令行若干个命令行2 ; *)
54、 其他命令行其他命令行 esac 通常用通常用“*”作为作为case命令的最后表达式以便使在前面找不到命令的最后表达式以便使在前面找不到 任何相应的匹配项时执行任何相应的匹配项时执行“其他命令行其他命令行”的命令。的命令。 shell通过计算字符串通过计算字符串string 的值,将其结果依次和表达的值,将其结果依次和表达 式式exp-1、exp-2等进行比较,等进行比较, 直到找到一个匹配的表达式直到找到一个匹配的表达式 为止,如果找到了匹配项则为止,如果找到了匹配项则 执行它下面的命令直到遇到执行它下面的命令直到遇到 一对分号一对分号(;)为止。为止。 3. while循环循环 while
55、和和until命令都是用命令的返回状态值来控制循环的。命令都是用命令的返回状态值来控制循环的。 While循环的一般格式为:循环的一般格式为: while 若干个命令行若干个命令行1 do 若干个命令行若干个命令行2 done 只要只要while的的“若干个命令行若干个命令行1”中中最后一个命令的返回状最后一个命令的返回状 态为真态为真,while循环就继续执行循环就继续执行do.done之间的之间的“若干个命若干个命 令行令行2”。 4. until循环循环 until命令是另一种循环结构,它和命令是另一种循环结构,它和while命令相似,其格式命令相似,其格式 如下:如下: until 若
56、干个命令行若干个命令行1 do 若干个命令行若干个命令行2 done until循环和循环和while循环的区别在于:循环的区别在于:while循环在条件为真时循环在条件为真时 继续执行循环,而继续执行循环,而until则是在条件为假时继续执行循环则是在条件为假时继续执行循环。 5. for循环循环 forfor循环对一个变量的可能的值都执行一个命令序列。循环对一个变量的可能的值都执行一个命令序列。 赋给变量的几个数值既可以在程序内以数值列表的形赋给变量的几个数值既可以在程序内以数值列表的形 式提供,也可以在程序以外以位置参数的形式提供。式提供,也可以在程序以外以位置参数的形式提供。 forf
57、or循环的一般格式为:循环的一般格式为: for 变量名变量名 in数值列表数值列表 do 若干个命令行若干个命令行 done 变量名可以是用户选择的任何字符串,如果变量名是变量名可以是用户选择的任何字符串,如果变量名是 varvar,则在,则在inin之后给出的数值将顺序替换循环命令列表之后给出的数值将顺序替换循环命令列表 中的中的$var$var。如果省略了如果省略了inin,则变量,则变量varvar的取值将是位置的取值将是位置 参数参数。对变量的每一个可能的赋值都将执行。对变量的每一个可能的赋值都将执行dodo和和donedone 之间的命令列表。之间的命令列表。 6.break和和c
58、ontinue 在在Shell的的for、while、until循环语句中循环语句中,也可以使用如也可以使用如C语言语言 的的break和和continue语句以跳离现有的循环语句以跳离现有的循环。 break语句用于中断循环的执行,将程序流程移至循环语句语句用于中断循环的执行,将程序流程移至循环语句 结束之后的下一个命令结束之后的下一个命令。 而而continue语句语句则忽略之后的命令则忽略之后的命令,将程序流程转移至循环将程序流程转移至循环 开始的地方开始的地方。break和和continue语句都可以加上数字,以指语句都可以加上数字,以指 示要跳出的循环数目示要跳出的循环数目。 bre
59、ak和和continue放在放在do和和done之间才有效之间才有效。 7. esit 退出退出shell ShellShell编程的要点:编程的要点: 1 1)使用类似)使用类似 -f file -f file 条件时,方括号内两端必须至条件时,方括号内两端必须至 少保留一个空格。少保留一个空格。 2 2)算术运算符和逻辑运算符两边必须至少保留一个空)算术运算符和逻辑运算符两边必须至少保留一个空 格。格。 3 3)当将某个命令结果赋予某个变量以及表达式操作时,)当将某个命令结果赋予某个变量以及表达式操作时, 需注意单引号的写法。需注意单引号的写法。 4 4)定义变量时,)定义变量时,= =号
60、左右不要有空格。号左右不要有空格。 5 5)shellshell程序是程序是ASCIIASCII码文件,其回车换行信息与码文件,其回车换行信息与 WindowsWindows的的.txt.txt不同。不同。 6 6)在虚拟机侧建立)在虚拟机侧建立shellshell程序后,其权限属性为程序后,其权限属性为-rw-r-rw-r- -r-r-,即为不可执行文件,用户可使用,即为不可执行文件,用户可使用chmodchmod命令对其命令对其 权限属性进行修改。权限属性进行修改。 7 7)关于)关于shellshell程序中通配符的使用说明程序中通配符的使用说明 3.5.7 shell3.5.7 she
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教八下英语Unit 8《Project-Reflecting》课件
- 2026年口腔执业医师聘用合同(1篇)
- 2025 高中信息技术数据结构在游戏角色属性的生成与成长的平衡性与多样性优化课件
- 2026年票据保理合同(1篇)
- 硬装施工规范培训【课件文档】
- 物流配送流程培训【课件文档】
- 新增资产价值的确定原则和计算方法
- 医院安全生产课件
- STP战略教学精要
- 社区春季健康知识课件
- 2026甘肃天水市秦州区选聘大学生村文书50人笔试模拟试题及答案解析
- 2026杭州市市级机关事业单位编外招聘148人考试备考试题及答案解析
- 河南省驻马店市(2025年)公共基础辅警考试笔试题库及答案
- 北京市2024北京市教师发展中心招聘1人笔试历年参考题库典型考点附带答案详解
- 2026年常州信息职业技术学院单招职业倾向性测试题库含答案详解(a卷)
- 2026年江西制造职业技术学院单招职业适应性测试题库及答案详细解析
- 2026年安徽新闻出版职业技术学院单招综合素质考试题库及完整答案详解一套
- 2026年人工智能在机械设计中的应用案例
- 2026年常州工程职业技术学院单招职业技能考试题库含答案详解(黄金题型)
- GB/T 6495.1-2025光伏器件第1部分:光伏电流-电压特性的测量
- 统编版(2026)八年级下册历史教材课后问题答案(全册)
评论
0/150
提交评论