




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一次学shell编程,看的文章中说shell程序必须以#!/bin/sh开始,也就认为是这样了。 虽然知道在shell中以#开始的语句都是注释,但也从没认为#!/bin/sh也是注释,就像对C语言程序必须有main函数一样毫无怀疑。 但前些时候又听说#!/bin/sh也是注释,可有可无,当时觉得真是一个失败,连基本的语法都分不清。 前几天借了一本书,才真正认识了#!/bin/sh。 shell编程是以#为注释,但对#!/bin/sh却不是。 #!/bin/sh是对shell的声明,说明你所用的是那种类型的shell及其路径所在。 如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell。 比如:如果脚本被编写为在Korn Linux中运行,而默认运行shell脚本的为C shell csh,则上述脚本在执行过程中很可能失败。 所以建议大家就把#!/bin/sh当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。 即: #!/bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。那我们真的能写一个/bin/echo的脚本文件吗?我们来试试,下面是一个例子:代码:#!/bin/echo e这只有一行的程序(实际上它也只能是一行,echo程序并不是被设计成像awk那样的编程语言,能写成源程序文件)命名为myecho,加上权限后执行它:代码: $ ./myecho hia ./myecho hi 如果你的echo支持-e选项并且你工作的环境还算安静,你在得到上面的结果的时候也应该听到清脆的终端响铃。但这种程序是毫无作用的。1、linux分区 -在linux里面所有的设备、任何东西,在linux看来都是文件。 -文件在它看来,有两种形式: 第一种是字符型(键盘输入、打印机); 第二种是二进制型(硬盘、光驱、U盘) -linux中所有硬件 -手动分区 -A、至少有两个分区 / 根分区 SWAP 交换分区(物理内存大小的两倍) -B、个人桌面分区 / /boot 128MB is enough /usr SWAP /tmp(用于光盘刻录) 2、linux目录说明 -/dev/xxyN -xx (分区所在设备类型:hd-IDE硬盘 sd-SCSI硬盘) -y (标明分区所在设备 例如:/dev/hda 第一个IDE硬盘 或 /dev/hdb 第二个IDE硬盘 或 /dev/sdb 第二个SCSI硬盘) -N (数字代表分区:1-4-主分区或扩展分区;逻辑分区从5开始! 例如:/dev/hda3 第一个IDE硬盘上的第三个主分区或扩展分区 /dev/sdb6 第二个SCSI硬盘上的第二个逻辑分区) 3、linux目录结构 / 根目录,最高级别 /bin 系统基本命令存放目录(/usr/bin) /boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img) 一般情况下,GRUB或LILO系统引导管理也位于这个目录 /dev 设备文件存储目录,如声卡、光驱. /ect 存放系统设置文件(如用户账号密码、服务器配置文件等) /home 普通用户家目录,默认存放目录 /lib 库文件存放目录 /lost+found 在ext2或ext3文件系统中,当系统以外崩溃或机器意外关机,而产生一些文件碎片放在这里。 当系统启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统。 有事喜用发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或者移文件到原来的位置上。 /media 即插即用型存储设备的挂载点自动在这个目录下创建。 如USB盘系统自动挂在后,会在这个目录下产生一个目录; 类似cdrom的目录 /mnt 存放挂载存储设备的挂载目录,如cdrom等目录 /opt 表示可选的意思,有些软件包也会被安装在此,也就是自定义软件包, 比如OpenOffice,或者一些我们自己编译的软件包,也可安装此处。 /proc 操作系统运行时,进程(正在运行的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在此。 /proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统 /root linux超级权限用户root的家目录 /sbin 大多是涉及系统管理的命令的存放,只有超级权限用户root才可执行命令存放,普通用户无权限执行此目录下的命令 与 /usr/sbin; /usr/X11R6/sbin; usr/local/sbin 目录相似 (sbin,只有root权限才能执行) /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。 /var/tmp目录和此目录相似 /usr 系统存放程序的目录,如命令、帮助文件等。这个目录下有很多的文件和目录。 大部分Linux发行版提供的软件包都安装在此,涉及服务器的配置文件就安装在/ect中。 /usr/share/fonts 字体目录 /usr/share/man 或 /usr/share/doc 帮助目录 /usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin 普通用户可执行文件目录 /usr/sbin 或 /usr/local/sbin 或 /usr/X11R6/sbin 超级权限用户root可执行命令存放目录 /usr/include 程序头文件存放目录 /var (vary)此目录经常变动 /var/log 用来存放系统日志 /var/www 用来定义Apache服务器站点存放 /var/lib 用来存放一些库文件,如MySQL的,以及MySQL数据库的存放地。 4、基本命令 -查看帮助 * -help * -? -查看详细帮助 man * -登录 login -退出窗口 exit -关机 shutdown -重启 reboot -初始化 init (run level -/etc/inittab),0-6看第六部分的g -进入根目录 cd / -回上层目录 cd . -相对路径 cd dev -绝对路径 cd /dev -查用户名 whoami -查当前目录 pwd -列出当前目录内容 ls -l(树详细显示目录内容) -m(横列显示目录内容,是屏幕长度显示) -a(列出全部文件,包括隐藏文件) -S(以文档大小排序) -创建目录 mkdir dname -删除目录 rmdir dname rm -r * -(递归删除该目录下所有内容,询问每个准备删除的文件) rm -rf *-(强制删除该目录下所有内容,不询问) -创建空白文件 touch * (ps:从技术的角度来讲,linux的文件后缀名没有任何意义) -复制 cp cp -r *1 *2 (复制1到2中) -移动 mv mv -t *1 *2 (把2移动到1中) -编辑文本 vi 文件名 -查看文本 cat 由第一行开始显示文本內容 tac 从最后一行显示,可以看出 tac 是 cat 的倒着写 more 一页一页的显示文档內容 less 与 more 类似,可以往前翻页 head 只看头几行 -N(数字,可根据行数显示) tail 只看后几行 -N(数字,可根据行数显示) nl 显示的時候,顺序输出行号 od 以二进制位的方式读取档案內容 -查找文本 find 路径查找类型搜索文件名 如查找rc.local find /etc -name *.local -查找命令信息及其位置 whereis 命令 如 whereis ls -查看环境变量 echo $SHELL 如 echo $PATH (分大小写:分隔符是:,windows是echo %path%;) -链接 ln 如 ln joe.txt a (硬链接,如同复制一个新文件,joe.txt删除后,a还存在) a是链接的名称,a和joe.txt同步,然后a的内容和joe.txt一样 joe.txt改变,a也跟着变 如 ln -s joe.txt b (软链接,如同创建一个快捷方式,joe.txt删除后,b不存在) -wc 统计指定文本文件的行数、字数、字符数 -grep(很常用) 在指定的文本文件中查找指定的字符串 grep 字符串 文件名 -col 见管道. - -信息显示命令- - -date 显示和设置日期 -stat 显示指定文件的相关信息 -who、w 显示在线登录用户 -whoami 显示用户自己的身份 -id 显示当前用户的id信息 -hostname 显示主机名称 -uname 显示操作系统信息 -dmesg 显示系统启动信息 -du 显示指定的文件(目录)已使用的磁盘空间 -df 显示文件系统磁盘空间的使用情况 -free 显示当前内存和交换空间的使用情况 -fdisk -l 显示磁盘信息 -locale 显示当前语言环境 5、挂载点(mount 设备目录 挂载目录) -访问设备 (那设备当成一个文件,和另外一个文件夹进行绑定) -例如挂载光驱:步骤 cd /mnt-mkdir cdr-mount /dev/cdrom /mnt/cdr-cd cdr-OK!直接访问光驱内容 -卸载挂载设备(umount /dev/cdrom)-注意必须先退出挂载目录,否则出现device is busy错误. 6、startup-shutdown(linux启动流程) -A、boot sequence(important) linux启动过程 a. load bios(hardware information) b. read MBRs config to find out the OS (MBR-Master Boot Record,硬盘第一个物理扇区,柱面0、磁头0、扇区1,包含主引导程序和硬盘分区表) c. load the kernel of the OS (加载为kernel核心的OS) d. init process starts. (启动linux第一个进程init) e. execute /etc/rc.d/sysinit (执行系统最重要的配置文件,后台启用进程) (rc.d-run command) f. start other modules(stc/modules.conf) (开启各种模块,如内存管理模块、硬盘管理模块) g. execute the run level scripts (系统启动是分层次的,根据情况执行,每个层次之间没关系) 0 - 系统停机状态 1 - 单用户工作状态 root 2 - 多用户状态(没有NFS) 3 - 多用户状态(有NFS) NFS - Network File System 网络文件系统,联网系统 4 - 系统未使用,留给用户 5 - 图形界面 6 - 系统正常关闭并重新启动 如:cd /etc - 有rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d等多个文件夹,保存着各个层次执行的进程文件 h. execute /etc/rc.d/rc.local (重要) (保存其它进程脚本,如tomcat自动启动,要修改此配置文件) i. execute /bin/login (登录界面) j. shell started. 7、vi 文本编辑器 -两种模式:命令模式 编辑模式 -vi 文件名 (切换到编辑模式) a append-光标后添加 i insert-光标前插入 o open-另起一行编辑 esc (切换回命令模式) :w 存盘 :wq 存盘退出 :q 退出 :q! 不存盘退出 dd 删除其中一行 dw 删除一个单词 (sudo gedit 文本 常用linux下的文本编辑器,比vi好用) 8、用户设置 -切换用户(switch user) su username 小技巧:直接exit切换 -添加用户 useradd username -g 组名(分配到某个用户组) (创建后会自动在/home目录下创建该新用户的文件夹,如/home/username) -设置密码 passwd username -cd /etc -查看用户信息 more password 如新增的用户信息:username:x:500:500:/home/username:/bin/bash 第一个数字,代表用户组,当添加用户没有指定用户组时,系统会创建一个和用户ID一样的组ID; 第二个数字:用户ID号; 用户的目录是/home/username; 用户的SHELL是/bin/bash (命令-SHELL解释命令-kenrel内核) SHELL有多种类型,如csh、bash(常用)、bsh、ksh、sh(最原始) -添加用户组 groupadd groupname -查看用户组信息 more group -删除用户组 groupdel groupname -修改用户 usermod -g 组名 用户名 -删除用户 userdel username 然后把/home的文件夹删除了 rm -rf 文件夹 9、权限file privilege -linux把文件的权限分成四种:r:read w:write x:execute -:none 如:-rw-r-r- lrwxrwxrwx drwxr-xr-x drwxr-xr-x 第一个数字-代表文件,其余是文件夹,后9位分为3组,每组有四种权限设置rwx- 第一位表示文件所有者 第二位表示和所有者在同一用户组的用户 第三位表示不在同一用户组的用户权限 -设置权限 (随意应用,灵活组合!) 1、普通用法 -添加权限 chmod +x 文件 如:-rw-r-r- - -rwxr-xr-x -删除权限 chmod -x 文件 如:-rwxr-xr-x - -rw-r-r- -给自己添加权限 chmod ?+x 文件 如此类推,组-g,其他人-o 如:chmod u+x -rw-r-r- - -rwxr-r- chmod g+x -rw-r-r- - -rw-r-xr- chmod o+x -rw-r-r- - -rw-r-r-x 2、专业用法 chmod 755/777 -原理,八进制转二进制 如755,111 101 101, rwx r-x r-x 777,111 111 111, rwx rwx rwx -修改所有者权限 chown (change owner) 如:chown 原来文件 file1 的所有者是 root,改成joe的 chown joe file1 10、管道(把上一个命令执行的结果交给下一个命令) -使用方法: 命令1|命令2|命令3.|命令n -使用举例 -$ls -Rl /etc | more (如 ls -Rl /etc (在控制台模式下,无法返回前面过去的信息),因此需要管道执行该查询,实现分页的工作, ls -Rl /etc | more) -$cat /etc/passwd | wc (显示文件结果,再数数有多少行) -$cat /etc/passwd | grep lrj (显示文件结果,再查找包含lrj的行) -#dmesg | grep eth0 (显示系统启动的信息,再查找包含eth0的行-真正含义,检查网卡执行信息是否正常) -$man bash | col -b bash.txt 语法:col -bfx-l 补充说明:在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符和,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。 参数: -b 过滤掉所有的控制字符,包括RLF和HRLF。 -f 滤除RLF字符,但允许将HRLF字符呈现出来。 -x 以多个空格字符来表示跳格字符。 -l 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。 -$ls -l | grep d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市师范大学附属中学2025届物理高二下期末综合测试试题含解析
- 深度解读教育创新银行的儿童财商教育体系
- 三湘名校教育联盟2025年高一物理第二学期期末预测试题含解析
- 教育政策与医疗科技的融合发展
- 多媒体技术在教育培训中的应用与创新
- 教育技术与职场培训促进知识互换的策略探讨
- 教育科技创新引领未来教育方向
- 智慧城市安防监控系统的科技前沿与挑战
- 教育与科技结合推动动物防疫知识传播
- 中职情绪调适教案课件
- 山西省建设工程计价依据
- 内科学讲义(唐子益版)
- 煤矿在用安全设备检测检验制度
- GB/T 24632.2-2009产品几何技术规范(GPS)圆度第2部分:规范操作集
- GB/T 20428-2006岩石平板
- GB/T 11363-1989钎焊接头强度试验方法
- 内调焦准距式望远系统光学设计2022年
- 核磁共振的发展史课件
- 切纸机安全操作规程标准范本
- 国家开放大学2022秋法理学形考1-4参考答案
- 医院管理学考试(复习题)
评论
0/150
提交评论