Linux commands ppt

1,831 views

Published on

Linux 命令

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,831
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • login_name 是用户的登录名,用户登录时输入登录名,系统通过登录名来区别不同的用户,同时登录名也指出了用户类型。 dummy_or_encrypted_password 字段包含伪密码 x( 或 *) 或密码的加密版本。如果伪密码放在文件 /etc/passwd 中。那么加密的密码就被放在文件 /etc/shadow 中。 user_ID 是分配给用户的 0 到 65535 之间的一个整数,这些整数是指定给用户的; 0 指定给超级用户,而 1-99 被系统保留。 group_ID 标识用户所在的组, group_ID 也是 0 到 65535 之间的整数, 0-99 之间的数也被系统保留。 user_info 字段包含用户的相关信息,典型的信息是用户全名。
  • 上面一行来自于系统中的文件 /etc/passwd ,是描述用户 davis 的。 在这一行中,登录名为 davis ,密码字段用 x 表示,用户 ID 是 134 ,组 ID 是 105 ,个人信息是用户的全名 James A Davis ,主目录是 /home/student/davis ,登录 shell 是 /bin/bash 。
  • 例如,对 Linux 来说,一个 C 程序文件和一具作为网页的 html 文件或一个视频文件是没有区别的。然而这些文件分别由 C 语言编译器,网络浏览器和视频播放器给予不同的处理。
  • 这个目录包含所有的设备文件,每个连接到计算机的设备至少有一个相应的设备文件,即命令或应用程序通过访问特殊文件来访问相应的设备。而应用程序和命令读写外围设备文件的方式和读写普通文件相同。因此, Linux 的输入和输出被称为是设备无关的。各种特殊文件都模拟物理设备,因此也被称为虚拟设备。可以通过虚拟设备和 Linux 系统进行交互,不需要使用和系统连接着的物理设备。
  • Linux commands ppt

    1. 1. 第 4 章 Linux 常用命令 4.1 Linux 系统目录的功能介绍 4.2 Linux 系统的启动和退出 4.3 Linux 系统对文件和目录的操作命令
    2. 2. Linux 版本 <ul><li>RedHat Linux </li></ul><ul><li>Red Hat 公司 创建于 1994 年,是全球最大的开源技术厂家,其产品也是全世界应用最广泛的 Linux 。公司总部位于美国北卡罗来纳州,在全球拥有多个分部。 </li></ul><ul><li>Red Hat 是目前唯一公开上市的开放源代码厂商,也是唯一能构成微软竞争对手的开源软件公司。 </li></ul><ul><li>Red Hat 的培训及认证被认为是 Linux 认证的标准。 Certification 杂志的最新调查显示, RHCE(Red Hat 认证工程师 ) 认证被公认为总体质量最高的国际 IT 认证。 </li></ul>
    3. 3. <ul><li>Red Hat Linux 的最终版本是 9 。 </li></ul><ul><li>Red Hat 公司于 2003 年 9 月底宣布,将原有的 Red Hat Linux 开发计划与 Fedora Linux 计划整合成新的 Fedora Project 。 Fedora Project 将由 Red Hat 公司赞助,以社群主导和支持的方式,开发 Linux 发行版 Fedora Core 。 </li></ul><ul><li>目前最高版本为 Fedora Core 6 。 </li></ul>
    4. 4. 4.1 Linux 系统目录的功能介绍 <ul><li>根据 1994 年发布的文件系统标准( FSSTND ),所有的 Linux 文件系统都有标准的文件和目录结构。那些标准目录又包含一些特定的文件。下面来简要介绍一下每个目录的作用。 </li></ul><ul><li>根目录( / ) </li></ul><ul><li>根目录位于分层文件系统的最顶层,用斜线( / )表示。它包含一些标准文件和目录,因此可以说它包含了所有的目录和文件。 </li></ul>
    5. 5. <ul><li>/bin </li></ul><ul><li>/bin 目录,也称为二进制目录,包含了那些供系统管理员和普通用户使用的重要的 Linux 命令的二进制(可执行)映像。这个目录下的文件要么是可执行文件,要么是其他目录下的可执行文件的符号连接。目录 /usr/bin 存放了大部分的用户命令。 </li></ul>
    6. 6. <ul><li>/boot </li></ul><ul><li>/boot 目录下存放的是 Linux 系统启动时要用到的所有文件,包括 Linux 内核的二进制映像。当用 lilo 引导 Linux 时,会用到这里的一些信息 grub 的配置文件也放在这里。 </li></ul><ul><li>/dev </li></ul><ul><li>/dev 目录,也称为设备目录,存放连接到计算机上的设备的对应文件,包含了 Linux 系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。 </li></ul>
    7. 7. <ul><li>/etc </li></ul><ul><li>/etc 目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、 X 窗口系统配置文件、设备配置信息、设置用户信息等; /etc 目录不包含任何二进制文件。这个目录下的文件主要由管理员使用;普通用户对大部分文件有读权限。 </li></ul><ul><li>/home </li></ul><ul><li>用户的基本目录, /home 如果建立一个名为“ xx” 的用户,那么在 /home 目录下就有一个对应的“ /home/xx” 路径,用来存放该用户的主目录。 </li></ul>
    8. 8. <ul><li>/lib </li></ul><ul><li>/lib 目录下存放了各种编程语言库,包括库文件和 kernel 模块。典型的 Linux 系统包含了 C 、 C ++、 FORTRAN 语言的库文件。 /lib 目录下的库映像文件可以用来启动系统并执行一些命令。实际上它包含了标准 C 库 /lib/libc.so.* ,数学库 libm.so.* ,共享的动态链接库 /lib/ld/so 以及目录 /lib 和 /sbin 下命令用到的其他共享库。目录 /lib/modules 包含了可加载的内核模块。 /lib 目录用来存放系统动态连接共享库文件,几乎所有的应用程序都会用到该目录下的共享库文件,其他的库文件则大部分存储在目录 /usr/lib 下。 </li></ul>
    9. 9. <ul><li>/lost+found </li></ul><ul><li>/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。 </li></ul><ul><li>/lost+found 目录存放所有和其他目录都没有关联的文件。这些文件可以用 Linux 工具 fsck (文件系统检查)查找得到的。系统管理员使用 fsck 检查文件系统,并决定保留或删除这些文件。 </li></ul>
    10. 10. <ul><li>/mnt </li></ul><ul><li>/mnt 目录在一般情况下也是空的,主要用来临时装载文件系统,系统管理员执行 mount 命令完成装载。工作在系统中,这个目录包含了光驱、磁盘和软驱的装载点。这样,当装载了一个设备时,如光驱,就可以通过访问目录 /mnt/cdrom 的文件来访问相应光盘上的文件。 </li></ul><ul><li>/proc </li></ul><ul><li>/proc 目录存放了进程信息和系统信息,这些信息是在内存中由系统自己产生的。 </li></ul>
    11. 11. <ul><li>/root </li></ul><ul><li>许多 Linux 系统都将目录 /root 作为根用户(超级用户)的主目录。该目录受到完全保护,不受普通用户的影响,普通用户没有权限访问 /root 目录。 </li></ul><ul><li>/sbin </li></ul><ul><li>/sbin 该目录用来存放系统管理员的系统管理程序。 </li></ul><ul><li>目录 /sbin 、 /usr/sbin 、 /usr/local/sbin 包含系统管理工具、实用程序和通用的根用户专用命令。 </li></ul>
    12. 12. <ul><li>/usr </li></ul><ul><li>/usr 目录是 Linux 文件系统中最大的一个部分,要用到的应用程序和文件几乎都存放在这个目录下面。它包含了主机之间可以共享的只读数据。在多数 Linux 系统中, /usr 至少包含了下面的子目录: X11R6 、 bin 、 doc 、 games 、 include 、 lib 、 local 、 man 、 sbin 、 share 、 src 和 tmp 。 </li></ul>
    13. 13. /usr 中的主要子目录
    14. 14. <ul><li>/tmp </li></ul><ul><li>/tmp 目录用来存放不同程序执行时产生的临时文件。一些命令和应用程序要用到该目录。您也可以用该目录存放自己的一些临时文件。该目录中的所有文件会被定期删除,以保证磁盘 ( 或磁盘分区 ) 不会被临时文件所塞满。 /tmp 目录下某个文件的生命期是由系统管理员所设定的,而且因系统而异,但通常只有若干分钟。多数系统都为 /tmp 目录设置了粘滞位( sticky bit ),这样只有文件的所有者才能从该目录中删除文件。 </li></ul>
    15. 15. <ul><li>/opt </li></ul><ul><li>/opt 目录用来安装附加软件包。用户调用的软件包程序放在目录 /opt/package_name/bin 下, package_name 是安装的软件包名称。软件包的参考手册放在 /opt/package_name/man 下。 </li></ul><ul><li>/var </li></ul><ul><li>/var 目录是系统在工作时预先设置的工作目录,如各种服务的日志文件和收发的邮件等。 </li></ul><ul><li>/var 目录用于放置变量数据 ( 当系统运行时这些数据不断变化 ) 。 </li></ul>
    16. 16. <ul><li>/etc/passwd </li></ul><ul><li>文件 /etc/passwd 对每个用户都有一行描述。每一行由 7 个字段组成,各个字段用冒号隔开。 </li></ul><ul><li>下面是每行的格式: login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell </li></ul>
    17. 17. <ul><ul><li>home_directory 字段是用户主目录的绝对路径。 </li></ul></ul><ul><ul><li>l ogin_shell 包含了用户登录 shell 的绝对路径。当用户登录到系统时,相应于该字段所指定路径名的命令就会被系统执行。如果出现两个连续的冒号,就意味着两个冒号之间的那个字段缺少字段值,值为空。有时 user_info 字段会出现空值。 </li></ul></ul>login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell <ul><li>例如: davis:x:134:105:James A Davis:/home/student/davis:/bin/bash </li></ul>
    18. 18. 4.2 Linux 系统的启动和退出 <ul><li>启动系统 </li></ul><ul><li>登录方式 </li></ul><ul><li>修改口令 </li></ul><ul><li>退出登录 </li></ul><ul><li>关闭机器 </li></ul><ul><li>用户帐号管理 </li></ul><ul><li>虚拟终端 </li></ul><ul><li>Shell 简介 </li></ul><ul><li>Linux 系统常用命令格式 </li></ul>
    19. 19. 启动 Linux 系统 <ul><li>以 Fedora Core 4 为例说明 </li></ul><ul><li>启动计算机,出现 GRUB( GRand Unified Bootloader 多重启动管理器 ) 引导程序 </li></ul>
    20. 20. GRUB 启动菜单 <ul><li>GRUB 菜单 </li></ul>
    21. 21. 一些基本术语 <ul><li>命令 (Command) 给计算机的指令,通常使用键盘输入 </li></ul><ul><li>命令行 (Command line) 输入命令的地方 </li></ul><ul><li>shell : 是一种命令解释器,它提供了用户和操作系统之间的交互接口。当用户在命令行输入命令后, shell 进行解释,然后送往操作系统(内核)执行。 shell 可以执行 Linux 的系统内部命令,也可以执行应用程序。你还可以利用 shell 编程,执行复杂的命令程序。 </li></ul><ul><li>root :根用户、超级用户、管理员,它对整个系统有完全的访问权。只有超级用户才能更改系统的设置等。 </li></ul>当使用超级用户登录后,进行相关操作时需非常谨慎,否则可能会对系统或用户文件造成不可挽回的损失。
    22. 22. 字符操作环境 <ul><li>虽然 Linux 提供了漂亮的图形界面操作环境,但有时仍需返回到字符界面 命令行方式 下工作。特别是当系统出现问题时,在字符界面下, Linux 只加载少量的应用程序,以便用户修正 Linux 相同可能的错误。某些无法或不方便在图形界面下操作的任务,也需要命令行方式。 </li></ul><ul><li>终端是 UNIX 的一个标准特性,用户可以通过终端访问系统资源。 </li></ul><ul><li>Linux 下的字符操作环境有两种:一种是控制台( console )或终端 (Terminal) ;另一种是图形界面下提供的多种虚拟终端,如 xterm 、 rxvt 等。 </li></ul>
    23. 23. Linux 登录方式 <ul><li>Linux 有两种登录方式: 文本模式 和 图形模式 </li></ul><ul><li>文本模式 : 字符操作环境 </li></ul>Fedora Core release 4 (Stentz) Kernel 2.6.11 - 1.1369_FC4 on an i686 login: 键入正确的用户名和口令后,就可以进入系统 注: Linux 区分大小写!
    24. 24. 用户主目录 <ul><li>用户登录后,将会进入一个系统指定的专属目录,即用户的 主目录 ,该目录名通常为用户的登录帐号。 </li></ul><ul><li>在创建用户时,系统管理员会给每个用户建立一个主目录,通常在 / home / 目录下。 </li></ul>例:用户 user1 的主目录为 /home/user1/ <ul><li>用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。 </li></ul><ul><li>每个用户名对应一个用户 ID 号(一个数字)。 </li></ul><ul><li>每个用户都被分配到一个指定的组 (group) 中 </li></ul>
    25. 25. 图形登录方式 <ul><li>在图形界面下登录 </li></ul>
    26. 26. 登录回话菜单 <ul><li>语言 (L) : 选择语言,默认为安装是选择的语言。 </li></ul><ul><li>重新引导 (R) : 重启计算机 </li></ul><ul><li>关机 (R) : 关闭计算机 </li></ul><ul><li>上次 :上次登时使用的桌面管理器 </li></ul><ul><li>系统 默认 : Fedora core 默认的桌面管理器是 GNOME </li></ul><ul><li>GNMOE : GNMOE 桌面管理器 </li></ul><ul><li>KDE : KDE 桌面管理器 </li></ul><ul><li>安全模式 :显示没有桌面管理器的 xterm 终端 </li></ul><ul><li>会话 (S) : 采用什么样的桌面管理器 </li></ul>
    27. 27. 桌面 <ul><li>登录后出现的图形界面: </li></ul>面板 panel
    28. 28. X Windows 系统 <ul><li>X Widows 系统 也称为 X ,是在 UNIX 类的操作系统中应用最为广泛的基于窗口的用户图形界面。 </li></ul><ul><li>X Widows 使用方便,界面直观,并且和具体的计算机的硬件无关,也独立于操作系统。同时它支持分布式的网络操作。所以,基于 X Window 的应用程序一直在 UNIX 类的操作系统中占有主导的地位。 </li></ul><ul><li>Linux 出现以后, X Window 系统也有了在 Linux 系统上的实现,成为 Linux 图形用户界面的基础。 </li></ul>
    29. 29. X Windows 系统 <ul><li>通常 X 窗口分两层: 桌面管理器 和 窗口管理器 </li></ul><ul><li>桌面管理器 是面向图像的用户界面,它允许用户通过管理图标而不是输入相应的 shell 命令来与系统交互。 </li></ul><ul><li>窗口管理器 主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序…… </li></ul><ul><li>GNOME 、 KDE ( Fedora 安装盘自带) </li></ul><ul><li>FVWM 、 WINDOWMAKER ( 自己下载安装 ) </li></ul><ul><li>Linux 下常见的桌面系统有: </li></ul>
    30. 30. 字符界面与图形界面 <ul><li>在 字符界面 中,如果想进入 图形界面 ,可以输入命令 </li></ul>startx 或 switchdesk GNOME 注:在字符界面下中文可能无法正常显示。 但在虚拟终端中可以正常显示。 或 switchdesk KDE <ul><li>在 图形模式 中,想进入 字符操作环境 ,有以下方式 </li></ul><ul><li>切换到另一个虚拟控制台。 Linux 共提供了 7 个虚拟控制台,可以用 Ctrl+Alt+F n 或 Alt+F n 来切换, F n 为功能键 F1 ~ F7 。其中 F1 ~ F6 是文本模式, F7 是图形界面。 </li></ul><ul><li>在图形界面下,可以打开一个或多个 虚拟终端 。 </li></ul>
    31. 31. 打开虚拟终端 <ul><li>在图形界面下,如何打开虚拟终端 </li></ul><ul><li>点击面板上的 “应用程序”  “系统工具”  “终端”。 </li></ul><ul><li>单击鼠标右键, 从弹出的快捷菜单中选择 “终端”。 </li></ul><ul><li>打开新的虚拟终端窗口的快捷键 </li></ul><ul><li>Ctrl+Shift+t ( 在同一窗口中打开新的终端 ) </li></ul><ul><li>Ctrl+Shift+n ( 在不同窗口中打开新的终端 ) </li></ul><ul><li>Alt+ 数字键 ( 切换终端 1~6) </li></ul>
    32. 32. 虚拟终端 <ul><li>应用程序  系统工具  终端 </li></ul><ul><li>单击鼠标右键, 选择 “终端” </li></ul>
    33. 33. 退出 虚拟终端 只需在命令行中输入 exit
    34. 34. 用户登录 <ul><li>Linux 是一个真正意义上的多用户、多任务操作系统,用户要使用该系统,首先必须登录,使用完系统后,必须退出。 </li></ul><ul><li>Linux 下有两类用户: </li></ul><ul><ul><li>root 用户 :超级用户,即系统管理员,系统的拥有者,在 Linux 系统中有且只有一个 root 用户,是对系统的一切都具有完全的访问权限的用户,可以在系统中任何操作;并可由它建立多个普通用户,共同使用该计算机系统。 root 用户的密码在系统安装时由安装者设定。 </li></ul></ul><ul><ul><li>普通用户 : Linux 系统可以创建许多普通用户,并为其指定相应的权限,使其有限地使用 Linux 系统。 </li></ul></ul>
    35. 35. <ul><li>系统在建立之初,仅有 root 用户,其它的用户则是由 root 用户创建的。由于 root 用户的权限太大了,所以如果 root 用户误操作将可能造成很大的损失。所以建议系统管理员为自已新建一个用户,只有需要做系统维护、管理任务时才以 root 用户登录。 </li></ul><ul><li>以 root 用户登录,系统提示符是“ #” ; </li></ul><ul><li>以普通用户身份进入系统,系统提示符为“ $” 。 </li></ul><ul><li>在后面的实训中, login 为 root , Password 为 123456   </li></ul>
    36. 36. 修改口令 <ul><li>为了更好地保护用户帐号的安全, Linux 允许用户在登录之后随时使用 passwd 命令修改自己的口令。修改口令需要经历: </li></ul><ul><ul><li>输入原来的口令,如果口令输错,将中止程序,无法修改口令; </li></ul></ul><ul><ul><li>输入新的口令; </li></ul></ul><ul><ul><li>提示重复一遍新的口令,如果两次输入的口令相吻合,则口令修改成功。 </li></ul></ul><ul><li>root 用户修改口令,则不需要输入老密码。 root 用户可以修改任何用户的口令。 </li></ul>
    37. 37. 退出 Linux <ul><li>注销 </li></ul><ul><li>图形界面: 桌面  注销 </li></ul><ul><li>字符界面: 输入命令 exit 或 logout </li></ul><ul><li>重启 </li></ul><ul><li>图形界面: 桌面  注销 </li></ul><ul><li>字符界面: 输入命令 reboot </li></ul><ul><li>关机 </li></ul><ul><li>图形界面: 桌面  注销 </li></ul><ul><li>字符界面: 输入命令 poweroff 或 halt 或 shutdown </li></ul>telnet 、 ssh <ul><li>远程登录 </li></ul>
    38. 38. <ul><li>1 、 exit 命令 </li></ul><ul><li>格式: exit </li></ul><ul><li>功能:退出目前的 shell (外壳程序),返回到上一级的状态。它的使用权限是所有用户。 </li></ul><ul><li>2 、 logout 命令 </li></ul><ul><li>格式: logout </li></ul><ul><li>功能:让用户退出系统,其功能和 login 指令相互对应,是登录的相对操作,登录系统后,若要离开系统,用户只要直接下达 logout 命令即可。它的使用权限是登录 shell 的用户。 </li></ul>退出登录
    39. 39. 关闭机器 <ul><li>在结束 Linux 系统运行时,应先关闭操作系统,然后关机,而不能直接切断电源。因为在关闭系统时, Linux 的一些系统进程还在运行,而且这些进程可能正在对文件进行操作,如果仅仅是切断电源,就会使进程不能关闭文件,正常结束运行。 </li></ul><ul><li>在 Linux 系统中,普通用户是无权关闭系统的,只有 root 用户才能够关闭系统,若此时不是 root 用户,应用 su 命令转换为 root 用户。 </li></ul>
    40. 40. <ul><li>因此,在关闭系统,必须先使所有进程结束运行,可以通过以下几种方法实现: </li></ul><ul><ul><li>按下 Ctrl+Alt+Del 组合键,系统将重新启动。 </li></ul></ul><ul><ul><li>执行 reboot 命令,系统将重新启动。 </li></ul></ul><ul><ul><li>执行 shutdown -h now 命令,系统将关闭计算机。 </li></ul></ul><ul><ul><li>执行 halt 命令,可以关闭计算机。 </li></ul></ul><ul><li>注意千万不要随意采用硬关机、重启动键等方式关闭系统,那样会导致 Linux 文件系统遭受破坏。 </li></ul>
    41. 41. <ul><li>1 、 shutdown 命令 </li></ul><ul><li>格式: shutdown [-hknr] [-t 秒数 ] < 时间 > [ 警告信息 ] </li></ul><ul><li>功能: shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机动作。 </li></ul><ul><li>参数: </li></ul>-h 将系统关机。 -k 只是送出信息给所有用户,但不会实际关机。 -n 不调用 init 程序进行关机,而由 shutdown 自己进行。 ( 一般关机程序是由 shutdown 调用 init 来实现关机动作 ) ,使用此参数将加快关机速度,但是不建议用户使用此种关机方式。 -r shutdown 之后重新启动。 -t< 秒数 > 送出警告信息和删除信息之间要延迟多少秒。
    42. 42. <ul><li>< 时间 > 设置多久时间后执行 shutdown 命令。时间参数有 hh : mm 或 +m 两种模式。 hh : mm 格式表示在几点几分执行 shutdown 命令。例如“ shutdown 10:45” 表示将在 10:45 执行 shutdown 。 +m 表示 m 分钟后执行 shutdown 。比较特别的用法是以 now 表示立即执行 shutdown 。值得注意的是这部分参数不能省略。 </li></ul><ul><li>[ 警告信息 ] 要传送给所有登入用户的信息。 </li></ul># shutdown -h now 指定现在立即关机 # shutdown +5 “System will shutdown after 5 minutes” 指定 5 分钟后关机,同时送出警告信息给登入用户
    43. 43. <ul><li>2 、 halt 命令 </li></ul><ul><li>其实 halt 就是调用 shutdown -h 。 halt 执行时﹐杀死应用进程﹐执行 sync 系统调用﹐文件系统写操作完成后就会停止内核。 </li></ul>参数: [-f] 没有调用 shutdown 而强制关机或重启。 [-i] 关机〔或重启〕前﹐关掉所有的网络接口。 [-p] 该选项为缺省选项。就是关机时调用 poweroff 。 shutdown 或 Halt 命令的执行过程是:首先广播关闭消息,然后关闭进程,卸下文件系统,最后显示如下信息: The System is halted. System halted. 这时,便可以关闭电源了。
    44. 44. <ul><li>3 、 reboot 命令 </li></ul><ul><li>执行 reboot 指令可让系统停止运作,并重新开机。 reboot 的工作过程差不多跟 halt 一样﹐不过它是引发主机重启﹐而 halt 是关机。 </li></ul>
    45. 45. 用户帐号管理 <ul><li>1 、创建新用户 </li></ul><ul><li>每一个普通用户帐号均由 root 用户创建,只有建立了帐号的用户才能在 Linux 系统登录。建立一新用户帐号,包括为其设置用户名和口令。 </li></ul><ul><li>(1) useradd 命令 </li></ul><ul><li>功能:建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。 </li></ul><ul><li>(2) passwd 命令 </li></ul><ul><li>功能 : 对指定帐号的用户设置口令,还可以用做修改已存在用户的口令或当前登录用户的口令。 root 用户 能 修改 系统 中所有 用户的 口令,而普通 用户只能变更自己的 口令 。 </li></ul>
    46. 46. <ul><li>更改口令: passwd </li></ul><ul><li>直接在命令行中输入 passwd ,然后根据提示,先输入原来的口令,回车后,再输入新口令,并确认一次。 </li></ul><ul><li>为确保高安全性, Linux 对口令有一定的要求,而且通常需要在口令中加入一些特殊符号,如 加号 、 减号 等。 </li></ul>提醒: 输入密码时,屏幕上不会有任何输出或提示! 无论是 root 用户还是普通用户,修改自己的口令时,无需添加帐号,输入 #passwd 但 root 用户修改普通用户的口令时,需输入 #passwd 帐号 要修改口令的普通用户的帐号
    47. 47. <ul><li>2 、删除用户 </li></ul><ul><li>用户的删除须由超级用户执行。 </li></ul><ul><li>userdel 命令 </li></ul><ul><li>格式: userdel [-r] < 用户帐号 > </li></ul><ul><li>功能 :删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。 </li></ul><ul><li>参数: </li></ul><ul><li>- r 删除用户登入目录以及目录中所有文件。 </li></ul>
    48. 48. <ul><li>3 、 root 用户与普通用户的身份转换 </li></ul><ul><li>由于 root 用户的权限不受限制,只有在做特权操作时,才用 root (超级)用户帐号登录,此外则应尽量避免以 root 用户身份登录系统处理事情。但是,当为了某种需要(如修改一个用户的口令),就需要暂时取得 root 用户的特殊权限。一种方法是,退出普通用户的登录,然后以 root 用户登录,处理完相应特权操作后,为确保系统安全,避免不必要的误操作,最后还要退出 root 用户登录,以普通用户帐号登陆,显然过程太麻烦。我们可以使用 Linux 提供的 su 命令来实现 root 用户与普通用户间的快速切换。 </li></ul>
    49. 49. <ul><li>su 命令 </li></ul><ul><li>格式: su [ 用户帐号 ] </li></ul><ul><li>功能 : 变更用户身份。 </li></ul><ul><li>参数: </li></ul><ul><li>[ 用户帐号 ] 指定要变更的用户。若不指定此参数,则预设变更为 root 。 </li></ul># su < 普通用户帐号 > 实行 root 用户转换到普通用户 # su 实行普通用户转换到 root 用户,当然此时系统会要求操作者提供 root 用户的口令
    50. 50. 虚拟终端 <ul><li>Linux 是真正的多用户操作系统,可以同时接受多个用户的远程和本地登录,也允许同一个用户多次登录。 </li></ul><ul><li>Linux 为本地用户 ( 也就是做在计算机面前的用户 ) 提供了虚拟终端访问方式,允许用户在同一时间从不同的控制台进行多次登录。 </li></ul><ul><li>Linux 提供了六个虚拟终端,虚拟终端的选择可以通过按 Alt 键加上 F1~F6 六个功能键来实现。例如,用户登录后,按一下 Alt+F2 组合键,用户又可以看到“ login:” 提示符,这其实就是第二个虚拟终端,而这时再按下 Alt+F1 组合键,用户则又可以回到第一个虚拟终端。 </li></ul><ul><li>大家可以通过使用虚拟终端来感受 Linux 系统多用户的特性。例如用户可以在某一虚拟终端上进行的工作尚未结束时,就可以切换到另一个虚拟终端上开始另一项工作。 </li></ul>
    51. 51. Shell 简介 <ul><li>Shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。 </li></ul><ul><li>shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。用户在命令行中输入的每个命令都由 shell 先解释,然后传给 Linux 内核去执行。 </li></ul><ul><li>如果把 Linux 内核想象成一个球体的中心, shell 就是围绕内核的外层,从 shell 向 Linux 操作系统传递命令时,内核就会做出相应的反应。 </li></ul>
    52. 52. <ul><li>shell 的另一个重要特性是它自身就是一个解释型的程序设计语言, shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组等。 shell 编程语言简单易学,一旦掌握后它将成为你的得力工具。任何在命令行中能键入的命令也能放到一个可执行的 shell 程序里。 </li></ul><ul><li>shell 是一个命令语言解释器,拥有自己内建的 shell 命令集。此外, shell 也能被系统中其他应用程序所调用。 </li></ul>
    53. 53. 常用的 Shell Bourne Shell 是 At&T Bell 实验室的 Steven Bourne 为 At&T 的 Unix 开发的,它是 Unix 的默认 Shell ,也是其它 Shell 的开发基础。 Bourne Shell 在编程方面相当优秀,但在处理与用户的交互方面不如其它几种 Shell 。 Bourne Shell 是最早被广泛使用的和标准化的 Shell ,几乎所有的 Unix 兼容系统都支持。 <ul><li>Linux 系统提供多种不同的 Shell 以供选择。常用的有 Bourne Shell (简称 Sh )、 C-Shelll (简称 Csh )、 Korn Shell (简称 Ksh )和 Bourne Again Shell ( 简称 Bash) 。 </li></ul><ul><li>Bourne shell (sh) </li></ul>
    54. 54. 常用的 Shell ( 续 ) Korn Shell 是 At&T Bell 实验室的 David Korn 开发的,它集合了 C Shell 和 Bourne Shell 的优点,并且与 Bourne Shell 向下完全兼容。 Korn Shell 的效率很高,其命令交互界面和编程交互界面都很好。 C Shell 是加州伯克利大学的 Bill Joy 为 Bsd Unix 开发的,与 Sh 不同,它的语法与 C 语言很相似。它提供了 Bourne Shell 所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是, C Shell 与 Bourneshell 并不兼容。 <ul><li>C shell (csh) </li></ul><ul><li>Korn shell (ksh) </li></ul>
    55. 55. 常用的 Shell ( 续 ) Bourne Again Shell ( 即 Bash) 是自由软件基金会 (Gnu) 开发的一个 Shell ,是多数 Linux 系统中一个默认的 Shell 。 Bash 不但与 Bourne Shell 兼容,并且在 Bourne Shell 的基础上增加和增强了很多特性,同时还继承了很多 C Shell 、 Korn Shell 的优点。 Bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。 <ul><li>Bourne Again Shell (Bash) </li></ul><ul><li>是现在大多数 Linux 系统的缺省 shell </li></ul>
    56. 56. Linux 系统常用命令格式 command [ 选项 ] [ 参数 ] <ul><li>Command 为命令名(也就是对应的程序名),写在一行的开头; </li></ul><ul><li>开关符选项 通常是以 “ - ” 开始,多个选项可用一个“ - ” 连起来,如 ls -l -a 与 ls –la 相同 ; </li></ul><ul><li>根据命令的不同, 参数 分为可选的或必须的; </li></ul><ul><li>命令名 和 开关符 、 参数 之间一定要用 空格 分离。 </li></ul>
    57. 57. Bash 的功能 当用户打开一个 ( 虚拟 ) 终端时,可以看到一个 shell 提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数 例: ls –l /home/user1/linux/ 注意:命令行中选项先于参数输入 command [ 选项 ] [ 参数 ] <ul><li>命令行 </li></ul>
    58. 58. 命令行特征 <ul><li>如果一个命令太长,无法在一行中显示,可以使用反斜杠 来续行,在多个命令行上输入一个命令或多个命令。例如: </li></ul>ls -F; cp -i mydata newdata 大多数 shell 在达到命令行行尾时都会自动断开长命令 <ul><li>在一个命令行中可以输入多个命令,用分号将各个命令隔开。例如: </li></ul>ls -F; cp -i mydata newdata
    59. 59. 命令行特征 ( 续 ) 命令行实际上是可以编辑的一个 文本缓冲区 ,在按回车之前,可以对输入的命令进行编辑。如用 BACKSPACE 键可以删除刚键入的字符,也可以进行整行删除,还可以插入字符等。 <ul><li>命令行编辑 </li></ul>
    60. 60. 4.3 Linux 系统对文件和目录的操作命令 <ul><li>计算机用户总会和文件系统打交道。用户在使用计算机系统时,经常要执行一些与文件相关的操作,包括创建、读取、写、修改或执行文件。所以,用户需要明白 Linux 中的文件概念,以及如何对文件进行组织和管理。 </li></ul><ul><li>在 Linux 中,文件就是一些字节序列,这就意味着系统中所有的一切,包括键盘在内的 I/O 设备都是一个文件。 </li></ul><ul><li>Linux 不支持任何文件扩展名,但文件可以使用任何扩展名,可以任意给文件名加上自己或应用程序定义的扩展名,但这些扩展名对 Linux 系统来说没有任何意义。 </li></ul><ul><li>例如,可以给一个文档加上 .exe 的扩展名( prog.exe ),给一个可执行程序加上 .doc 扩展名( memo.doc )。 </li></ul><ul><li>有些应用程序需要用到扩展名,而有些则不需要。 </li></ul><ul><li>例如, gzip 和 gunzip 命令需要使用扩展名 .gz , C 语言编译程序 gcc 需要使用扩展名 .c ,但不是所有的网络浏览器需要网页要有 .html 扩展名。 </li></ul>
    61. 61. Linux 文件名 在 Linux 下可以用很长的一个字符 串 ( 一般不超过 255 个 ) 来作文件名。 例如: This_is.a.VERY_long.filename 注: Linux 应用程序和文件区分大小写! <ul><li>Linux 下文件的命名规则 </li></ul><ul><li>文件名中不能直接使用以下字符: </li></ul><ul><li>! @ # $ % ^ & * ( ) [ ] { }‘ ’‘ / ; < > 空格 </li></ul><ul><li>这些字符具有特殊含义,若出现在文件名中,则会产生“多义性”。若一定要使用这些字符,必须在前面加上转义符“ /” ,以取消其特殊含义。 </li></ul>
    62. 62. 常用的快捷键和组合键 stty –a 可以看到更多的快捷键。 向前移动一个单词 Alt + f 清屏 Ctrl + l 移动到当前行的行尾 Ctrl + e 移动到当前行的行首 Ctrl + a 向左 / 向右移动一个字符 左 / 右箭头键 从光标处删除到本行的行尾 Ctrl + k 从光标处删除到本行的行首 Ctrl + u 向后移动一个单词 Alt + b 向后移动一个字符 Ctrl + b 向前移动一个字符 Ctrl + f
    63. 63. 通 配 符 <ul><li>bash 提供许多功能用来帮助用户节省输入命令的时间,其中最常用的一种方法就是使用 通配符 。 </li></ul><ul><li>通配符就是一些 特殊的字符 ,可以用来在引用 文件名 时简化命令的书写。用户在使用时可以用通配符来指定一种模式,即所谓的 “ 模式串 ” ( pattern ) ,然后 shell 将把那些与这种模式能够 匹配 的文件作为输入文件。 </li></ul><ul><li>在 bash 中可以使用三种通配符: * 、 ? 、 [] 。 </li></ul><ul><li>通配符 </li></ul>
    64. 64. 通配符的含义 匹配任何 单个字符 ? 创建一个字符表列,方括号中的字符用来 匹配 或 不匹配 单个字符 。如: [xyz] 匹配 x 、 y 或 z ,但不能匹配 xx , xy 或者其它任意组合。 无论列表中有多少个字符,它 只匹配一个字符 。 [abcde] 可以简写为 [a-e] 。 另外,用 感叹号 作为列表的第一个字符可以起到 反意作用 ,如: [!xyz] 表示匹配 x 、 y 、 z 以外的任意一个字符。 [] 匹配 任意长度 的字符串(包括零个字符) *
    65. 65. 通配符举例 <ul><li>通配符 “ * ” 的常用方法就是查找具有相同扩展名的文件 </li></ul>ls *.tar.gz 通配符 “ * ” 有时可以将几百的命令缩短成一个命令。假设当前目录下有许多文件,现在要删除扩展名为“ .old ” 的文件,如果有几百个这样的文件,逐个删除显然很麻烦,这时可以使用通配符: rm *.old <ul><li>问号通配符 “ ? ” 必须匹配一个且只能匹配一个字符,通常用来查找比 * 更为精确的匹配。 </li></ul>ls *.???
    66. 66. 方括号通配符举例 <ul><li>方括号 通配符使用括号内的字符作为被匹配的字符,且只能匹配其中的 一个字符 。如列出以 a 、 b 、 c 开头,且以 .dat 为扩展名的所有文件: </li></ul>ls [abc]*.dat 可以在方括号中使用 连字符 - 来指定一个范围,如列出以字母开头,数字结尾的所有文件: ls [a-zA-Z]*[0-9]
    67. 67. 通配符使用注意事项 <ul><li>文件名最前面的圆点 “ . ” 和路经名中的斜杠“ / ” 必须 显式匹配 。例如 “ * ” 不能匹配 “ .bashrc ” ,而 “ .* ” 才可以匹配“ .bashrc ” 。 </li></ul><ul><li>连字符 - 仅在方括号内有效,表示字符范围。如果在方括号外面就成为普通字符了。而 * 和 ? 在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力,成为普通字符了。 </li></ul>ls * ls mem* ls *x ls *alx* ls .* ls mem? ls may?report ls memo[1-9] ls memo[*1-9]
    68. 68. 例:假设当前目录下有下列文件: ⑴ Abcd ⑵XYZ ⑶abcd ⑷bcd ⑸ f23 ⑹f4 ⑺f9.rpm ⑻Fe ⑼ frepo.exe ⑽gaz.rpm ⑾h.so ⑿drepo.rpm ⑼ ⑿ 文件名的第 2 到第 5 字符为 repo ?repo* 全体文件 * 无 首字符为 F, 长度为 2, 第二字符为 0 、 1 或 2 F[012] ⑺ ⑽ ⑿ 文件类型为 rpm 的所有文件 *.rpm ⑴ ⑶ 以英文字母开头,文件长度为 4 个字符 [a-zA-Z]??? ⑶ 以 a 开头的所有文件 a*
    69. 69. 命令行自动补齐功能 <ul><li>通常用户在 bash 下输入命令时不必把命令输全, shell 就能判断出你所要输入的命令。 </li></ul><ul><li>该功能的核心思想是: bash 根据用户已输入的信息来查找以这些信息开头的命令,从而试图完成当前命令的输入工作。用来执行这项功能的键是 Tab 键 ,按下一次 Tab 键后, bash 就试图完成整个命令的输入,如果不成功,可以再按一次 Tab 键,这时 bash 将列出所有能够与当前输入字符相匹配的命令列表。 </li></ul><ul><li>命令行自动补齐功能 </li></ul>
    70. 70. 命令行自动补齐功能 hist <Tab> 例:查看用户的命令历史 cd /e <Tab> sys <Tab> c <Tab> ne <Tab> - <Tab> 例:要进入目录: /etc/sysconfig/network-scripts/ <ul><li>这项功能同样适用于文件名的自动补齐 </li></ul>
    71. 71. 文件类型 <ul><li>Linux 支持五种文件类型,它们是:普通文件、目录、特殊 / 设备文件、命名管道和符号链接。 </li></ul>
    72. 72. 文件类型 <ul><li>一、普通文件 </li></ul><ul><li>普通文件用来在辅助存储设备(如磁盘)上存储信息和数据。包括文本、程序源代码(用 C 、 C++ 、 Java 等语言所编写)、图像、可执行程序(如编译器、数据库工具、桌面出版工具、绘图软件等应用程序)、视频、图片、声音、 Postscript 代码等。 </li></ul><ul><li>Linux 不会区别对待以上这些文件,它把每个文件都当作是一个字节序列而不会对文件内容附加任何的结构或赋予任何信访。只有使用或处理文件的应用程序才会根据文件的内容赋予其相应的含义。 </li></ul>
    73. 73. LINUX 下常见的文件扩展名
    74. 74. LINUX 下常见的文件扩展名
    75. 75. <ul><li>二、目录文件 </li></ul><ul><li>目录文件 ( 通常称为目录 ) 就是能够存放任何类型文件的容器,包括子目录。在一些系统中,也用文件夹表示目录。利用目录文件构成文件系统的分层树型结构,每个目录文件中至少包括两个文件,“ ..” 表示上一级目录,“ .” 表示该目录本身。 </li></ul><ul><li>在任何操作系统中,一具目录文件都是由一组目录项组成的,虽然不同操作系统的目录项内容有很大的不同。 </li></ul>目录入口的结构 文件名 inode 号
    76. 76. <ul><li>inode 号文件名 inode 号用 4 个字节表示,是磁盘上数组的索引值。这个数组中有个叫做索引节点(通常叫做 inode )的项,它记录了文件的属性,如文件大小(以字节为单位)。 Linux 内核为每个新创建的文件分配一个 inode ,这样 Linux 中每个文件都有一个唯一的 inode 号。 </li></ul>
    77. 77. <ul><li>三、特殊文件 </li></ul><ul><li>特殊文件代表设备,包括键盘、显示器、磁盘、 DVD 、光驱、打印机和磁带。这些设备分为两种类型:字符特殊文件和块特殊文件。 </li></ul><ul><li>字符特殊文件对应于执行面向字符 I/O 的设备,例如键盘。 </li></ul><ul><li>块特殊设备对应于以字节块进行 I/O 操作的设备,例如磁盘驱动器。 </li></ul><ul><li>特殊文件一般放在目录 /dev 下 </li></ul>
    78. 78. <ul><li>四、命名管道 </li></ul><ul><li>命名管道( FIFO )为同一个 LINUX 系统上的进程相互通讯提供了一种机制。 </li></ul>
    79. 79. <ul><li>五、符号链接 </li></ul><ul><li>符号链接文件可以“指向” ( 即引用 ) 一个文件,这个文件可以位于主目录下,也可不在主目录下。符号链接文件一种特殊文件,存放的数据是文件系统中通向某个文件的路径。当调用符号链接文件时,系统自动地访问保存在文件中的路径,可通过命令 ln-s 创建一个符号链接并存放它所指的文件的路径名。 </li></ul>
    80. 80. 文件系统的组织 <ul><li>文件系统是磁盘上存储文件的方法和数据结构,是操作系统组织、存取和保存信息的重要手段,每种操作系统都有自己的文件系统。 </li></ul><ul><li>在操作系统中,有三个问题与文件系统结构相关。 </li></ul><ul><ul><li>从用户的角度看,系统中的文件如何按照用户的想法进行组织的; </li></ul></ul><ul><ul><li>文件是如何存放在辅助存储设备上的 ( 通常是硬盘 ) ; </li></ul></ul><ul><ul><li>是如何进行文件的创建、删除和处理等操作的。 </li></ul></ul>
    81. 81. <ul><li>Linux 文件系统是一种层次结构 ( 类似于自上而下的树形结构 ) 。 </li></ul>
    82. 82. 绝对路径和相对路径 <ul><li>在层次文件系统中,文件或目录都通过路径来表示。路径有三种方式: </li></ul><ul><li>( 1 )以根目录为起始点; </li></ul><ul><li>( 2 )以当前工作目录为起始点; </li></ul><ul><li>( 3 )以用户主目录为起始点。 </li></ul><ul><li>从根目录开始指定时路径称为绝对路径,可以被所有用户在文件系统结构的任何一个目录下使用。 </li></ul><ul><li>以当前工作目录或用户主目录开始的路径名称为相对路径。 </li></ul>
    83. 83. <ul><li>表示用户 sarwar 的主目录下的 ee446 目录的绝对路径。 /home/sarwar/courses/ee446 </li></ul><ul><li>表示用户 sarwar 的主目录下的文件 mid1 的绝对路径。 /home/sarwar/courses/ee446/exams/mid1 </li></ul><ul><li>当用户 sarwar 登录到系统后,首先进入到它的主目录 /home/sarwar 下。在 sarwar 的主目录下, sarwar 可以为文件 mid1 指定相对路径: </li></ul><ul><li>./courses/ee446/exams/mid1 或者 courses/ee446/exams/mid1 </li></ul><ul><li>在目录 ee446 中, sarwar( 或其他用户 ) 可以用相对路径 exams/mid1 表示文件 mid1 。 </li></ul>
    84. 84. 主目录和当前工作目录 <ul><li>当登录到 Linux 系统后,首先进入到一个特殊的目录中,这个目录称为主 / 登录目录。例如, sarwar 的目录就是用户登录名为 sarwar 的主目录,即现在 shell 命令行使用的用户。 </li></ul>[ root@localhost root ] # echo $HOME /root [ root@localhost root ] # su sarwar [ sarwar@localhost root ] # echo $HOME /home/sarwar
    85. 85. <ul><li>在使用 Bash 或 TC shell 时,可以用字符“~”指定您的主目录。 </li></ul><ul><li>当前所在的目录称为当前工作目录 ( 也称为当前目录 ) 。当前工作目录用“ .” 表示,当前工作目录的父目录可以用“ ..” 表示。 </li></ul><ul><li>可以用命令 echo 和 pwd 显示主目录的完整路径名或当前工作目录的绝对路径。 </li></ul>
    86. 86. <ul><li>1 、 echo 命令 </li></ul><ul><li>格式: echo [-ne] [ 字符串 ] </li></ul><ul><li>或 </li></ul><ul><li>echo [--help] [--version] </li></ul><ul><li>功能:显示文字。将输入的字符串送往标准输出。输出的字符串间以空白字符隔开并在最后加上换行号终止符。 </li></ul><ul><li>参数: </li></ul><ul><li>-n 不输出行尾的换行符,即不在最后自动换行,回车不换行。 </li></ul><ul><li>-e 解析转义字符。常用的转义字符有: </li></ul>
    87. 87. a 警告声(响铃); b 删除前一个字符( Backspace ); c 回车不换行; f 换页; n 换行且光标移至行首; r 回车,光标移至行首,但不换行; t 水平制表位; v 垂直制表位; 反斜线( ); nnn nnn (八进制)所代表的 ASCII 字符; 22
    88. 88. <ul><li>普通字符串可以在 echo 后直接输入字符串,但这样当要输出某些字符如“ ” 时,会有问题 ( 这种写法的时候,“ ” 是被当作继行符处理过滤掉的,要输出一个“ ” ,必须打“ ” ,跟 C 语言 printf 输出的要求相像 ) ,所以一般最好用‘ string’ 或“ string” 的格式,这样即使是“ ” 也可以输出,方便直观。 </li></ul>#echo hello world hello world #echo hello world hello world #echo hello world hello world
    89. 89. #echo ‘hello world’ hello world #echo “hello world” hello world #echo -e “hellonworld” hello world 输出 ASCII 字符: echo -e NNN (NNN 为 ASCII 字符的八进制码号,不符合八进制的将会按照字面意义进行打印 ) 。 #echo -e ‘61 62 101 141’ 或 #echo -e “61 62 101 141” 1 2 A a #echo -e 61 62 101 141 61 62 101 141
    90. 90. <ul><li>不加参数时,这个命令在屏幕上打印一行空行。可用 echo 命令获得主目录的绝对路径。 </li></ul><ul><li>$ echo $HOME </li></ul><ul><li>/home/sarwar </li></ul><ul><li>HOME 是一个 shell 变量 ( 占位符 ) , shell 用该变量记录主目录 ( 主目录即为操作当前命令的用户目录 ) 。 </li></ul>
    91. 91. <ul><li>2 、 pwd 命令 </li></ul><ul><li>格式 : pwd [--help][--version] </li></ul><ul><li>功能:显示工作目录。执行 pwd 指令可立刻得知目前所在工作目录的绝对路径名称。 </li></ul><ul><li>参数: </li></ul><ul><li>--help 在线帮助。 </li></ul><ul><li>--version 显示版本信息。 </li></ul><ul><li>echo 命令显示主目录,而 pwd 命令显示当前工作目录。 </li></ul>假定在执行 pwd 命令时用户并没处在主目录中。 $ pwd /home/sarwar/courses 登录到系统后,可立即用 pwd 命令显示主目录的绝对路径名。 $ pwd /home/sarwar
    92. 92. 目录操作以及文件系统结构浏览 <ul><li>1 、创建和删除目录 </li></ul><ul><li>mkdir 命令 </li></ul><ul><li>格式: mkdir [ 选项 ] 目录名称 </li></ul><ul><li>功能:创建“目录名称”指定的目录 并同时设置目录的权限。 </li></ul><ul><li>参数: </li></ul>-m< 目录属性 > 或 --mode< 目录属性 > 建立目录时同时设置目录的权限。 ( 缺省为 drwxr-xr-x) -p 或— parents 若 新 建目录的 父 目录目前尚未建立,则会一并 自动创建这个父 目录。
    93. 93. <ul><li>rmdir 命令 </li></ul><ul><li>格式: rmdir [ 选项 ] 目录名称 </li></ul><ul><li>功能:删除“目录名称”指定的空目录。所谓空目录,即只含“ .” 和“ ..” 两个特殊目录的目录。如果目录非空,那么在删除该目录前必须先删除该目录下的文件和子目录。 </li></ul><ul><li>参数: </li></ul><ul><li>-p 或— parents 删除指定目录 后 ,若该目录的 父 目录 已变成空目录,则将其一并删除。 </li></ul>
    94. 94. <ul><li># mkdir courses </li></ul><ul><li>在当前目录中创建 courses 目录 </li></ul><ul><li># mkdir courses/cs475 </li></ul><ul><li>在新建的 courses 目录下创建 cs475 目录 </li></ul><ul><li># mkdir -p personal/taxes </li></ul><ul><li>在当前目录下创建 personal 目录,然后在 personal 目录下创建 taxes 目录 </li></ul><ul><li># rmdir letters </li></ul><ul><li>删除当前目录下的子目录 letters </li></ul><ul><li># rmdir letters ~/temp </li></ul><ul><li>删除当前目录下的子目录 letters 和主目录下的子目录 temp </li></ul><ul><li># rmdir -p ~/personal/letters/travel </li></ul><ul><li>删除了路径名 ~/personal/letters/travel 下的所有目录,设这些目录为空,如果该路径下的任何目录不为空,就会显示错误消息。 </li></ul>
    95. 95. <ul><li>2 、移动和复制目录 </li></ul><ul><li>mv 命令 </li></ul><ul><li>格式: mv [ 参数列表 ] 文件 1 文件 2 </li></ul><ul><li>或 mv [ 参数列表 ] 文件列表 目录 </li></ul><ul><li>功能: 移动或更名现有的文件或目录。 </li></ul><ul><li>第一个语法:将文件 1 重命名为文件 2 </li></ul><ul><li>第二个语法:将“文件列表”中的所有文件移动到目录中 </li></ul>
    96. 96. 参数: -f 或— forc e 若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。 -i 或 --interactive 覆 盖前 给出提示让 用户 选择是否覆 盖。 -u 或 --update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件。
    97. 97. 使用 cp-r 命令,可以复制一个目录层次及其内容。无论您是用 mv 或 cp -r 命令,文件的时间戳都会变为当前时间。 $ mv dir1 file1 mv: cannot overwrite non-directory 'file1' with directory 'dir1' 产生一个错误信息,因为目标 ( 文件 1) 不是一个目录 $ cp -r ~ /courses ~ /backups 递归地把源目录~ /courses 下的所有文件和子目录 ( 整个目录层次 ) 复制到目的目录 ( 主目录 ) 下,并命名为 backups( 之前 backups 目录不存在 ) 目录
    98. 98. <ul><li>3 、浏览文件系统结构并列出目录 </li></ul><ul><li>cd 命令 </li></ul><ul><li>格式 : cd [ 目的目录 ] </li></ul><ul><li>功能:切换目录 , 可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。 </li></ul><ul><li>每次执行 cd 命令后,系统就会对 shell 变量 PWD 赋值。命令 pwd 使用变量 PWD 的值来显示当前工作目录的绝对路径名。进入一个目录后,就可以用 ls 命令查看该目录的内容 ( 其中的文件和目录 ) 。 </li></ul>$cd / 返回到根目录 $ cd .. 返回到上一层目录 cd 命令不带参数执行时,就会进入主目录
    99. 99. <ul><li>ls 命令 </li></ul><ul><li>格式: ls [ 选项 ] [ 文件名 / 目录名 ...] </li></ul><ul><li>功能: 列出 指定 目录内容,包括文件和子目录的名称。 </li></ul><ul><li>参数: </li></ul><ul><li>-F 在每个文件名后面添加特定后缀字符,表明该文件类型。在目录后显示“ /” ,在二进制可执行文件后显示“ *” ,在符号链接后显示“ @” ;名字后面没有任何后缀,则它是一个普通文件,既不是目录,也不是可执行的程序;文件名称是以“ .” 开头的,则为隐藏文件。 </li></ul><ul><li>-a 显示所有的文件名称,包括隐藏文件、 . 和 .. 等。 </li></ul>
    100. 100. -i 或 --inode 显示文件和目录的 索引节点 inode 编号。 -l 显示一个文件长列表 ( 除了隐藏文件的所有类型 ) ,包含访问权限、硬链接数目、所有者、组、文件大小 ( 字节 ) 和修改时间。 -d 显示某个目录的长列表 ( 但不包括其内容 ) ;通常与 -l 选项一起用作 -ld 。 -r 逆序显示文件。 文件名 / 目录名 若为文件名,则显示指定文件的目录信息;若为目录名,则显示指定目录中的内容;若缺省,则显示当前目录中的内容。
    101. 101. <ul><li>$ cd </li></ul><ul><li>用 cd 命令 ( 不含参数 ) 进入主目录 </li></ul><ul><li>$ ls -ld ~/temp </li></ul><ul><li>drwx------ 2 sarwar faculty 512 Oct 6 12:45 /home/sarwar/temp </li></ul><ul><li>显示 ~/temp 目录的长列表 </li></ul><ul><li>第一栏第一字符 文件的类型 </li></ul><ul><li>第一栏其余部分 文件权限标志 </li></ul><ul><li>第二栏数字 文件的链接数 </li></ul><ul><li>第三栏 文件的拥有者 </li></ul><ul><li>第四栏 文件所属用户组的组名 </li></ul><ul><li>第五栏 文件的长度,字节数 </li></ul><ul><li>第六、七、八栏 文件最后一次修改的日期和时间 </li></ul><ul><li>第九栏 文件名 </li></ul><ul><li>$ cd ~/courses/cs475 </li></ul><ul><li># 进入主目录下的 courses/cs475 目录 </li></ul>
    102. 102. <ul><li>$ pwd </li></ul><ul><li>/home/sarwar/courses/cs475 </li></ul><ul><li>显示当前目录的绝对路径名 </li></ul><ul><li>$ cd .. </li></ul><ul><li>进入主目录下的 courses 目录 </li></ul><ul><li>$ pwd </li></ul><ul><li>/home/sarwar/courses </li></ul><ul><li>显示当前目录的绝对路径名 </li></ul><ul><li>$ cd </li></ul><ul><li>用 cd 命令 ( 不含参数 ) 进入主目录 </li></ul><ul><li>$ ls </li></ul><ul><li>bin books courses linuxtools mail personal temp </li></ul><ul><li>显示当前目录 ( 此时它就是主目录 ) 中的文件名和目录名 </li></ul>
    103. 103. <ul><li>$ ls -a ~ </li></ul>显示主目录中所有文件和目录的名称。包括隐藏文件,它们是以点开头的文件。 $ ls $HOME bin books courses linuxtools mail personal temp 显示主目录中的文件名和目录名 .nautilus .pinerc .sawfish .screenrc .Xauthority .xsession- .gtkrc .ICEauthority input.c .kde linuxtools mail .emacs .gconf .gconfd .gnome .gnome -desktop .gnome_private .bash_profile .bashrc bin books cvsroot .ddd . .. .addressbook .addressbook.lu .bash_history .bash_logout errors
    104. 104. <ul><li>$ ls -i </li></ul><ul><li>12329 courses 22876 mail 12487 personal </li></ul><ul><li>显示目录 courses 、 mail 和 personal 的 inode 号分别是 12329 、 22876 和 12487 </li></ul><ul><li>$ ls –F ~ </li></ul><ul><li>bin/ courses/ demo@ a.out* personal/ </li></ul><ul><li>显示目录 bin 、 courses 和 personal ,符号链接文件 demo ,可执行文件 a.out </li></ul>
    105. 105. 文件处理—— 确定文件属性 $ ls -l ~ /sample lrwxrwxrwx 1 sarwar faculty 4 Apr 28 13:12 dir1 -> /bin
    106. 106. 文件处理—— 确定文件内容的类型 <ul><li>因为 Linux 不支持普通文件的类型和扩展名类型,所以不能够仅根据文件名就确定文件内容。可以使用 file 命令确定文件的类型。这个命令通常用来确定一个文件是文本文件还是二进制文件。这一点很重要,文本文件的内容可以在屏幕上显示,而要显示二进制文件的内容可能会导致终端崩溃,因为终端可能会把某些二进制值解析成控制代码。 </li></ul>
    107. 107. <ul><li>file 命令 </li></ul><ul><li>格式: file [ 选项 ] [ 文件或目录 ...] </li></ul><ul><li>功能:辨识文件类型,即文件分类 。 </li></ul><ul><li>参数: </li></ul><ul><li>-f< 名称文件 >   从 名称文件 中读取 一个或多个 要检测的 文件,让 file 依序辨识这些文件,格式为每列一个文件名称。 </li></ul>
    108. 108. <ul><li>$ file banner </li></ul><ul><li>banner: ELF  32-bit LSB  executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped </li></ul><ul><li>显示文件 banner 是一个基于 Intel CPU 的计算机上的可执行文件。 </li></ul><ul><li>  其中, ELF 是一种为 Linux 系统所采用的通用文件格式,支持动态连接 (excutive linked file) 。 </li></ul><ul><li>LSB 是 Linux Standards Base(Linux 国际标准 ) , LSB 标准定义了二进制环境,符合 LSB 的应用程序可以在其中运行。 </li></ul>$ file cat.man.gz cat.man.gz:gzip compressed data, deflated, original filename, 'cat.man', last modified:Sun Apr 28 16:22:05 2002, os: Linux cat.man.gz 包含通过 gzip 命令压缩的数据
    109. 109. <ul><li>$ file /* </li></ul><ul><li>/bin: directory </li></ul><ul><li>/boot: directory </li></ul><ul><li>/dev: directory </li></ul><ul><li>/etc: directory </li></ul><ul><li>/home: directory </li></ul><ul><li>/lib: directory </li></ul><ul><li>/lost+found: directory </li></ul><ul><li>/mnt: directory </li></ul><ul><li>/opt: directory </li></ul><ul><li>/proc: directory </li></ul><ul><li>/root: directory </li></ul><ul><li>/sbin: directory </li></ul><ul><li>/tmp: sticky directory </li></ul><ul><li>/usr: directory </li></ul><ul><li>/var: directory </li></ul>显示根目录下所有文件的类型
    110. 110. 查看完整的文件 <ul><li>  如果您有文件的读权限,就可以用 cat 命令在屏幕上显示一个或多个文件的所有内容。 </li></ul><ul><li>cat 命令 </li></ul><ul><li>格式: cat[ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:在标准输出 ( 默认为屏幕 ) 上连接、显示“文件列表”中的文件。 </li></ul>参数: -E 在每一行的末尾显示符号 $ -n 为显示行添加行号 因为该命令显示文件内容时不是每次一屏或一页,所以,如果文件的内容多于一页时只能看到最后一页。
    111. 111. <ul><li>当不带参数执行 cat 命令时,它每次读取一行标准输入并以标准输出的形式发送。默认情况下,命令的标准输入是键盘,标准输出是显示屏幕。所以,每次执行 cat 命令时,它就会从键盘获取输入,并在显示器上显示输出,每次一行。当用户在新行按下 <Ctrl+D>( 或 Ctrl+C) 时,即 Linux 文件结束标记,命令就会终止。 </li></ul><ul><li>有时您想要所显示的文件内容带有行号。可以用 cat -n 还显示其行号。例如 cat -n lab1.C 。 </li></ul><ul><li>可以用 tac 命令 (cat 的逆序 ) 来逆序显示一个文件。 </li></ul>
    112. 112. 每次查看一页文件 <ul><li>1 、 more 命令 </li></ul><ul><li>格式: more [ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:在标准输出上连接、分页显示文件列表中的文件内容,每次一页 ( 默认情况为屏幕上显示内容 ) 。 </li></ul><ul><li>参数: </li></ul><ul><li>+/str 指定要搜寻的字符串 str ,从包含 str 的第一行的前两行开始显示 </li></ul><ul><li>-nN 每屏 / 页显示 nN 行 </li></ul><ul><li>+N 从第 N 行开始显示文件内容 </li></ul><ul><li>浏览文件内容时 </li></ul><ul><li>用空格键进行下翻页 </li></ul><ul><li>按回车则进行向下行移动 </li></ul><ul><li>按“ q” 则退出 </li></ul>
    113. 113. $ more sample letter memo 每次一屏地显示当前工作作目录中的文件 sample 、 letter 和 memo 的内容。文件的显示顺序和命令中列出的顺序相同。 $ more -20/usr/include/sys/param.h 显示文件 /usr/include/sys/param.h 的内容,显示时每次一页,每页 20 行。 格式: more 功能:当显示内容超过一幅屏幕时,可用 more 分屏显示。可使屏幕显示满一幅时,暂停输出,按“ Enter” 键,屏幕滚动一行,按空格键滚动一幅。 $ cal -y|more 分屏显示整年月历
    114. 114. <ul><li>2 、 less 命令 </li></ul><ul><li>格式: less [ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:分页显示文件列表中的文件内容 </li></ul><ul><li>参数: </li></ul><ul><li>-N 显示行号 </li></ul><ul><li>-p 模式 搜索文件中第一个出现“模式”的位置 </li></ul><ul><li>浏览文件内容时,用键 <PgUp><PgDn> 进行上下翻页,用方向键进行上下行移动,按“ q” 则退出。 </li></ul><ul><li>less 在显示一个文件的时候并不完整读取整个文件,这样对大文件来说,与 more 命令或 vi 编辑器相比,它的效率更高。 </li></ul>
    115. 115. $ less -N bash.man -N 选项用于显示文件 bash.man 的内容及其行号 1 2 3 4 BASH2(1) BASH2(1) 5 6 7 NAME 8 bash2 - GNN Bourne-Again SHell 9 10 SYNOPSIS 11 bash2 [options] [file] 12 13 COPYRIGHT 14 Bash is Copyright (C) 1989-1999 by the Free 15 Software Foundation, Inc. …
    116. 116. 复制文件 <ul><li>cp 命令 </li></ul><ul><li>格式: cp [ 选项 ] 文件 1  文件 2 </li></ul><ul><li>功能:复制文件 1 ,并将副本命名为文件 2 。如果文件 2 是一个目录,就将文件 1 的副本放在该目录下。 </li></ul><ul><li>  其中,文件 1 为源文件,文件 2 为目标文件 </li></ul>
    117. 117. <ul><li>参数: </li></ul><ul><li>-a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,将档案状态、权限等资料都照原状予以复制其作用等于 dpR 选项的组合。 </li></ul><ul><li>-d 拷贝时保留链接,即当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 </li></ul><ul><li>-i 如果目标文件存在,在覆盖前提示。 </li></ul><ul><li>- p 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 </li></ul><ul><li>-r 递归复制文件和子目录 。 </li></ul><ul><li>-R 除了管道被复制而不是读取以外,其他和 -r 选项一样。 </li></ul>
    118. 118. <ul><li>$ ls </li></ul><ul><li>memo sample temp </li></ul><ul><li>显示复制前当前目录的状态 </li></ul><ul><li>$ cp temp temp.bak </li></ul><ul><li>生成 temp 的副本,并将副本命名为 temp.bak </li></ul><ul><li>$ ls </li></ul><ul><li>memo sample temp temp.bak </li></ul><ul><li>显示复制后当前目录的状态 </li></ul><ul><li>$ ls -l </li></ul><ul><li>-rwxr-----   1   sarwar   faculty   371   Nov   17   21:57   memo   </li></ul><ul><li>--wxr-----   1   sarwar   faculty   164   Nov   17   22:22   sample </li></ul><ul><li>-r-xr-----   1   sarwar   faculty   792   Nov   17   10:57   temp </li></ul><ul><li>-r-xr-----   1   sarwar   faculty   792   Nov   17   23:01   temp.bak </li></ul><ul><li>以长列表形式显示复制后当前目录的状态,以查看文件权限 </li></ul>
    119. 119. <ul><li>cp 命令必须有源文件 ( 将要被复制的文件 ) 的读权限和包含源文件和目标文件的目录的执行权限。 </li></ul><ul><li>如果目标文件不存在,必须它所在的目录的写权限。 </li></ul><ul><li>如果目标文件存在,则不需要具有包含该文件的目录的写权限,但必须具有该文件的写权限。 </li></ul><ul><li>如果目标文件存在,而且具有该文件的写权限,那么它会直接被覆盖而不会得到任何系统提示。要在覆盖一个已存在文件之前获得提示,需要使用 -i 选项。 </li></ul><ul><li>如果没有目标文件的写权限,系统就会提示不能覆盖此文件。 </li></ul><ul><li>如果没有源文件的读权限,屏幕上会出现相应的错误信息。 </li></ul>
    120. 120. <ul><li>$ cp letter letter.bak </li></ul><ul><li>cp: cannot stat ‘letter’:No such file or directory </li></ul><ul><li>产生错误信息,因为当前目录中不存在 letter 文件。 </li></ul><ul><li>$ cp memo temp.bak </li></ul><ul><li>cp: cannot open ‘memo’ for reading: Permission denied </li></ul><ul><li>产生错误信息,因为文件 temp.bak 虽然存在,但用户没有该文件的写权限。 </li></ul><ul><li>$ cp /etc/shadow ~/etc/shadow </li></ul><ul><li>cp: cannot open '/etc/shadow' for reading: Permission denied </li></ul><ul><li>产生了错误,因为用户没有系统文件 /etc/shadow 的读权限。 </li></ul>
    121. 121. <ul><li>$ cp -i lab* ~/courses/ee446/backups </li></ul><ul><li>复制当前目录中的所有以字符串 lab 开始的文件,并将这些副本放置在目录 ~/course/ee446/backups 下。使用 -i 选项时,如果备份目录中已存在源文件,则该命令会提示您覆盖。 </li></ul><ul><li>$ cp -r ~/courses ~/backups </li></ul><ul><li>将 ~/course 目录递归复制到 ~/backups 目录中。将一个目录完整的复制到另一目录,就需要使用带有 -r 选项的 cp 命令。该选项将源目录下的文件和子目录递归复制到目标目录。 -r 是一个很有用的选项,您可以用它对重要的目录作定期备份。 </li></ul>
    122. 122. 文件的移动和重命名 <ul><li>mv 命令 </li></ul><ul><li>格式: mv [ 参数列表 ] 文件 1 文件 2 </li></ul><ul><li>或 </li></ul><ul><li>mv [ 参数列表 ] 文件列表 目录 </li></ul><ul><li>功能: 移动或更名现有的文件或目录。 </li></ul><ul><li>第一个语法:将文件 1 重命名为文件 2 </li></ul><ul><li>第二个语法:将“文件列表”中的所有文件移动到目录中 </li></ul>
    123. 123. <ul><li>参数: </li></ul><ul><li>-f 或— forc e 若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。 </li></ul><ul><li>-i 或— interactive 覆 盖前 给出提示让 用户 选择是否覆 盖。 </li></ul><ul><li>-u 或— update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件 ,同时,源文件被删除 。 </li></ul>
    124. 124. <ul><li>mv 命令必须具有包含已存在文件的目录的写访问权限和执行访问权限,但可以没有该文件本身的读、写、或执行权限。 </li></ul><ul><li>mv 命令必须具有包含目标文件目录的写访问权限和执行访问权限,目标文件路径名中每个目录的执行权限,已存在文件的写权限。 </li></ul><ul><li>如果目标文件已存在,而且具有它的写权限,默认情况下是不会给出提示直接将它覆盖。但是,如果用 -i 选项,在覆盖目标文件之前,系统会给出提示。 </li></ul>
    125. 125. <ul><li>$ mv temp temp.moved </li></ul><ul><li>将文件 temp 移动到 temp.moved 。这样就是把文件 temp 重命名为 temp.moved 。如果 temp 文件不存在,或者如果您不具有该文件所在目录的写权限和执行权限,就会出现一个错误消息。如果文件 temp.moved 已经存在,但是没有它的写权限, mv 命令也会在您移动该文件时给出提示信息。 </li></ul><ul><li>$ mv temp ~backups/temp.old </li></ul><ul><li>将文件 temp 移动到 ~/backup 目录中,并重命名为 temp.old 。 </li></ul><ul><li>$ mv -f temp temp.moved </li></ul><ul><li>进行强制移动,忽略目标 temp.moved 的权限。 </li></ul><ul><li>$ mv dir1/* dir2 </li></ul><ul><li>目录 dir1 中的所有文件和目录 ( 不包括隐藏文件 ) 移动到目录 dir2 中。执行命令后,目录 dir1 仍然存在,但目录中只包含隐藏文件;用命令 ls -a 可以确认这种情况。 </li></ul>
    126. 126. 移除 / 删除文件 <ul><li>rm 命令 </li></ul><ul><li>格式: rm [ 选项 ] 文件列表 </li></ul><ul><li>功能:从文件结构 ( 及磁盘 ) 删除“文件列表”中的文件 </li></ul><ul><li>参数: </li></ul><ul><li>-f 强制删除,不考虑“文件列表”的权限,在删除文件时不显示提示 </li></ul><ul><li>-i 在用户删除“文件列表”的文件之前作出提示 </li></ul><ul><li>-r 递归删除目录下的所有文件。该操作会删除目录下的所有文件,所以在使用该选项前,应予以确认。 </li></ul>
    127. 127. <ul><li>$ rm backups/temp.old </li></ul><ul><li>从当前目录下子目录 backups 中删除 temp.old 文件 </li></ul><ul><li>$ rm -f phones grades ~/letters/letter.john </li></ul><ul><li>删除文件 phones 、 grades 、 ~/letters/letter.john ,不考虑是否有访问权限 </li></ul><ul><li>$ rm ~/dir1/* </li></ul><ul><li>删除 ~/dir1 目录下的所有文件,但 dir1 目录本身不会被删除 </li></ul><ul><li>$ rm[a-kA-Z]*.prn </li></ul><ul><li>删除当前目录中所有具有 .prn 扩展名,并以小写字母 a 到 k ,或任意大写字母开头的文件 (k 与 A 之间无空格 ) </li></ul><ul><li>$ rm -rf ~/backups </li></ul><ul><li># 递归删除 ~/backups 目录中的所有文件和子目录。 </li></ul><ul><li>执行该命令后, ~/backups 目录中所有的文件和目录将会丢失。 </li></ul><ul><li>$ rm -ir ~/personal </li></ul><ul><li>在递归删除一个目录时,通常将 -i 和 -r 选项组合使用 </li></ul>
    128. 128. 确定文件大小 <ul><li>确定 Linux 中文件的大小常使用的两个命令是 ls -l 和 wc 。以前曾经提到过, ls-l 命令的输出中第 5 个字段就是文件的大小 ( 字节 ) 。 </li></ul>$ ls -l lab2 -r-xr--r–   1   sarwar   faculty   163   April   22   17:15   lab2 文件 lab2 的大小是 163 字节 <ul><li>ls -l 是一个通用命令,它可以获得一个或多个文件的大多数属性,包括它们的大小 ( 以字节为单位 ) ;而 wc 是一个专用命令,只显示文件大小。 </li></ul>
    129. 129. <ul><li>wc 命令 </li></ul><ul><li>格式: wc [ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:统计文件列表中的文本文件的大小,可以显示行数、单词数和字节数 </li></ul><ul><li>参数: </li></ul><ul><li>-c 只输出字节数 ( 包括每行的结束符 ) </li></ul><ul><li>-w 只输出单词数 </li></ul><ul><li>-l 只输出行数 </li></ul><ul><li>在 wc 命令的输出中,每行是一个文件,一行有 4 个字段:行数、单词数、字节数和文件名。该命令不适用于目录。 </li></ul><ul><li>$ wc sample </li></ul><ul><li>4 44 227 sample </li></ul>
    130. 130. 输入 / 输出重定向和管道 <ul><li>标准输入 stdin </li></ul><ul><ul><li>Linux 从标准输入中读取信息 </li></ul></ul><ul><ul><li>shell 一般将标准输入设置成键盘 </li></ul></ul>① 标准输入与标准输出
    131. 131. <ul><li>标准输出 stdout </li></ul><ul><ul><li>Linux 把输出信息送到标准输出中 </li></ul></ul><ul><ul><li>shell 一般将标准输出设置成显示器 </li></ul></ul><ul><li>例:命令 “ cat f1 ” 的功能是将 f1 的内容输出到标准输出中,则命令执行结果就是把 f1 内容在显示器上显示 </li></ul><ul><li>错误输出 stderr </li></ul><ul><ul><li>Linux 把命令执行时产生的错误信息送往错误输出,而不是标准输出,但一般两者是一致的,即显示器。 </li></ul></ul>
    132. 132. ② 输入重定向 <ul><li>输入重定向用于改变一个命令输入源。 </li></ul><ul><li>< 符号用于把当前命令的输入,重定向为指定的文件。 </li></ul><ul><li>例 1 :统计文本文件 test 的字符数等 </li></ul><ul><li>$ wc test </li></ul><ul><li>或 </li></ul><ul><li>$ wc<test </li></ul>
    133. 133. <ul><li><< 符号进行重定向,产生的文档称为 here 文档,它将对 分隔符之间的正文重定向输入给命令 。 </li></ul><ul><li>例 2 :使用重定向符“ <<” 对输入的内容进行字数统计 </li></ul><ul><li>(1) 在 shell 提示符下输入命令,其中 x 为分隔符 (x 为任意“ a-z” 内的字符 ) </li></ul><ul><li>$ wc –w << x </li></ul><ul><li>(2) 屏幕出现“ >” 符,在“ >” 符后按要求输入文本 </li></ul><ul><li>>Jack claimed to be making both ends meet </li></ul><ul><li>>They declined to accept her proposal </li></ul><ul><li>(3) 在“ >” 符后,输入“ x”( 开始输入的分隔符 ) 结束输入 </li></ul><ul><li>>x </li></ul><ul><li>(4) 屏幕显示统计结果 </li></ul><ul><li>14 </li></ul><ul><li>$ </li></ul>
    134. 134. <ul><li>输入重定向不常用 ,因为大多要求文件输入的命令都可以通过参数指定文件。 </li></ul><ul><li>只有当一些需要文件作为输入,而又没有相应参数时,可考虑采用输入重定向。 </li></ul>
    135. 135. ③ 输出重定向 <ul><li>(1) 输出重定向是把一个命令的输出,重定向到一个文件里,而不是输出到标准输出(显示在屏幕上)。 </li></ul><ul><li>输出重定向符为“ > ” 。 </li></ul><ul><li>$ ls >directory.out </li></ul><ul><li>把 ls 命令的输出保存为一个名为 directory.out 文件中 </li></ul><ul><li>(2) 追加:把一条命令的输出结果加在已有文件名的后面。可使用追加重定向符“ >> ” 。 </li></ul><ul><li>$ ls f1>>directory.out </li></ul>
    136. 136. <ul><li>(3) 错误输出:把正常输出结果输出到屏幕上,而把错误信息输出到另一个文件中,使用输出定向符 2> (或“ 2>>” ) </li></ul><ul><li>$ ls *.doc 2>err.out </li></ul><ul><li>(4) 将标准输出和错误输出同时送到同一文件中,使用输出重定向符“ &> ” 。 </li></ul><ul><li>$ ls *.doc &>both.out </li></ul><ul><li>(5) 标准输入和标准输出可以同时改变。 </li></ul><ul><li>$ wc –l <f1 >f2 </li></ul><ul><li># 在执行命令 wc –l 时。标准输入变成 f1 ,标准输出变成 f2 。 </li></ul><ul><li>$ cat <f1 >test </li></ul>
    137. 137. ④ 管道 <ul><li>管道( pipe )是一个通信通道,它 把一个进程与另一个进程连接起来 ,管道用于处理 进程之间的信息传送 。 Linux 的 管道通过文件实现 。 </li></ul><ul><li>管道实际上是 将一个程序的标准输出写到一个文件中去,再将这个文件的内容作为另一条命令的标准输入 。它的作用就是通过临时文件将多个命令结合起来。 </li></ul>
    138. 138. <ul><li>“ | ” 是 管道符 ,若干个简单命令用“ |” 就构成了一条 命令流水线 ,或称 管道命令 。形式如下: </li></ul><ul><li>command1|command2|……|commandn </li></ul><ul><li>$ cat file1 file2|wc –l </li></ul><ul><li>相当于执行以下三条命令: </li></ul><ul><li>    cat file1 file2 >f3 </li></ul><ul><li>    wc f3 </li></ul><ul><li>    rm f3 </li></ul><ul><li>f3 是临时文件 </li></ul>
    139. 139. <ul><li>$ cat sample.txt|grep “High”|wc –l </li></ul><ul><li>把 cat 命令显示的 sample.txt 文件的内容输出送给 grep 命令。 grep 命令在输入里查找单词 High ,将输入文本中包含单词 High 的行作为输出结果被送给 wc 命令。带 -l 选项的 wc 命令将统计输入里的行数。 </li></ul><ul><li>假设 sample.txt 的内容如下: </li></ul><ul><li>Things to do today: </li></ul><ul><li>Low:Go shopping </li></ul><ul><li>High:Go to movie </li></ul><ul><li>High:Writing </li></ul><ul><li>Medium:Pick up clothes from dry clearner </li></ul><ul><li>则命令行执行结果为: </li></ul><ul><li>2 </li></ul><ul><li>指出包含单词 High 的行数有两行 </li></ul>
    140. 140. 文件的追加 <ul><li>格式: cat [ 文件列表 ] >> 目标文件 </li></ul><ul><li>功能:将“文件列表”中所有文件的内容追加到目标文件的末尾;如果没有“文件列表”,就使用标准输入。 </li></ul><ul><li>$ cat sample >> temp </li></ul><ul><li>在文件 temp 的末尾加入文件 sample 的内容。 </li></ul><ul><li>$ cat memo1 memo2 memo3>>memos.record </li></ul><ul><li>将 memo1 、 memo2 和 memo3 的内容追加到文件 memos.record 的末尾。 </li></ul><ul><li>如果没有文件列表参数,该命令用于在文件末尾追加键盘输入内容。 </li></ul><ul><li>$ cat >> test.letter </li></ul><ul><li>从键盘获取输入,并将其追加到名为 test.letter 的文件中。 </li></ul><ul><li>当在新的一行按下 <Ctrl+D> 时,该命令就会终止。 </li></ul>
    141. 141. 文件的合并 <ul><li>格式: cat [ 文件列表 ] > 目标文件 </li></ul><ul><li>功能:合并“文件列表”中的文件到“目标文件”中。 </li></ul><ul><li> 如果没有指定文件列表,就将键盘输入保存在目标文件中,可以用 cat 命令创建文本文件。使用这种方式时,当您在新行按下 <Ctrl+D> 时,该命令就会终止。如果目标文件已经存在,它将被覆盖。如果没有该文件的写权限,则会显示错误信息。 </li></ul><ul><li>$ cat data1 data2 data3>data123 </li></ul><ul><li>将文件 data1 、 data2 和 data3 中的内容保存在文件 data123 中 </li></ul><ul><li>等同于 </li></ul><ul><li>$ cat data ? >data123 </li></ul><ul><li>等同于顺序执行以下三条命令 </li></ul><ul><li>$ cat data1>data123 </li></ul><ul><li>$ cat data2>>data123 </li></ul><ul><li>$ cat data3>>data123 </li></ul>
    142. 142. 文件的比较 <ul><li>diff 命令 </li></ul><ul><li>格式: diff [ 文件 1] [ 文件 2] </li></ul><ul><li>功能:逐行比较文件 1 和文件 2 ,以某种命令的形式显示它们之间的差异。这个命令可以将文件 1 转化为文件 2 或将文件 2 转化为文件 1 ,如果使用“ -” 代替文件 1 或文件 2 ,则从标准输入读取该文件。 </li></ul>
    143. 143. <ul><li>在下面的例子中,第一个 diff 命令将文件 1 和它自身进行比较,然后将文件 1 和文件 2 进行比较。第一个 diff 命令不会产生任何输出,因为所比较的文件是相同的。第二个 diff 命令对文件 1 和文件 2 进行比较,比较的结果包含一个指令 1c1 ,该指令之后是第一个文件第一行和第二个文件第一行。这个指令告诉您将第一个文件的第一行改为第二个文件的第一行,使它们成为相同文件。 </li></ul><ul><li>$ cat filel </li></ul><ul><li>Hello, World! </li></ul><ul><li>$ cat file2 </li></ul><ul><li>Greetings! </li></ul><ul><li>$ diff filel filel </li></ul><ul><li>$ diff filel file2 </li></ul><ul><li>1c1 </li></ul><ul><li>< Hello, World! </li></ul><ul><li>-- </li></ul><ul><li>> Greetings! </li></ul><ul><li>$ </li></ul>
    144. 144. <ul><li>该命令的参数文件 1 和文件 2 也可以是目录,如果文件 1 是一个目录, diff 命令就会在该目录中搜索名为文件 2 的文件,并将它与文件 2( 第二个参数 ) 进行比较。如果文件 2 是一个目录, diff 命令就会在该目录中搜索名为文件 1 的文件,并将它与参数中的文件 1( 第一个参数 ) 进行比较。如果两个参数都是目录,该命令就会比较两个目录中所有的同名文件。 </li></ul><ul><li>如果被比较的两个文件相同, diff 命令不会输出任何结果。当不带任何选项执行时, diff 命令就会生成一系列说明:当文件不同时,如何将文件 1 转化为文件 2 。它们是 a( 添加 ) 、 c( 改动 ) 和 d( 删除 ) 。 </li></ul>
    145. 145. <ul><li>$ cat Fall_OH </li></ul><ul><li>office Hours for Fall 2001 </li></ul><ul><li>Monday </li></ul><ul><li>9:00 – 10:00 A.M </li></ul><ul><li>3:00 – 4:00 P.M. </li></ul><ul><li>Tuesday </li></ul><ul><li>10:00 – 11:00 A.M </li></ul><ul><li>Wednesday </li></ul><ul><li>9:00 – 10:00 A.M </li></ul><ul><li>3:00 – 4:00 P.M. </li></ul><ul><li>Thurday </li></ul><ul><li>11:00 – 12:00 A.M </li></ul><ul><li>2:00 – 3:00 P.M. </li></ul><ul><li>4:00 – 4:30 P.M. </li></ul>$ cat Spring_OH office Hours for Spring 2002 Monday 9:00 – 10:00 A.M 3:00 – 4:00 P.M. Tuesday 10:00 – 11:00 A.M 1:00 – 2:00 P.M. Wednesday 9:00 – 10:00 A.M Thurday 11:00 – 12:00 A.M
    146. 146. $ diff Fall_OH Spring_OH 1c1 < office Hours for Fall 2001 -- office Hours for Spring 2002 #1c1 要求您将文件 Fall_OH 中的第一行 (Office Hours for Fall 2001) 改为文件 Spring_OH 中的第一行 (Office Hours for Spring 2002) 8a9 1:00 – 2:00 P.M. #8a9 要求在文件 Fall_OH 的第 8 行后加入文件 Spring_OH 的第 9 行 12c13 < 3:00 – 4:00 P.M. -- > #12c13 要求将文件 Fall_OH 中的 12 行 (3:00-4:00 P.al.) 变为空白行 ( 注意 > 符号后为空 ) 15,16d15 < 2:00 – 3:00 P.M. < 4:00 – 4:30 P.M. #15,16d15 要求您删除文件 Fall_OH 的 15 、 16 行
    147. 147. <ul><li>多数系统都有一个命令 diff3 ,它可用于三向比较,即比较三个文件。下例对文件 1 、文件 2 和文件 3 进行比较。输出说明了它们之间的差异,显示了造成差异的行。 </li></ul><ul><li>$cat file3 </li></ul><ul><li>Hello,World! </li></ul><ul><li>$ diff3 file1 file2 file3 </li></ul><ul><li>==== </li></ul><ul><li>1:1c </li></ul><ul><li>3:1c </li></ul><ul><li>Hello,World! </li></ul><ul><li>2:1c Greetings ! </li></ul><ul><li>$ </li></ul>
    148. 148. 文件压缩 <ul><li>gzip 命令 </li></ul><ul><li> 压缩后的文件保留了源文件的访问 / 修改时间、所有权以及访问特权。源文件从文件结构中删除。 </li></ul><ul><li>格式: gzip [ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:将“文件列表”中的文件进行压缩,并保存在“文件名 . gz” 的文件中,这里“文件名”是原始文件的名称;如果命令行中没有指定文件名或使用了“ -” , gzip 就会从标准输入读取输入数据。 </li></ul>
    149. 149. <ul><li>参数: </li></ul><ul><li>-N 根据 N 值控制压缩速度 ( 及压缩比 ) , N 为 1~9 ,数字越小速度越快,其压缩比越小,压缩率越低。 </li></ul><ul><li>-c 压缩结果输出到标准输出设备上;源文件保持不变 </li></ul><ul><li>-d 解压缩一个压缩文件 </li></ul><ul><li>-f 强制压缩文件,即使指定文件有多个链接,或相应的压缩文件 .gz 已经存在,或压缩数据来自标准输入。新产生的压缩文件覆盖相同文件名的文件时,不给提示。 </li></ul><ul><li>-l 对于压缩文件使用的参数,显示包括压缩文件的长度 (compressed size) 、压缩前文件的长度 (uncompressed size) 、压缩比 (ratio) 以及压缩前的文件名 (uncompressed name) </li></ul><ul><li>-r 递归压缩被指定为参数的目录下的文件 </li></ul><ul><li>-t 检查压缩文件的完整性 </li></ul><ul><li>-v 进入 verbose 模式,即在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 ) </li></ul>
    150. 150. <ul><li>gunzip 命令 </li></ul><ul><li>gunzip 命令用于执行 gzip 命令的逆操作,执行解压缩,并将压缩后的文件还原到原始文件。 </li></ul><ul><li>gzip -d 命令也可完成解压缩。 </li></ul><ul><li>-N , -c , -f , -l 和 -r 选项在 gunzip 命令中的作用与它们在 gzip 命令中的作用是相同的。 </li></ul>
    151. 151. <ul><li>$ gzip bash.man </li></ul><ul><li>用于压缩文件 bash.man </li></ul><ul><li>$ gzip -l bash.man.gz tcsh.man.gz </li></ul><ul><li>用于显示文件 bash.man 和 tcsh.man 的有关压缩和解压缩信息 </li></ul><ul><li>Compressed uncompr. Ratio uncompressed_name </li></ul><ul><li>72501 284046 74.4% bash.man </li></ul><ul><li>73790 261316 71.7% tcsh.man </li></ul><ul><li>146291 545380 73.1% (totals) </li></ul><ul><li>$ gzip bash.man.gz </li></ul><ul><li>gzip: bash.man.gz already has .gz suffix - unchanged </li></ul><ul><li>用于显示 gzip 不能压缩一个已经压缩过的带有 .gz 扩展名的文件 , 如果一个压缩后的文件没有 .gz 扩展名, gzip 会试图再次压缩它。 </li></ul><ul><li>$ gunzip bash.man.gz </li></ul><ul><li>用于对压缩文件 bash.man.gz 进行解压 </li></ul>
    152. 152. <ul><li>$ gzip -v bash.man tcsh.man </li></ul><ul><li>bash.man: 74.4% replaced with bash.man.gz </li></ul><ul><li>tcsh.man: 71.7% replaced with tcsh.man.gz </li></ul><ul><li>在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 ) </li></ul><ul><li>$ gzip -9 /home/user/* </li></ul><ul><li>要求用最高压缩比压缩 /home/user 目录下的所有文件。 </li></ul><ul><li>$ gzip /home/* </li></ul><ul><li>$ gunzip /home/* </li></ul><ul><li>要求对 /home 目录下的所有文件进行压缩,然后再解压。 </li></ul>
    153. 153. 搜索命令和文件 <ul><li>find 命令 </li></ul><ul><li>可以用 find 命令搜索目录列表中匹配表达式标准的文件。该命令递归搜索目录列表中的目录;也就是说,它将会搜索目录列表下任意层的所有子目录。 </li></ul><ul><li>格式: find [ 目录列表 ] [ 表达式 ] </li></ul><ul><li>功能: 搜索“目录列表”中的目录,找出满足“表达式” ( 第二个参数 ) 中所描述标准的文件。表达式中包含一个或多个匹配标准或说明组成 </li></ul><ul><li>输出:除非在表达式中明确地提出了要求,否则什么也不输出。 </li></ul>
    154. 154. <ul><li>参数: </li></ul><ul><li>-exec CMD 在退出状态时,如果命令‘ CMD’ 返回 0( 成功执行命令真值 ) ,则搜索文件满足标准。标志 {} 用于指定命令执行时文件名出现的地方,‘ CMD’ 的末尾必须以符号“ ;” 结束 </li></ul><ul><li>-inum N 查找 inode 号为 N 的文件 </li></ul><ul><li>-links N 搜索有 N 个链接的文件 </li></ul><ul><li>-name pattern 搜索文件名匹配 pattern 的文件 </li></ul><ul><li>-newer 文件 搜索在修改时间在“文件”之后的文件 ( 即比“文件”新的文件 ) </li></ul><ul><li>-ok CMD 像 -exec 一样,但首先提示用户进行确认 </li></ul><ul><li>-perm octal 搜索文件权限为 octal( 八进制数字,如 777) 的文件 </li></ul>
    155. 155. <ul><li>-print 在屏幕上显示用符合标准的文件路径和文件名 </li></ul><ul><li>-size ±N[c ] 搜索大小为 N 个单元块的文件。 N 后面的“ c” 用来测试文件的字节数,默认为 512 个字节;+ N 意味着文件大于 N 个块, -N 意味着文件小于 N 个块 </li></ul><ul><li>-user name 搜索所有权为 name 的文件 </li></ul><ul><li>(expr) 如果 expr 为真,那么表达式为真;表达式可以用“ OR” 或“ AND” 组合 </li></ul><ul><li>! expr 如果 expr 为假,那么表达式为真 </li></ul>注意:转义符“ (” 表示“ (” ,“ )” 表示“ )” 可用 -a 或一个空格表示两个条件的逻辑与 (AND) ,用 -o 表示两个条件的逻辑或 (OR) 。
    156. 156. <ul><li>$ find ~ -name Pakistan.gif -print </li></ul><ul><li>/home/faculty/sarwar/myweb/ Pakistan.html </li></ul><ul><li>在主目录中搜索文件 Pakistan.gif ,并显示此文件所在目录的路径名。如果要搜索的文件在多个目录中,那么就会显示所有目录的路径名。 </li></ul><ul><li>$ find /usr/include -name socket.h -print </li></ul><ul><li>/usr/include/sys/socket.h </li></ul><ul><li>在 /usr/include 目录中递归搜索名为 socket.h 的文件,并打印该文件的绝对路径名。 </li></ul><ul><li>$ find /usr . -inum 258072 -print </li></ul><ul><li>/home/faculty/sarwar/myweb/LinuxTcpIp </li></ul><ul><li>递归搜索目录 /usr 和 . 目录 ( 当前工作目录 ) ,并找出所有 inode 号为 258072 的文件,并打印这些文件的绝对路径名。 </li></ul>
    157. 157. <ul><li>$ find / -name &quot;CON.FILE&quot; –print </li></ul><ul><li>从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 </li></ul><ul><li>$ find . ( -name core -o -name '*.ps' -o -name'*.o' ) -print -exec rm { }  ; </li></ul><ul><li>[output of the command] </li></ul><ul><li>在当前工作目录中搜索名为 core 的文件或扩展名为 .ps 或 .o 的文件,并显示它们的绝对路径名,然后将它们从文件结构中删除。可以用圆括号将复杂的条件括起来。在 ( 和 -o 前后务必要用空格。该命令不会提示您是否有删除的权限;要获得提示,用 -ok 代替 -exec 。 </li></ul><ul><li>  [ 注意 ] : </li></ul><ul><li>- exec 命令名称 {} 对符合条件的文件执行所给的 Linux 命令,而不询问用户是否需要执行该命令。 {} 表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。 -exec 或者 -ok 的用法都要在它所执行的 CMD 后面接 &quot; {} ;&quot; </li></ul>
    158. 158. <ul><li>whereis 命令 </li></ul><ul><li>格式: whereis [ 选项 ] [ 文件列表 ] </li></ul><ul><li>功能:查找“文件列表”中的文件。给出可执行 ( 二进制 ) 文件、源代码和联机帮助手册的位置 </li></ul><ul><li>输出:“文件列表”中命令的可执行文件、源代码和联机帮助手册的绝对路径名。 </li></ul><ul><li>参数: </li></ul><ul><li>-b 只搜索可执行文件 </li></ul><ul><li>-m 只搜索联机帮助手册 </li></ul><ul><li>-s 只搜索源代码 </li></ul><ul><li>$ whereis ftp </li></ul><ul><li>ftp:/usr/bin/ftp/ usr/bin/ftp.expect /usr/share/man/man1/ftp.1.gz </li></ul>
    159. 159. <ul><li>which 命令 </li></ul><ul><li>  如果一个系统上的某个命令有多个版本,当键入命令时, which 实用程序可以确定所使用的 shell 所执行命令的版本的位置 ( 绝对路径名 ) 。当某个命令不能按照它的说明正常工作时, which 实用程序可用于确定执行的命令版本的绝对路径名。因为 shell 搜索路径的方式在 PATH 变量中设置,或者本地命令由于系统库的更新,使它不能正常工作。 which 命令采用一个命令列表 ( 实际是这些命令的一个文件列表 ) 作为参数,返回这些命令的绝对路径和文件名到标准输出。 </li></ul>格式 : which [ 命令 ...] 功能 :在环境变量 $PATH 设置的目录里查找符合条件的命令。
    160. 160. 文件系统备份 <ul><li>tar 命令 </li></ul><ul><li>格式: tar <options1> [options2] <fname1> <fname2>… </li></ul><ul><li>功能:对由 <filename2> ...指定的文件进行打包或恢复还原到由 <filename1> 指定的打包文件或备份设备上。 </li></ul><ul><li>说明: tar 命令后使用的可选项可以省略“ -” ,但要注意先后次序。 </li></ul><fname1> 为指定的打包备份文件或备份设备; <fname2>… 指定需要加入打包文件的文件或指定欲从打包文件中恢复还原的文件。必选选项决定了 tar 究竟要做什么。下面是关于必选选项和可选选项的意义说明。
    161. 161. <ul><li>必选选项的说明: </li></ul><ul><li>-c 创建一个新的打包备份文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 </li></ul><ul><li>-r 向打包备份文件的末尾追加一个文件。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。 </li></ul><ul><li>-t 列出打包备份文件中所含的文件清单,查看已经备份了哪些文件。 </li></ul><ul><li>-u 仅追加比打包备份文件中的文件更新的文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。 -x 从打包备份文件中恢复还原文件。 </li></ul>
    162. 162. <ul><li>可选选项的说明: </li></ul><ul><li>-f FILE 使用文件 FILE 或设备文件 FILE 来打包归档文件。如果 FILE 是“ -” ,则是指从标准输入读 ( 对解压文件 ) ,或写到标准输出 ( 对建立备份文件 ) 。 </li></ul><ul><li>-M 生成 / 列出 / 恢复还原多卷的打包备份文件,以便在几个磁盘中存放。 </li></ul><ul><li>-v 打包和恢复还原过程中,输出打包文件和恢复还原的文件信息。如无此选项, tar 不报告文件信息。 </li></ul><ul><li>-w 进行每一步操作前要确认。 </li></ul><ul><li>-z 用 gzip 来压缩 / 解压缩备份文件。加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。 </li></ul>
    163. 163. <ul><li>例如:打包并压缩备份 /etc 目录下的所有文件到备份文件 alldoc.tar.gz 中,再解压还原。 </li></ul><ul><li>其实 tar 命令包括的 z 选项,它指示 tar 用 gzip 压缩算法来自动压缩或解压缩文件。 </li></ul><ul><li>$ tar cvfz alletc.tar.gz /etc </li></ul><ul><li>$ tar xvfz alletc.tar.gz </li></ul><ul><li>完成相同的功能,也可以用: </li></ul><ul><li>$ tar cvf - /etc | gzip -c > alletc.tar.gz </li></ul><ul><li>将 .tar 文件发送给“ -” ,它代表 tar 命令的标准输出。通过管道把控制传给 gzip , gzip 对输入的 .tar 文件进行压缩,其中 -c 告诉 gzip 将它的输出传送给标准输出,而标准输出重定向到文件 alletc.tar.gz 中,即最终结果保存在 alletc.tar.gz 文件中。 </li></ul><ul><li>$ gunzip -c alletc.tar.gz | tar xvf - </li></ul><ul><li>这里 gunzip 解压缩 alletc.tar.gz 的文件内容,然后将得到的 .tar 文件传送到标准输出。接着将标准输出通过管道传给 tar , tar 从“ -” 读入要处理的文件,“ -” 代表 tar 的标准输入。 </li></ul>
    164. 164. 文件管理 <ul><li>Linux 系统将可设置权限的用户分成三类,分别是:文件主 (User) 、同组用户 (Group) 和其他用户 (Other) 。 </li></ul><ul><li>Linux 中普通文件的权限依赖于目录文件的权限 </li></ul><ul><li>命令“ ls –l” ,可查看文件或目录文件的权限 </li></ul><ul><li>命令列出的前十位中包含了文件类型和文件权限 </li></ul><ul><li>-rwxr-x--- </li></ul><ul><li>Linux 提供的常见文件类型有: </li></ul><ul><li>- 普通文件 </li></ul><ul><li>d 目录文件 </li></ul><ul><li>b 块设备文件 </li></ul><ul><li>c 字符设备文件 </li></ul><ul><li>l 链接文件。 </li></ul>
    165. 165. 文件的访问权限 <ul><li>在显示的结果中,第一个字段的第 2 ~ 10 个字符是用来表示权限。这 9 个字符每 3 个一组,组成 3 套 权限控制,第一套控制文件 所有者 的访问权限,第二套控制所有者所在 用户组的其他成员 的访问权限,第三套是 控制系统内其他用户 的访问权限。 </li></ul>所有者的权限 同组用户权限 其他用户权限 文件类型
    166. 166. 文件的访问权限 <ul><li>每套控制中三个字符按顺序排列,所代表的含义如下: </li></ul>eXecute ( 执行 ) :对文件而言,具有执行文件的权限。 对目录而言,具有进入目录的权限。用户必须具有“ x”( 检索 ) 权,才能对该目录实施有效操作,如 cd 、 ls 、 cp 、 rm 等操作。 x Read ( 读取 ) :对文件而言,具有阅读文件内容的权限。 对目录而言,具有浏览目录内容的权限。但对该目录还必须有“ x” 权。 r Write ( 写入 ) :对文件而言,具有修改文件内容的权限。 对目录而言,具有建立、移动、删除目录内文件或目录的权限。但对该目录还必须有“ x” 权。 w 表示不具有该权限,或取消该权限 -
    167. 167. 访问权限举例 例: -rwx------ 只有文件所有者具有读、写和执行权限 普通文件 用户有读、写和执行权限 用户组其它成员没有读、写和执行权限 系统内其它用户也没有读、写和执行权限
    168. 168. 访问权限举例 -rw-r--r-- 普通文件,用户有读、写权限, 组用户和其他用户只有读权限。 drwx--x--x 目录,用户有读、写和执行权限, 组用户和其他用户只有执行权限。 drwx------ 目录,用户有读、写和执行权限, 组用户和其他用户不能访问。 -rwxr-xr-x 普通文件,用户有读、写和执行权限, 组用户和其他用户有读和执行权限。 每个用户都拥有自己的专属目录(主目录),通常放置在 /home 目录下,这些专属目录的默认权限通常为 rwx------
    169. 169. 改变文件权限 <ul><li>chmod 命令 </li></ul><ul><li>格式一: chmod {a,u,g,o} {+,-,=} {r,w,x} <filename> </li></ul><ul><li>格式二: chmod nnn <filename> </li></ul><ul><li>功能:是用字符 r 、 w 、 x 形式对由 filename 指定的普通文件或目录文件,向各用户设置访问与操作权限 </li></ul><ul><li>{a , u , g , o} :设置权限的用户对象, a - 所有用户; u - 文件主; g - 同组用户; o - 其他用户 </li></ul><ul><li>{+ , - , =} :操作符,“ +” 增加权限;“ -” 删除权限;“ =” 赋予权限,使 filename 指定的文件或目录只具有指定的权限 </li></ul><ul><li>{r , w , x} :读、写、执行权限 </li></ul>
    170. 170. nnn :用三位八进制数依次对应于文件主、同组用户和其他用户的权限。三位数字中的每一位就是对应各权限之和如下: 允许读、写和执行 7 1 1 1 rwx 允许读、写 6 0 1 1 rw- 允许读和执行 5 1 0 1 r-x 只允许读 4 0 0 1 r-- 允许写和执行 3 1 1 0 -wx 只允许写 2 0 1 0 -w- 只允许执行 1 1 0 0 --x 没有任何访问特权 0 0 0 0 --- 含义 十进制值 (nnn) x w r XXX
    171. 171. <ul><li>例 1 :将文件 junk 的读取权限赋予所有用户 </li></ul><ul><li>以超级用户或文件主身份登录系统, </li></ul><ul><li># chmod a+r junk </li></ul><ul><li>例 2 :对文件 junk 删除所有者外所有用户的可读权限 </li></ul><ul><li># chmod og-r junk </li></ul>现在通过例子来说明一下针对一个目录而言,读、写和执行的特权含义。 $ chmod 600 sample $ chmod 500 courses $ chmod 300 personal $ ls -l dr-x------   2   sarwar   faculty   512   Nov   10   09:43   courses d-wx------   2   sarwar   faculty   512   Nov   10 09:43 personal drw-------   2   sarwar   faculty   512   Nov   10 09:43 sample
    172. 172. $ mkdir courses/ee345 mkdir:Failed to make directory “courses/ee345”;Permission denied # 把 courses 目录的写特权关闭,这样就不能在该目录下用 mkdir 命令创建一个名为 ee345 的子目录。 $ cd sample sample:Permission denied # 如果关闭了对目录 sample 的检索特权,那么就不能用 cd 命令进入该目录。即使用户对 sample 目录下的某个子目录有检索 (x) 的特权,但如果没有对 sample 目录的检索特权,那么仍然不能用 cd 命令进入该子目录。 $ ls -l personal personal unreadable # 如果没有对目录 personal 的读特权,那么就不能用 ls 命令来读取该目录下的文件和目录的名字。
    173. 173. 文件链接 <ul><li>Linux 系统提供了 文件链接 的方法,以实现 文件共享 。即不同的用户可同时访问一个文件,且各用户可用不同的文件名访问同一文件 </li></ul><ul><li>Linux 系统提供了 2 种文件链接方式 </li></ul><ul><li>— 硬链接 </li></ul><ul><li>— 符号链接 ,即软链接 </li></ul>
    174. 174. 硬链接 <ul><li>   Linux 系统中每个文件都用一个被称为 inode 的节点( i 结点 )来唯一标识,所以当不同的文件均被链接到同一个 inode 节点时,便实现了文件共享。 </li></ul><ul><li>  硬链接 将一文件直接链接到被链接文件的 inode 上,建立硬链接后,链接文件和被链接文件指向的是同一个 inode 结点,所以链接文件和被链接文件是同一文件。 </li></ul><ul><li>ln 命令 </li></ul><ul><li>格式 1 : ln –i <existing-file> <new-file> </li></ul><ul><li>格式 2 : ln <existing-file> <new-file> </li></ul><ul><li>其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。 </li></ul><ul><li>命令执行后,便建立了 new-file 到 existing-file 的硬链接。即用户无论是用文件名 existing-file 还是用文件名 new-file ,访问的结果是同一个文件。 </li></ul>
    175. 175. <ul><li>例如,要求在当前目录下建立文件 filehard 到文件 file 的链接。 </li></ul><ul><li>$ ln -i file filehard </li></ul><ul><li>当为一个文件建立硬链接时,文件的链接计数会加一。当使用 rm 命令删除多于一个链接(或被链接)的文件时,链接计数减一。如果新的链接计数不为零,实际上删除只不过是文件的一个链接 ( 目录项 ) 。文件的内容和其他链接 ( 目录项 ) 并没有被删除。如果相关的链接计数减到零,系统才会删除文件的目录项,释放文件的 inode 节点以供重用,收回分配给文件的磁盘空间用于保存将来创建的其他文件和目录。当使用 rm 命令删除只有一个链接的文件时,才真正删除文件自身。 </li></ul>注意:用户只能在同一文件系统中对文件进行硬链接。并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。
    176. 176. 符号链接 <ul><li>符号链接允许用户为文件另取一个名字,但却不将其与链接文件的 inode 相链接,即链接文件与被链接文件的 inode 节点号是不同的。符号链接允许在两个不同的文件系统间建立文件的符号链接。 </li></ul><ul><li>格式: ln –s <existing-file> <new-file> </li></ul><ul><li>其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。命令执行后,便建立了 new-file 到 existing-file 的符号链接。 </li></ul><ul><li>例如,若要求建立一个指向文件 file 的符号链接 filesoft 。 </li></ul><ul><li>$ ln -s file filesoft </li></ul><ul><li>注意,符号链接的权限是没有意义的,它们总是 rwxrwxrwx ,其实,符号链接的权限是由被链接文件(即文件主)的权限决定的。符号链接常用于为目录或设备文件增加名称,符号链接还允许对一个不存在的文件建立链接。 </li></ul>
    177. 177. Linux 的设备文件 <ul><li>Linux 系统的设备的驱动程序存放在 /dev 目录中 </li></ul><ul><li>这些驱动程序是用来访问系统设备和资源的,如磁盘、 Modem 、内存、鼠标等等 </li></ul><ul><li>例如: </li></ul><ul><li>用户可以通过 /dev/mouse 来访问鼠标的输入, </li></ul><ul><li>通过 /dev/fd0H1440 访问第一物理软驱中的 3.5 英寸, 1.44MB 的软盘 </li></ul>
    178. 178. <ul><li>常用设备名与具体硬件设备的对应 ( 注意区分大小写 ) </li></ul><ul><li>以“ fd ” 开头的设备名是 软盘设备 </li></ul><ul><li>fd0 代表第 1 软盘驱动器,相应软盘称为 fd0 盘 </li></ul><ul><li>fd1 代表第 2 软盘驱动器,相应软盘称为 fd1 盘 </li></ul><ul><li>以“ hd ” 开头的设备名是 IDE 硬盘设备 </li></ul><ul><li>/dev/hda 代表物理上第一的硬盘 </li></ul><ul><li>/dev/hdb 代表物理上第二的硬盘 </li></ul><ul><li>/dev/hda1 代表第一硬盘的第一个分区,依次类推 </li></ul><ul><li>/dev/cdrom 是用于访问 光盘驱动器 的设备文件 </li></ul>
    179. 179. <ul><li>以“ lp ” 开头的设备名代表 并行端口 </li></ul><ul><li>/dev/lp0 代表第一个物理并行口 </li></ul><ul><li>以“ tty ” 开头的设备名代表 虚拟终端 </li></ul><ul><li>/dev/tty1 代表第一个虚拟终端 </li></ul><ul><li>/dev/tty2 代表第二个虚拟终端 </li></ul><ul><li>以 “ sd ” 开头的设备名代表 SCSI 设备 </li></ul><ul><li>如果你有一个 SCSI 硬盘,那么就要用设备文件 /dev/sda 而不是 /dev/hda 来访问它,而 SCSI 的 CD-ROM ,则通过 /dev/sr 设备文件访问。 </li></ul>
    180. 180. Linux 支持的文件系统 <ul><li>Linux 系统对能识别的所有文件系统类型提供了一个通用接口, 可以 通过 cat /proc/filesystems 命令了解 当前注册的文件系统类型。 </li></ul><ul><li>Linux 目前支持的常用文件系统 : </li></ul><ul><li>— ext2 文件系统(是 Linux 使用的磁盘文件系统,用于存储 Linux 文件) </li></ul><ul><li>— ext3

    ×