版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-5-1818.1.4 嵌入式嵌入式Linux开发环境组建方案开发环境组建方案 在进行嵌入式开发之前,首先要建立一个交在进行嵌入式开发之前,首先要建立一个交叉编译环境,包括操作系统以及连接器、编译器、叉编译环境,包括操作系统以及连接器、编译器、调试器在内的软件开发工具。调试器在内的软件开发工具。 个人在进行嵌入式开发的时候,可分别建立个人在进行嵌入式开发的时候,可分别建立以以LINUXLINUX为操作系统的开发环境或者在为操作系统的开发环境或者在WindowsWindows下安装模拟下安装模拟LinuxLinux环境的软件(环境的软件(VMware VMware Workstation
2、Workstation、CygwinCygwin)。)。 2022-5-1821. Windows Linux 目标系统目标系统 安装多个操作系统,可以解决问题,但安装多个操作系统,可以解决问题,但是,如果在调试应用程序的时候,同时需要是,如果在调试应用程序的时候,同时需要两个操作系统,则需要在两个系统之间来回两个操作系统,则需要在两个系统之间来回切换,这样很繁琐,很浪费时间。切换,这样很繁琐,很浪费时间。 2022-5-183 2. Windowscygwin目标系统目标系统 CygwinCygwin是一个运行于是一个运行于WindowsWindows下的下的LinuxLinux模拟环境。但
3、是,在使用某些特殊功模拟环境。但是,在使用某些特殊功能的时候,需要打一些补丁,对于初学者来能的时候,需要打一些补丁,对于初学者来说,比较困难。说,比较困难。 2022-5-1843. Windows虚拟机(虚拟机(Linux) 目标系统目标系统 VmwareVmware可以在不破坏原有操作系统的情况可以在不破坏原有操作系统的情况下,虚拟出一台下,虚拟出一台“真实真实”的电脑出来,我们只需的电脑出来,我们只需要在这台虚拟的电脑上安装要在这台虚拟的电脑上安装LinuxLinux就可以了,和就可以了,和操作真实机器上的操作真实机器上的LinuxLinux完全一样。对于初学者完全一样。对于初学者这是一
4、个不错的选择方案。这是一个不错的选择方案。 2022-5-185 4.WindowsLinux服务器服务器 目标系统目标系统 Windows客户机客户机Linux服务器的方式,对服务器的方式,对实验室而言,应该是最适合的方案了。只需多一实验室而言,应该是最适合的方案了。只需多一台台Linux服务器就可以了,对客户机和服务器的服务器就可以了,对客户机和服务器的硬件要求都不没有什么特殊高要求。硬件要求都不没有什么特殊高要求。2022-5-1868.1.5 VMWare 的安装与使用的安装与使用 GCC for ARM主要是基于主要是基于Linux系统的,所以在系统的,所以在安装它之前必须要安装安装
5、它之前必须要安装Linux系统。系统。 这里推荐使用这里推荐使用Windows+虚拟机虚拟机VMware + RedHat的配置方案。的配置方案。 2022-5-187 共分三步来完成共分三步来完成GCC交叉开发环境的配置:交叉开发环境的配置:1)在)在Windows系统上安装虚拟机软件系统上安装虚拟机软件VMware。2)在)在VMware中安装并配置中安装并配置RedHat。3)在)在RedHat中安装并配置中安装并配置GCC forARM。 2022-5-188 VMWare Workstation软件可以从软件可以从http:/ 它是一个不错的虚拟机,能够在它是一个不错的虚拟机,能够在
6、Windows环境环境中虚拟一个中虚拟一个Linux操作系统,目前能下载到操作系统,目前能下载到5.0以上以上的的版本。同时还需要下载版本。同时还需要下载Linux相关的相关的ISO映象文件。映象文件。 2022-5-189 8.1.6 安装安装RedHat9.0 在在VMware中安装并配置中安装并配置RedHat。1)打开)打开VMware workstation,运行虚拟机。,运行虚拟机。2)建立一台虚拟机。点击)建立一台虚拟机。点击“FILE(文件文件)”-“NEW(新建新建)”-“NewVirtual Machine(新建虚拟新建虚拟机机)”,弹出虚拟机创建菜单。,弹出虚拟机创建菜单
7、。3)选择客户操作系统。因为要装的是)选择客户操作系统。因为要装的是Redhat,所以这里选择所以这里选择Linux。 配置好一个新的虚拟机后,双击配置好一个新的虚拟机后,双击CD-ROM1。如下图所示。如下图所示。2022-5-1810 选择选择Use ISO image,然后点,然后点Browse,选择,选择RedHat和第一张光盘,一般采用的是和第一张光盘,一般采用的是Redhat的的镜像安装方式。镜像安装方式。 为了以后使用网络方便,在安装过程出现防为了以后使用网络方便,在安装过程出现防火墙配置时,这里选择火墙配置时,这里选择“无防火墙无防火墙”一直点一直点“下下一步一步”。 2022
8、-5-1811 直到出现下图,输入根口令用直到出现下图,输入根口令用123456,确认也确认也填填123456。 至此,系统的基本参数已经设置完,点至此,系统的基本参数已经设置完,点“下下一步一步”,开始安装系统。,开始安装系统。2022-5-1812 在以后的安装过程中,按屏幕给出的提示,在以后的安装过程中,按屏幕给出的提示,把不同的把不同的LINUX安装盘的安装盘的ISO加载进加载进VMware就可就可以了。具体过程是:以了。具体过程是:1)出现)出现 提示符时,打开虚拟机菜单提示符时,打开虚拟机菜单面板,如图面板,如图8.1.10所示。所示。2022-5-18132)修改)修改ISO i
9、mage的路径的路径 如图如图8.1.11所示。所示。2022-5-18143)设置共享目录,选择)设置共享目录,选择Options中的中的Shared Folders,如图,如图8.1.12所示。所示。2022-5-18154)共享目录建立完成后,就可以将)共享目录建立完成后,就可以将Windows硬盘硬盘中的文件拷贝到到建立的共享目录,在虚拟环境里,中的文件拷贝到到建立的共享目录,在虚拟环境里,然后再次拷贝到然后再次拷贝到LINUX目录下。目录下。 打开打开“终端终端”, 在终端方式下,输入下列命令:在终端方式下,输入下列命令:rootzxl root# cd mnt rootzxlmnt
10、# cd hgfs rootzxl cdrom# cd zxl /建立的共享目录建立的共享目录 rootzxl linux# cp vivi.tar.gz / /拷贝文件到根目录拷贝文件到根目录rootzxl linux# cd / /回到根目录回到根目录 rootzxl /#tar -zxvf vivi.tar.gz /解压解压vivi.tar.gz包包rootlocalhost /#cd /vivi /进入进入/zxl2410目录。目录。 然后就可以对文件进行操作,为以后的开发提供了方便。然后就可以对文件进行操作,为以后的开发提供了方便。2022-5-1816配置配置minicommini
11、com:超级终端:超级终端配置配置TFTPTFTP(Trivial File Transfer Protocol):): 简单文件传输协议简单文件传输协议配置配置NFSNFS(Network File SystemNetwork File System)服务)服务SambaSamba:windowswindows与与LinuxLinux之间的共享之间的共享 8.1.7 配置宿主机配置宿主机2022-5-18171. 1. 配置配置minicomminicom minicom minicom很像很像WindowsWindows下面的超级终端,我们利下面的超级终端,我们利用用minicommini
12、com作为被开发目标板的终端,开发前需要正确作为被开发目标板的终端,开发前需要正确的配置的配置minicomminicom。 在宿主机在宿主机LinuxLinux系统下的终端中输入:系统下的终端中输入: minicom -s minicom -s 对对minicomminicom进行设置。进行设置。 8.1.7 配置宿主机配置宿主机2022-5-1818 选择选择Serial port setupSerial port setup,将串口配置为:波特率,将串口配置为:波特率115200115200,8 8位数据位,位数据位,1 1位停止位,没有流控和校验。并位停止位,没有流控和校验。并将其设置
13、存为默认值。将其设置存为默认值。 选择选择Save setup as dflSave setup as dfl。 然后选择然后选择ExitExit退回到退回到minicomminicom界面。界面。 正确连接串口线,正确连接串口线,PCPC机端使用在机端使用在minicomminicom中被配置的中被配置的串口,串口,ttyS0ttyS0或或ttyS1ttyS1。目标板请使用串口。目标板请使用串口0 0。 minicom minicom 就相当于虚拟终端,通过它来操作目标板。就相当于虚拟终端,通过它来操作目标板。2022-5-1819 如下图所示为如下图所示为minicomminicom启动后
14、的状态。启动后的状态。 如果要退出如果要退出minicomminicom,可以先按,可以先按CTRL+ACTRL+A键,再按键,再按X X键。按键。按CTRL+ACTRL+A再按再按Z Z为进入帮助。为进入帮助。2022-5-18202. 2. 配置配置TFTPTFTP TFTP TFTP的全称是的全称是Trivial File Transfer ProtocolTrivial File Transfer Protocol,即简,即简单文件传输协议。使用此服务传送文件时没有数据校验、密单文件传输协议。使用此服务传送文件时没有数据校验、密码验证,非常适合小型文件的传输。在通过码验证,非常适合小型
15、文件的传输。在通过TFTPTFTP传送文件传送文件时,需要服务端和客户端,对于嵌入式系统来讲,服务端就时,需要服务端和客户端,对于嵌入式系统来讲,服务端就是宿主机,下边来对它进行配置。是宿主机,下边来对它进行配置。 2022-5-1821 首先检查宿主机端的首先检查宿主机端的TFTP TFTP 服务是否已经开通。对于服务是否已经开通。对于REDHAT7.2 REDHAT7.2 以上的版本,如以上的版本,如REDHAT9.0REDHAT9.0,则在宿主,则在宿主机上执行:机上执行: setup setup 选择选择System servicesSystem services,将,将tftptft
16、p一项选中,出现一项选中,出现 * * 表表示选中,并去掉示选中,并去掉ipchains ipchains 和和iptables iptables 两项服务,即去掉两项服务,即去掉它们前面的它们前面的* *号。号。 然后还要选择然后还要选择Firewall configurationFirewall configuration,选中,选中No No firewallfirewall。最后,退出。最后,退出setupsetup,执行如下命令以启动,执行如下命令以启动TFTP TFTP 服务:服务:2022-5-1822service xinetd restartservice xinetd re
17、start配置完成后,简单测试一下配置完成后,简单测试一下TFTP TFTP 服务器是否可用,即服务器是否可用,即自己自己tftptftp自己,例如在宿主机上执行:自己,例如在宿主机上执行:cp /s3c2410_linux/Image/zImage /tftpboot/cp /s3c2410_linux/Image/zImage /tftpboot/ /* *在本地准备一个文件在本地准备一个文件* */ /tftp 192.168.2.xxxtftp 192.168.2.xxx / /* *用用tftptftp服务登陆本机服务登陆本机* */ /tftpget zImagetftpget z
18、Image / /* *使用使用tftptftp服务得到服务得到zImagezImage* */ /tftpqtftpq / /* *退出退出tftptftp服务服务* */ / 2022-5-1823 若出现信息若出现信息“Received 741512 bytes in 0.7 “Received 741512 bytes in 0.7 seconds”seconds”就表示就表示TFTP TFTP 服务器配置成功了。若弹出信息服务器配置成功了。若弹出信息“Timed out”“Timed out”,则表明未成功。此时可用如下命令确,则表明未成功。此时可用如下命令确认认tftp tftp
19、服务是否开通:服务是否开通:netstat -a|grep tftpnetstat -a|grep tftp 若若TFTP TFTP 服务器没有配置成功,需要按照上述步骤重服务器没有配置成功,需要按照上述步骤重新检查一遍。新检查一遍。2022-5-18243. 3. 配置配置NFSNFS服务服务NFSNFS(Network File SystemNetwork File System,NFSNFS)指网络文)指网络文件系统,它是件系统,它是LinuxLinux系统中经常使用的一种服务,系统中经常使用的一种服务,NFSNFS是是一个一个RPC serviceRPC service,很像,很像wi
20、ndowswindows中的文件共享服务。中的文件共享服务。它的设计是为了在不同的系统间使用它的设计是为了在不同的系统间使用, , 所以它的通讯协议所以它的通讯协议设计与主机及作业系统无关。当使用者想用远端档案时设计与主机及作业系统无关。当使用者想用远端档案时只要用只要用mountmount就可把就可把remoteremote档案系统挂接在自己的档档案系统挂接在自己的档案系统之下,使得远端的档案在使用上和案系统之下,使得远端的档案在使用上和locallocal的档案没的档案没两样。两样。 2022-5-1825 在在NFSNFS服务中,宿主机(服务中,宿主机(ServersServers)是被
21、挂载)是被挂载(mountmount)端,为了远端客户机()端,为了远端客户机(ClientsClients)可以访问主)可以访问主机的文件,我们需要主机配置两方面内容:机的文件,我们需要主机配置两方面内容: 打开打开NFSNFS服务,允许服务,允许“指定用户指定用户”使用。使用。2022-5-1826打开宿主机的打开宿主机的NFSNFS服务可以使用命令:服务可以使用命令:setupsetup选择选择System servicesSystem services,将,将nfsnfs一项选中,出现一项选中,出现 * * 表表示选中,并去掉示选中,并去掉ipchains ipchains 和和ipt
22、ables iptables 两项服务,即去掉它两项服务,即去掉它们前面的们前面的* *号。然后退出。号。然后退出。“指定用户指定用户”是通过编辑文件是通过编辑文件“exports”“exports”:vi /etc/exportsvi /etc/exports在在exportsexports文件中加入:文件中加入: /s3c2410_linux/nfs /s3c2410_linux/nfs 6(rw,insecure,no_root_squash,no_all_sq6(rw,insecure,no_root_squash,no_all_squash
23、)uash)2022-5-1827 然后按然后按 再输入再输入 : : 再输入再输入wq wq 然后回车然后回车, ,存储退出。存储退出。其中其中“/s3c2410_linux/nfs”“/s3c2410_linux/nfs”是一个可以被是一个可以被IPIP地址是地址是“6”“6”计算机访问到并读写的文件夹。计算机访问到并读写的文件夹。 可以更改这个可以更改这个ipip,可以让不同的计算机访问。重新启动服,可以让不同的计算机访问。重新启动服务,使我们的设置生效:务,使我们的设置生效:/etc/rc.d/init.d/nfs restart/etc/r
24、c.d/init.d/nfs restart现在现在NFSNFS就可以使用了。就可以使用了。 要启动或停止要启动或停止NFSNFS服务,必须以服务,必须以rootroot登录并使用以下命令登录并使用以下命令来启动来启动 NFS NFS 守护进程,其命令格式如下:守护进程,其命令格式如下: /etc/rc.d/init.d/nfs start stop restart/etc/rc.d/init.d/nfs start stop restart2022-5-1828 要启动要启动NFSNFS,在,在“#”“#”提示符下键入以下命令行:提示符下键入以下命令行:/etc/rc.d/init.d/nf
25、s start/etc/rc.d/init.d/nfs start注:在注:在LinuxLinux的的TerminalTerminal下,可以使用下,可以使用ifconfigifconfig命令来命令来给设定本机给设定本机ipip。例如:。例如:# ifconfig eth0 192.168.0.xxx# ifconfig eth0 192.168.0.xxx同样在同样在minicomminicom中也可以用该命令给实验箱设中也可以用该命令给实验箱设置置ipip地址。宿主机和开发板地址。宿主机和开发板ipip要配成同一网段内的。在要配成同一网段内的。在exportsexports文件中设置宿主
26、机可以被访问的文件目录,和文件中设置宿主机可以被访问的文件目录,和开发板的开发板的ipip地址,就可以在地址,就可以在minicomminicom下下, ,让开发板通过让开发板通过网络挂接网络挂接(mount)(mount)到宿主机的相应文件夹到宿主机的相应文件夹。 2022-5-18294. Samba4. Samba Linux Linux与与LinuxLinux之间通过之间通过NFSNFS实现共享,实现共享,WindowsWindows与与windowswindows之间通过共享目录实现共享,之间通过共享目录实现共享,LinuxLinux与与windowswindows之间怎么实现共享?
27、利用之间怎么实现共享?利用SambaSamba实现共享。实现共享。 一个一个SambaSamba服务器实际上包括两个守护进程:服务器实际上包括两个守护进程:smbdsmbd和和nmbdnmbd。 Samba Samba服务器配置工具如图服务器配置工具如图.14所示,它是用来管所示,它是用来管理理SambaSamba共享、用户以及基本服务器设置的图形化界面。共享、用户以及基本服务器设置的图形化界面。 配置配置SambaSamba服务器首先是配置服务器的基本设置和几服务器首先是配置服务器的基本设置和几个安全选项。然后添加个安全选项。然后添加SambaSamba用户、添加共享。用户
28、、添加共享。 2022-5-1830启动和停止启动和停止SambaSamba服务器,使用以下命令来启动守护进程:服务器,使用以下命令来启动守护进程: /etc/rc.d/init.d/smb start /etc/rc.d/init.d/smb start使用以下命令来停止守护进程:使用以下命令来停止守护进程: /etc/rc.d/init.d/smb stop /etc/rc.d/init.d/smb stop2022-5-1831连接连接SambaSamba共享:共享: 要从要从Microsoft WindowsMicrosoft Windows机器上连接机器上连接Linux Linux
29、SambaSamba共享,可以使用共享,可以使用“网上邻居网上邻居”或图形图形化化文或图形图形化化文件管理器。也可用以下件管理器。也可用以下DOSDOS命令:命令:2121。 smbclient smbclient命令用来存取远程命令用来存取远程SambaSamba服务器上的资源。服务器上的资源。 2022-5-1832 8.2.1 8.2.1 什么是什么是shellshell Linux Linux系统的系统的ShellShell作为操作系统的外壳,为用户提供作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序使用操作
30、系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。设计语言的统称。ShellShell是用户和操作系统之间最主要接口。是用户和操作系统之间最主要接口。通过通过ShellShell,可以同时在后台运行多个应用程序,并且在把,可以同时在后台运行多个应用程序,并且在把需要与用户交互的程序放在前台运行。需要与用户交互的程序放在前台运行。8. .2 Shell脚本脚本 2022-5-18331. Shell1. Shell称为命令解释器称为命令解释器 负责用户和操作系统之间的沟通,把用户下达的命令负责用户和操作系统之间的沟通,把用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用解释
31、给系统去执行,并将系统传回的信息再次解释给用户,所以,它拥有自己内建的户,所以,它拥有自己内建的ShellShell命令集,也能被系统命令集,也能被系统中其他应用程序调用。中其他应用程序调用。2. Shell2. Shell还是一种高级程序设计语言还是一种高级程序设计语言 它有变量、关键字,有各种控制语句,如它有变量、关键字,有各种控制语句,如if if、casecase、whilewhile、forfor等语句,通过在多条命令的序列中使用变量等语句,通过在多条命令的序列中使用变量和流程控制,有自己的语法结构。利用和流程控制,有自己的语法结构。利用ShellShell程序设计语程序设计语言可以
32、编写出功能强大的代码程序。言可以编写出功能强大的代码程序。 2022-5-1834、ShellShell有很多种有很多种 Shell Shell有很多种,如:有很多种,如:csh,tcsh,pdksh, ash, csh,tcsh,pdksh, ash, sash, zsh,bashsash, zsh,bash等。等。 Linux Linux的缺省的缺省ShellShell为为bash(Bourne Again Shell)bash(Bourne Again Shell)。其中最常见的是其中最常见的是Bourne ShellBourne Shell(shsh)、)、C ShellC Shell
33、(cshcsh)和和Korn Shell(ksh)Korn Shell(ksh)。三种。三种ShellShell各有优缺点。各有优缺点。 2022-5-1835 Bash Bash是大多数是大多数LinuxLinux系统的默认系统的默认ShellShell。BashBash有以有以下的优点:下的优点: 1 1)补全命令)补全命令 在在BashBash命令提示符下输入命令或程序名时,若没命令提示符下输入命令或程序名时,若没有输全命令或程序名,按有输全命令或程序名,按“Tab”“Tab”键,键,BashBash将自动补全将自动补全命令或程序名。命令或程序名。 2 2)通配符)通配符 在在BashB
34、ash下可以使用通配符下可以使用通配符“* *”和和“?”。“* *”可可以替代多个字符,而以替代多个字符,而“?”则替代一个字符。则替代一个字符。 3 3)历史命令)历史命令 BashBash能自动跟踪用户每次输入的命令,并把输入能自动跟踪用户每次输入的命令,并把输入的命令保存在历史列表缓冲区中。的命令保存在历史列表缓冲区中。2022-5-18364 4)别名)别名 在在BashBash下,可用下,可用aliasalias和和unaliasunalias命令给命令或可执行命令给命令或可执行程序起别名和删除别名,这样就可以用自己习惯的方式输程序起别名和删除别名,这样就可以用自己习惯的方式输入命
35、令。入命令。5 5)输入)输入/ /输出重定向。输出重定向。 输入重定向用于改变命令的输入,输出重定向用于改输入重定向用于改变命令的输入,输出重定向用于改变命令的输出系统默认的输入为键盘、输出为显示器变命令的输出系统默认的输入为键盘、输出为显示器 ,输,输入入/ /输出重定向可以改变输入输出。输出重定向可以改变输入输出。6 6)管道)管道 管道用于将一系列的命令连接起来,也就是把前面命管道用于将一系列的命令连接起来,也就是把前面命令的输出作为后面命令的输入。管道的命令是令的输出作为后面命令的输入。管道的命令是“|”“|”。管。管道的功能和用法与道的功能和用法与DOS/WindowsDOS/Wi
36、ndows系统的完全相同。系统的完全相同。 2022-5-18378.2.2 Shell8.2.2 Shell脚本编程脚本编程 由于由于ShellShell擅长系统管理任务,所以用户可以通过擅长系统管理任务,所以用户可以通过使用使用ShellShell使大量的任务自动化,就象使用使大量的任务自动化,就象使用DOSDOS操作系操作系统的过程当中,会执行一些重复性的命令,将这些大统的过程当中,会执行一些重复性的命令,将这些大量的重复性的命令写成批处理命令,通过执行这个批量的重复性的命令写成批处理命令,通过执行这个批处理命令来代替执行重复性的命令。在处理命令来代替执行重复性的命令。在LinuxLin
37、ux系统中也系统中也有类似的批处理命令,被称为有类似的批处理命令,被称为ShellShell脚本。脚本。2022-5-18381.1.建立脚本建立脚本 使用使用vivi、EmacsEmacs等编等编ShellShell脚本。脚本。LinuxLinux系统下的系统下的ShellShell默认默认BashBash。 在建立在建立ShellShell脚本程序的开始,首先应指明使用哪种脚本程序的开始,首先应指明使用哪种ShellShell来解释所写的脚本,第一行必须是如下格式:来解释所写的脚本,第一行必须是如下格式: #! /bin/sh #! /bin/sh 2022-5-1839 符号符号#!#!
38、用来指定该脚本文件的解析程序。在上面例子中使用来指定该脚本文件的解析程序。在上面例子中使用用/bin/sh/bin/sh来解析该脚本。当编辑好脚本后,如果要执行该来解析该脚本。当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性。可以利用下面的语句改脚本,还必须使其具有可执行属性。可以利用下面的语句改变文件的属性为可执行属性。变文件的属性为可执行属性。 chmod+x filename chmod+x filename 在进行在进行shellshell编程时,以编程时,以# #开头的句子表示注释,直到这一开头的句子表示注释,直到这一行的结束。行的结束。 2022-5-18402.Shel
39、l2.Shell变量变量 Shell Shell脚本中主要有系统变量、环境变量和用户变量,其中脚本中主要有系统变量、环境变量和用户变量,其中用户变量在编程过程中使用较多,系统变量在对参数判断和用户变量在编程过程中使用较多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置,由于是解释型的,所以变量不必事先对它进行定需要设置,由于是解释型的,所以变量不必事先对它进行定义。义。1 1)常用的环境变量)常用的环境变量 在用户登录过程中系统要做的一件事就是建立用户环境,在用户登录过程中系统要做的一件事就是建立用户环境,
40、就是就是Shell Shell 下的控制及设置,包括文件搜索路径、用户目录下的控制及设置,包括文件搜索路径、用户目录和系统提示符等。和系统提示符等。LinuxLinux(ShellShell)环境由许多变量和这些变)环境由许多变量和这些变量的值组成,通过设置这些环境变量来控制用户环境。量的值组成,通过设置这些环境变量来控制用户环境。2022-5-1841(1 1)HOMEHOME:用户主目录的全路径名。主目录是:用户主目录的全路径名。主目录是开始工作的位置,默认情况下,普通用户的主目录开始工作的位置,默认情况下,普通用户的主目录为为/home/home/用户名,用户名,rootroot用户的主
41、目录为用户的主目录为/root/root。例如:如果你的用户名为例如:如果你的用户名为mynamemyname,则,则HOMEHOME的值的值为为/home/myname/home/myname。要使用环境变量或其他要使用环境变量或其他ShellShell变量,必须在变变量,必须在变量名前加上一个量名前加上一个“$”$”符号而不能直接使用变量名。符号而不能直接使用变量名。2022-5-1842(2 2)LOGNAMELOGNAME 用户名(注册名),由用户名(注册名),由LinuxLinux自动设置,系统通过与自动设置,系统通过与LOGNAMELOGNAME变量确认文件的所有者,有权执行某个命
42、令变量确认文件的所有者,有权执行某个命令等。等。 (3 3)PATHPATH ShellShell从中查找命令的目录列表。从中查找命令的目录列表。例如:例如: PATH=$PATH:$HOME/bin PATH=$PATH:$HOME/bin 2022-5-1843(4 4)PS1PS1 Shell Shell的主提示符,既在的主提示符,既在ShellShell准备接受命令时显示准备接受命令时显示的字符串,的字符串,PS1PS1定义你的主提示符是怎样构成的。一般定义你的主提示符是怎样构成的。一般设为设为PS1=PS1=uh Wuh W$ $ 意思是:用户名意思是:用户名主机名主机名 当前目录。
43、当前目录。(5 5)PWDPWD 你当前的工作目录的路径,它指出目前你在什么位你当前的工作目录的路径,它指出目前你在什么位置。置。(6 6)SHELLSHELL 你当前使用的你当前使用的ShellShell和和ShellShell放在什么位置。例如,放在什么位置。例如,查看用户登录系统时默认使用的查看用户登录系统时默认使用的ShellShell。2022-5-18442 2)ShellShell用户变量用户变量ShellShell用户变量是使用最多的变量,可以使用任何用户变量是使用最多的变量,可以使用任何不包含空格字符的字串作为变量名称,可以用复制符号不包含空格字符的字串作为变量名称,可以用复
44、制符号(= =)给变量赋值。变量赋值时,)给变量赋值。变量赋值时,“=”“=”左右两边都不能左右两边都不能有空格,有空格,BASHBASH中的语句结尾不需要分号。中的语句结尾不需要分号。下面是变量示例:下面是变量示例:#varname=value :#varname=value :赋值赋值 #readonly varname #readonly varname :标记只读:标记只读#export varname #export varname :标记移出,变量可以被子进:标记移出,变量可以被子进程继承程继承2022-5-1845 #setenv PATH=/home:/usr:/etc:/bi
45、n:/usr/bin: #setenv PATH=/home:/usr:/etc:/bin:/usr/bin: (csh(csh中中) ) #varname=expr $varname + 1 #varname=expr $varname + 1 :变量值增:变量值增1 1 x=$ $x + 1 x=$ $x + 1 #echo $PATH #echo $PATH 在在shellshell编程中,所有的变量都由字符串组成,并且不编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明。需要预先对变量进行声明。2022-5-1846例如例如: :#!/bin/sh#!/bin/sh#set
46、 variable a#set variable aa=hello worlda=hello world#print a#print aEcho A is:Echo A is:echo $aecho $a2022-5-18473.3.流程控制流程控制1 1)条件控制)条件控制 (1 1)testtest命令命令 测试文件、变量的属性,表达式的值,或命令执行返回测试文件、变量的属性,表达式的值,或命令执行返回值。值。test d /usr -d /usr test d /usr -d /usr test f .bashrc -f .bashrc test f .bashrc -f .bashrc
47、 test $count gt 0 $count gt 0 test $count gt 0 $count gt 0 2022-5-1848 (2 2)if if语句语句 if (expression) then if (expression) then command-list command-list else else command-list command-list fi fi2022-5-1849(3 3) case case语句语句 case $var in case $var in pattern1) command-list ; pattern1) command-list
48、; pattern2) command-list ; pattern2) command-list ; esac esac2022-5-1850(4 4)逻辑运算符)逻辑运算符 & & 和和 | |# test f myfile.c & echo “file found”# test f myfile.c & echo “file found”If test f myfile.c thenIf test f myfile.c then echo “file found” echo “file found”fi fi# test f myfile.c | | ec
49、ho “file not found”# test f myfile.c | | echo “file not found”If test ! f myfile.c thenIf test ! f myfile.c then echo “file not found” echo “file not found”fi fi2022-5-18512 2) 循环控制循环控制 (1 1)forfor语句语句 for var in word-list for var in word-list do do command-list command-list done done 2022-5-1852 例如
50、:例如: #!/bin/bash #!/bin/bashfor day inSun Mon Tue Wed Thu Fri Satfor day inSun Mon Tue Wed Thu Fri Satdodo echo$day echo$daydonedone 在该例中,在在该例中,在forfor所在那行,变量所在那行,变量dayday是没有加是没有加$符号的,而在循环体内,符号的,而在循环体内,echoecho所在行变量所在行变量$day$day是必须是必须加上加上$符号的。符号的。2022-5-18534.shell4.shell脚本的执行脚本的执行 执行执行shellshell脚本的
51、方式基本上有下述三种。脚本的方式基本上有下述三种。1 1)设置好脚本的执行权限之后在执行脚本。可以用下面)设置好脚本的执行权限之后在执行脚本。可以用下面的方式设置脚本的权限:的方式设置脚本的权限: (1 1)chmod u+x scriptname chmod u+x scriptname 只有自己可以执行,只有自己可以执行,其他人不能执行。其他人不能执行。 (2 2)chmod ug+x scriptname chmod ug+x scriptname 只有自己以及同一群只有自己以及同一群可以执行,其他人不能执行。可以执行,其他人不能执行。 (3 3)chmod +x scriptname
52、chmod +x scriptname 所有人不能执行。所有人不能执行。 设置好执行权限之后就可以执行脚本程序了。设置好执行权限之后就可以执行脚本程序了。2022-5-1854例如:编辑好脚本文件例如:编辑好脚本文件test1.shtest1.sh。 $chmod +x test1$chmod +x test1 $ ./ test1 $ ./ test12 2)使用)使用BashBash内部命令内部命令“source”source” $ source test1 $ source test13 3)直接使用)直接使用shsh命令来执行。命令来执行。 $ sh test1$ sh test14
53、4) 输入重定向。即用输入重定向方式让输入重定向。即用输入重定向方式让shellshell从给定从给定文件中读入命令行,并进行相应处理。其一般形式:文件中读入命令行,并进行相应处理。其一般形式: bash bash 脚本名脚本名 $sh dircmp$sh dircmp2022-5-18551. 1. 元字符和文件名生成元字符和文件名生成 1 1) UNIX UNIX元字符元字符( (通配符通配符) )的定义的定义* * 匹配任何字符串,包括空字符串;匹配任何字符串,包括空字符串;?匹配任何单个字符;?匹配任何单个字符;.,-,!.,-,!按照范围、列表或不匹配等形式匹配指定按照范围、列表或不
54、匹配等形式匹配指定的字符;的字符;转意符,使元字符失去其特殊的含义。转意符,使元字符失去其特殊的含义。例如例如:a-da-d,x x,y y 匹配字符匹配字符a a、b b、c c、d d、x x、y y; z z* * 匹配以字符匹配以字符z z开始的任何字符串;开始的任何字符串;8.2.3 shell8.2.3 shell命令的集成命令的集成2022-5-18562) 2) 元字符作为文件扩展名的使用元字符作为文件扩展名的使用例如例如:a-fa-f* * 匹配字符匹配字符a a到字符到字符f f开头的文开头的文件名,如件名,如abcabc,d2d2,e3.ce3.c,f.datf.dat;
55、 * *z z 匹配以字符匹配以字符z z结尾的任何字符串,结尾的任何字符串,如如win.zwin.z,core.zzcore.zz,a-c-5za-c-5z; rc?.d rc?.d 匹配以匹配以rcrc开始、以开始、以.d.d结束、中间结束、中间为任何单个字符的文件名,如为任何单个字符的文件名,如rc0.drc0.d,rc2.drc2.d,rcS.drcS.d; * *!o!o 匹配不以匹配不以o o结尾的文件名。结尾的文件名。2022-5-18572. 2. 管道和命令表管道和命令表 在在shellshell中有两种结构类型:管道线和命令表。当中有两种结构类型:管道线和命令表。当shel
56、lshell检测到一个管道操作符时,就建立一个系统管道文检测到一个管道操作符时,就建立一个系统管道文件,这是一个先进先出的数据结构,它允许在同一时刻件,这是一个先进先出的数据结构,它允许在同一时刻对管道线上的命令或程序进行读和写,即允许两个无关对管道线上的命令或程序进行读和写,即允许两个无关的命令通过管道连接交换信息。的命令通过管道连接交换信息。 2022-5-1858 1) 1) 管道的概念管道的概念 管道:管道:一个命令的标准输出与另一个命令的标准输一个命令的标准输出与另一个命令的标准输入之间的连接,不经过任何中间文件;入之间的连接,不经过任何中间文件; 管道线:管道线:由管道操作符分隔的
57、一个命令序列,最简由管道操作符分隔的一个命令序列,最简单的管道线是一个简单命令;单的管道线是一个简单命令; 管道操作符:管道操作符:用符号用符号“|”“|”表示。表示。例如:例如: w|wc -lw|wc -lps aux|grep ftpps aux|grep ftp2022-5-1859 2 2)命令表的概念)命令表的概念 命令表:一串管道线构成了一个命令表,最简单的命命令表:一串管道线构成了一个命令表,最简单的命令表是一个管道线,一个命令表送回的值是该命令表中最令表是一个管道线,一个命令表送回的值是该命令表中最后一个管道线的出口状态。后一个管道线的出口状态。管道线分隔符:分隔命令表元素,
58、确定管道线执行的条件。管道线分隔符:分隔命令表元素,确定管道线执行的条件。各分隔符含义如下:各分隔符含义如下: ; 表示按顺序执行管道线;表示按顺序执行管道线; & & 表示根据条件表示根据条件(true)(true),执行其后面的管道线;,执行其后面的管道线; 表示根据条件表示根据条件(false)(false),执行其后面的管道线;,执行其后面的管道线; & & 表示前面的管道线在后台表示前面的管道线在后台( (异步异步) )执行。执行。2022-5-1860例例1 1: 四个管道线构成一个命令表四个管道线构成一个命令表 ls -l /tmp /rootls
59、 -l /tmp /root w|wc -l w|wc -l ps ps例例2 2: 与例与例1 1等价等价 ls -l /tmp /root ls -l /tmp /root ;w|wc -l w|wc -l ;psps2022-5-18613 .3 .输入、输出重定向输入、输出重定向1 1)使用标准改向符进行重定向)使用标准改向符进行重定向( (改向改向) ) 输入改向输入改向 输出改向输出改向 追加输出改向追加输出改向2022-5-18622 2)使用标准文件描述字进行重定向)使用标准文件描述字进行重定向( (改向改向) ) 在在LinuxLinux系统中,定义了用于输入、输出的标准文件
60、,系统中,定义了用于输入、输出的标准文件,其文件描述字其文件描述字0 0为进程的标准输入、文件描述字为进程的标准输入、文件描述字1 1为标准为标准输出、文件描述字输出、文件描述字2 2为标准错误输出。为标准错误输出。3. 3. 标准错误输出的改向标准错误输出的改向(、)格式为:格式为:command 2 filecommand 2 filecommand 2 filecommand 2 file 2022-5-1863例例1 1: 将将myfile1myfile1作为作为sortsort的输入。的输入。sort myfile1sort myfile2date myfile2例例3 3: 将将ls |lls |l的输出追加到的输出追加到myfile3myfile3文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026边检协管员的面试题及答案
- 癌痛规范化治疗指南
- 2025年中国甲横酸达氟沙星市场调查研究报告
- 2025年中国特种胶市场调查研究报告
- 2025年中国游离脂肪酸试剂盒市场调查研究报告
- 2025年中国活甲鱼市场调查研究报告
- 2025年中国水终端处理器市场调查研究报告
- 2025年中国可拆式螺旋板换热器市场调查研究报告
- 2026北京公安局遴选面试题及答案
- 气道护理中的评估方法
- 2026年口腔科放射防护制度(3篇)
- 2026年福建泉州市初二学业水平地理生物会考试卷题库及答案
- 2026四川省引大济岷水资源开发有限公司第二批次招聘68人考试备考试题及答案解析
- 2026年沈阳一模地理试卷及答案
- 2026年杭州市融资担保集团有限公司政策性担保业务试题及答案
- 国元证券股份有限公司招聘笔试题库2026
- 2026广东中山人才和数字集团有限公司下属中山人才科创投资有限公司招聘笔试参考题库及答案解析
- 2026年时事政治知识点梳理(高考)
- 2026中国金融监管科技发展现状与标准化建设及国际经验借鉴报告
- 网络安全舆情监测与处置手册
- 驻马店市2026乡村振兴专干招聘考试笔试题含本地三农政策
评论
0/150
提交评论