unix shell学习笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1文件安全与权限文件一经创建,就具有三种访问方式:1)读,可显示文件的内容2)写,可以编辑或删除它3)执行,如果该文件是一个shell脚本或程序按照所针对的用户,文件的权限可分为三类:1)文件属主,创建该文件的用户2)同组用户,拥有该文件的用户组中的任何用户3)其他用户,即不属于用户有该文件的用户组的某一用户1.1文件类型文件类型有七种:1.2权限使用touch命令创建一个文件:第一个横杠:表示该文件时一个普通文件。Myfile在创建时并未给属主赋予执行权限,在用户创建文件时,系统不会自动地设置执行权限位。1.3改变权限位使用chmod命令来改变文件权限的设置1.3.1符号模式Chmod命令的一般格式:如果在一个目录上出现“t”位,这就意味着该目录的文件只有其属主可以删除,即使某个同组用户具有和属主同等的权限。如果在文件列表时看到“t”,那么就意味着该脚本或程序在执行时会被放在交换区(虚存)。1.3.2绝对模式Chmod命令绝对模式的一半形式:可以通过使用-R选项连同子目录下的文件一起设置。1.4目录目录的权限位和文件有所不同。目录的读权限意味着可以列出其中的内容。写权限意味着可以在该目录中创建文件。执行权限意味着可以搜索和访问该目录。1.5chgrp和chown1.5.1chgrp和chown的例子只有文件的属主和系统管理员可以改变文件的所有权。Chown命令的一般形式:Chown-R-hownerfile-R选项意味着多所有子目录下的文件也都可以进行同样的操作。-h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。1.5.2找出用户组找出自己属于哪些用户组,可以用以下命令。找出其他用户所在的组:1.6umask当登陆系统中时,umask命令确定了你创建文件的缺省模式。这一命令实际上和chmod命令正好相反。你的系统管理员必须要为你设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限。一般来说,umask命令是在etc/profile文件中设置的,每个用户在登陆时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性地设置自己的umask,那么就把它放在自己$HOME目录下的.profile文件中。1.6.1如何计算umask值Umask命令允许你设定文件创建时的缺省模式,对应每一类用户存在一个相应的umask值中的数字。这一个数字的最大值分别为6,系统不允许你在创建一个文本时就赋予它执行权限,必须在创建后使用chmod命令增加这一权限。目录则允许设置执行权限,umask的值最大可以为7例如,umask值002对应的文件和目录创建缺省权限分别为664和775,即是rw-rw-r--和rwxrwxr-x1.6.2查看umask值2使用find和xargsFind是一个非常有效的工具,它可以遍历当前目录甚至整个文件系统来查找某些文件或目录。2.1find命令选项Find命令的一般形式:参数说明:Pathnamefind命令超找的目录路径。.来表示当前目录/表示系统根目录。~表示你的$HOME目录-printfind命令将匹配的文件输出到标准输出。-execfind命令对匹配的文件执行该参数所给出的shell命令。相应的命令的形式为'command'{}\;注意{}和\;之间的空格。-ok和-exec的作用相同,但在执行每一个命令之前,都会给出提示,让用户来确定是否执行。2.1.1使用name选项文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。2.1.2使用perm选项按照文件权限模式来查找文件,使用-perm选项2.1.3忽略某个目录查找文件时希望忽略某个目录,可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为同时使用了-dept选项,那么-prune选项就会被find命令忽略。2.1.4使用user和nouser选项如果希望按照文件属主查找文件,可以给出相应的用户名。为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能找到那些属主在/etc/passwd文件中没有效帐户的文件。使用-nouser选项时,不必给出用户名。2.1.5使用group和nogroup选项就像user和nouser一样,针对文件所属于的用户组。2.1.6按照更改时间来查找文件如果希望按照更改时间来查找文件,就可以使用mtime选项。用减号-来限定更改时间在距今日n日以内的文件,而用加号+来限定更改时间在距离今n日以前的文件。2.1.7查找比某个文件新或旧的文件如果查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。它的一般形式:2.1.8使用type选项按文件类型查找在/etc目录下查找所有的目录:在当前目录下查找除目录以外的所有类型的文件:2.1.9使用size选项按照文件长度来查找文件,这里的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达式:Nc,以块计量文件长度只用数字表示即可。2.1.10使用dept选项在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用dept选项就可以使得find命令这样做。2.1.11使用mount选项在当前的文件系统中查找,不进入其他文件系统。使用find命令的mount命令。2.1.12使用exec或ok来执行shell命令当匹配到一些文件以后,可能希望对其进行某些操作,这时就可以使用-exec选项。任何形式的命令都可以在-exec选项中使用。匹配文件名为passwd*的文件,然后使用grep命令看看这些文件中是否存在一个rounder用户。2.2xargs在使用-exec选项处理匹配到的文件时,find命令将所有的匹配到的文件一起传递给exec执行,不幸的是,有些系统对传递给exec的命令长度有限制。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部。3后台执行命令3.1cron和crontabCron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做crontab的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。3.1.1crontab的域Crontab文件格式和意义:格式:每列的含义:3.1.2crontab条目举例每晚的21:30运行/apps/bin目录下的clearup.sh每月的1,10,22日的4:45运行/apps/bin目录下的backup.sh3.1.3crontab命令选项Crontab命令的一般形式:3.1.4创建一个新的crontab文件在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。Cron进程根据它来确定使用哪个编辑器来编辑crontab文件。在$HOME目录的.profile文件加入:ExportEDITOR=vi建一个名为usercron的文件,其中user是用户名,例如davecron。在该文件中加入:3.1.5列出crontab文件3.1.6编辑crontab文件如果修改了某些条目或添加了新的条目,在保存该文件时,cron会对其进行必要的完整性检查,如果其中的某个域出现了超出运行范围的值,它会提示你。3.1.7删除crontab文件3.1.8恢复丢失的crontab文件如果不小心误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/username,如果由于没有权限问题无法完成拷贝,可以用:3.2at命令3.2.1使用at提交命令使用at命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用at命令提示符。一般来说在提交若干行的系统命令时,使用at命令提示符,而在提交shell脚本时,使用命令行方式。3.2.2列出所有提交的作业3.2.3清除一个作业3.3&命令可以使用&命令把作业放到后台执行。该命令的一般形式:不过,作业在后台执行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把他的输出重新定向到某个文件中。3.3.1向后台提交命令3.3.2用ps命令查看进程3.3.3杀死后台进程Kill命令的基本形式:3.4nohup命令如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。3.4.1使用nohup命令提交作业4文件名置换4.1使用*使用星号*可以匹配文件名中的任何任何字符串。4.2使用?使用?可以匹配文件名中的任何单个字符。4.3使用[....]和[!....]使用[...]可以用来匹配方括号[]中的任何字符。还可以用一个横杠-来连接两个字母或数字,以此来表示一个范围。5shell输入与输出在shell脚本中,可以有几种不同的方式读入数据:使用标准输入---缺省为键盘或者指定一个文件作为输入。对于输出也是一样,如果不指定某个文件作为输出,标准输出总是和终端相关联。5.1echo使用echo命令可以显示文本行或变量,或者把字符串输入到文件。一般形式:还可以用echo命令输出转义符以及变量。5.2read可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或回车。它的一般形式:如果输入文本过长,shell将所有的超长部分赋予最后一个变量。5.3catCat是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制符。在使用cat命令时要注意,它不会在文件分页符处停下来,它会显示完整整个文件。如果希望每次显示一页,可以使用more命令。5.4管道可以通过管道把一个命令的输出传递给另外一个命令的输入。管道用|表示,它的一般形式:5.5teeTee命令作用可以用字母T来形象地表示。它把输出的一个副本送到标准输出,另一个副本拷贝到相应的文件中。5.6标准输入、输出和错误当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系。系统中实际上有12个文件描述符,但是0,1,2是标准输入、输出、和错误,可以任意使用文件描述3到9。5.6.1标准输入标准输入时文件描述符0。它是命令的输入,缺省时键盘,也可以是文件或其他命令的输出。5.6.2标准输出标准输出时文件描述符1。它是命令的输出,缺省时屏幕,也可以是文件。5.63标准错误标准错误是文件描述符2,这是命令错误的输出,缺省时屏幕,同样也可以是文件。5.7文件重定向在执行命令时,可以指定命令的标准输入与输出和错误。在对标准错误进行重定向时,必须要使用文件描述,但是对于标准输入和输出来说,这不是必须的。5.7.1重新定向标准输出在使用sort命令时(或其他含有相似输入文件参数的命令),重定向符一定要离开sort命令两个空格,否则该命令会把它当做输入文件。5.7.2重定向标准输入5.7.3重定向标准错误/dev/null实际上就是系统的垃圾箱还可以把错误追加到一个文件中。5.8结合使用标准输出和标准错误5.9合并标准输出和标准错误在合并标准输出和标准错误时,切记shell是从左到右分析相应的命令的。我们将cleanup脚本的输出重定向到cleanup.out文件中,并且错误也被重定向到相同的文件中。5.10execExec命令可以用来替代当前shell,换句话说,并没有启动子shell。使用这一命令时任何现有环境都将会被清除,并重新启动一个shell。6命令执行顺序6.1使用&&这种命令执行相当地直接,&&左边的命令返回真(即返回0,成功被执行)后,&&右边的命令才能被执行。6.2使用||6.3用()和{}如果希望把几个命令合在一起执行,shell提供了两种方

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功