1 / 83

Unix 文件名

Unix 文件名. 名字长度最多可达 255 个字符 扩展名可有可无,可以由 除了 / 外的所有 ASCII 字符组成 以下名字都是合法的 : letter1 let.ter1 .Letter_1 [letter1] -{}**LETTER1 @#$%^&*q.+() 但是最好只使用 点 ( . ), 横杆 ( - ), and 下划线 ( _ ), 而不要使用 @#$%^&* 等,以免不必要的麻烦 注意大小写有区别, p1 与 P1 看成不同文件名. Unix 文件系统.

dirk
Download Presentation

Unix 文件名

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unix 文件名 • 名字长度最多可达255个字符 • 扩展名可有可无,可以由除了/外的所有ASCII字符组成 • 以下名字都是合法的: letter1 let.ter1 .Letter_1 [letter1] -{}**LETTER1 @#$%^&*q.+() • 但是最好只使用点 (.),横杆 (-), and 下划线 (_),而不要使用@#$%^&*等,以免不必要的麻烦 • 注意大小写有区别,p1与P1看成不同文件名

  2. Unix文件系统 • 文件系统(把所有硬件软件都看成文件),包括普通文件,文件夹,以及设备文件。组织结构是树状层次结构(倒置的树结构-层次) • root是超级用户 • “/“代表根目录,包括所有的子文件夹

  3. Unix 文件系统 / bin dev lib home tmp sbin etc usr var dsk fd0 lp0 john jane bin sbin lib local progs scripts emails

  4. Unix 文件系统 • /bin和/usr/bin–包含常用的unix命令 • /sbin和 /usr/sbin–包含那些只用系统管理员才可以使用的命令 • /etc–包含系统配置文件 • /dev–包含所有硬件的设备文件 • /home–所有用户的主目录 • /tmp–用户可以在这里创建和保存临时文件。这些文件会被定期删除。 • /var–文件系统中的可变部分。包括比如你的打印任务、要发送的邮件队列,以及接收的邮件等 • /lib–包含所有库文件

  5. 用户目录 • 当用户登陆到服务器,默认所在的路径即用户目录 • 如,用户 Jane的目录 /home/jane • 相关的路径信息存放在文件 /etc/passwd • 命令 cd~(不要带参数)帮助用户回到自己的目录,无论当前用户在哪个路径。 ( . . 前一个目录 . / 当前路径 ~ 当前用户目录 / 根目录)

  6. 绝对/相对路径 • 从当前路径开始,访问文件有两种方式 • 使用absolute pathname(绝对路径),从根目录开始的路径 • 使用relative pathname(相对路径),从当前路径开始

  7. 绝对路径、相对路径 $ pwd(显示当前路径的命令) /home/jane $ ls -F emails/ letters/ $ cat /home/jane/emails/e1.txt 绝对路径 $ pwd /home/jane $ ls -F emails/ letters/ $ cat ./emails/e1.txt 相对路径

  8. 相关的文件命令 • cd - 进入其他目录,改变路径命令 • pwd–打印显示当前目录 • ls–列出目录下的内容 • mkdir–创建一个目录或一系列目录 • rmdir–删除一个目录或一系列目录 • rm - 删除一个或一系列文件 • mv–对目录或文件进行改名或移动 • cp - 拷贝文件、目录 • cat–显示文件内容 • file–显示文件类型 (eg, ascii text)

  9. cp命令常用选项 • 交互拷贝 (-i)(交互信息选项开关) • 拷贝目录结构,即拷贝目录下所有内容 (-r) - 以下命令把emails下的所有内容包括子目录拷贝到allmails下(emails和allmails都是目录) cp-i file1 file2 ./emails cp: overwrite file1? y cp -remailsallmails

  10. rm options • 交互删除 (-i) • 递归删除(-r) rm -i file1 file2 file3 file1: ? y file2: ? y rm -ir * rm -r * (当前目录下的所有内容包括子目录被完全删除!)

  11. rm options (cont) rm -rf * 强制删除 (当前目录树完全被删除,包括写保护文件!!) rm -rf * 当超级用户在根目录下执行该命令将从 硬盘上删除整个系统!!!

  12. 使用cat创建文件 • 创建小文件不需要通过文本编辑器 $ cat > hello.txt Hello, world! This is a test message [Ctrl-d]正常终止保存缓冲区数据 $ cat > hello.txt Hello, world! This is a test message [Ctrl-C]异常终止不保存缓冲区数据

  13. file: 查询文件类型 $ file hello.txt hello.txt: ascii text $ file * /file .* hello.txt: ascii text info.sh: executable shell script mail: directory Nn: directory Philos.c: C program text start: executable …

  14. 一些特殊的字符 • . (一点) –代表当前目录 • ..(两点)–代表当前目录的父目录,即上一级目录 • *(星号)–代表目录下的所有普通文件(不包括.和..以及名字以.开头等之类的特殊文件) • ?–代表单个字符 • ~(波浪号)–代表你的 主目录

  15. 一些特殊的字符 $ rm * 当前目录下的所有普通文件(不包括.和..以及名字以.开头等之类的特殊文件)都被删除。 $ pwd /u/jane $ cd ../.. $ pwd / $ cd / $ pwd / $ ls ~ emails letters $ ls chap? chapx chapy chapz $ ls chap?? chap01 chap02 chap03

  16. 文件压缩 • To conserve disk space you will need to compress large and infrequently used files • The most notable compression programs available are compress, gzip, and zip • compress和 gzip可以处理多个文件,压缩完后,原文件将被删除,以压缩后文件来替代 • zip会保留原文件,并且还可以把多个文件压缩到一个文件中(称为归档)

  17. 文件压缩 • Picture files with the .jpeg and .gif extensions won’t compress at all as these files themselves hold graphic data in compressed form File Typecompressgzipzip JPG 0 1 1 GIF 0 0 0 BMP 5 15 15 HTML 81 89 89 Text 68 71 70 PDF 52 70 70 PS 57 64 63 degree of compression (percentage)

  18. 文件压缩 compress e1.txt (生成文件 e1.txt.Z, 并删除原文件) uncompress e1.txt.Z (解压) compress * (压缩当前文件夹下的所有普通文 件,但不包括目录,并且每个文件 生成一个压缩文件) gzip e1.txt (生成 e1.txt.gz) gunzip e1.txt.gz (也可以用gzip –d el.txt.gz) zip htmls *.html (生成 htmls.zip.这个命令把当前文 件夹下的所有html文件压缩到文件 html.zip中) unzip htmls.zip

  19. 文件压缩 zip-r emailsdir emails (压缩整个目录树 (emails),生成emailsdir.zip) (compress和 gzip要把多个文件压缩到一个文件中, 必须先借助tar把多个文件归档为一个文件) tar-cvf emailsdir.tar emails (把一整个目录树 (emails)归档,生成 emailsdir.tar. 但并不压缩) tar-xvf emailsdir.tar (释放成一个目录 (emails))

  20. Internet上的压缩文件 • .zip–用zip来压缩的文件 • .tar–用tar来归档产生的文件,没有压缩 • .gz–用 gzip 来压缩产生的文件 • .tar.Z–先用 tar来归档,然后用 compress 来压缩产生的文件 • .tar.gz --先用 tar来归档,然后用 gzip来压缩产生的文件

  21. 找出空闲的磁盘空间 • 我们把UNIX文件系统看成一个只有一个根目录的树结构 • 实际上我们有多个硬盘,并且每个硬盘都至少有一个文件系统,并且每个文件系统都有它自己的根目录 • 启动进程把所有这些树形结构合并( merges)成一个,并且让它以一个单一的文件系统的形式出现

  22. 找出空闲的磁盘空间 • 我们可以使用 df (disk free) 命令来显示在每个磁盘上的空余空间 $df / (/dev/dsk/c0t0d0s0 ): 4122488 blocks 446163 files /dev/fd (fd ): 0 blocks 0 files /d01 (/dev/dsk/c0t8d0s0 ): 3197798 blocks 667713 files … … … ... 这里你看到三个文件系统. root文件系统 有4122488块(一个块的 大小一般是 512 or 1024 字节) 的空闲空间,并且还有剩余446163 个 inodes ,这意味着还可以在这个文件系统上创建很多文件。 (每个inode是一个数据结构,里面保存了文件的属性等信息, 按文件大小,一个文件占用一个inode)

  23. 查看磁盘的使用情况 • 我们经常需要查看一个特定目录而不是整个磁盘的使用空间,这时可以使用 - du (disk usage) 命令 $ du /u/jane 123 /u/jane/emails 89 /u/jane/letters … 2190 /u/jane $ du -s /u/jane 2190 /u/jane 系统管理员需要监视每一个用户home目录的磁盘空间使用情况。她就可以用du命令来查看磁盘的使用情况 This directory consumed 2190 blocks

  24. The Unix File Attributes (Chapter 7, Das)

  25. 文件属性 • 文件有一系列的属性 (权限,大小, 归属, 等) ,这些属性可以依据一定的规则来修改 • 我们将使用ls -l命令来显示属性,使用其他特定的命令来修改属性 • 我们也将讨论下 find命令- Unix文件系统中处理文件属性的有用工具之一

  26. ls命令选项 • -x以多列形式来显示 • -F在目录文件后添加/, 可执行文件后添加 *, 符号链接文件后添加 @ • -a显示所有文件 • -R递归显示子目录下的所有文件 (见下页的例子) • -l按ASCII字母顺序排列 (先是数字,然后 大写字母,然后小写字母) 并显示文件 的7个属性 • -i显示文件占用的inodes • 其他 (比如 -L, -d, -n, -u, -c, -s, … …)

  27. The Unix Files (cont) $ ls -F dir1/ dir2/ letter1 mails/ net@ net2@ output1* output2* park/ hello.java “-F”选项 在目录文件后添加 / 在可执行文件后添加 * 在符号链接文件后添加 @

  28. ls命令选项 $ ls -xR 08_tec.html TOC.sh dir1 dir2 letter1 net output2 park ./dir1: forms.hlp graphics.hlp ./dir2: array.java words.java pet.java

  29. 文件权限 % ls -l total 161 -rwxr-xr-x 1 jane group1 17878 a.out -rw-r--r-- 1 jane group1 5053 test drw-r-xr-x 1 jane group1 512 dsa ... 这些文件占用磁盘上的161个块 以字节为单位 u g o - rwx rwx rwx a file file user (owner) other (world) group

  30. 文件权限 • 你创建的文件 - rw- r-- r-- -代表文件 user (你) other (其他人) r - read w - write x - execute Group(组) 默认下,一个文件创建时没有执行(x) 权限,文件拥有者也没有。

  31. 文件权限 • 你创建的目录 d rwx r-x r-x d代表目录 user (你) other (其他人) Group(组)

  32. 文件权限 • 目录权限 • read–表示可以用ls命令查看该目录下的内容。 • write–表示允许用户在该目录下创建或删除文 件 • execute - 表示用户可以通过目录来查找、访问 该目录下的子目录. 例如: 要能执行下面的命令 cat /u/jane/emails/e1.txt 对该命令中的每一个子目录,你要有“执行”的权限

  33. chmod: 修改文件的权限 chmod u+x file1.txt 为文件拥有者添加执行权限 chmod ugo+x file1.txt 给所有人添加执行权限 chmoda+x file1.txt 给所有人添加执行权限 chmod a-x file1.txt 取消所有人的执行权限 chmod a-rwx file1.txt 取消所有人的所有权限 (一个文件的权限可以被它的拥有者和超级用户修改)

  34. 修改文件的权限 • 使用多个选项 • chmod a+r, u+w file1.txt • 使用绝对赋值号(absolute assignment)-把制定的权限赋给该文件,并取消其他所有权限,例如 • chmod a=r file1.txt • chmod u=rwx file1.txt • 当你想直接给该文件设置权限,而不考虑该文件的当前权限时,可以使用该命令

  35. 修改文件的权限 • 使用八进制符号( octal notation) • 每一个权限被指定为一个数字, 如下: • read 权限 - 4 • write 权限 - 2 • execute 权限 - 1 chmod 666 file1.txt与下一个命令等效 chmod a=rw file1.txt chmod 644 file1.txt(给所有人设置r权限,只给拥有者设置w权限) chmod 777 file1.txt chmod 000 file1.txt

  36. 修改文件的权限 • chmod 处理多个文件 • chmod 755 file1 file2 file3 • 使用递归操作符 (-R) • chmod -R 700 emails -该命令把emails目录下的所有文件和子目录的权限设置成700 • chmod -R 700 .

  37. 文件的修改和访问时间 • ls –l – 显示最后一次修改的时间 • ls –lu – 显示最后一次访问的时间 • 访问时间: 最后一次读、写或执行文件的时间 • ls –lt – 按文件最后一次修改的时间排序显示 • 最近被修改的文件放在第一个 • ls –lut – 按文件访问时间的顺序排序,最近被访问的文件放在第一个

  38. touch: 修改时间戳 • 可以使用touch命令把文件的修改时间和访问时间修改成预定义值 • touch 06201010 letter.txt • 把两个时间都改成当前年份的 June 20, 10:10, • touch -t 200106201010 letter.txt -t 表示使用完整的时间表达形式 • touch使用 –m选项,只改变文件的修改时间,使用–a选项只改变访问时间

  39. Inodes • Inode占用磁盘上的一定空间,用来存储文件的所有属性 • 文件的所有属性保存在一个称为inode的表( table)中 • 每一个文件都有一个inode, 每个inode都通过inodenumber访问 • 在一个文件系统中,每个文件的inodenumber值是一定的 • ls –i命令将显示出inode number

  40. find: Locating Files

  41. find: 查找文件 • find递归查找目录树,查找匹配给定的文件名或其他给定的一个或多个文件属性的文件 find path_list selestion_criteria action find /home -name index.html -print (Linux下默认会print)

  42. find: Locating files (cont) find /home -name index.html -print /home/andrew/scripts/reports/index.html /home/jane/emails/index.html /home/john/www/index.html 使用单引号或双引号 find .-name “*.java” -print 从当前文件夹开始,查找文件名以.java结尾的文件

  43. find: Locating files (cont) find .-name ‘[A-Z]*’ -print 查找文件名以任一个大写字母开头的文件. (这种查找在windows下是不可能的。) find .-name “*.[Dd][Oo][Cc]” -print 查找文件名以.doc结尾的文件,不考虑doc的大小写 find /home/adam-type d -print /home/adam /home/adam/emails /home/adam/www f: 普通文件 d: 目录文件 l: 符号链接文件 按文件类型查找

  44. find: Locating files (cont) find /home -perm 777 -type f -print 从 /home开始查找权限为777的普通文件 find /home -mtime -2 -print 从/home开始查找“修改时间”小于两天的文件。 -mtime中,m表示“修改时间”,time表示时间以“天为单位” -2中“-”号表示小于 find /home -mtime +2 -mtime -5 -ls 从/home开始查找那些修改时间大于两天小于5天的文件,并列出来(-ls表示用ls命令列出结果

  45. find: Locating files (cont) find /home -mtime +90 -exec rm -f {} \; 从/home开始查找90天以前最后一次被修改的文件,并删除. 其中-exec和 \;之间表示对查找结果进行的操作,即要执行的命令;{}代表find查找出的文件的名字。 对find的查找结果执行命令的格式为:-exec命令 选项 {} \; find . -size +2000 -atime +90 -ok rm -f {} \; 从当前文件夹开始查找大小大于2000块,并且超过90天没有访问的文件,并删除。其中 -ok提供交互删除,如下: < rm .../home/adam/readme >? y

  46. The Unix Shell • shell的工作流程 • 显示提示符,然后等待,直到你敲下 [Enter] • 扫描命令行,查看特殊字符 (元字符:meta-characters) 即那些对shell来说有特殊意义的字符 • 然后生成一个简单的命令并 把它们传给内核(kernel)执行, 然后等待命令的结果 • 提示符再次出现,shell再次等待新的输入

  47. Shells • 五种常用的shell: • the Bourne shell (/bin/sh) • the C shell (/bin/csh) • the T C shell (/bin/tcsh) • the Korn shell (/bin/ksh) • the bash shell (/bin/bash) • Bourne shell是最早出现的shell,它和unix一起产生 • 查看你在使用哪一个shell – 键入命令: echo $SHELL 说明:SHELL是一个shell环境变量,所以前面加上$来显示它的值

  48. 模式匹配 – 通配符(Wild Cards)

  49. 通配符( Wild Cards) • *和 ?被称为元字符, 当这些元字符用于文件的匹配时,又成为通配符 • 就像纸牌中的joke可以代替任何牌一样 ls -x chap* (shell辨别出*,然后把命令 扩展成如下命令行) ls -x chap chapx chapy chap01 chap02

  50. 通配符 • [ijk]匹配单个字符 –为i,j,k中任意一个字符 • [!ijk]匹配除i,j,k的任意单字符 • [x-z]匹配x到z中的任意单字符,x到z是按ASCII表 中顺序 • [!x-z]匹配不在x到z中的其他任意字符 • 总结:[]匹配单个字符, !表示除后面所列出的字符外 的所有字符

More Related