SlideShare a Scribd company logo
第 4 章  Linux 常用命令 4.1  Linux  系统目录的功能介绍  4.2  Linux 系统的启动和退出 4.3  Linux 系统对文件和目录的操作命令
Linux   版本 RedHat Linux Red Hat  公司 创建于 1994 年,是全球最大的开源技术厂家,其产品也是全世界应用最广泛的  Linux 。公司总部位于美国北卡罗来纳州,在全球拥有多个分部。 Red Hat  是目前唯一公开上市的开放源代码厂商,也是唯一能构成微软竞争对手的开源软件公司。 Red Hat  的培训及认证被认为是  Linux  认证的标准。 Certification  杂志的最新调查显示, RHCE(Red Hat  认证工程师 )  认证被公认为总体质量最高的国际  IT  认证。
Red Hat Linux   的最终版本是  9 。 Red Hat 公司于  2003 年 9 月底宣布,将原有的  Red Hat Linux  开发计划与  Fedora Linux  计划整合成新的  Fedora Project 。 Fedora Project  将由  Red Hat  公司赞助,以社群主导和支持的方式,开发  Linux  发行版  Fedora Core 。 目前最高版本为  Fedora Core 6 。
4.1  Linux  系统目录的功能介绍 根据 1994 年发布的文件系统标准( FSSTND ),所有的 Linux 文件系统都有标准的文件和目录结构。那些标准目录又包含一些特定的文件。下面来简要介绍一下每个目录的作用。 根目录( / ) 根目录位于分层文件系统的最顶层,用斜线( / )表示。它包含一些标准文件和目录,因此可以说它包含了所有的目录和文件。
/bin   /bin 目录,也称为二进制目录,包含了那些供系统管理员和普通用户使用的重要的 Linux 命令的二进制(可执行)映像。这个目录下的文件要么是可执行文件,要么是其他目录下的可执行文件的符号连接。目录 /usr/bin 存放了大部分的用户命令。
/boot /boot 目录下存放的是 Linux 系统启动时要用到的所有文件,包括 Linux 内核的二进制映像。当用 lilo 引导 Linux 时,会用到这里的一些信息 grub 的配置文件也放在这里。 /dev /dev 目录,也称为设备目录,存放连接到计算机上的设备的对应文件,包含了 Linux  系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。
/etc /etc 目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、 X 窗口系统配置文件、设备配置信息、设置用户信息等; /etc 目录不包含任何二进制文件。这个目录下的文件主要由管理员使用;普通用户对大部分文件有读权限。 /home 用户的基本目录, /home  如果建立一个名为“ xx” 的用户,那么在 /home 目录下就有一个对应的“ /home/xx” 路径,用来存放该用户的主目录。
/lib /lib 目录下存放了各种编程语言库,包括库文件和 kernel 模块。典型的 Linux 系统包含了 C 、 C ++、 FORTRAN 语言的库文件。 /lib 目录下的库映像文件可以用来启动系统并执行一些命令。实际上它包含了标准 C 库 /lib/libc.so.* ,数学库 libm.so.* ,共享的动态链接库 /lib/ld/so 以及目录 /lib 和 /sbin 下命令用到的其他共享库。目录 /lib/modules 包含了可加载的内核模块。 /lib 目录用来存放系统动态连接共享库文件,几乎所有的应用程序都会用到该目录下的共享库文件,其他的库文件则大部分存储在目录 /usr/lib 下。
/lost+found /lost+found  该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。 /lost+found 目录存放所有和其他目录都没有关联的文件。这些文件可以用 Linux 工具 fsck (文件系统检查)查找得到的。系统管理员使用 fsck 检查文件系统,并决定保留或删除这些文件。
/mnt /mnt 目录在一般情况下也是空的,主要用来临时装载文件系统,系统管理员执行 mount 命令完成装载。工作在系统中,这个目录包含了光驱、磁盘和软驱的装载点。这样,当装载了一个设备时,如光驱,就可以通过访问目录 /mnt/cdrom 的文件来访问相应光盘上的文件。 /proc /proc 目录存放了进程信息和系统信息,这些信息是在内存中由系统自己产生的。
/root 许多 Linux 系统都将目录 /root 作为根用户(超级用户)的主目录。该目录受到完全保护,不受普通用户的影响,普通用户没有权限访问 /root 目录。 /sbin /sbin  该目录用来存放系统管理员的系统管理程序。 目录 /sbin 、 /usr/sbin 、 /usr/local/sbin 包含系统管理工具、实用程序和通用的根用户专用命令。
/usr /usr 目录是 Linux 文件系统中最大的一个部分,要用到的应用程序和文件几乎都存放在这个目录下面。它包含了主机之间可以共享的只读数据。在多数 Linux 系统中, /usr 至少包含了下面的子目录: X11R6 、 bin 、 doc 、 games 、 include 、 lib 、 local 、 man 、 sbin 、 share 、 src 和 tmp 。
/usr 中的主要子目录
/tmp /tmp 目录用来存放不同程序执行时产生的临时文件。一些命令和应用程序要用到该目录。您也可以用该目录存放自己的一些临时文件。该目录中的所有文件会被定期删除,以保证磁盘 ( 或磁盘分区 ) 不会被临时文件所塞满。 /tmp 目录下某个文件的生命期是由系统管理员所设定的,而且因系统而异,但通常只有若干分钟。多数系统都为 /tmp 目录设置了粘滞位( sticky bit ),这样只有文件的所有者才能从该目录中删除文件。
/opt /opt 目录用来安装附加软件包。用户调用的软件包程序放在目录 /opt/package_name/bin 下, package_name 是安装的软件包名称。软件包的参考手册放在 /opt/package_name/man 下。 /var /var 目录是系统在工作时预先设置的工作目录,如各种服务的日志文件和收发的邮件等。 /var 目录用于放置变量数据 ( 当系统运行时这些数据不断变化 ) 。
/etc/passwd  文件 /etc/passwd 对每个用户都有一行描述。每一行由 7 个字段组成,各个字段用冒号隔开。 下面是每行的格式: login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell
home_directory 字段是用户主目录的绝对路径。 l ogin_shell 包含了用户登录 shell 的绝对路径。当用户登录到系统时,相应于该字段所指定路径名的命令就会被系统执行。如果出现两个连续的冒号,就意味着两个冒号之间的那个字段缺少字段值,值为空。有时 user_info 字段会出现空值。 login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell 例如: davis:x:134:105:James A Davis:/home/student/davis:/bin/bash
4.2  Linux 系统的启动和退出 启动系统  登录方式  修改口令  退出登录  关闭机器  用户帐号管理  虚拟终端  Shell 简介  Linux 系统常用命令格式
启动 Linux 系统 以 Fedora Core 4 为例说明 启动计算机,出现  GRUB( GRand Unified Bootloader 多重启动管理器  )  引导程序
GRUB  启动菜单 GRUB  菜单
一些基本术语 命令  (Command)   给计算机的指令,通常使用键盘输入 命令行  (Command line)   输入命令的地方 shell : 是一种命令解释器,它提供了用户和操作系统之间的交互接口。当用户在命令行输入命令后, shell  进行解释,然后送往操作系统(内核)执行。   shell  可以执行  Linux  的系统内部命令,也可以执行应用程序。你还可以利用  shell  编程,执行复杂的命令程序。 root :根用户、超级用户、管理员,它对整个系统有完全的访问权。只有超级用户才能更改系统的设置等。 当使用超级用户登录后,进行相关操作时需非常谨慎,否则可能会对系统或用户文件造成不可挽回的损失。
字符操作环境 虽然  Linux  提供了漂亮的图形界面操作环境,但有时仍需返回到字符界面 命令行方式 下工作。特别是当系统出现问题时,在字符界面下, Linux 只加载少量的应用程序,以便用户修正 Linux 相同可能的错误。某些无法或不方便在图形界面下操作的任务,也需要命令行方式。 终端是  UNIX  的一个标准特性,用户可以通过终端访问系统资源。 Linux  下的字符操作环境有两种:一种是控制台( console )或终端  (Terminal) ;另一种是图形界面下提供的多种虚拟终端,如  xterm 、 rxvt  等。
Linux  登录方式 Linux  有两种登录方式: 文本模式   和  图形模式 文本模式 : 字符操作环境 Fedora Core release 4 (Stentz)  Kernel 2.6.11 - 1.1369_FC4 on an i686   login:   键入正确的用户名和口令后,就可以进入系统 注: Linux  区分大小写!
用户主目录 用户登录后,将会进入一个系统指定的专属目录,即用户的 主目录 ,该目录名通常为用户的登录帐号。 在创建用户时,系统管理员会给每个用户建立一个主目录,通常在  / home /   目录下。 例:用户  user1  的主目录为  /home/user1/ 用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。 每个用户名对应一个用户  ID  号(一个数字)。 每个用户都被分配到一个指定的组  (group)  中
图形登录方式 在图形界面下登录
登录回话菜单 语言  (L) : 选择语言,默认为安装是选择的语言。 重新引导  (R) : 重启计算机 关机  (R) : 关闭计算机 上次 :上次登时使用的桌面管理器 系统 默认 : Fedora core  默认的桌面管理器是  GNOME GNMOE :  GNMOE  桌面管理器 KDE :  KDE  桌面管理器 安全模式 :显示没有桌面管理器的  xterm  终端 会话  (S) : 采用什么样的桌面管理器
桌面 登录后出现的图形界面: 面板 panel
X Windows  系统 X Widows  系统 也称为  X ,是在  UNIX  类的操作系统中应用最为广泛的基于窗口的用户图形界面。 X Widows  使用方便,界面直观,并且和具体的计算机的硬件无关,也独立于操作系统。同时它支持分布式的网络操作。所以,基于  X Window  的应用程序一直在  UNIX  类的操作系统中占有主导的地位。 Linux  出现以后, X Window  系统也有了在  Linux  系统上的实现,成为  Linux  图形用户界面的基础。
X Windows  系统 通常  X  窗口分两层: 桌面管理器 和 窗口管理器 桌面管理器  是面向图像的用户界面,它允许用户通过管理图标而不是输入相应的  shell  命令来与系统交互。 窗口管理器  主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……  GNOME 、 KDE  ( Fedora  安装盘自带) FVWM 、 WINDOWMAKER  ( 自己下载安装 ) Linux 下常见的桌面系统有:
字符界面与图形界面 在 字符界面 中,如果想进入 图形界面 ,可以输入命令 startx 或  switchdesk  GNOME   注:在字符界面下中文可能无法正常显示。 但在虚拟终端中可以正常显示。  或  switchdesk  KDE 在 图形模式 中,想进入 字符操作环境 ,有以下方式 切换到另一个虚拟控制台。 Linux  共提供了  7  个虚拟控制台,可以用  Ctrl+Alt+F n 或 Alt+F n   来切换, F n  为功能键  F1 ~ F7 。其中  F1 ~ F6  是文本模式, F7  是图形界面。 在图形界面下,可以打开一个或多个 虚拟终端 。
打开虚拟终端 在图形界面下,如何打开虚拟终端 点击面板上的 “应用程序”    “系统工具”    “终端”。 单击鼠标右键, 从弹出的快捷菜单中选择 “终端”。 打开新的虚拟终端窗口的快捷键 Ctrl+Shift+t ( 在同一窗口中打开新的终端 ) Ctrl+Shift+n  ( 在不同窗口中打开新的终端 ) Alt+ 数字键   ( 切换终端 1~6)
虚拟终端 应用程序    系统工具    终端 单击鼠标右键, 选择 “终端”
退出 虚拟终端 只需在命令行中输入   exit
用户登录  Linux 是一个真正意义上的多用户、多任务操作系统,用户要使用该系统,首先必须登录,使用完系统后,必须退出。 Linux 下有两类用户:  root 用户 :超级用户,即系统管理员,系统的拥有者,在 Linux 系统中有且只有一个 root 用户,是对系统的一切都具有完全的访问权限的用户,可以在系统中任何操作;并可由它建立多个普通用户,共同使用该计算机系统。 root 用户的密码在系统安装时由安装者设定。  普通用户 : Linux 系统可以创建许多普通用户,并为其指定相应的权限,使其有限地使用 Linux 系统。
系统在建立之初,仅有 root 用户,其它的用户则是由 root 用户创建的。由于 root 用户的权限太大了,所以如果 root 用户误操作将可能造成很大的损失。所以建议系统管理员为自已新建一个用户,只有需要做系统维护、管理任务时才以 root 用户登录。 以 root 用户登录,系统提示符是“ #” ; 以普通用户身份进入系统,系统提示符为“ $” 。 在后面的实训中, login 为 root , Password 为 123456  
修改口令  为了更好地保护用户帐号的安全, Linux 允许用户在登录之后随时使用 passwd 命令修改自己的口令。修改口令需要经历: 输入原来的口令,如果口令输错,将中止程序,无法修改口令; 输入新的口令; 提示重复一遍新的口令,如果两次输入的口令相吻合,则口令修改成功。 root 用户修改口令,则不需要输入老密码。 root 用户可以修改任何用户的口令。
退出  Linux 注销 图形界面: 桌面    注销   字符界面: 输入命令   exit   或   logout  重启 图形界面: 桌面    注销   字符界面: 输入命令   reboot   关机 图形界面: 桌面    注销   字符界面: 输入命令   poweroff   或   halt   或   shutdown   telnet 、 ssh 远程登录
1 、 exit 命令 格式: exit  功能:退出目前的 shell (外壳程序),返回到上一级的状态。它的使用权限是所有用户。  2 、 logout 命令 格式: logout 功能:让用户退出系统,其功能和 login 指令相互对应,是登录的相对操作,登录系统后,若要离开系统,用户只要直接下达 logout 命令即可。它的使用权限是登录 shell 的用户。 退出登录
关闭机器  在结束 Linux 系统运行时,应先关闭操作系统,然后关机,而不能直接切断电源。因为在关闭系统时, Linux 的一些系统进程还在运行,而且这些进程可能正在对文件进行操作,如果仅仅是切断电源,就会使进程不能关闭文件,正常结束运行。 在 Linux 系统中,普通用户是无权关闭系统的,只有 root 用户才能够关闭系统,若此时不是 root 用户,应用 su 命令转换为 root 用户。
因此,在关闭系统,必须先使所有进程结束运行,可以通过以下几种方法实现: 按下 Ctrl+Alt+Del 组合键,系统将重新启动。 执行 reboot 命令,系统将重新启动。 执行 shutdown -h now 命令,系统将关闭计算机。 执行 halt 命令,可以关闭计算机。 注意千万不要随意采用硬关机、重启动键等方式关闭系统,那样会导致 Linux 文件系统遭受破坏。
1 、 shutdown 命令   格式: shutdown [-hknr] [-t  秒数 ] < 时间 > [ 警告信息 ] 功能: shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机动作。 参数: -h 将系统关机。  -k 只是送出信息给所有用户,但不会实际关机。  -n 不调用 init 程序进行关机,而由 shutdown 自己进行。 ( 一般关机程序是由 shutdown 调用 init 来实现关机动作 ) ,使用此参数将加快关机速度,但是不建议用户使用此种关机方式。  -r shutdown 之后重新启动。  -t< 秒数 > 送出警告信息和删除信息之间要延迟多少秒。
< 时间 > 设置多久时间后执行 shutdown 命令。时间参数有 hh : mm 或 +m 两种模式。 hh : mm 格式表示在几点几分执行 shutdown 命令。例如“ shutdown 10:45” 表示将在 10:45 执行 shutdown 。 +m 表示 m 分钟后执行 shutdown 。比较特别的用法是以 now 表示立即执行 shutdown 。值得注意的是这部分参数不能省略。  [ 警告信息 ] 要传送给所有登入用户的信息。 # shutdown -h now 指定现在立即关机 # shutdown +5 “System will shutdown after 5 minutes” 指定 5 分钟后关机,同时送出警告信息给登入用户
2 、 halt 命令 其实 halt 就是调用  shutdown -h 。 halt 执行时﹐杀死应用进程﹐执行 sync 系统调用﹐文件系统写操作完成后就会停止内核。 参数: [-f]  没有调用 shutdown 而强制关机或重启。  [-i]  关机〔或重启〕前﹐关掉所有的网络接口。  [-p]  该选项为缺省选项。就是关机时调用 poweroff 。 shutdown 或 Halt 命令的执行过程是:首先广播关闭消息,然后关闭进程,卸下文件系统,最后显示如下信息: The System is halted. System halted. 这时,便可以关闭电源了。
3 、 reboot 命令 执行 reboot 指令可让系统停止运作,并重新开机。 reboot 的工作过程差不多跟 halt 一样﹐不过它是引发主机重启﹐而 halt 是关机。
用户帐号管理  1 、创建新用户 每一个普通用户帐号均由 root 用户创建,只有建立了帐号的用户才能在 Linux 系统登录。建立一新用户帐号,包括为其设置用户名和口令。 (1)  useradd 命令 功能:建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。  (2)  passwd 命令 功能 : 对指定帐号的用户设置口令,还可以用做修改已存在用户的口令或当前登录用户的口令。 root 用户 能 修改 系统 中所有 用户的 口令,而普通 用户只能变更自己的 口令 。
更改口令: passwd 直接在命令行中输入  passwd ,然后根据提示,先输入原来的口令,回车后,再输入新口令,并确认一次。 为确保高安全性, Linux  对口令有一定的要求,而且通常需要在口令中加入一些特殊符号,如 加号 、 减号 等。 提醒: 输入密码时,屏幕上不会有任何输出或提示! 无论是 root 用户还是普通用户,修改自己的口令时,无需添加帐号,输入 #passwd 但 root 用户修改普通用户的口令时,需输入 #passwd  帐号 要修改口令的普通用户的帐号
2 、删除用户 用户的删除须由超级用户执行。 userdel 命令 格式: userdel [-r]  < 用户帐号 > 功能 :删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。 参数: - r 删除用户登入目录以及目录中所有文件。
3 、 root 用户与普通用户的身份转换 由于 root 用户的权限不受限制,只有在做特权操作时,才用 root (超级)用户帐号登录,此外则应尽量避免以 root 用户身份登录系统处理事情。但是,当为了某种需要(如修改一个用户的口令),就需要暂时取得 root 用户的特殊权限。一种方法是,退出普通用户的登录,然后以 root 用户登录,处理完相应特权操作后,为确保系统安全,避免不必要的误操作,最后还要退出 root 用户登录,以普通用户帐号登陆,显然过程太麻烦。我们可以使用 Linux 提供的 su 命令来实现 root 用户与普通用户间的快速切换。
su 命令 格式: su [ 用户帐号 ] 功能 : 变更用户身份。 参数: [ 用户帐号 ] 指定要变更的用户。若不指定此参数,则预设变更为 root 。 # su  < 普通用户帐号 > 实行 root 用户转换到普通用户 # su 实行普通用户转换到 root 用户,当然此时系统会要求操作者提供 root 用户的口令
虚拟终端  Linux 是真正的多用户操作系统,可以同时接受多个用户的远程和本地登录,也允许同一个用户多次登录。 Linux 为本地用户 ( 也就是做在计算机面前的用户 ) 提供了虚拟终端访问方式,允许用户在同一时间从不同的控制台进行多次登录。 Linux 提供了六个虚拟终端,虚拟终端的选择可以通过按 Alt 键加上 F1~F6 六个功能键来实现。例如,用户登录后,按一下 Alt+F2 组合键,用户又可以看到“ login:” 提示符,这其实就是第二个虚拟终端,而这时再按下 Alt+F1 组合键,用户则又可以回到第一个虚拟终端。 大家可以通过使用虚拟终端来感受 Linux 系统多用户的特性。例如用户可以在某一虚拟终端上进行的工作尚未结束时,就可以切换到另一个虚拟终端上开始另一项工作。
Shell 简介  Shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。 shell  是系统的用户界面,它提供了用户和  Linux (内核)之间进行交互操作的一种接口。用户在命令行中输入的每个命令都由  shell  先解释,然后传给 Linux  内核去执行。 如果把  Linux  内核想象成一个球体的中心, shell  就是围绕内核的外层,从  shell  向  Linux  操作系统传递命令时,内核就会做出相应的反应。
shell  的另一个重要特性是它自身就是一个解释型的程序设计语言, shell  程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组等。 shell  编程语言简单易学,一旦掌握后它将成为你的得力工具。任何在命令行中能键入的命令也能放到一个可执行的  shell  程序里。 shell  是一个命令语言解释器,拥有自己内建的  shell  命令集。此外, shell  也能被系统中其他应用程序所调用。
常用的  Shell  Bourne Shell 是 At&T Bell 实验室的 Steven Bourne 为 At&T 的 Unix 开发的,它是 Unix 的默认 Shell ,也是其它 Shell 的开发基础。 Bourne Shell 在编程方面相当优秀,但在处理与用户的交互方面不如其它几种 Shell 。 Bourne Shell 是最早被广泛使用的和标准化的 Shell ,几乎所有的 Unix 兼容系统都支持。  Linux 系统提供多种不同的 Shell 以供选择。常用的有 Bourne Shell (简称 Sh )、 C-Shelll (简称 Csh )、 Korn Shell (简称 Ksh )和 Bourne Again   Shell  ( 简称 Bash) 。  Bourne shell  (sh)
常用的  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 并不兼容。  C shell  (csh) Korn shell  (ksh)
常用的  Shell  ( 续 ) Bourne Again Shell ( 即 Bash) 是自由软件基金会 (Gnu) 开发的一个 Shell ,是多数 Linux 系统中一个默认的 Shell 。 Bash 不但与 Bourne Shell 兼容,并且在 Bourne Shell 的基础上增加和增强了很多特性,同时还继承了很多 C Shell 、 Korn Shell 的优点。 Bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。 Bourne Again Shell  (Bash) 是现在大多数  Linux  系统的缺省  shell
Linux 系统常用命令格式 command   [ 选项 ]   [ 参数 ] Command 为命令名(也就是对应的程序名),写在一行的开头; 开关符选项 通常是以 “ - ”  开始,多个选项可用一个“ - ”  连起来,如  ls -l -a   与  ls –la   相同  ; 根据命令的不同, 参数 分为可选的或必须的; 命令名 和 开关符 、 参数 之间一定要用 空格 分离。
Bash  的功能 当用户打开一个  ( 虚拟 )  终端时,可以看到一个  shell 提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数 例: ls –l /home/user1/linux/ 注意:命令行中选项先于参数输入 command   [ 选项 ]  [ 参数 ] 命令行
命令行特征 如果一个命令太长,无法在一行中显示,可以使用反斜杠  \   来续行,在多个命令行上输入一个命令或多个命令。例如: ls -F; \ cp -i mydata newdata 大多数  shell   在达到命令行行尾时都会自动断开长命令 在一个命令行中可以输入多个命令,用分号将各个命令隔开。例如: ls -F; cp -i mydata newdata
命令行特征  ( 续 ) 命令行实际上是可以编辑的一个 文本缓冲区 ,在按回车之前,可以对输入的命令进行编辑。如用  BACKSPACE   键可以删除刚键入的字符,也可以进行整行删除,还可以插入字符等。 命令行编辑
4.3  Linux 系统对文件和目录的操作命令 计算机用户总会和文件系统打交道。用户在使用计算机系统时,经常要执行一些与文件相关的操作,包括创建、读取、写、修改或执行文件。所以,用户需要明白 Linux 中的文件概念,以及如何对文件进行组织和管理。 在 Linux 中,文件就是一些字节序列,这就意味着系统中所有的一切,包括键盘在内的 I/O 设备都是一个文件。 Linux 不支持任何文件扩展名,但文件可以使用任何扩展名,可以任意给文件名加上自己或应用程序定义的扩展名,但这些扩展名对 Linux 系统来说没有任何意义。 例如,可以给一个文档加上 .exe 的扩展名( prog.exe ),给一个可执行程序加上 .doc 扩展名( memo.doc )。 有些应用程序需要用到扩展名,而有些则不需要。 例如, gzip 和 gunzip 命令需要使用扩展名 .gz , C 语言编译程序 gcc 需要使用扩展名 .c ,但不是所有的网络浏览器需要网页要有 .html 扩展名。
Linux  文件名 在  Linux  下可以用很长的一个字符 串 ( 一般不超过 255 个 )  来作文件名。 例如:   This_is.a.VERY_long.filename 注: Linux  应用程序和文件区分大小写! Linux 下文件的命名规则 文件名中不能直接使用以下字符: ! @ # $ % ^ & * ( ) [ ] { }‘ ’‘ / \ ; < >  空格 这些字符具有特殊含义,若出现在文件名中,则会产生“多义性”。若一定要使用这些字符,必须在前面加上转义符“ /” ,以取消其特殊含义。
常用的快捷键和组合键 stty  –a   可以看到更多的快捷键。 向前移动一个单词 Alt + f 清屏 Ctrl + l 移动到当前行的行尾 Ctrl + e 移动到当前行的行首 Ctrl + a 向左 / 向右移动一个字符 左 / 右箭头键 从光标处删除到本行的行尾 Ctrl + k 从光标处删除到本行的行首 Ctrl + u 向后移动一个单词 Alt + b 向后移动一个字符 Ctrl + b 向前移动一个字符 Ctrl + f
通 配 符 bash  提供许多功能用来帮助用户节省输入命令的时间,其中最常用的一种方法就是使用 通配符 。 通配符就是一些 特殊的字符 ,可以用来在引用 文件名 时简化命令的书写。用户在使用时可以用通配符来指定一种模式,即所谓的 “ 模式串 ”  ( pattern ) ,然后  shell  将把那些与这种模式能够 匹配 的文件作为输入文件。 在  bash   中可以使用三种通配符: * 、 ? 、 [] 。 通配符
通配符的含义 匹配任何  单个字符 ? 创建一个字符表列,方括号中的字符用来 匹配 或 不匹配 单个字符 。如: [xyz]   匹配  x 、 y  或  z ,但不能匹配  xx , xy  或者其它任意组合。 无论列表中有多少个字符,它 只匹配一个字符 。 [abcde]  可以简写为  [a-e]  。 另外,用 感叹号 作为列表的第一个字符可以起到 反意作用 ,如: [!xyz]   表示匹配  x 、 y 、 z  以外的任意一个字符。 [] 匹配  任意长度  的字符串(包括零个字符) *
通配符举例 通配符  “ * ”  的常用方法就是查找具有相同扩展名的文件 ls  *.tar.gz 通配符  “ * ”  有时可以将几百的命令缩短成一个命令。假设当前目录下有许多文件,现在要删除扩展名为“ .old ” 的文件,如果有几百个这样的文件,逐个删除显然很麻烦,这时可以使用通配符: rm  *.old 问号通配符   “ ? ”  必须匹配一个且只能匹配一个字符,通常用来查找比  *   更为精确的匹配。 ls  *.???
方括号通配符举例 方括号 通配符使用括号内的字符作为被匹配的字符,且只能匹配其中的 一个字符 。如列出以  a 、 b 、 c  开头,且以  .dat   为扩展名的所有文件: ls  [abc]*.dat 可以在方括号中使用 连字符  -   来指定一个范围,如列出以字母开头,数字结尾的所有文件: ls  [a-zA-Z]*[0-9]
通配符使用注意事项 文件名最前面的圆点 “ . ”  和路经名中的斜杠“ / ” 必须 显式匹配 。例如 “ * ”  不能匹配 “ .bashrc ” ,而  “ .* ”  才可以匹配“ .bashrc ” 。 连字符  -   仅在方括号内有效,表示字符范围。如果在方括号外面就成为普通字符了。而  *   和  ?   在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力,成为普通字符了。 ls  * ls  mem* ls  *x ls  *alx*  ls  .* ls  mem? ls  may?report  ls  memo[1-9] ls memo[*1-9]
例:假设当前目录下有下列文件: ⑴ 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*
命令行自动补齐功能 通常用户在  bash   下输入命令时不必把命令输全,  shell   就能判断出你所要输入的命令。 该功能的核心思想是: bash  根据用户已输入的信息来查找以这些信息开头的命令,从而试图完成当前命令的输入工作。用来执行这项功能的键是  Tab   键 ,按下一次  Tab  键后, bash  就试图完成整个命令的输入,如果不成功,可以再按一次  Tab   键,这时  bash   将列出所有能够与当前输入字符相匹配的命令列表。 命令行自动补齐功能
命令行自动补齐功能 hist <Tab> 例:查看用户的命令历史 cd /e <Tab> sys <Tab> c <Tab> ne <Tab> - <Tab> 例:要进入目录:    /etc/sysconfig/network-scripts/ 这项功能同样适用于文件名的自动补齐
文件类型  Linux 支持五种文件类型,它们是:普通文件、目录、特殊 / 设备文件、命名管道和符号链接。
文件类型  一、普通文件 普通文件用来在辅助存储设备(如磁盘)上存储信息和数据。包括文本、程序源代码(用 C 、 C++ 、 Java 等语言所编写)、图像、可执行程序(如编译器、数据库工具、桌面出版工具、绘图软件等应用程序)、视频、图片、声音、 Postscript 代码等。 Linux 不会区别对待以上这些文件,它把每个文件都当作是一个字节序列而不会对文件内容附加任何的结构或赋予任何信访。只有使用或处理文件的应用程序才会根据文件的内容赋予其相应的含义。
LINUX  下常见的文件扩展名
LINUX  下常见的文件扩展名
二、目录文件 目录文件 ( 通常称为目录 ) 就是能够存放任何类型文件的容器,包括子目录。在一些系统中,也用文件夹表示目录。利用目录文件构成文件系统的分层树型结构,每个目录文件中至少包括两个文件,“ ..” 表示上一级目录,“ .” 表示该目录本身。 在任何操作系统中,一具目录文件都是由一组目录项组成的,虽然不同操作系统的目录项内容有很大的不同。 目录入口的结构 文件名 inode 号
inode 号文件名 inode 号用 4 个字节表示,是磁盘上数组的索引值。这个数组中有个叫做索引节点(通常叫做 inode )的项,它记录了文件的属性,如文件大小(以字节为单位)。 Linux 内核为每个新创建的文件分配一个 inode ,这样 Linux 中每个文件都有一个唯一的 inode 号。
三、特殊文件 特殊文件代表设备,包括键盘、显示器、磁盘、 DVD 、光驱、打印机和磁带。这些设备分为两种类型:字符特殊文件和块特殊文件。 字符特殊文件对应于执行面向字符 I/O 的设备,例如键盘。 块特殊设备对应于以字节块进行 I/O 操作的设备,例如磁盘驱动器。 特殊文件一般放在目录 /dev 下
四、命名管道 命名管道( FIFO )为同一个 LINUX 系统上的进程相互通讯提供了一种机制。
五、符号链接 符号链接文件可以“指向” ( 即引用 ) 一个文件,这个文件可以位于主目录下,也可不在主目录下。符号链接文件一种特殊文件,存放的数据是文件系统中通向某个文件的路径。当调用符号链接文件时,系统自动地访问保存在文件中的路径,可通过命令 ln-s 创建一个符号链接并存放它所指的文件的路径名。
文件系统的组织  文件系统是磁盘上存储文件的方法和数据结构,是操作系统组织、存取和保存信息的重要手段,每种操作系统都有自己的文件系统。 在操作系统中,有三个问题与文件系统结构相关。 从用户的角度看,系统中的文件如何按照用户的想法进行组织的; 文件是如何存放在辅助存储设备上的 ( 通常是硬盘 ) ; 是如何进行文件的创建、删除和处理等操作的。
Linux 文件系统是一种层次结构 ( 类似于自上而下的树形结构 ) 。
绝对路径和相对路径  在层次文件系统中,文件或目录都通过路径来表示。路径有三种方式: ( 1 )以根目录为起始点; ( 2 )以当前工作目录为起始点; ( 3 )以用户主目录为起始点。 从根目录开始指定时路径称为绝对路径,可以被所有用户在文件系统结构的任何一个目录下使用。  以当前工作目录或用户主目录开始的路径名称为相对路径。
表示用户 sarwar 的主目录下的 ee446 目录的绝对路径。 /home/sarwar/courses/ee446 表示用户 sarwar 的主目录下的文件 mid1 的绝对路径。  /home/sarwar/courses/ee446/exams/mid1 当用户 sarwar 登录到系统后,首先进入到它的主目录 /home/sarwar 下。在 sarwar 的主目录下, sarwar 可以为文件 mid1 指定相对路径: ./courses/ee446/exams/mid1 或者 courses/ee446/exams/mid1 在目录 ee446 中, sarwar( 或其他用户 ) 可以用相对路径 exams/mid1 表示文件 mid1 。
主目录和当前工作目录  当登录到 Linux 系统后,首先进入到一个特殊的目录中,这个目录称为主 / 登录目录。例如, sarwar 的目录就是用户登录名为 sarwar 的主目录,即现在 shell 命令行使用的用户。 [ root@localhost root ] # echo $HOME /root [ root@localhost root ] # su sarwar [ sarwar@localhost root ] # echo $HOME /home/sarwar
在使用 Bash 或 TC shell 时,可以用字符“~”指定您的主目录。 当前所在的目录称为当前工作目录 ( 也称为当前目录 ) 。当前工作目录用“ .” 表示,当前工作目录的父目录可以用“ ..” 表示。 可以用命令 echo 和 pwd 显示主目录的完整路径名或当前工作目录的绝对路径。
1 、 echo 命令 格式: echo [-ne] [ 字符串 ] 或 echo [--help] [--version] 功能:显示文字。将输入的字符串送往标准输出。输出的字符串间以空白字符隔开并在最后加上换行号终止符。 参数: -n 不输出行尾的换行符,即不在最后自动换行,回车不换行。 -e 解析转义字符。常用的转义字符有:
\a 警告声(响铃); \b 删除前一个字符( Backspace ); \c 回车不换行; \f  换页; \n 换行且光标移至行首; \r 回车,光标移至行首,但不换行; \t  水平制表位; \v 垂直制表位; \\ 反斜线( \ ); \nnn nnn (八进制)所代表的 ASCII 字符; 22
普通字符串可以在 echo 后直接输入字符串,但这样当要输出某些字符如“ \” 时,会有问题 ( 这种写法的时候,“ \” 是被当作继行符处理过滤掉的,要输出一个“ \” ,必须打“ \\” ,跟 C 语言 printf 输出的要求相像 ) ,所以一般最好用‘ string’ 或“ string” 的格式,这样即使是“ \” 也可以输出,方便直观。 #echo hello world hello world #echo hello\ world hello world #echo hello\\ world hello\ world
#echo ‘hello\\ world’ hello\\ world #echo “hello\\ world” hello\ world #echo -e “hello\nworld” 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
不加参数时,这个命令在屏幕上打印一行空行。可用 echo 命令获得主目录的绝对路径。 $ echo $HOME  /home/sarwar HOME 是一个 shell 变量 ( 占位符 ) , shell 用该变量记录主目录 ( 主目录即为操作当前命令的用户目录 ) 。
2 、 pwd 命令 格式 : pwd [--help][--version] 功能:显示工作目录。执行 pwd 指令可立刻得知目前所在工作目录的绝对路径名称。 参数: --help   在线帮助。 --version   显示版本信息。 echo 命令显示主目录,而 pwd 命令显示当前工作目录。 假定在执行 pwd 命令时用户并没处在主目录中。 $ pwd  /home/sarwar/courses  登录到系统后,可立即用 pwd 命令显示主目录的绝对路径名。 $ pwd /home/sarwar
目录操作以及文件系统结构浏览  1 、创建和删除目录 mkdir 命令 格式: mkdir [ 选项 ]  目录名称 功能:创建“目录名称”指定的目录 并同时设置目录的权限。   参数: -m< 目录属性 > 或 --mode< 目录属性 > 建立目录时同时设置目录的权限。 ( 缺省为 drwxr-xr-x) -p 或— parents   若 新 建目录的 父 目录目前尚未建立,则会一并 自动创建这个父 目录。
rmdir 命令 格式: rmdir [ 选项 ]  目录名称 功能:删除“目录名称”指定的空目录。所谓空目录,即只含“ .” 和“ ..” 两个特殊目录的目录。如果目录非空,那么在删除该目录前必须先删除该目录下的文件和子目录。 参数: -p 或— parents 删除指定目录 后 ,若该目录的 父 目录 已变成空目录,则将其一并删除。
# mkdir courses  在当前目录中创建 courses 目录 # mkdir courses/cs475  在新建的 courses 目录下创建 cs475 目录 # mkdir -p personal/taxes  在当前目录下创建 personal 目录,然后在 personal 目录下创建 taxes 目录 # rmdir letters  删除当前目录下的子目录 letters # rmdir letters ~/temp  删除当前目录下的子目录 letters 和主目录下的子目录 temp # rmdir -p ~/personal/letters/travel  删除了路径名 ~/personal/letters/travel 下的所有目录,设这些目录为空,如果该路径下的任何目录不为空,就会显示错误消息。
2 、移动和复制目录 mv 命令 格式: mv [ 参数列表 ]  文件 1  文件 2  或 mv [ 参数列表 ]  文件列表 目录 功能: 移动或更名现有的文件或目录。 第一个语法:将文件 1 重命名为文件 2  第二个语法:将“文件列表”中的所有文件移动到目录中
参数:  -f 或— forc e  若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。  -i 或 --interactive  覆 盖前 给出提示让 用户 选择是否覆 盖。  -u 或 --update  在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件。
使用 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 目录不存在 ) 目录
3 、浏览文件系统结构并列出目录  cd 命令 格式 : cd [ 目的目录 ] 功能:切换目录 , 可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。 每次执行 cd 命令后,系统就会对 shell 变量 PWD 赋值。命令 pwd 使用变量 PWD 的值来显示当前工作目录的绝对路径名。进入一个目录后,就可以用 ls 命令查看该目录的内容 ( 其中的文件和目录 ) 。  $cd / 返回到根目录 $ cd .. 返回到上一层目录 cd 命令不带参数执行时,就会进入主目录
ls 命令 格式:  ls [ 选项 ] [ 文件名 / 目录名 ...] 功能:  列出 指定 目录内容,包括文件和子目录的名称。 参数: -F   在每个文件名后面添加特定后缀字符,表明该文件类型。在目录后显示“ /” ,在二进制可执行文件后显示“ *” ,在符号链接后显示“ @” ;名字后面没有任何后缀,则它是一个普通文件,既不是目录,也不是可执行的程序;文件名称是以“ .” 开头的,则为隐藏文件。  -a   显示所有的文件名称,包括隐藏文件、 . 和 .. 等。
-i 或 --inode     显示文件和目录的 索引节点 inode 编号。 -l   显示一个文件长列表 ( 除了隐藏文件的所有类型 ) ,包含访问权限、硬链接数目、所有者、组、文件大小 ( 字节 ) 和修改时间。 -d   显示某个目录的长列表 ( 但不包括其内容 ) ;通常与 -l 选项一起用作 -ld 。 -r   逆序显示文件。 文件名 / 目录名   若为文件名,则显示指定文件的目录信息;若为目录名,则显示指定目录中的内容;若缺省,则显示当前目录中的内容。
$ cd  用 cd 命令 ( 不含参数 ) 进入主目录 $ ls -ld ~/temp drwx------ 2 sarwar faculty 512 Oct 6 12:45 /home/sarwar/temp  显示 ~/temp 目录的长列表 第一栏第一字符 文件的类型 第一栏其余部分 文件权限标志 第二栏数字 文件的链接数 第三栏 文件的拥有者 第四栏 文件所属用户组的组名 第五栏 文件的长度,字节数 第六、七、八栏 文件最后一次修改的日期和时间 第九栏 文件名 $ cd ~/courses/cs475  # 进入主目录下的 courses/cs475 目录
$ pwd  /home/sarwar/courses/cs475 显示当前目录的绝对路径名 $ cd ..  进入主目录下的 courses 目录 $ pwd  /home/sarwar/courses  显示当前目录的绝对路径名 $ cd  用 cd 命令 ( 不含参数 ) 进入主目录 $ ls  bin books courses linuxtools mail personal temp  显示当前目录 ( 此时它就是主目录 ) 中的文件名和目录名
$ ls -a ~  显示主目录中所有文件和目录的名称。包括隐藏文件,它们是以点开头的文件。 $ 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
$ ls -i 12329 courses  22876 mail 12487 personal  显示目录 courses 、 mail 和 personal 的 inode 号分别是 12329 、 22876 和 12487 $ ls –F ~ bin/ courses/ demo@ a.out* personal/  显示目录 bin 、 courses 和 personal ,符号链接文件 demo ,可执行文件 a.out
文件处理—— 确定文件属性   $  ls -l  ~ /sample  lrwxrwxrwx 1 sarwar faculty 4 Apr 28 13:12 dir1 -> /bin
文件处理—— 确定文件内容的类型   因为 Linux 不支持普通文件的类型和扩展名类型,所以不能够仅根据文件名就确定文件内容。可以使用 file 命令确定文件的类型。这个命令通常用来确定一个文件是文本文件还是二进制文件。这一点很重要,文本文件的内容可以在屏幕上显示,而要显示二进制文件的内容可能会导致终端崩溃,因为终端可能会把某些二进制值解析成控制代码。
file 命令 格式: file [ 选项 ] [ 文件或目录 ...] 功能:辨识文件类型,即文件分类 。 参数: -f< 名称文件 >   从 名称文件 中读取 一个或多个 要检测的 文件,让 file 依序辨识这些文件,格式为每列一个文件名称。
$ file banner  banner: ELF  32-bit LSB  executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped  显示文件 banner 是一个基于 Intel CPU 的计算机上的可执行文件。     其中, ELF 是一种为 Linux 系统所采用的通用文件格式,支持动态连接 (excutive linked file)  。 LSB 是 Linux Standards Base(Linux 国际标准 )  , LSB 标准定义了二进制环境,符合 LSB 的应用程序可以在其中运行。  $ 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 命令压缩的数据
$ file /* /bin: directory /boot: directory /dev: directory /etc: directory /home: directory /lib: directory /lost+found: directory /mnt: directory /opt: directory /proc: directory /root: directory /sbin: directory /tmp: sticky directory /usr: directory /var: directory 显示根目录下所有文件的类型
查看完整的文件    如果您有文件的读权限,就可以用 cat 命令在屏幕上显示一个或多个文件的所有内容。 cat  命令 格式: cat[ 选项 ] [ 文件列表 ]  功能:在标准输出 ( 默认为屏幕 ) 上连接、显示“文件列表”中的文件。 参数:  -E 在每一行的末尾显示符号 $  -n 为显示行添加行号  因为该命令显示文件内容时不是每次一屏或一页,所以,如果文件的内容多于一页时只能看到最后一页。
当不带参数执行 cat 命令时,它每次读取一行标准输入并以标准输出的形式发送。默认情况下,命令的标准输入是键盘,标准输出是显示屏幕。所以,每次执行 cat 命令时,它就会从键盘获取输入,并在显示器上显示输出,每次一行。当用户在新行按下 <Ctrl+D>( 或 Ctrl+C) 时,即 Linux 文件结束标记,命令就会终止。  有时您想要所显示的文件内容带有行号。可以用 cat -n 还显示其行号。例如 cat -n lab1.C 。 可以用 tac 命令 (cat 的逆序 ) 来逆序显示一个文件。
每次查看一页文件  1 、 more 命令 格式: more [ 选项 ] [ 文件列表 ]  功能:在标准输出上连接、分页显示文件列表中的文件内容,每次一页 ( 默认情况为屏幕上显示内容 ) 。 参数: +/str  指定要搜寻的字符串 str ,从包含 str 的第一行的前两行开始显示 -nN  每屏 / 页显示 nN 行  +N  从第 N 行开始显示文件内容 浏览文件内容时 用空格键进行下翻页 按回车则进行向下行移动 按“ q” 则退出
$ 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 分屏显示整年月历
2 、 less 命令 格式: less [ 选项 ] [ 文件列表 ]  功能:分页显示文件列表中的文件内容 参数:  -N 显示行号  -p  模式 搜索文件中第一个出现“模式”的位置  浏览文件内容时,用键 <PgUp><PgDn> 进行上下翻页,用方向键进行上下行移动,按“ q” 则退出。 less 在显示一个文件的时候并不完整读取整个文件,这样对大文件来说,与 more 命令或 vi 编辑器相比,它的效率更高。
$ 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.  …
复制文件  cp 命令 格式: cp [ 选项 ]  文件 1   文件 2 功能:复制文件 1 ,并将副本命名为文件 2 。如果文件 2 是一个目录,就将文件 1 的副本放在该目录下。   其中,文件 1 为源文件,文件 2 为目标文件
参数:  -a  该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,将档案状态、权限等资料都照原状予以复制其作用等于 dpR 选项的组合。  -d  拷贝时保留链接,即当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 -i  如果目标文件存在,在覆盖前提示。  - p  除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。  -r    递归复制文件和子目录 。 -R 除了管道被复制而不是读取以外,其他和 -r 选项一样。
$ ls  memo sample temp 显示复制前当前目录的状态 $ cp temp temp.bak  生成 temp 的副本,并将副本命名为 temp.bak $ ls  memo sample temp temp.bak 显示复制后当前目录的状态 $ ls -l -rwxr-----   1   sarwar   faculty   371   Nov   17   21:57   memo    --wxr-----   1   sarwar   faculty   164   Nov   17   22:22   sample  -r-xr-----   1   sarwar   faculty   792   Nov   17   10:57   temp -r-xr-----   1   sarwar   faculty   792   Nov   17   23:01   temp.bak 以长列表形式显示复制后当前目录的状态,以查看文件权限
cp 命令必须有源文件 ( 将要被复制的文件 ) 的读权限和包含源文件和目标文件的目录的执行权限。 如果目标文件不存在,必须它所在的目录的写权限。 如果目标文件存在,则不需要具有包含该文件的目录的写权限,但必须具有该文件的写权限。 如果目标文件存在,而且具有该文件的写权限,那么它会直接被覆盖而不会得到任何系统提示。要在覆盖一个已存在文件之前获得提示,需要使用 -i 选项。 如果没有目标文件的写权限,系统就会提示不能覆盖此文件。 如果没有源文件的读权限,屏幕上会出现相应的错误信息。
$ cp letter letter.bak  cp: cannot stat ‘letter’:No such file or directory  产生错误信息,因为当前目录中不存在 letter 文件。 $ cp memo temp.bak  cp: cannot open ‘memo’ for reading: Permission denied  产生错误信息,因为文件 temp.bak 虽然存在,但用户没有该文件的写权限。 $ cp /etc/shadow ~/etc/shadow  cp: cannot open '/etc/shadow' for reading: Permission denied  产生了错误,因为用户没有系统文件 /etc/shadow 的读权限。
$ cp -i lab* ~/courses/ee446/backups 复制当前目录中的所有以字符串 lab 开始的文件,并将这些副本放置在目录 ~/course/ee446/backups 下。使用 -i 选项时,如果备份目录中已存在源文件,则该命令会提示您覆盖。 $ cp -r ~/courses ~/backups 将 ~/course 目录递归复制到 ~/backups 目录中。将一个目录完整的复制到另一目录,就需要使用带有 -r 选项的 cp 命令。该选项将源目录下的文件和子目录递归复制到目标目录。 -r 是一个很有用的选项,您可以用它对重要的目录作定期备份。
文件的移动和重命名  mv 命令 格式: mv [ 参数列表 ]  文件 1  文件 2  或 mv [ 参数列表 ]  文件列表 目录 功能: 移动或更名现有的文件或目录。 第一个语法:将文件 1 重命名为文件 2  第二个语法:将“文件列表”中的所有文件移动到目录中
参数:  -f 或— forc e 若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。  -i 或— interactive 覆 盖前 给出提示让 用户 选择是否覆 盖。  -u 或— update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件 ,同时,源文件被删除 。
mv 命令必须具有包含已存在文件的目录的写访问权限和执行访问权限,但可以没有该文件本身的读、写、或执行权限。 mv 命令必须具有包含目标文件目录的写访问权限和执行访问权限,目标文件路径名中每个目录的执行权限,已存在文件的写权限。 如果目标文件已存在,而且具有它的写权限,默认情况下是不会给出提示直接将它覆盖。但是,如果用 -i 选项,在覆盖目标文件之前,系统会给出提示。
$ mv temp temp.moved 将文件 temp 移动到 temp.moved 。这样就是把文件 temp 重命名为 temp.moved 。如果 temp 文件不存在,或者如果您不具有该文件所在目录的写权限和执行权限,就会出现一个错误消息。如果文件 temp.moved 已经存在,但是没有它的写权限, mv 命令也会在您移动该文件时给出提示信息。 $ mv temp ~backups/temp.old 将文件 temp 移动到 ~/backup 目录中,并重命名为 temp.old 。 $ mv -f temp temp.moved  进行强制移动,忽略目标 temp.moved 的权限。 $ mv dir1/* dir2  目录 dir1 中的所有文件和目录 ( 不包括隐藏文件 ) 移动到目录 dir2 中。执行命令后,目录 dir1 仍然存在,但目录中只包含隐藏文件;用命令 ls -a 可以确认这种情况。
移除 / 删除文件  rm 命令 格式: rm [ 选项 ]  文件列表  功能:从文件结构 ( 及磁盘 ) 删除“文件列表”中的文件  参数:  -f 强制删除,不考虑“文件列表”的权限,在删除文件时不显示提示 -i  在用户删除“文件列表”的文件之前作出提示  -r  递归删除目录下的所有文件。该操作会删除目录下的所有文件,所以在使用该选项前,应予以确认。
$ rm backups/temp.old  从当前目录下子目录 backups 中删除 temp.old 文件 $ rm -f phones grades ~/letters/letter.john  删除文件 phones 、 grades 、 ~/letters/letter.john ,不考虑是否有访问权限 $ rm ~/dir1/*  删除 ~/dir1 目录下的所有文件,但 dir1 目录本身不会被删除 $ rm[a-kA-Z]*.prn  删除当前目录中所有具有 .prn 扩展名,并以小写字母 a 到 k ,或任意大写字母开头的文件 (k 与 A 之间无空格 ) $ rm -rf ~/backups  # 递归删除 ~/backups 目录中的所有文件和子目录。 执行该命令后, ~/backups 目录中所有的文件和目录将会丢失。 $ rm -ir ~/personal  在递归删除一个目录时,通常将 -i 和 -r 选项组合使用
确定文件大小  确定 Linux 中文件的大小常使用的两个命令是 ls -l 和 wc 。以前曾经提到过, ls-l 命令的输出中第 5 个字段就是文件的大小 ( 字节 ) 。 $ ls -l lab2  -r-xr--r–   1   sarwar   faculty   163   April   22   17:15   lab2 文件 lab2 的大小是 163 字节 ls -l 是一个通用命令,它可以获得一个或多个文件的大多数属性,包括它们的大小 ( 以字节为单位 ) ;而 wc 是一个专用命令,只显示文件大小。
wc 命令 格式: wc [ 选项 ] [ 文件列表 ] 功能:统计文件列表中的文本文件的大小,可以显示行数、单词数和字节数 参数: -c  只输出字节数 ( 包括每行的结束符 ) -w  只输出单词数 -l  只输出行数 在 wc 命令的输出中,每行是一个文件,一行有 4 个字段:行数、单词数、字节数和文件名。该命令不适用于目录。 $ wc sample  4 44 227 sample
输入 / 输出重定向和管道  标准输入  stdin Linux 从标准输入中读取信息 shell 一般将标准输入设置成键盘 ① 标准输入与标准输出
标准输出  stdout Linux 把输出信息送到标准输出中 shell 一般将标准输出设置成显示器 例:命令 “ cat  f1 ”  的功能是将 f1 的内容输出到标准输出中,则命令执行结果就是把 f1 内容在显示器上显示 错误输出  stderr Linux 把命令执行时产生的错误信息送往错误输出,而不是标准输出,但一般两者是一致的,即显示器。
② 输入重定向 输入重定向用于改变一个命令输入源。 <   符号用于把当前命令的输入,重定向为指定的文件。 例 1 :统计文本文件 test 的字符数等 $ wc  test 或 $ wc<test
<<   符号进行重定向,产生的文档称为 here 文档,它将对 分隔符之间的正文重定向输入给命令 。 例 2 :使用重定向符“ <<” 对输入的内容进行字数统计 (1) 在 shell 提示符下输入命令,其中 x 为分隔符 (x 为任意“ a-z” 内的字符 ) $ wc –w << x (2) 屏幕出现“ >” 符,在“ >” 符后按要求输入文本 >Jack claimed to be making both ends meet >They declined to accept her proposal (3) 在“ >” 符后,输入“ x”( 开始输入的分隔符 ) 结束输入 >x (4) 屏幕显示统计结果 14 $
输入重定向不常用 ,因为大多要求文件输入的命令都可以通过参数指定文件。 只有当一些需要文件作为输入,而又没有相应参数时,可考虑采用输入重定向。
③ 输出重定向 (1) 输出重定向是把一个命令的输出,重定向到一个文件里,而不是输出到标准输出(显示在屏幕上)。 输出重定向符为“ > ” 。  $  ls >directory.out 把 ls 命令的输出保存为一个名为 directory.out 文件中   (2) 追加:把一条命令的输出结果加在已有文件名的后面。可使用追加重定向符“ >> ” 。 $  ls f1>>directory.out
(3) 错误输出:把正常输出结果输出到屏幕上,而把错误信息输出到另一个文件中,使用输出定向符 2> (或“ 2>>” ) $  ls  *.doc  2>err.out (4)  将标准输出和错误输出同时送到同一文件中,使用输出重定向符“ &> ” 。 $  ls  *.doc  &>both.out (5) 标准输入和标准输出可以同时改变。 $  wc  –l <f1  >f2 # 在执行命令 wc –l  时。标准输入变成 f1 ,标准输出变成 f2 。   $  cat  <f1  >test
④ 管道 管道( pipe )是一个通信通道,它 把一个进程与另一个进程连接起来 ,管道用于处理 进程之间的信息传送 。 Linux 的 管道通过文件实现 。 管道实际上是 将一个程序的标准输出写到一个文件中去,再将这个文件的内容作为另一条命令的标准输入 。它的作用就是通过临时文件将多个命令结合起来。
“ | ” 是 管道符 ,若干个简单命令用“ |” 就构成了一条 命令流水线 ,或称 管道命令 。形式如下: command1|command2|……|commandn $  cat file1 file2|wc –l 相当于执行以下三条命令:     cat file1 file2 >f3     wc f3     rm f3 f3 是临时文件
$  cat sample.txt|grep “High”|wc –l 把 cat 命令显示的 sample.txt 文件的内容输出送给 grep 命令。 grep 命令在输入里查找单词 High ,将输入文本中包含单词 High 的行作为输出结果被送给 wc 命令。带 -l 选项的 wc 命令将统计输入里的行数。  假设 sample.txt 的内容如下: Things to do today: Low:Go shopping High:Go to movie High:Writing Medium:Pick up clothes from dry clearner 则命令行执行结果为: 2 指出包含单词 High 的行数有两行
文件的追加  格式: cat [ 文件列表 ] >> 目标文件 功能:将“文件列表”中所有文件的内容追加到目标文件的末尾;如果没有“文件列表”,就使用标准输入。 $ cat sample >> temp 在文件 temp 的末尾加入文件 sample 的内容。 $ cat memo1 memo2 memo3>>memos.record 将 memo1 、 memo2 和 memo3 的内容追加到文件 memos.record 的末尾。 如果没有文件列表参数,该命令用于在文件末尾追加键盘输入内容。 $ cat >> test.letter  从键盘获取输入,并将其追加到名为 test.letter 的文件中。 当在新的一行按下 <Ctrl+D> 时,该命令就会终止。
文件的合并  格式: cat [ 文件列表 ] >  目标文件  功能:合并“文件列表”中的文件到“目标文件”中。   如果没有指定文件列表,就将键盘输入保存在目标文件中,可以用 cat 命令创建文本文件。使用这种方式时,当您在新行按下 <Ctrl+D> 时,该命令就会终止。如果目标文件已经存在,它将被覆盖。如果没有该文件的写权限,则会显示错误信息。 $ cat data1 data2 data3>data123 将文件 data1 、 data2 和 data3 中的内容保存在文件 data123 中 等同于 $ cat data ? >data123 等同于顺序执行以下三条命令 $ cat data1>data123 $ cat data2>>data123 $ cat data3>>data123
文件的比较  diff 命令 格式: diff [ 文件 1] [ 文件 2]  功能:逐行比较文件 1 和文件 2 ,以某种命令的形式显示它们之间的差异。这个命令可以将文件 1 转化为文件 2 或将文件 2 转化为文件 1 ,如果使用“ -” 代替文件 1 或文件 2 ,则从标准输入读取该文件。
在下面的例子中,第一个 diff 命令将文件 1 和它自身进行比较,然后将文件 1 和文件 2 进行比较。第一个 diff 命令不会产生任何输出,因为所比较的文件是相同的。第二个 diff 命令对文件 1 和文件 2 进行比较,比较的结果包含一个指令 1c1 ,该指令之后是第一个文件第一行和第二个文件第一行。这个指令告诉您将第一个文件的第一行改为第二个文件的第一行,使它们成为相同文件。  $ cat filel  Hello, World!  $ cat file2  Greetings!  $ diff filel filel  $ diff filel file2  1c1  < Hello, World!  --  > Greetings!  $
该命令的参数文件 1 和文件 2 也可以是目录,如果文件 1 是一个目录, diff 命令就会在该目录中搜索名为文件 2 的文件,并将它与文件 2( 第二个参数 ) 进行比较。如果文件 2 是一个目录, diff 命令就会在该目录中搜索名为文件 1 的文件,并将它与参数中的文件 1( 第一个参数 ) 进行比较。如果两个参数都是目录,该命令就会比较两个目录中所有的同名文件。 如果被比较的两个文件相同, diff 命令不会输出任何结果。当不带任何选项执行时, diff 命令就会生成一系列说明:当文件不同时,如何将文件 1 转化为文件 2 。它们是 a( 添加 ) 、 c( 改动 ) 和 d( 删除 ) 。
$ cat Fall_OH  office Hours for Fall 2001  Monday 9:00 – 10:00 A.M 3:00 – 4:00 P.M.  Tuesday 10:00 – 11:00 A.M Wednesday 9:00 – 10:00 A.M 3:00 – 4:00 P.M.  Thurday 11:00 – 12:00 A.M 2:00 – 3:00 P.M.  4:00 – 4:30 P.M. $ 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
$ 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 行
多数系统都有一个命令 diff3 ,它可用于三向比较,即比较三个文件。下例对文件 1 、文件 2 和文件 3 进行比较。输出说明了它们之间的差异,显示了造成差异的行。   $cat file3 Hello,World!  $ diff3 file1 file2 file3  ====  1:1c  3:1c  Hello,World!  2:1c Greetings !  $
文件压缩 gzip 命令     压缩后的文件保留了源文件的访问 / 修改时间、所有权以及访问特权。源文件从文件结构中删除。 格式: gzip [ 选项 ] [ 文件列表 ]  功能:将“文件列表”中的文件进行压缩,并保存在“文件名 . gz” 的文件中,这里“文件名”是原始文件的名称;如果命令行中没有指定文件名或使用了“ -” , gzip 就会从标准输入读取输入数据。
参数:  -N 根据 N 值控制压缩速度 ( 及压缩比 ) , N 为 1~9 ,数字越小速度越快,其压缩比越小,压缩率越低。 -c 压缩结果输出到标准输出设备上;源文件保持不变  -d 解压缩一个压缩文件 -f 强制压缩文件,即使指定文件有多个链接,或相应的压缩文件 .gz 已经存在,或压缩数据来自标准输入。新产生的压缩文件覆盖相同文件名的文件时,不给提示。 -l 对于压缩文件使用的参数,显示包括压缩文件的长度 (compressed size) 、压缩前文件的长度 (uncompressed size) 、压缩比 (ratio) 以及压缩前的文件名 (uncompressed name)  -r 递归压缩被指定为参数的目录下的文件 -t 检查压缩文件的完整性  -v 进入 verbose 模式,即在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 )
gunzip 命令   gunzip 命令用于执行 gzip 命令的逆操作,执行解压缩,并将压缩后的文件还原到原始文件。 gzip -d 命令也可完成解压缩。 -N , -c , -f , -l 和 -r 选项在 gunzip 命令中的作用与它们在 gzip 命令中的作用是相同的。
$ gzip bash.man  用于压缩文件 bash.man  $ gzip -l bash.man.gz tcsh.man.gz  用于显示文件 bash.man 和 tcsh.man 的有关压缩和解压缩信息  Compressed  uncompr.  Ratio uncompressed_name  72501   284046  74.4% bash.man  73790   261316 71.7%  tcsh.man  146291    545380  73.1%  (totals)  $ gzip bash.man.gz  gzip: bash.man.gz already has .gz suffix - unchanged  用于显示 gzip 不能压缩一个已经压缩过的带有 .gz 扩展名的文件   , 如果一个压缩后的文件没有 .gz 扩展名, gzip 会试图再次压缩它。  $ gunzip bash.man.gz  用于对压缩文件 bash.man.gz 进行解压
$ gzip -v bash.man tcsh.man bash.man:  74.4%  replaced with bash.man.gz tcsh.man:  71.7%  replaced with tcsh.man.gz 在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 ) $ gzip -9 /home/user/* 要求用最高压缩比压缩 /home/user 目录下的所有文件。 $ gzip /home/* $ gunzip /home/* 要求对 /home 目录下的所有文件进行压缩,然后再解压。
搜索命令和文件  find 命令   可以用 find 命令搜索目录列表中匹配表达式标准的文件。该命令递归搜索目录列表中的目录;也就是说,它将会搜索目录列表下任意层的所有子目录。 格式:  find [ 目录列表 ] [ 表达式 ]  功能: 搜索“目录列表”中的目录,找出满足“表达式” ( 第二个参数 ) 中所描述标准的文件。表达式中包含一个或多个匹配标准或说明组成 输出:除非在表达式中明确地提出了要求,否则什么也不输出。
参数: -exec CMD  在退出状态时,如果命令‘ CMD’ 返回 0( 成功执行命令真值 ) ,则搜索文件满足标准。标志 {} 用于指定命令执行时文件名出现的地方,‘ CMD’ 的末尾必须以符号“ \;” 结束  -inum N  查找 inode 号为 N 的文件 -links N  搜索有 N 个链接的文件  -name pattern  搜索文件名匹配 pattern 的文件  -newer  文件  搜索在修改时间在“文件”之后的文件 ( 即比“文件”新的文件 )  -ok CMD  像 -exec 一样,但首先提示用户进行确认  -perm octal  搜索文件权限为 octal( 八进制数字,如 777) 的文件
-print  在屏幕上显示用符合标准的文件路径和文件名  -size ±N[c ]  搜索大小为 N 个单元块的文件。 N 后面的“ c” 用来测试文件的字节数,默认为 512 个字节;+ N 意味着文件大于 N 个块, -N 意味着文件小于 N 个块  -user name  搜索所有权为 name 的文件  \(expr\)  如果 expr 为真,那么表达式为真;表达式可以用“ OR” 或“ AND” 组合  ! expr  如果 expr 为假,那么表达式为真  注意:转义符“ \(” 表示“ (”  ,“ \)” 表示“ )” 可用 -a 或一个空格表示两个条件的逻辑与 (AND) ,用 -o 表示两个条件的逻辑或 (OR) 。
$ find ~ -name Pakistan.gif -print  /home/faculty/sarwar/myweb/ Pakistan.html 在主目录中搜索文件 Pakistan.gif ,并显示此文件所在目录的路径名。如果要搜索的文件在多个目录中,那么就会显示所有目录的路径名。 $ find /usr/include -name socket.h -print  /usr/include/sys/socket.h  在 /usr/include 目录中递归搜索名为 socket.h 的文件,并打印该文件的绝对路径名。 $ find /usr . -inum 258072 -print  /home/faculty/sarwar/myweb/LinuxTcpIp  递归搜索目录 /usr 和 . 目录 ( 当前工作目录 ) ,并找出所有 inode 号为 258072 的文件,并打印这些文件的绝对路径名。
$ find / -name &quot;CON.FILE&quot; –print 从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。  $ find . \( -name core -o -name '*.ps' -o -name'*.o' \ ) -print -exec rm { }  \;  [output of the command]  在当前工作目录中搜索名为 core 的文件或扩展名为 .ps 或 .o 的文件,并显示它们的绝对路径名,然后将它们从文件结构中删除。可以用圆括号将复杂的条件括起来。在  \( 和 -o 前后务必要用空格。该命令不会提示您是否有删除的权限;要获得提示,用 -ok 代替 -exec 。     [ 注意 ] : - exec  命令名称  {}  对符合条件的文件执行所给的 Linux  命令,而不询问用户是否需要执行该命令。 {} 表示命令的参数即为所找到的文件;命令的末尾必须以“  \ ;”结束。 -exec 或者 -ok 的用法都要在它所执行的 CMD 后面接 &quot; {} \;&quot;
whereis 命令 格式: whereis [ 选项 ] [ 文件列表 ]  功能:查找“文件列表”中的文件。给出可执行 ( 二进制 ) 文件、源代码和联机帮助手册的位置 输出:“文件列表”中命令的可执行文件、源代码和联机帮助手册的绝对路径名。  参数:  -b  只搜索可执行文件  -m  只搜索联机帮助手册  -s  只搜索源代码  $ whereis ftp  ftp:/usr/bin/ftp/ usr/bin/ftp.expect /usr/share/man/man1/ftp.1.gz
which 命令     如果一个系统上的某个命令有多个版本,当键入命令时, which 实用程序可以确定所使用的 shell 所执行命令的版本的位置 ( 绝对路径名 ) 。当某个命令不能按照它的说明正常工作时, which 实用程序可用于确定执行的命令版本的绝对路径名。因为 shell 搜索路径的方式在 PATH 变量中设置,或者本地命令由于系统库的更新,使它不能正常工作。 which 命令采用一个命令列表 ( 实际是这些命令的一个文件列表 ) 作为参数,返回这些命令的绝对路径和文件名到标准输出。  格式 : which [ 命令 ...] 功能 :在环境变量 $PATH 设置的目录里查找符合条件的命令。
文件系统备份  tar 命令 格式: tar  <options1> [options2] <fname1> <fname2>… 功能:对由 <filename2> ...指定的文件进行打包或恢复还原到由 <filename1> 指定的打包文件或备份设备上。 说明: tar 命令后使用的可选项可以省略“ -” ,但要注意先后次序。 <fname1> 为指定的打包备份文件或备份设备; <fname2>… 指定需要加入打包文件的文件或指定欲从打包文件中恢复还原的文件。必选选项决定了 tar 究竟要做什么。下面是关于必选选项和可选选项的意义说明。
必选选项的说明: -c 创建一个新的打包备份文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 -r 向打包备份文件的末尾追加一个文件。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。  -t 列出打包备份文件中所含的文件清单,查看已经备份了哪些文件。 -u 仅追加比打包备份文件中的文件更新的文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。  -x  从打包备份文件中恢复还原文件。
可选选项的说明: -f  FILE 使用文件 FILE 或设备文件 FILE 来打包归档文件。如果 FILE 是“ -” ,则是指从标准输入读 ( 对解压文件 ) ,或写到标准输出 ( 对建立备份文件 ) 。 -M 生成 / 列出 / 恢复还原多卷的打包备份文件,以便在几个磁盘中存放。 -v 打包和恢复还原过程中,输出打包文件和恢复还原的文件信息。如无此选项, tar 不报告文件信息。 -w 进行每一步操作前要确认。 -z 用 gzip 来压缩 / 解压缩备份文件。加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
例如:打包并压缩备份  /etc 目录下的所有文件到备份文件 alldoc.tar.gz 中,再解压还原。 其实 tar 命令包括的 z 选项,它指示 tar 用 gzip 压缩算法来自动压缩或解压缩文件。 $ tar cvfz alletc.tar.gz /etc $ tar xvfz alletc.tar.gz  完成相同的功能,也可以用: $ tar cvf - /etc | gzip -c > alletc.tar.gz 将 .tar 文件发送给“ -” ,它代表 tar 命令的标准输出。通过管道把控制传给 gzip , gzip 对输入的 .tar 文件进行压缩,其中  -c 告诉 gzip 将它的输出传送给标准输出,而标准输出重定向到文件 alletc.tar.gz 中,即最终结果保存在 alletc.tar.gz 文件中。 $ gunzip -c alletc.tar.gz | tar xvf - 这里 gunzip 解压缩 alletc.tar.gz 的文件内容,然后将得到的 .tar 文件传送到标准输出。接着将标准输出通过管道传给 tar , tar 从“ -” 读入要处理的文件,“ -” 代表 tar 的标准输入。
文件管理  Linux 系统将可设置权限的用户分成三类,分别是:文件主 (User) 、同组用户 (Group) 和其他用户 (Other) 。 Linux 中普通文件的权限依赖于目录文件的权限  命令“ ls  –l” ,可查看文件或目录文件的权限  命令列出的前十位中包含了文件类型和文件权限 -rwxr-x---  Linux 提供的常见文件类型有: - 普通文件 d 目录文件 b 块设备文件 c 字符设备文件 l 链接文件。
文件的访问权限 在显示的结果中,第一个字段的第   2 ~ 10   个字符是用来表示权限。这  9   个字符每   3   个一组,组成   3   套   权限控制,第一套控制文件 所有者 的访问权限,第二套控制所有者所在 用户组的其他成员 的访问权限,第三套是 控制系统内其他用户 的访问权限。 所有者的权限 同组用户权限 其他用户权限 文件类型
文件的访问权限 每套控制中三个字符按顺序排列,所代表的含义如下: eXecute ( 执行 ) :对文件而言,具有执行文件的权限。 对目录而言,具有进入目录的权限。用户必须具有“ x”( 检索 ) 权,才能对该目录实施有效操作,如 cd 、 ls 、 cp 、 rm 等操作。 x Read ( 读取 ) :对文件而言,具有阅读文件内容的权限。 对目录而言,具有浏览目录内容的权限。但对该目录还必须有“ x” 权。 r Write ( 写入 ) :对文件而言,具有修改文件内容的权限。 对目录而言,具有建立、移动、删除目录内文件或目录的权限。但对该目录还必须有“ x” 权。 w 表示不具有该权限,或取消该权限 -
访问权限举例 例: -rwx------ 只有文件所有者具有读、写和执行权限 普通文件 用户有读、写和执行权限 用户组其它成员没有读、写和执行权限 系统内其它用户也没有读、写和执行权限
访问权限举例 -rw-r--r-- 普通文件,用户有读、写权限, 组用户和其他用户只有读权限。 drwx--x--x 目录,用户有读、写和执行权限, 组用户和其他用户只有执行权限。 drwx------ 目录,用户有读、写和执行权限, 组用户和其他用户不能访问。 -rwxr-xr-x 普通文件,用户有读、写和执行权限, 组用户和其他用户有读和执行权限。 每个用户都拥有自己的专属目录(主目录),通常放置在  /home   目录下,这些专属目录的默认权限通常为   rwx------
改变文件权限 chmod 命令 格式一:  chmod  {a,u,g,o}  {+,-,=}  {r,w,x}  <filename>  格式二: chmod  nnn  <filename> 功能:是用字符 r 、 w 、 x  形式对由 filename 指定的普通文件或目录文件,向各用户设置访问与操作权限  {a , u , g , o} :设置权限的用户对象,  a -  所有用户; u - 文件主; g -  同组用户; o -  其他用户 {+ , - , =} :操作符,“ +”  增加权限;“ -”  删除权限;“ =”  赋予权限,使 filename 指定的文件或目录只具有指定的权限  {r , w , x} :读、写、执行权限
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
例 1 :将文件 junk 的读取权限赋予所有用户 以超级用户或文件主身份登录系统,  # chmod  a+r  junk 例 2 :对文件 junk 删除所有者外所有用户的可读权限 # chmod  og-r  junk 现在通过例子来说明一下针对一个目录而言,读、写和执行的特权含义。 $ 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
$ 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 命令来读取该目录下的文件和目录的名字。
文件链接   Linux 系统提供了 文件链接 的方法,以实现 文件共享 。即不同的用户可同时访问一个文件,且各用户可用不同的文件名访问同一文件  Linux 系统提供了 2 种文件链接方式 —  硬链接 —  符号链接 ,即软链接
硬链接      Linux 系统中每个文件都用一个被称为 inode 的节点( i 结点 )来唯一标识,所以当不同的文件均被链接到同一个 inode 节点时,便实现了文件共享。    硬链接 将一文件直接链接到被链接文件的 inode 上,建立硬链接后,链接文件和被链接文件指向的是同一个 inode 结点,所以链接文件和被链接文件是同一文件。  ln 命令 格式 1 : ln  –i  <existing-file>  <new-file> 格式 2 : ln  <existing-file>  <new-file> 其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。 命令执行后,便建立了 new-file 到 existing-file 的硬链接。即用户无论是用文件名 existing-file 还是用文件名 new-file ,访问的结果是同一个文件。
例如,要求在当前目录下建立文件 filehard 到文件 file 的链接。 $ ln  -i  file  filehard 当为一个文件建立硬链接时,文件的链接计数会加一。当使用 rm 命令删除多于一个链接(或被链接)的文件时,链接计数减一。如果新的链接计数不为零,实际上删除只不过是文件的一个链接 ( 目录项 ) 。文件的内容和其他链接 ( 目录项 ) 并没有被删除。如果相关的链接计数减到零,系统才会删除文件的目录项,释放文件的 inode 节点以供重用,收回分配给文件的磁盘空间用于保存将来创建的其他文件和目录。当使用 rm 命令删除只有一个链接的文件时,才真正删除文件自身。  注意:用户只能在同一文件系统中对文件进行硬链接。并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。
符号链接   符号链接允许用户为文件另取一个名字,但却不将其与链接文件的 inode 相链接,即链接文件与被链接文件的 inode 节点号是不同的。符号链接允许在两个不同的文件系统间建立文件的符号链接。 格式: ln  –s  <existing-file>  <new-file> 其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。命令执行后,便建立了 new-file 到 existing-file 的符号链接。 例如,若要求建立一个指向文件 file 的符号链接 filesoft 。 $ ln  -s  file  filesoft 注意,符号链接的权限是没有意义的,它们总是 rwxrwxrwx ,其实,符号链接的权限是由被链接文件(即文件主)的权限决定的。符号链接常用于为目录或设备文件增加名称,符号链接还允许对一个不存在的文件建立链接。
Linux 的设备文件   Linux 系统的设备的驱动程序存放在  /dev 目录中 这些驱动程序是用来访问系统设备和资源的,如磁盘、 Modem 、内存、鼠标等等 例如: 用户可以通过 /dev/mouse 来访问鼠标的输入, 通过 /dev/fd0H1440 访问第一物理软驱中的 3.5 英寸, 1.44MB 的软盘
常用设备名与具体硬件设备的对应 ( 注意区分大小写 )  以“ fd ” 开头的设备名是 软盘设备 fd0 代表第 1 软盘驱动器,相应软盘称为 fd0 盘 fd1 代表第 2 软盘驱动器,相应软盘称为 fd1 盘 以“ hd ” 开头的设备名是 IDE 硬盘设备 /dev/hda 代表物理上第一的硬盘 /dev/hdb 代表物理上第二的硬盘 /dev/hda1 代表第一硬盘的第一个分区,依次类推  /dev/cdrom 是用于访问 光盘驱动器 的设备文件
以“ lp ” 开头的设备名代表 并行端口 /dev/lp0 代表第一个物理并行口 以“ tty ” 开头的设备名代表 虚拟终端 /dev/tty1 代表第一个虚拟终端 /dev/tty2 代表第二个虚拟终端 以 “ sd ” 开头的设备名代表 SCSI 设备 如果你有一个 SCSI 硬盘,那么就要用设备文件  /dev/sda 而不是 /dev/hda 来访问它,而 SCSI 的 CD-ROM ,则通过 /dev/sr 设备文件访问。
Linux 支持的文件系统   Linux 系统对能识别的所有文件系统类型提供了一个通用接口, 可以 通过 cat /proc/filesystems   命令了解 当前注册的文件系统类型。 Linux 目前支持的常用文件系统 : —  ext2 文件系统(是 Linux 使用的磁盘文件系统,用于存储 Linux 文件) —  ext3 在原有 ext2  系统的元数据块上增加日志信息,构成的日志文件系统。 —   vfat 是微软的 Win95 和 Win NT 使用的扩展 DOS 文件系统, vfat 在 msdos 文件系统下增加了对长文件名的支持。 —  MS-DOS 文件系统(是 DOS 、 Windows 系统使用的文件系统 ,允许 Linux 访问 MS-DOS 分区和软盘上的文件) — ISO9660 符合 ISO9660  标准的 CD-ROM  文件系统 — usbdevfs 支持 USB 设备的文件系统
ext2 文件系统 ext2 文件系统 ( Second Extended File System ) Linux 中最普遍使用的文件系统, ext2 是 Linux 所有发行版本的基本文件系统 是一个高性能的磁盘文件系统,是迄今为止最成功的文件系统
Linux 中使用外存的 3 个步骤 在 Linux 系统中使用外存须经过 3 个步骤: ( 1 )文件系统的格式化 ( 2 )创建文件系统  ( 3 )文件系统的挂装
( 1 )文件系统的格式化 存放文件系统的块设备(如磁盘),在使用之前需要进行格式化。  命令格式: fdformat   [options]  <device>  功能:对 device 设备文件名所指定的设备进行格式化  例 : 对一张 3.5 英寸, 1.44MB 的 fd0 软盘进行格式化,则 # fdformat  /dev/fd0H1440
( 2 )创建文件系统 格式化后,还须装入指定文件系统后才能使用。 创建文件系统命令 mkfs 用于在一个设备上建立一个 Linux 文件系统,一般情形是在一个硬盘分区上或单个软盘上建立一个文件系统 。 格式: mkfs   [-V]  [–t fstype]  [fs-options]  <filesys>  功能:在 filesys 指定设备上创建指定类型的文件系统  例:在已格式化好的 fd0 软盘上,创建 ext2 的文件系统 # mkfs  –t  ext2  /dev/fd0H1440   注意:创建文件系统将删除相应物理设备(软盘,硬盘分区等)上的所有数据, mkfs 在创建文件系统之前一般不提示用户,所以要特别小心  。
( 3 )文件系统的挂装 在 Linux 下要访问任何文件系统,必须先把它 挂装 到系统中一个确定的目录上 ,然后,通过 访问该目录下的文件就可以访问该文件系统 了。 当需要更换一个文件系统或该文件系统不再使用时,必须将文件系统从挂装目录上 卸载 下来。 卸载一个文件系统主要有两方面的动作: 一是 使文件系统与作为安装点的目录脱离 ,卸载后的文件系统将不能再使用。这时就可以在同一安装点挂装别的。 二是使系统缓冲区的内容与磁盘上的文件系统的实际内容同步。 Linux 提供挂装与卸载的命令是 mount 和 umount
mount 命令   格式: mount  [options]  <device>  <mount-point>  功能:在由 mount-point 指定的挂装点,由 device 指定的设备文件上,挂装指定的文件系统。  例 1 :将之前安装好 ext2 文件系统的 fd0 盘,挂装在  /mnt/floppy 目录上。 # mount  –t  ext2  /dev/fd0H1440  /mnt/floppy  之后只要通过目录  /mnt/floppy 便可访问 fd0 盘上的 Linux 的 ext2 文件系统了  例 2 :要求挂装一个 CD-ROM 。 # mount  –t  iso9660  /dev/cdrom  /mnt/cdrom 或 # mount  /mnt/cdrom
umount 命令   格式: umount  [options]  <mount-point>  功能:将由 mount-point 指定的挂装点上的当前挂装着的文件系统卸下,该设备上的文件系统不能再使用  例 1 :要求卸载之前已挂装的 fd0 软盘 # umount  /mnt/floppy  例 2 :要求卸载之前已挂装的 CD-ROM 光盘 # umount  /mnt/cdrom  注意:用 mount 命令装入的是软盘、光盘,而不是软驱、光驱。当需要换一张软盘或光盘时,一定要先用 umount 命令卸载,然后,把盘从驱动器上拿走。再对新盘重新挂装,否则,会造成这些设备的系统信息与实际的情况不同步。为了防止这种不同步,在卸载光盘之前,系统会使光驱面板上的弹出键不起作用。
挂装 U 盘命令 #fdisk -l 查看 U 盘所在路径(假设为 /dev/sdb1 ) #mkdir /mnt/usb 为 U 盘创建一个挂装目录 #mount -t vfat /dev/sdb1 /mnt/usb 或 #mount /dev/sdb1 /mnt/usb 进入 U 盘进行操作 #cd /mnt/usb 卸载 U 盘命令 返回到其他路径,如根目录 #cd / #umount /mnt/usb
检查和修补文件系统   有时需要检查 Linux 文件系统的一致性,如果有错误或数据丢失就要加以修补(类似于 MS-DOS 下的 scandisk 命令)。这些错误通常来自系统崩溃或突然停电,因内核不能使文件系统缓冲区的内容与磁盘的内容保持同步所致。 Linux 提供的检查和修补文件系统的工具是 fsck 命令 格式: fsck  [-t fs-type]  [fs-options]  < filesys >  功能:检查由 filesys 指定的文件系统设备上的文件系统并 修正错误。   例:检查在 /dev/hda2 上的一个 ext2 的文件系统 # fsck  –t  ext2  /dev/hda2
查看文件系统占用磁盘的情况   Linux  使用 df 命令查看文件系统占用磁盘情况。 格式: df   [options] …  [filename]…  功能:显示文件系统与使用磁盘的状况。  常用选项的说明: -a 列出所有文件系统,包括只有 0 块的文件系统。 -i 列出 inode 信息,而不是块数量的信息。 -k 以 KB 为单位来表示容量。 |-m 以 MB 为单位来表示容量。 -H 以人们熟悉的容量表示方式来表示。如 1.2G 、 234M 、 256k 等。 -T 输出出各分区文件系统的类型。如 ext2 , msdos 等。
-t  <fstype> 列出由 fstype 指定的文件类型的文件系统信息。 -x  <fstype> 此选项正好与选项 -t 的作用相反,它列出除 fstype 指定的文件类型以外的文件系统信息。 例:要求以熟悉的容量表示方式,列出类型为“ ext2” 的文件系统占用磁盘的情况 # df  -t  ext2  -H
查看文件或目录的空间使用程度   Linux 提供了查看工具 du 命令,以了解文件系统中每个文件占用的磁盘空间的情况 格式: du   [options] …  [filename] …  功能:查看文件系统中任何文件或目录占用磁盘空间的大小。 常用选项的说明: -a 输出所有文件和目录的计数。 -k|-b|-m 以 KB 或 Byte 或 MB 为单位对文件占用空间进 行计数。 -c 产生总计值。 -h 以用户易于理解的形式输出统计结果。 -l 统计所有文件所用的空间,即使某些文件通过硬链接已经在其他目录中被统计过了。
-H 使用 1000 而不是 1024  进行计数。 -S 统计时不包含子目录的大小。 -L 对于符号链接,显示该链接所指向的文件的空间使用情况而不是该链接本身使用的空间。 -s 仅显示每个参数的总计值。 -x 略过不在当前文件系统中的目录。  例:查看目录  /home 占用磁盘空间的情况,显示的总计值以 MB 为单位表示。 # du  -cm  /home  -c 产生总计值
转换和复制输入文件到指定的输出文件  格式: dd  [ 选项 ] 功能: dd 可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。 系统默认使用标准输入文件和标准输出文件。  参数: if=FILE 从由 FILE 指定的文件 ( 或设备名称 ) 读取,而不是从标准输入读取 of=FILE   写入由 FILE 指定的文件 ( 或设备名称 ) ,而不是写入标准输出 ibs=BYTES  一次读入由 BYTES 指定的字节数,即读入缓冲 区的字节数
obs=BYTES  一次写入由 BYTES 指定的字节数,即写入缓冲区的字节数 bs=BYTES 同时设置读 / 写缓冲区的字节数,强制使 ibs 和 obs 的值,等于由 bs=BYTES 指定的 BYTES cbs=BYTES  一次对由 BYTES 指定的字节数进行转换 count=BLOCKS  只拷贝由 BLOCKS 指定的输入块数
例如,把一张软盘的内容拷贝到另一张软盘上。 利用 /tmp 作为临时存储区,输入命令: $ dd if =/dev/fd0 of = /tmp/tmpfile 拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令: $ dd if = /tmp/tmpfile of =/dev/fd0  例如,把 net.i 这个文件写入软盘中,并设定读 / 写缓冲区的数目(注意:软盘中的内容会被完全覆盖掉)。 $ dd if = net.i of = /dev/fd0 bs = 16384  例如,将文件 sfile 拷贝到文件 dfile 中 $ dd if=sfile of=dfile
查看当前系统的内存使用情况  格式: free  [ 选项 ] 功能:用来查看系统内存分配情况。 参数: -b 以 Byte 为单位来显示系统内存的分配信息。 -k 以 KB 为单位来显示系统内存的分配信息。缺省时以 KB 为单位。 -m 以 MB 为单位来显示系统内存的分配信息。 -t 表示内存包含总计行。 -V 显示版本信息。
磁盘分区  格式: fdisk  -l [-u] [device ...]  或 fdisk  -s partition  参数:  -u 列出分区表的时候以扇区的大小代替柱面大小,来表示每个分区的起始地址。 -l 列出给定设备的分区表,如果没有给定设备,则列出 /proc/partions 中设备的分区表。 -s partition 将 partition 分区的大小 ( 以块为单位 ) 输出到 标准输出上。
linux 系统的系统管理命令  date 命令 格式: date [-u] [-d  字符串 ] [-s 字符串 ] [--utc] [--universal] [--date  字符串 ] [--set  字符串 ] [--help] [--version] [+ 格式参数 ] [MMDDhhmm[[CC]YY][.ss]] 功能:显示或设置系统时间和日期。 说明:    date 命令如果用来显示系统日期或时间,以 % 为开头的参数为格式参数,可指定日期或时间的显示格式;只有管理员才有设置日期与时间的权限;若不带任何参数的 date 命令,则表示显示当前系统的日期和时间。   在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss] ,其中 MM  为月份, DD  为日, hh  为小时, mm  为分钟, CC  为年份前两位数字, YY  为年份后两位数字, ss  为秒数。
参数: -d 字符串  显示字符串中所设定的时间 ( 非系统时间 ) -s 字符串  将系统时间设为字符串中所设定的时间 -u 显示目前的格林威治时间 时间方面: %n 在显示时,插入新的一行 %t 在显示时,插入 tab %H 小时 (00~23)  %I 小时 (01~12)  %k 小时 (0~23)  %l 小时 (1~12)  %M 分钟 (00~59)  %p 显示本地 AM  或 PM  %r 直接显示时间 (12  小时制,格式为 hh:mm:ss [AM/PM])  %s 从 1970  年 1  月 1  日 00:00:00 UTC  到目前为止的秒数 %S 秒 (00~59 ,本地惯用法 ) %T 直接显示时间 ( 含时分秒, 24  小时制 )  %X 相当于 %H:%M:%S %Z :  显示时区 ( 本地惯用法 )
日期方面: %a 星期几 (Sun~Sat)  %A 星期几 (Sunday~Saturday)  %b 月份 (Jan~Dec)  %B  月份 (January~December)  %c  直接显示日期与时间,只输入 date 指令也会显示同样的结果 %d  日 (01~31)  %D  直接显示日期 (mm/dd/yy)  %j  一年中的第几天 (001~366)  %m  月份 (01~12)  %U  一年中的第几周 (00~53) ( 以 Sunday  为一周的第一天的情形 )  %w  一周中的第几天 (0~6 , 0 代表周日, 1 代表周一 )  %x  直接显示日期 (mm/dd/yy ,本地惯用法 )  %y  年份的最后两位数字 (00~99)  %Y  完整年份 (0000~9999)
例如,显示时间后跳行,再显示目前日期。 $ date '+%T%n%D' 例如,显示月份与日数。 $ date '+%B %d'  例如,显示时间为 12:34:56 ,而非系统时间。 $ date –date '12:34:56'  例如,设置时间为 1999 年 11 月 28 号。 # date –s 991128
清屏 格式: clear 清除屏幕上的信息 , 它类似于  DOS  中的  cls  命令。清屏后,提示符移动到屏幕左上角。 clear 命令
man 命令 格式: man  < 命令名 > 功能:获取命令名指定的命令的帮助信息,即命令的格式和使用细节。 Linux 提供了联机帮助手册( man ),手册中有大量的可用信息,分成若干节,下表给出了每节的主要用途说明。  例如,要得到有关 ls 命令的帮助手册页  $ man ls
别名 alias 命令   经过一段时间之后,用户会发现自己经常需要输入一些复杂的命令,或者需要经常使用某些命令行的同一些参数。为了减少用户输入的字符量,他们可以使用 alais 命令来为各种 shell 命令创建假名 (pseudonyms)( 别名 ) ,也就是使用一个比较简短的命令来代替原来很长的命令内容。 要想建立别名,需要编辑他们自己用户目录中的 .bash_profile 或 .bashrc 文件。不管用户是使用哪个帐户登录进入系统的,本系统可以使用“ vi ~/.bashrc” 命令开始操作。
格式: alias [name=string] 或 alias [name] 或 alias 功能:为命令设置别名、显示别名设置。 说明: 第一个语法是指为“ name” 命令建立别名“ string” 。 第二个语法是显示出“ name” 所对应的命令。 若不带任何参数的 alias 命令,则表示显示所有别名设置。  注:等号两边不能有空格!
例如,将原来的“  ls -la” 命令定义为别名命令 dir , #alias dir='ls –la 当在 shell 提示符下运行 dir 命令时,实际上是在运行 ls -al 这个命令。 $ dir linuxbook 实际执行的是 ls -al linuxbook 如果想使用新的别名,请先退出登录再重新登录进入原先的帐户。 $ alias 不使用任何参数,列出所有的别名设置。 可以使用 unalias 命令从别名列表中删除别名。用 unalias -a 命令,可以删除所有的别名。 $ unalias ls # 删除 ls 这个别名 $ unalias –a # 删除别名列表中所有的别名
linux 系统的网络相关命令  ifconfig 命令 格式: ifconfig [ 网络设备 ] 功能:显示或设置网络设备。使用不带任何参数的 ifconfig 命令,可以用来查看当前系统的网络配置情况。 在刚刚安装完系统之后,实际上是在没有网卡或者网络连接的情况下使用 Linux ,但通过 ifconfig 可以使用回绕方式工作,使计算机认为自己工作在网络上。
运行一下 ifconfig 命令,不带参数的 ifconfig 命令可以显示当前启动的网络接口,其输出结果为: -----------------------------------------------------------  [root@machine1 /sbin]#ifconfig  eth0 Link encap:Ethernet Hwaddr 52:54:AB:DD:6F:61   inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128   UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1  RX packets:46299 errors:0 dropped:0 overruns:0 frame:189  TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0  collisions:0 txqueuelen:100  Interrupt:5 Base address:0xece0  lo Link encap:Local Loopback  inet addr:127.0.0.1 Mask:255.0.0.0  UP LOOPBACK RUNNING MTU:3924 Metric:1  RX packets:44 errors:0 dropped:0 overruns:0 frame:0  TX packets:44 errors:0 dropped:0 overruns:0 carrier:0  collisions:0 txqueuelen:0  --------------------------------------------------------------------  eth0 为首的部分是本机的以太网卡配置参数,显示了网卡的设备名 /dev/eth0 和硬件的 MAC 地址 52:54:AB:DD:6F:61  显示本机的 IP 地址信息,分别是本机的 IP 地址,网络广播地址和子网掩码。必须确认这些信息都是正确无误的,否则 Linux 服务器无法与其它网络设备建立连接。
ping 命令 用于检查本地机是否可以与网络上的一台主机连通。  格式: ping [ 选项 ] [ 主机名称 /IP 地址 ] 功能:向目的主机发送一个 IP 数据包,测试它是否在网络上,若对应主机的网络功能没有问题,就会响应该请求,因而得知该主机运作正常。 参数:  -f  极限检测。产生 ping 风暴,会对网络带来严重负担,仅限 root 用户使用,可用来统计数据包的丢包、误码率; -c< 完成次数 >  设置完成要求回应的次数。 -s< 数据包大小 >  设置发送数据包的大小,默认为 56 字 节 ( 加上 8 字节的报头 ) 。
  不带任何参数执行 ping 命令时,命令将会持续显示响应消息,直到通过 Ctrl+C 命令结束。由于执行 ping 命令的宿主机和目的主机之间的距离和网络质量不同,所以不同主机之间的往返时间可能不同。 通过使用参数 -c 指定发送消息的次数,例如,发送两个长度为 2048 的消息包加上 8 字节的 ICMP 协议报头。 $ ping -c 2 -s 2048 sspu.edu
ftp 命令 格式: ftp [-dignv] [ 主机名称或 IP 地址 ]  功能:设置文件系统相关功能。 ftp 是 ARPANet 的标准文件传输协议,该网络就是现今 Internet 的前身。 参数:   -d 详细显示指令执行过程,便于排错或分析程序执行的情形。  -i 关闭互动模式,不询问任何问题。  -g 关闭本地主机文件名称支持特殊字符的扩充特性。  -n 不使用自动登陆。  -v 显示指令执行过程。 其中,“主机名称或 IP 地址”是所要连接的远程 ftp 服务器的主机名或 IP 地址。
在命令行中,主机名属于选项,如果省略主机名, ftp 将给出提示符,等待用户输入命令。 可以在 ftp> 提示符后面输入 open 命令加主机名或 IP 地址,将试图连接指定的主机。用户如果在远程机上有账号,就可以通过 ftp 使用这一账号并提供口令。 $ ftp  主机名 /IP  $ ftp ftp > 在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。 如果用户没有 ftp 中文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。 ftp> 提示符下用  help 命令取得可供使用的命令清单,也可以在  help 命令后面指定具体的命令名称,获得说明。
常用的 ftp 会话命令有: ls  列出远程机的当前目录 cd  在远程机上改变工作目录 lcd  在本地机上改变工作目录 ascii  设置文件传输方式为 ASCII 模式 binary  设置文件传输方式为二进制模式 close  终止当前的 ftp 会话 hash  每次传输完数据缓冲区中的数据后就显示一个 # 号 get ( mget )  从远程机传送指定( 多个 )文件到本地机 put ( mput )  从本地机传送指定( 多个 )文件到远程机 open  连接远程 ftp 站点 quit  断开与远程机的连接并退出 ftp ?  显示本地帮助信息 !  转到 Shell 中
格式: minicom [-8lmMostz] [-a] [-c] [-C< 取文件 >] [-d< 编号 >] [-p< 模拟终端机 >] [-S] [ 配置文件 ] 功能:调制解调器通信程序。是一个相当受欢迎的 PPP 拨号连线程序。 minicom 命令    minicom 是一个串口通信工具,就像 Windows 下的超级终端。可用来与串口设备通信,如调试交换机和 Modem 等。在 Linux 环境中,可以在宿主机上用 Minicom 命令建立与目的主机的串口通信。
参数: -8  不要修改任何 8 位编码的字符。 -a <on 或 off>  设置终端机属性。 -c <on 或 off>  设置彩色模式。 -C < 取文件 >  指定取文件,并在启动时开启取功能。 -d < 编号 >  启动或直接拨号。 -l  不会将所有的字符都转成 ASCII 码。 -m  以 Alt 或 Meta 键作为指令键。 -M  与 -m 参数类似。 -o  不要初始化调制解调器。 -p < 模拟终端机 >  使用模拟终端机。 -s  开启程序设置画面。 -S <script 文件 >  在启动时,执行指定的 script 文件。 -t  设置终端机的类型。 z  在终端机上显示状态列。 [ 配置文件 ]  指定 minicom 配置文件。
默认的 minicom 配置文件位于 /etc/minicom 目录下,文件名为 minirc.dfl 。 一般来说,在使用 minicom 前需进行配置,以便正确连接串口设备。 配置 minicom 的方式:一种是用 minicom -s 命令直接从命令行进入配置菜单;另一种方式是用不带参数的 minicom 命令进入 minicom 后,在命令模式中配置。 minicom 的命令模式可 Ctrl+A 进行切换。按 Z 键可查看所有的命令。按 O 键,可进入 minicom 的配置菜单。配置完成后,可用 Save setup as.. 菜单把配置参数以文件的形式保存起来,下次就可直接用 minicom filename 命令调用该参数文件了。用 Save setup as dfl 命令可把配置存在 minirc.dfl 这个默认配置文件中。 要挂机的话可先按 Ctrl+A 切换到命令模式,再 H 键。当屏幕很花时,在命令模式下按 C 键可清屏。
内核模块  内核模块是 Linux 内核向外部提供的一个接口,其全称为动态可加载内核模块( Loadable Kernel Module , LKM ),简称为模块。 Linux 内核之所以提供模块机制,是因为它本身是一个单内核。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。 模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或内核中其他上层的功能。
模块实用程序 modutils modutils 是管理内核模块的一个软件包。可以在任何提供内核源代码的地方获取 modutils ( modutils-x.y.z.tar.gz )源代码,安装在 /sbin 目录下就会有 insmod 、 rmmod 、 ksyms 、 lsmod 、 modprobe 等实用程序。当然,通常在加载 Linux 内核时, modutils 已经被载入。 函数 init_module() 和 cleanup_module() 是模块编程中最基本也是必需的两个函数。 init_module() 向内核注册模块所提供的新功能。 cleanup_module() 注销由模块提供的所有功能。
(1) insmod 命令 格式: insmod [-fkmpsvxX][-o < 模块名称 >][ 模块文件 ][ 符号名称  =  符号值 ]  功能:载入模块。 Linux 有许多功能是通过模块的方式,在需要时才载入 kernel 。如此可使 kernel 较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。
参数: -f 不检查目前 kernel 版本与模块编译时的 kernel 版本是否一致,强制将模块载入  -k   将模块设置为自动卸除  -m   输出模块的载入信息  -o < 模块名称 >  指定模块的名称,可使用模块文件的文件名  -p   测试模块是否能正确地载入 kernel  -s   将所有信息记录在系统记录文件中  -v   执行时显示详细的信息  -x   不要汇出模块的外部符号  -X   汇出模块所有的外部符号,此为预设置
调用 insmod 程序,把需要插入的模块以目标代码的形式插入到内核中。在插入的时候, insmod 自动调用 init_module() 函数运行。注意,只有超级用户才能使用这个命令。例如: #insmod hello.o
(2) lsmod 命令 格式: lsmod 功能:显示已载入系统的模块。执行 lsmod 指令,会列出所有已载入系统的模块。 Linux 操作系统的核心具有模块化的特性,应此在编译核心时,须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。 实际上这个程序的功能就是读取 /proc 文件系统中 /proc/modules 文件中的数据。 #lsmod
(3) rmmod 命令 格式: rmmod [-as][ 模块名称 ...] 功能:删除模块。执行 rmmod 指令,可删除不需要的模块。 Linux 操作系统的核心具有模块化的特性,应此在编译核心时,须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。 参数: -a   删除所有目前不需要的模块  -s   把信息输出至 syslog 常驻服务,而非终端机界面
调用 rmmod 程序,将已经插入内核的模块从内核中移出。 rmmod 会自动运行 cleanup_module() 函数。 #rmmod hello
(4) ksyms 命令 ksyms 这个程序用来显示内核符号和模块符号表的信息。与 lsmod 相似,它的功能是读取 /proc 文件系统中另一个文件 /proc/ksyms 的内容。
mknod 命令  用于建立设备文件,只有 root 能使用这个命令建立设备文件。其参数是文件名,字母 c 或 b 分别代表字符特别文件或块特别文件,主设备号,次设备号。 块特别文件是像磁带,磁盘这样一些以块为单位存取数据的设备。字符特别文件是像终端,打印机, MODEM 或者其它任何与系统通讯时,一次传输一个字符的设备,包括模仿对磁盘进行字符方式存取的磁盘驱动器。 主设备号指定了系统子程序 ( 设备驱动程序 ) ,当在设备上执行 I/O 时,系统将调用这个驱动程序。调用设备驱动程序时,次设备号将传递给该驱动程序 ( 次设备规定具体的磁盘驱 动器,带驱动器,信号线编号,或磁盘分区 ) 。每种类型的设备一般都有自己的设备驱动程序。
mknod 命令  文件系统将主设备号和次设备号存放在 i 节点中的磁盘地址表内,所以没有磁盘空间分配给设备文件 ( 除 i 节点本身占用的磁盘区外 ) 。当程序试图在设备文件上执行 I/O 操作时,系统识别出该文件是一个特别文件,并调用由主设备号指定的设备驱动程序,次设备号作为调用设备驱动程序的参数。 主设备号用于 kernel 中区分设备驱动,次设备号用于设备驱动内区分设备。 格式: mknod  设备名字  [b/c]  主设备号 次设备号 功能:为设备文件产生一个目录项和对应的 i 节点。
#mknod /dev/hda1 b 127 1 /dev/hda1 是设备名, b 表示 block 设备, c 表示字符设备。 127 是主设备号, 1 是次设备号。次设备号可以是 0~255 之间的值,限制为 8 位。 #ls -al /dev/hda1 brw-rw---- 1 root disk 31 Mar 25 12:00 /dev/hda1

More Related Content

What's hot (20)

PPT
0513 深入Windows Server 2008 系統核心
Timothy Chen
 
DOC
Linux安全配置终极指南
wensheng wei
 
PDF
unixtoolbox_zh_CN
wensheng wei
 
DOCX
CentOS 5.5_图形安装教程(超详细)
haibor
 
PPTX
1, shell intro
ted-xu
 
PDF
Windows引导过程
Mike Wang
 
PPT
Gnu
Ak Saint
 
PPTX
4, files & folders
ted-xu
 
DOC
尚观Linux研究室 linux驱动程序全解析
hangejnu
 
ODP
The New Process No. 1 of Linux -- SystemD
freedman6022e20
 
PDF
利用Cent Os快速构建自己的发行版
xingsu1021
 
DOCX
Linux学习
tonyhuang2008
 
PDF
Unixtoolbox zh cn
xdboy2006
 
PDF
Showinnodbstatus公开
longxibendi
 
DOC
Nagios的安装部署和与cacti的整合(linuxtone)
Yiwei Ma
 
PDF
Linux File system
Kenny (netman)
 
PDF
Bypat博客出品-利用cent os快速构建自己的发行版
redhat9
 
PPT
Cassandra运维之道(office2003)
haiyuan ning
 
PDF
Clonezilla tutorial.v7
hs1250
 
PPTX
20121111 linux intro
Chang Mt
 
0513 深入Windows Server 2008 系統核心
Timothy Chen
 
Linux安全配置终极指南
wensheng wei
 
unixtoolbox_zh_CN
wensheng wei
 
CentOS 5.5_图形安装教程(超详细)
haibor
 
1, shell intro
ted-xu
 
Windows引导过程
Mike Wang
 
4, files & folders
ted-xu
 
尚观Linux研究室 linux驱动程序全解析
hangejnu
 
The New Process No. 1 of Linux -- SystemD
freedman6022e20
 
利用Cent Os快速构建自己的发行版
xingsu1021
 
Linux学习
tonyhuang2008
 
Unixtoolbox zh cn
xdboy2006
 
Showinnodbstatus公开
longxibendi
 
Nagios的安装部署和与cacti的整合(linuxtone)
Yiwei Ma
 
Linux File system
Kenny (netman)
 
Bypat博客出品-利用cent os快速构建自己的发行版
redhat9
 
Cassandra运维之道(office2003)
haiyuan ning
 
Clonezilla tutorial.v7
hs1250
 
20121111 linux intro
Chang Mt
 

Viewers also liked (16)

PPT
Norkely
norkeli
 
PPT
Norkely
norkeli
 
PPT
Norkely
norkeli
 
PPT
The Collective Mind of the Obama Administration
Matt Bonham
 
PPT
Norkely
norkeli
 
PDF
3D Printen (Masterclass)
Studio van der Sar
 
PDF
Linux软件工程师
xiaotingting
 
PPTX
Hum 186 wk 4
shelly84
 
PPT
พฤติกรรมของสัตว์
พัชนี ปานพรม
 
PPT
ความรู้เกี่ยวกับกิจการ
zyxel_pat1
 
PPTX
Hist 110 week # 5
shelly84
 
PPTX
corso web developer - Introduzione a Javascript
Riccardo Piccioni
 
PPTX
corso web developer - Introduzione al web
Riccardo Piccioni
 
PDF
FAB Analysis pi
Rahul Sharma
 
PDF
3D printen & (voortgezet) onderwijs
Studio van der Sar
 
PDF
corso web - Introduzione ai Database
Riccardo Piccioni
 
Norkely
norkeli
 
Norkely
norkeli
 
Norkely
norkeli
 
The Collective Mind of the Obama Administration
Matt Bonham
 
Norkely
norkeli
 
3D Printen (Masterclass)
Studio van der Sar
 
Linux软件工程师
xiaotingting
 
Hum 186 wk 4
shelly84
 
พฤติกรรมของสัตว์
พัชนี ปานพรม
 
ความรู้เกี่ยวกับกิจการ
zyxel_pat1
 
Hist 110 week # 5
shelly84
 
corso web developer - Introduzione a Javascript
Riccardo Piccioni
 
corso web developer - Introduzione al web
Riccardo Piccioni
 
FAB Analysis pi
Rahul Sharma
 
3D printen & (voortgezet) onderwijs
Studio van der Sar
 
corso web - Introduzione ai Database
Riccardo Piccioni
 
Ad

Similar to Linux commands ppt (20)

PDF
Ubuntu
Liu Lizhi
 
PDF
unix toolbox 中文版
Jie Bao
 
PDF
Linuxcommand
jason hu 金良胡
 
PPTX
Linux常用命令
Tony Deng
 
PDF
Linux基础
Eric Lo
 
PDF
ubuntu完全教程,让你成为ubuntu高手!.pdf
tshance
 
PPT
有趣的Linux入门文章
yiditushe
 
PPTX
3, users & groups
ted-xu
 
DOC
Unix常用命令 1
tony2yy_fish
 
PPT
Effective linux.1.(commandline)
wang hongjiang
 
PDF
Introduction to FreeBSD commands
郁凱 黃
 
PDF
Linux基础
zhuqling
 
PDF
Introduce to Linux command line
Wen Liao
 
PDF
linux 從無到有
alex867
 
PDF
Linux command tutorial
朋 陈
 
PPT
第9章 Shell 編程
kidmany2001
 
PPT
Linux常用命令与工具简介
weihe
 
PPT
Linux2帳號與磁碟空間管理
jiannrong
 
DOC
Unix常用命令
tony2yy_fish
 
KEY
Linuxguide4f2e
tb-vertical-guide
 
Ubuntu
Liu Lizhi
 
unix toolbox 中文版
Jie Bao
 
Linuxcommand
jason hu 金良胡
 
Linux常用命令
Tony Deng
 
Linux基础
Eric Lo
 
ubuntu完全教程,让你成为ubuntu高手!.pdf
tshance
 
有趣的Linux入门文章
yiditushe
 
3, users & groups
ted-xu
 
Unix常用命令 1
tony2yy_fish
 
Effective linux.1.(commandline)
wang hongjiang
 
Introduction to FreeBSD commands
郁凱 黃
 
Linux基础
zhuqling
 
Introduce to Linux command line
Wen Liao
 
linux 從無到有
alex867
 
Linux command tutorial
朋 陈
 
第9章 Shell 編程
kidmany2001
 
Linux常用命令与工具简介
weihe
 
Linux2帳號與磁碟空間管理
jiannrong
 
Unix常用命令
tony2yy_fish
 
Linuxguide4f2e
tb-vertical-guide
 
Ad

Recently uploaded (20)

PPTX
澳洲毕业证(GU毕业证书)格里菲斯大学毕业证学位学历证书
uezohzu
 
PPTX
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
ahhuncy
 
PPTX
3分钟读懂加拿大英属哥伦比亚大学毕业证(University of British Columbia毕业证书)最佳获取方法
70u9aw0ff
 
PPTX
3分钟读懂美国加利福尼亚大学戴维斯分校毕业证(University of California,Davis毕业证书)最佳获取方法
iqmiusm9n
 
PPTX
英国毕业证(UCL毕业证书)伦敦大学学院毕业证学位认证网
apuoho
 
PPTX
3分钟读懂詹姆斯库克大学毕业证JCU毕业证最佳获取方法
imkciuar
 
PPTX
3分钟读懂加拿大劳瑞尔大学毕业证(Wilfrid Laurier University毕业证书)最佳获取方法
7l6mta5fe
 
PDF
研究所(資管所)、轉學考(資工資管)網路重點整理(network summary)
逸 張
 
PPTX
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
PPTX
一比一原版美国普林斯顿大学毕业证(Princeton University毕业证书)如何办理
gbydfzjjv
 
PPTX
美国学位证书,加利福尼亚大学洛杉矶分校毕业证学历认证UCLA毕业证购买
kaozytf
 
PDF
(eBook PDF) The Microeconomics of Public Policy Analysis
efaxdcenpq9734
 
PPTX
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
mbcom2
 
PPTX
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
PPTX
3分钟读懂美国加利福尼亚大学尔湾分校毕业证((The University of California, Irvine毕业证书)最佳获取方法
iqmiusm9n
 
PPTX
美国毕业证(UCI毕业证书)加利福尼亚大学尔湾分校毕业证transcript信封
ysaab1
 
PPTX
澳洲毕业证(DU毕业证书)迪肯大学毕业证电子版
xavta
 
PPTX
英国学位证书,帝国理工学院毕业证学历认证Imperial College毕业证加急办理
nxebwu
 
PDF
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
PPTX
3分钟读懂英国伯明翰大学学院毕业证(University College Birmingham毕业证书)最佳获取方法
yeom64vra
 
澳洲毕业证(GU毕业证书)格里菲斯大学毕业证学位学历证书
uezohzu
 
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
ahhuncy
 
3分钟读懂加拿大英属哥伦比亚大学毕业证(University of British Columbia毕业证书)最佳获取方法
70u9aw0ff
 
3分钟读懂美国加利福尼亚大学戴维斯分校毕业证(University of California,Davis毕业证书)最佳获取方法
iqmiusm9n
 
英国毕业证(UCL毕业证书)伦敦大学学院毕业证学位认证网
apuoho
 
3分钟读懂詹姆斯库克大学毕业证JCU毕业证最佳获取方法
imkciuar
 
3分钟读懂加拿大劳瑞尔大学毕业证(Wilfrid Laurier University毕业证书)最佳获取方法
7l6mta5fe
 
研究所(資管所)、轉學考(資工資管)網路重點整理(network summary)
逸 張
 
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
一比一原版美国普林斯顿大学毕业证(Princeton University毕业证书)如何办理
gbydfzjjv
 
美国学位证书,加利福尼亚大学洛杉矶分校毕业证学历认证UCLA毕业证购买
kaozytf
 
(eBook PDF) The Microeconomics of Public Policy Analysis
efaxdcenpq9734
 
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
mbcom2
 
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
3分钟读懂美国加利福尼亚大学尔湾分校毕业证((The University of California, Irvine毕业证书)最佳获取方法
iqmiusm9n
 
美国毕业证(UCI毕业证书)加利福尼亚大学尔湾分校毕业证transcript信封
ysaab1
 
澳洲毕业证(DU毕业证书)迪肯大学毕业证电子版
xavta
 
英国学位证书,帝国理工学院毕业证学历认证Imperial College毕业证加急办理
nxebwu
 
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
3分钟读懂英国伯明翰大学学院毕业证(University College Birmingham毕业证书)最佳获取方法
yeom64vra
 

Linux commands ppt

  • 1. 第 4 章 Linux 常用命令 4.1 Linux 系统目录的功能介绍 4.2 Linux 系统的启动和退出 4.3 Linux 系统对文件和目录的操作命令
  • 2. Linux 版本 RedHat Linux Red Hat 公司 创建于 1994 年,是全球最大的开源技术厂家,其产品也是全世界应用最广泛的 Linux 。公司总部位于美国北卡罗来纳州,在全球拥有多个分部。 Red Hat 是目前唯一公开上市的开放源代码厂商,也是唯一能构成微软竞争对手的开源软件公司。 Red Hat 的培训及认证被认为是 Linux 认证的标准。 Certification 杂志的最新调查显示, RHCE(Red Hat 认证工程师 ) 认证被公认为总体质量最高的国际 IT 认证。
  • 3. Red Hat Linux 的最终版本是 9 。 Red Hat 公司于 2003 年 9 月底宣布,将原有的 Red Hat Linux 开发计划与 Fedora Linux 计划整合成新的 Fedora Project 。 Fedora Project 将由 Red Hat 公司赞助,以社群主导和支持的方式,开发 Linux 发行版 Fedora Core 。 目前最高版本为 Fedora Core 6 。
  • 4. 4.1 Linux 系统目录的功能介绍 根据 1994 年发布的文件系统标准( FSSTND ),所有的 Linux 文件系统都有标准的文件和目录结构。那些标准目录又包含一些特定的文件。下面来简要介绍一下每个目录的作用。 根目录( / ) 根目录位于分层文件系统的最顶层,用斜线( / )表示。它包含一些标准文件和目录,因此可以说它包含了所有的目录和文件。
  • 5. /bin /bin 目录,也称为二进制目录,包含了那些供系统管理员和普通用户使用的重要的 Linux 命令的二进制(可执行)映像。这个目录下的文件要么是可执行文件,要么是其他目录下的可执行文件的符号连接。目录 /usr/bin 存放了大部分的用户命令。
  • 6. /boot /boot 目录下存放的是 Linux 系统启动时要用到的所有文件,包括 Linux 内核的二进制映像。当用 lilo 引导 Linux 时,会用到这里的一些信息 grub 的配置文件也放在这里。 /dev /dev 目录,也称为设备目录,存放连接到计算机上的设备的对应文件,包含了 Linux 系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。
  • 7. /etc /etc 目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、 X 窗口系统配置文件、设备配置信息、设置用户信息等; /etc 目录不包含任何二进制文件。这个目录下的文件主要由管理员使用;普通用户对大部分文件有读权限。 /home 用户的基本目录, /home 如果建立一个名为“ xx” 的用户,那么在 /home 目录下就有一个对应的“ /home/xx” 路径,用来存放该用户的主目录。
  • 8. /lib /lib 目录下存放了各种编程语言库,包括库文件和 kernel 模块。典型的 Linux 系统包含了 C 、 C ++、 FORTRAN 语言的库文件。 /lib 目录下的库映像文件可以用来启动系统并执行一些命令。实际上它包含了标准 C 库 /lib/libc.so.* ,数学库 libm.so.* ,共享的动态链接库 /lib/ld/so 以及目录 /lib 和 /sbin 下命令用到的其他共享库。目录 /lib/modules 包含了可加载的内核模块。 /lib 目录用来存放系统动态连接共享库文件,几乎所有的应用程序都会用到该目录下的共享库文件,其他的库文件则大部分存储在目录 /usr/lib 下。
  • 9. /lost+found /lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。 /lost+found 目录存放所有和其他目录都没有关联的文件。这些文件可以用 Linux 工具 fsck (文件系统检查)查找得到的。系统管理员使用 fsck 检查文件系统,并决定保留或删除这些文件。
  • 10. /mnt /mnt 目录在一般情况下也是空的,主要用来临时装载文件系统,系统管理员执行 mount 命令完成装载。工作在系统中,这个目录包含了光驱、磁盘和软驱的装载点。这样,当装载了一个设备时,如光驱,就可以通过访问目录 /mnt/cdrom 的文件来访问相应光盘上的文件。 /proc /proc 目录存放了进程信息和系统信息,这些信息是在内存中由系统自己产生的。
  • 11. /root 许多 Linux 系统都将目录 /root 作为根用户(超级用户)的主目录。该目录受到完全保护,不受普通用户的影响,普通用户没有权限访问 /root 目录。 /sbin /sbin 该目录用来存放系统管理员的系统管理程序。 目录 /sbin 、 /usr/sbin 、 /usr/local/sbin 包含系统管理工具、实用程序和通用的根用户专用命令。
  • 12. /usr /usr 目录是 Linux 文件系统中最大的一个部分,要用到的应用程序和文件几乎都存放在这个目录下面。它包含了主机之间可以共享的只读数据。在多数 Linux 系统中, /usr 至少包含了下面的子目录: X11R6 、 bin 、 doc 、 games 、 include 、 lib 、 local 、 man 、 sbin 、 share 、 src 和 tmp 。
  • 14. /tmp /tmp 目录用来存放不同程序执行时产生的临时文件。一些命令和应用程序要用到该目录。您也可以用该目录存放自己的一些临时文件。该目录中的所有文件会被定期删除,以保证磁盘 ( 或磁盘分区 ) 不会被临时文件所塞满。 /tmp 目录下某个文件的生命期是由系统管理员所设定的,而且因系统而异,但通常只有若干分钟。多数系统都为 /tmp 目录设置了粘滞位( sticky bit ),这样只有文件的所有者才能从该目录中删除文件。
  • 15. /opt /opt 目录用来安装附加软件包。用户调用的软件包程序放在目录 /opt/package_name/bin 下, package_name 是安装的软件包名称。软件包的参考手册放在 /opt/package_name/man 下。 /var /var 目录是系统在工作时预先设置的工作目录,如各种服务的日志文件和收发的邮件等。 /var 目录用于放置变量数据 ( 当系统运行时这些数据不断变化 ) 。
  • 16. /etc/passwd 文件 /etc/passwd 对每个用户都有一行描述。每一行由 7 个字段组成,各个字段用冒号隔开。 下面是每行的格式: login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell
  • 17. home_directory 字段是用户主目录的绝对路径。 l ogin_shell 包含了用户登录 shell 的绝对路径。当用户登录到系统时,相应于该字段所指定路径名的命令就会被系统执行。如果出现两个连续的冒号,就意味着两个冒号之间的那个字段缺少字段值,值为空。有时 user_info 字段会出现空值。 login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell 例如: davis:x:134:105:James A Davis:/home/student/davis:/bin/bash
  • 18. 4.2 Linux 系统的启动和退出 启动系统 登录方式 修改口令 退出登录 关闭机器 用户帐号管理 虚拟终端 Shell 简介 Linux 系统常用命令格式
  • 19. 启动 Linux 系统 以 Fedora Core 4 为例说明 启动计算机,出现 GRUB( GRand Unified Bootloader 多重启动管理器 ) 引导程序
  • 20. GRUB 启动菜单 GRUB 菜单
  • 21. 一些基本术语 命令 (Command) 给计算机的指令,通常使用键盘输入 命令行 (Command line) 输入命令的地方 shell : 是一种命令解释器,它提供了用户和操作系统之间的交互接口。当用户在命令行输入命令后, shell 进行解释,然后送往操作系统(内核)执行。 shell 可以执行 Linux 的系统内部命令,也可以执行应用程序。你还可以利用 shell 编程,执行复杂的命令程序。 root :根用户、超级用户、管理员,它对整个系统有完全的访问权。只有超级用户才能更改系统的设置等。 当使用超级用户登录后,进行相关操作时需非常谨慎,否则可能会对系统或用户文件造成不可挽回的损失。
  • 22. 字符操作环境 虽然 Linux 提供了漂亮的图形界面操作环境,但有时仍需返回到字符界面 命令行方式 下工作。特别是当系统出现问题时,在字符界面下, Linux 只加载少量的应用程序,以便用户修正 Linux 相同可能的错误。某些无法或不方便在图形界面下操作的任务,也需要命令行方式。 终端是 UNIX 的一个标准特性,用户可以通过终端访问系统资源。 Linux 下的字符操作环境有两种:一种是控制台( console )或终端 (Terminal) ;另一种是图形界面下提供的多种虚拟终端,如 xterm 、 rxvt 等。
  • 23. Linux 登录方式 Linux 有两种登录方式: 文本模式 和 图形模式 文本模式 : 字符操作环境 Fedora Core release 4 (Stentz) Kernel 2.6.11 - 1.1369_FC4 on an i686 login: 键入正确的用户名和口令后,就可以进入系统 注: Linux 区分大小写!
  • 24. 用户主目录 用户登录后,将会进入一个系统指定的专属目录,即用户的 主目录 ,该目录名通常为用户的登录帐号。 在创建用户时,系统管理员会给每个用户建立一个主目录,通常在 / home / 目录下。 例:用户 user1 的主目录为 /home/user1/ 用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。 每个用户名对应一个用户 ID 号(一个数字)。 每个用户都被分配到一个指定的组 (group) 中
  • 26. 登录回话菜单 语言 (L) : 选择语言,默认为安装是选择的语言。 重新引导 (R) : 重启计算机 关机 (R) : 关闭计算机 上次 :上次登时使用的桌面管理器 系统 默认 : Fedora core 默认的桌面管理器是 GNOME GNMOE : GNMOE 桌面管理器 KDE : KDE 桌面管理器 安全模式 :显示没有桌面管理器的 xterm 终端 会话 (S) : 采用什么样的桌面管理器
  • 28. X Windows 系统 X Widows 系统 也称为 X ,是在 UNIX 类的操作系统中应用最为广泛的基于窗口的用户图形界面。 X Widows 使用方便,界面直观,并且和具体的计算机的硬件无关,也独立于操作系统。同时它支持分布式的网络操作。所以,基于 X Window 的应用程序一直在 UNIX 类的操作系统中占有主导的地位。 Linux 出现以后, X Window 系统也有了在 Linux 系统上的实现,成为 Linux 图形用户界面的基础。
  • 29. X Windows 系统 通常 X 窗口分两层: 桌面管理器 和 窗口管理器 桌面管理器 是面向图像的用户界面,它允许用户通过管理图标而不是输入相应的 shell 命令来与系统交互。 窗口管理器 主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序…… GNOME 、 KDE ( Fedora 安装盘自带) FVWM 、 WINDOWMAKER ( 自己下载安装 ) Linux 下常见的桌面系统有:
  • 30. 字符界面与图形界面 在 字符界面 中,如果想进入 图形界面 ,可以输入命令 startx 或 switchdesk GNOME 注:在字符界面下中文可能无法正常显示。 但在虚拟终端中可以正常显示。 或 switchdesk KDE 在 图形模式 中,想进入 字符操作环境 ,有以下方式 切换到另一个虚拟控制台。 Linux 共提供了 7 个虚拟控制台,可以用 Ctrl+Alt+F n 或 Alt+F n 来切换, F n 为功能键 F1 ~ F7 。其中 F1 ~ F6 是文本模式, F7 是图形界面。 在图形界面下,可以打开一个或多个 虚拟终端 。
  • 31. 打开虚拟终端 在图形界面下,如何打开虚拟终端 点击面板上的 “应用程序”  “系统工具”  “终端”。 单击鼠标右键, 从弹出的快捷菜单中选择 “终端”。 打开新的虚拟终端窗口的快捷键 Ctrl+Shift+t ( 在同一窗口中打开新的终端 ) Ctrl+Shift+n ( 在不同窗口中打开新的终端 ) Alt+ 数字键 ( 切换终端 1~6)
  • 32. 虚拟终端 应用程序  系统工具  终端 单击鼠标右键, 选择 “终端”
  • 34. 用户登录 Linux 是一个真正意义上的多用户、多任务操作系统,用户要使用该系统,首先必须登录,使用完系统后,必须退出。 Linux 下有两类用户: root 用户 :超级用户,即系统管理员,系统的拥有者,在 Linux 系统中有且只有一个 root 用户,是对系统的一切都具有完全的访问权限的用户,可以在系统中任何操作;并可由它建立多个普通用户,共同使用该计算机系统。 root 用户的密码在系统安装时由安装者设定。 普通用户 : Linux 系统可以创建许多普通用户,并为其指定相应的权限,使其有限地使用 Linux 系统。
  • 35. 系统在建立之初,仅有 root 用户,其它的用户则是由 root 用户创建的。由于 root 用户的权限太大了,所以如果 root 用户误操作将可能造成很大的损失。所以建议系统管理员为自已新建一个用户,只有需要做系统维护、管理任务时才以 root 用户登录。 以 root 用户登录,系统提示符是“ #” ; 以普通用户身份进入系统,系统提示符为“ $” 。 在后面的实训中, login 为 root , Password 为 123456  
  • 36. 修改口令 为了更好地保护用户帐号的安全, Linux 允许用户在登录之后随时使用 passwd 命令修改自己的口令。修改口令需要经历: 输入原来的口令,如果口令输错,将中止程序,无法修改口令; 输入新的口令; 提示重复一遍新的口令,如果两次输入的口令相吻合,则口令修改成功。 root 用户修改口令,则不需要输入老密码。 root 用户可以修改任何用户的口令。
  • 37. 退出 Linux 注销 图形界面: 桌面  注销 字符界面: 输入命令 exit 或 logout 重启 图形界面: 桌面  注销 字符界面: 输入命令 reboot 关机 图形界面: 桌面  注销 字符界面: 输入命令 poweroff 或 halt 或 shutdown telnet 、 ssh 远程登录
  • 38. 1 、 exit 命令 格式: exit 功能:退出目前的 shell (外壳程序),返回到上一级的状态。它的使用权限是所有用户。 2 、 logout 命令 格式: logout 功能:让用户退出系统,其功能和 login 指令相互对应,是登录的相对操作,登录系统后,若要离开系统,用户只要直接下达 logout 命令即可。它的使用权限是登录 shell 的用户。 退出登录
  • 39. 关闭机器 在结束 Linux 系统运行时,应先关闭操作系统,然后关机,而不能直接切断电源。因为在关闭系统时, Linux 的一些系统进程还在运行,而且这些进程可能正在对文件进行操作,如果仅仅是切断电源,就会使进程不能关闭文件,正常结束运行。 在 Linux 系统中,普通用户是无权关闭系统的,只有 root 用户才能够关闭系统,若此时不是 root 用户,应用 su 命令转换为 root 用户。
  • 40. 因此,在关闭系统,必须先使所有进程结束运行,可以通过以下几种方法实现: 按下 Ctrl+Alt+Del 组合键,系统将重新启动。 执行 reboot 命令,系统将重新启动。 执行 shutdown -h now 命令,系统将关闭计算机。 执行 halt 命令,可以关闭计算机。 注意千万不要随意采用硬关机、重启动键等方式关闭系统,那样会导致 Linux 文件系统遭受破坏。
  • 41. 1 、 shutdown 命令 格式: shutdown [-hknr] [-t 秒数 ] < 时间 > [ 警告信息 ] 功能: shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机动作。 参数: -h 将系统关机。 -k 只是送出信息给所有用户,但不会实际关机。 -n 不调用 init 程序进行关机,而由 shutdown 自己进行。 ( 一般关机程序是由 shutdown 调用 init 来实现关机动作 ) ,使用此参数将加快关机速度,但是不建议用户使用此种关机方式。 -r shutdown 之后重新启动。 -t< 秒数 > 送出警告信息和删除信息之间要延迟多少秒。
  • 42. < 时间 > 设置多久时间后执行 shutdown 命令。时间参数有 hh : mm 或 +m 两种模式。 hh : mm 格式表示在几点几分执行 shutdown 命令。例如“ shutdown 10:45” 表示将在 10:45 执行 shutdown 。 +m 表示 m 分钟后执行 shutdown 。比较特别的用法是以 now 表示立即执行 shutdown 。值得注意的是这部分参数不能省略。 [ 警告信息 ] 要传送给所有登入用户的信息。 # shutdown -h now 指定现在立即关机 # shutdown +5 “System will shutdown after 5 minutes” 指定 5 分钟后关机,同时送出警告信息给登入用户
  • 43. 2 、 halt 命令 其实 halt 就是调用 shutdown -h 。 halt 执行时﹐杀死应用进程﹐执行 sync 系统调用﹐文件系统写操作完成后就会停止内核。 参数: [-f] 没有调用 shutdown 而强制关机或重启。 [-i] 关机〔或重启〕前﹐关掉所有的网络接口。 [-p] 该选项为缺省选项。就是关机时调用 poweroff 。 shutdown 或 Halt 命令的执行过程是:首先广播关闭消息,然后关闭进程,卸下文件系统,最后显示如下信息: The System is halted. System halted. 这时,便可以关闭电源了。
  • 44. 3 、 reboot 命令 执行 reboot 指令可让系统停止运作,并重新开机。 reboot 的工作过程差不多跟 halt 一样﹐不过它是引发主机重启﹐而 halt 是关机。
  • 45. 用户帐号管理 1 、创建新用户 每一个普通用户帐号均由 root 用户创建,只有建立了帐号的用户才能在 Linux 系统登录。建立一新用户帐号,包括为其设置用户名和口令。 (1) useradd 命令 功能:建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。 (2) passwd 命令 功能 : 对指定帐号的用户设置口令,还可以用做修改已存在用户的口令或当前登录用户的口令。 root 用户 能 修改 系统 中所有 用户的 口令,而普通 用户只能变更自己的 口令 。
  • 46. 更改口令: passwd 直接在命令行中输入 passwd ,然后根据提示,先输入原来的口令,回车后,再输入新口令,并确认一次。 为确保高安全性, Linux 对口令有一定的要求,而且通常需要在口令中加入一些特殊符号,如 加号 、 减号 等。 提醒: 输入密码时,屏幕上不会有任何输出或提示! 无论是 root 用户还是普通用户,修改自己的口令时,无需添加帐号,输入 #passwd 但 root 用户修改普通用户的口令时,需输入 #passwd 帐号 要修改口令的普通用户的帐号
  • 47. 2 、删除用户 用户的删除须由超级用户执行。 userdel 命令 格式: userdel [-r] < 用户帐号 > 功能 :删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。 参数: - r 删除用户登入目录以及目录中所有文件。
  • 48. 3 、 root 用户与普通用户的身份转换 由于 root 用户的权限不受限制,只有在做特权操作时,才用 root (超级)用户帐号登录,此外则应尽量避免以 root 用户身份登录系统处理事情。但是,当为了某种需要(如修改一个用户的口令),就需要暂时取得 root 用户的特殊权限。一种方法是,退出普通用户的登录,然后以 root 用户登录,处理完相应特权操作后,为确保系统安全,避免不必要的误操作,最后还要退出 root 用户登录,以普通用户帐号登陆,显然过程太麻烦。我们可以使用 Linux 提供的 su 命令来实现 root 用户与普通用户间的快速切换。
  • 49. su 命令 格式: su [ 用户帐号 ] 功能 : 变更用户身份。 参数: [ 用户帐号 ] 指定要变更的用户。若不指定此参数,则预设变更为 root 。 # su < 普通用户帐号 > 实行 root 用户转换到普通用户 # su 实行普通用户转换到 root 用户,当然此时系统会要求操作者提供 root 用户的口令
  • 50. 虚拟终端 Linux 是真正的多用户操作系统,可以同时接受多个用户的远程和本地登录,也允许同一个用户多次登录。 Linux 为本地用户 ( 也就是做在计算机面前的用户 ) 提供了虚拟终端访问方式,允许用户在同一时间从不同的控制台进行多次登录。 Linux 提供了六个虚拟终端,虚拟终端的选择可以通过按 Alt 键加上 F1~F6 六个功能键来实现。例如,用户登录后,按一下 Alt+F2 组合键,用户又可以看到“ login:” 提示符,这其实就是第二个虚拟终端,而这时再按下 Alt+F1 组合键,用户则又可以回到第一个虚拟终端。 大家可以通过使用虚拟终端来感受 Linux 系统多用户的特性。例如用户可以在某一虚拟终端上进行的工作尚未结束时,就可以切换到另一个虚拟终端上开始另一项工作。
  • 51. Shell 简介 Shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。 shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。用户在命令行中输入的每个命令都由 shell 先解释,然后传给 Linux 内核去执行。 如果把 Linux 内核想象成一个球体的中心, shell 就是围绕内核的外层,从 shell 向 Linux 操作系统传递命令时,内核就会做出相应的反应。
  • 52. shell 的另一个重要特性是它自身就是一个解释型的程序设计语言, shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组等。 shell 编程语言简单易学,一旦掌握后它将成为你的得力工具。任何在命令行中能键入的命令也能放到一个可执行的 shell 程序里。 shell 是一个命令语言解释器,拥有自己内建的 shell 命令集。此外, shell 也能被系统中其他应用程序所调用。
  • 53. 常用的 Shell Bourne Shell 是 At&T Bell 实验室的 Steven Bourne 为 At&T 的 Unix 开发的,它是 Unix 的默认 Shell ,也是其它 Shell 的开发基础。 Bourne Shell 在编程方面相当优秀,但在处理与用户的交互方面不如其它几种 Shell 。 Bourne Shell 是最早被广泛使用的和标准化的 Shell ,几乎所有的 Unix 兼容系统都支持。 Linux 系统提供多种不同的 Shell 以供选择。常用的有 Bourne Shell (简称 Sh )、 C-Shelll (简称 Csh )、 Korn Shell (简称 Ksh )和 Bourne Again Shell ( 简称 Bash) 。 Bourne shell (sh)
  • 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 并不兼容。 C shell (csh) Korn shell (ksh)
  • 55. 常用的 Shell ( 续 ) Bourne Again Shell ( 即 Bash) 是自由软件基金会 (Gnu) 开发的一个 Shell ,是多数 Linux 系统中一个默认的 Shell 。 Bash 不但与 Bourne Shell 兼容,并且在 Bourne Shell 的基础上增加和增强了很多特性,同时还继承了很多 C Shell 、 Korn Shell 的优点。 Bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。 Bourne Again Shell (Bash) 是现在大多数 Linux 系统的缺省 shell
  • 56. Linux 系统常用命令格式 command [ 选项 ] [ 参数 ] Command 为命令名(也就是对应的程序名),写在一行的开头; 开关符选项 通常是以 “ - ” 开始,多个选项可用一个“ - ” 连起来,如 ls -l -a 与 ls –la 相同 ; 根据命令的不同, 参数 分为可选的或必须的; 命令名 和 开关符 、 参数 之间一定要用 空格 分离。
  • 57. Bash 的功能 当用户打开一个 ( 虚拟 ) 终端时,可以看到一个 shell 提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数 例: ls –l /home/user1/linux/ 注意:命令行中选项先于参数输入 command [ 选项 ] [ 参数 ] 命令行
  • 58. 命令行特征 如果一个命令太长,无法在一行中显示,可以使用反斜杠 \ 来续行,在多个命令行上输入一个命令或多个命令。例如: ls -F; \ cp -i mydata newdata 大多数 shell 在达到命令行行尾时都会自动断开长命令 在一个命令行中可以输入多个命令,用分号将各个命令隔开。例如: ls -F; cp -i mydata newdata
  • 59. 命令行特征 ( 续 ) 命令行实际上是可以编辑的一个 文本缓冲区 ,在按回车之前,可以对输入的命令进行编辑。如用 BACKSPACE 键可以删除刚键入的字符,也可以进行整行删除,还可以插入字符等。 命令行编辑
  • 60. 4.3 Linux 系统对文件和目录的操作命令 计算机用户总会和文件系统打交道。用户在使用计算机系统时,经常要执行一些与文件相关的操作,包括创建、读取、写、修改或执行文件。所以,用户需要明白 Linux 中的文件概念,以及如何对文件进行组织和管理。 在 Linux 中,文件就是一些字节序列,这就意味着系统中所有的一切,包括键盘在内的 I/O 设备都是一个文件。 Linux 不支持任何文件扩展名,但文件可以使用任何扩展名,可以任意给文件名加上自己或应用程序定义的扩展名,但这些扩展名对 Linux 系统来说没有任何意义。 例如,可以给一个文档加上 .exe 的扩展名( prog.exe ),给一个可执行程序加上 .doc 扩展名( memo.doc )。 有些应用程序需要用到扩展名,而有些则不需要。 例如, gzip 和 gunzip 命令需要使用扩展名 .gz , C 语言编译程序 gcc 需要使用扩展名 .c ,但不是所有的网络浏览器需要网页要有 .html 扩展名。
  • 61. Linux 文件名 在 Linux 下可以用很长的一个字符 串 ( 一般不超过 255 个 ) 来作文件名。 例如: This_is.a.VERY_long.filename 注: Linux 应用程序和文件区分大小写! Linux 下文件的命名规则 文件名中不能直接使用以下字符: ! @ # $ % ^ & * ( ) [ ] { }‘ ’‘ / \ ; < > 空格 这些字符具有特殊含义,若出现在文件名中,则会产生“多义性”。若一定要使用这些字符,必须在前面加上转义符“ /” ,以取消其特殊含义。
  • 62. 常用的快捷键和组合键 stty –a 可以看到更多的快捷键。 向前移动一个单词 Alt + f 清屏 Ctrl + l 移动到当前行的行尾 Ctrl + e 移动到当前行的行首 Ctrl + a 向左 / 向右移动一个字符 左 / 右箭头键 从光标处删除到本行的行尾 Ctrl + k 从光标处删除到本行的行首 Ctrl + u 向后移动一个单词 Alt + b 向后移动一个字符 Ctrl + b 向前移动一个字符 Ctrl + f
  • 63. 通 配 符 bash 提供许多功能用来帮助用户节省输入命令的时间,其中最常用的一种方法就是使用 通配符 。 通配符就是一些 特殊的字符 ,可以用来在引用 文件名 时简化命令的书写。用户在使用时可以用通配符来指定一种模式,即所谓的 “ 模式串 ” ( pattern ) ,然后 shell 将把那些与这种模式能够 匹配 的文件作为输入文件。 在 bash 中可以使用三种通配符: * 、 ? 、 [] 。 通配符
  • 64. 通配符的含义 匹配任何 单个字符 ? 创建一个字符表列,方括号中的字符用来 匹配 或 不匹配 单个字符 。如: [xyz] 匹配 x 、 y 或 z ,但不能匹配 xx , xy 或者其它任意组合。 无论列表中有多少个字符,它 只匹配一个字符 。 [abcde] 可以简写为 [a-e] 。 另外,用 感叹号 作为列表的第一个字符可以起到 反意作用 ,如: [!xyz] 表示匹配 x 、 y 、 z 以外的任意一个字符。 [] 匹配 任意长度 的字符串(包括零个字符) *
  • 65. 通配符举例 通配符 “ * ” 的常用方法就是查找具有相同扩展名的文件 ls *.tar.gz 通配符 “ * ” 有时可以将几百的命令缩短成一个命令。假设当前目录下有许多文件,现在要删除扩展名为“ .old ” 的文件,如果有几百个这样的文件,逐个删除显然很麻烦,这时可以使用通配符: rm *.old 问号通配符 “ ? ” 必须匹配一个且只能匹配一个字符,通常用来查找比 * 更为精确的匹配。 ls *.???
  • 66. 方括号通配符举例 方括号 通配符使用括号内的字符作为被匹配的字符,且只能匹配其中的 一个字符 。如列出以 a 、 b 、 c 开头,且以 .dat 为扩展名的所有文件: ls [abc]*.dat 可以在方括号中使用 连字符 - 来指定一个范围,如列出以字母开头,数字结尾的所有文件: ls [a-zA-Z]*[0-9]
  • 67. 通配符使用注意事项 文件名最前面的圆点 “ . ” 和路经名中的斜杠“ / ” 必须 显式匹配 。例如 “ * ” 不能匹配 “ .bashrc ” ,而 “ .* ” 才可以匹配“ .bashrc ” 。 连字符 - 仅在方括号内有效,表示字符范围。如果在方括号外面就成为普通字符了。而 * 和 ? 在方括号外面是通配符,若出现在方括号之内,它们也失去通配符的能力,成为普通字符了。 ls * ls mem* ls *x ls *alx* ls .* ls mem? ls may?report ls memo[1-9] ls memo[*1-9]
  • 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. 命令行自动补齐功能 通常用户在 bash 下输入命令时不必把命令输全, shell 就能判断出你所要输入的命令。 该功能的核心思想是: bash 根据用户已输入的信息来查找以这些信息开头的命令,从而试图完成当前命令的输入工作。用来执行这项功能的键是 Tab 键 ,按下一次 Tab 键后, bash 就试图完成整个命令的输入,如果不成功,可以再按一次 Tab 键,这时 bash 将列出所有能够与当前输入字符相匹配的命令列表。 命令行自动补齐功能
  • 70. 命令行自动补齐功能 hist <Tab> 例:查看用户的命令历史 cd /e <Tab> sys <Tab> c <Tab> ne <Tab> - <Tab> 例:要进入目录: /etc/sysconfig/network-scripts/ 这项功能同样适用于文件名的自动补齐
  • 71. 文件类型 Linux 支持五种文件类型,它们是:普通文件、目录、特殊 / 设备文件、命名管道和符号链接。
  • 72. 文件类型 一、普通文件 普通文件用来在辅助存储设备(如磁盘)上存储信息和数据。包括文本、程序源代码(用 C 、 C++ 、 Java 等语言所编写)、图像、可执行程序(如编译器、数据库工具、桌面出版工具、绘图软件等应用程序)、视频、图片、声音、 Postscript 代码等。 Linux 不会区别对待以上这些文件,它把每个文件都当作是一个字节序列而不会对文件内容附加任何的结构或赋予任何信访。只有使用或处理文件的应用程序才会根据文件的内容赋予其相应的含义。
  • 75. 二、目录文件 目录文件 ( 通常称为目录 ) 就是能够存放任何类型文件的容器,包括子目录。在一些系统中,也用文件夹表示目录。利用目录文件构成文件系统的分层树型结构,每个目录文件中至少包括两个文件,“ ..” 表示上一级目录,“ .” 表示该目录本身。 在任何操作系统中,一具目录文件都是由一组目录项组成的,虽然不同操作系统的目录项内容有很大的不同。 目录入口的结构 文件名 inode 号
  • 76. inode 号文件名 inode 号用 4 个字节表示,是磁盘上数组的索引值。这个数组中有个叫做索引节点(通常叫做 inode )的项,它记录了文件的属性,如文件大小(以字节为单位)。 Linux 内核为每个新创建的文件分配一个 inode ,这样 Linux 中每个文件都有一个唯一的 inode 号。
  • 77. 三、特殊文件 特殊文件代表设备,包括键盘、显示器、磁盘、 DVD 、光驱、打印机和磁带。这些设备分为两种类型:字符特殊文件和块特殊文件。 字符特殊文件对应于执行面向字符 I/O 的设备,例如键盘。 块特殊设备对应于以字节块进行 I/O 操作的设备,例如磁盘驱动器。 特殊文件一般放在目录 /dev 下
  • 78. 四、命名管道 命名管道( FIFO )为同一个 LINUX 系统上的进程相互通讯提供了一种机制。
  • 79. 五、符号链接 符号链接文件可以“指向” ( 即引用 ) 一个文件,这个文件可以位于主目录下,也可不在主目录下。符号链接文件一种特殊文件,存放的数据是文件系统中通向某个文件的路径。当调用符号链接文件时,系统自动地访问保存在文件中的路径,可通过命令 ln-s 创建一个符号链接并存放它所指的文件的路径名。
  • 80. 文件系统的组织 文件系统是磁盘上存储文件的方法和数据结构,是操作系统组织、存取和保存信息的重要手段,每种操作系统都有自己的文件系统。 在操作系统中,有三个问题与文件系统结构相关。 从用户的角度看,系统中的文件如何按照用户的想法进行组织的; 文件是如何存放在辅助存储设备上的 ( 通常是硬盘 ) ; 是如何进行文件的创建、删除和处理等操作的。
  • 81. Linux 文件系统是一种层次结构 ( 类似于自上而下的树形结构 ) 。
  • 82. 绝对路径和相对路径 在层次文件系统中,文件或目录都通过路径来表示。路径有三种方式: ( 1 )以根目录为起始点; ( 2 )以当前工作目录为起始点; ( 3 )以用户主目录为起始点。 从根目录开始指定时路径称为绝对路径,可以被所有用户在文件系统结构的任何一个目录下使用。 以当前工作目录或用户主目录开始的路径名称为相对路径。
  • 83. 表示用户 sarwar 的主目录下的 ee446 目录的绝对路径。 /home/sarwar/courses/ee446 表示用户 sarwar 的主目录下的文件 mid1 的绝对路径。 /home/sarwar/courses/ee446/exams/mid1 当用户 sarwar 登录到系统后,首先进入到它的主目录 /home/sarwar 下。在 sarwar 的主目录下, sarwar 可以为文件 mid1 指定相对路径: ./courses/ee446/exams/mid1 或者 courses/ee446/exams/mid1 在目录 ee446 中, sarwar( 或其他用户 ) 可以用相对路径 exams/mid1 表示文件 mid1 。
  • 84. 主目录和当前工作目录 当登录到 Linux 系统后,首先进入到一个特殊的目录中,这个目录称为主 / 登录目录。例如, sarwar 的目录就是用户登录名为 sarwar 的主目录,即现在 shell 命令行使用的用户。 [ root@localhost root ] # echo $HOME /root [ root@localhost root ] # su sarwar [ sarwar@localhost root ] # echo $HOME /home/sarwar
  • 85. 在使用 Bash 或 TC shell 时,可以用字符“~”指定您的主目录。 当前所在的目录称为当前工作目录 ( 也称为当前目录 ) 。当前工作目录用“ .” 表示,当前工作目录的父目录可以用“ ..” 表示。 可以用命令 echo 和 pwd 显示主目录的完整路径名或当前工作目录的绝对路径。
  • 86. 1 、 echo 命令 格式: echo [-ne] [ 字符串 ] 或 echo [--help] [--version] 功能:显示文字。将输入的字符串送往标准输出。输出的字符串间以空白字符隔开并在最后加上换行号终止符。 参数: -n 不输出行尾的换行符,即不在最后自动换行,回车不换行。 -e 解析转义字符。常用的转义字符有:
  • 87. \a 警告声(响铃); \b 删除前一个字符( Backspace ); \c 回车不换行; \f 换页; \n 换行且光标移至行首; \r 回车,光标移至行首,但不换行; \t 水平制表位; \v 垂直制表位; \\ 反斜线( \ ); \nnn nnn (八进制)所代表的 ASCII 字符; 22
  • 88. 普通字符串可以在 echo 后直接输入字符串,但这样当要输出某些字符如“ \” 时,会有问题 ( 这种写法的时候,“ \” 是被当作继行符处理过滤掉的,要输出一个“ \” ,必须打“ \\” ,跟 C 语言 printf 输出的要求相像 ) ,所以一般最好用‘ string’ 或“ string” 的格式,这样即使是“ \” 也可以输出,方便直观。 #echo hello world hello world #echo hello\ world hello world #echo hello\\ world hello\ world
  • 89. #echo ‘hello\\ world’ hello\\ world #echo “hello\\ world” hello\ world #echo -e “hello\nworld” 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. 不加参数时,这个命令在屏幕上打印一行空行。可用 echo 命令获得主目录的绝对路径。 $ echo $HOME /home/sarwar HOME 是一个 shell 变量 ( 占位符 ) , shell 用该变量记录主目录 ( 主目录即为操作当前命令的用户目录 ) 。
  • 91. 2 、 pwd 命令 格式 : pwd [--help][--version] 功能:显示工作目录。执行 pwd 指令可立刻得知目前所在工作目录的绝对路径名称。 参数: --help 在线帮助。 --version 显示版本信息。 echo 命令显示主目录,而 pwd 命令显示当前工作目录。 假定在执行 pwd 命令时用户并没处在主目录中。 $ pwd /home/sarwar/courses 登录到系统后,可立即用 pwd 命令显示主目录的绝对路径名。 $ pwd /home/sarwar
  • 92. 目录操作以及文件系统结构浏览 1 、创建和删除目录 mkdir 命令 格式: mkdir [ 选项 ] 目录名称 功能:创建“目录名称”指定的目录 并同时设置目录的权限。 参数: -m< 目录属性 > 或 --mode< 目录属性 > 建立目录时同时设置目录的权限。 ( 缺省为 drwxr-xr-x) -p 或— parents 若 新 建目录的 父 目录目前尚未建立,则会一并 自动创建这个父 目录。
  • 93. rmdir 命令 格式: rmdir [ 选项 ] 目录名称 功能:删除“目录名称”指定的空目录。所谓空目录,即只含“ .” 和“ ..” 两个特殊目录的目录。如果目录非空,那么在删除该目录前必须先删除该目录下的文件和子目录。 参数: -p 或— parents 删除指定目录 后 ,若该目录的 父 目录 已变成空目录,则将其一并删除。
  • 94. # mkdir courses 在当前目录中创建 courses 目录 # mkdir courses/cs475 在新建的 courses 目录下创建 cs475 目录 # mkdir -p personal/taxes 在当前目录下创建 personal 目录,然后在 personal 目录下创建 taxes 目录 # rmdir letters 删除当前目录下的子目录 letters # rmdir letters ~/temp 删除当前目录下的子目录 letters 和主目录下的子目录 temp # rmdir -p ~/personal/letters/travel 删除了路径名 ~/personal/letters/travel 下的所有目录,设这些目录为空,如果该路径下的任何目录不为空,就会显示错误消息。
  • 95. 2 、移动和复制目录 mv 命令 格式: mv [ 参数列表 ] 文件 1 文件 2 或 mv [ 参数列表 ] 文件列表 目录 功能: 移动或更名现有的文件或目录。 第一个语法:将文件 1 重命名为文件 2 第二个语法:将“文件列表”中的所有文件移动到目录中
  • 96. 参数: -f 或— forc e 若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。 -i 或 --interactive 覆 盖前 给出提示让 用户 选择是否覆 盖。 -u 或 --update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件。
  • 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. 3 、浏览文件系统结构并列出目录 cd 命令 格式 : cd [ 目的目录 ] 功能:切换目录 , 可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。 每次执行 cd 命令后,系统就会对 shell 变量 PWD 赋值。命令 pwd 使用变量 PWD 的值来显示当前工作目录的绝对路径名。进入一个目录后,就可以用 ls 命令查看该目录的内容 ( 其中的文件和目录 ) 。 $cd / 返回到根目录 $ cd .. 返回到上一层目录 cd 命令不带参数执行时,就会进入主目录
  • 99. ls 命令 格式: ls [ 选项 ] [ 文件名 / 目录名 ...] 功能: 列出 指定 目录内容,包括文件和子目录的名称。 参数: -F 在每个文件名后面添加特定后缀字符,表明该文件类型。在目录后显示“ /” ,在二进制可执行文件后显示“ *” ,在符号链接后显示“ @” ;名字后面没有任何后缀,则它是一个普通文件,既不是目录,也不是可执行的程序;文件名称是以“ .” 开头的,则为隐藏文件。 -a 显示所有的文件名称,包括隐藏文件、 . 和 .. 等。
  • 100. -i 或 --inode 显示文件和目录的 索引节点 inode 编号。 -l 显示一个文件长列表 ( 除了隐藏文件的所有类型 ) ,包含访问权限、硬链接数目、所有者、组、文件大小 ( 字节 ) 和修改时间。 -d 显示某个目录的长列表 ( 但不包括其内容 ) ;通常与 -l 选项一起用作 -ld 。 -r 逆序显示文件。 文件名 / 目录名 若为文件名,则显示指定文件的目录信息;若为目录名,则显示指定目录中的内容;若缺省,则显示当前目录中的内容。
  • 101. $ cd 用 cd 命令 ( 不含参数 ) 进入主目录 $ ls -ld ~/temp drwx------ 2 sarwar faculty 512 Oct 6 12:45 /home/sarwar/temp 显示 ~/temp 目录的长列表 第一栏第一字符 文件的类型 第一栏其余部分 文件权限标志 第二栏数字 文件的链接数 第三栏 文件的拥有者 第四栏 文件所属用户组的组名 第五栏 文件的长度,字节数 第六、七、八栏 文件最后一次修改的日期和时间 第九栏 文件名 $ cd ~/courses/cs475 # 进入主目录下的 courses/cs475 目录
  • 102. $ pwd /home/sarwar/courses/cs475 显示当前目录的绝对路径名 $ cd .. 进入主目录下的 courses 目录 $ pwd /home/sarwar/courses 显示当前目录的绝对路径名 $ cd 用 cd 命令 ( 不含参数 ) 进入主目录 $ ls bin books courses linuxtools mail personal temp 显示当前目录 ( 此时它就是主目录 ) 中的文件名和目录名
  • 103. $ ls -a ~ 显示主目录中所有文件和目录的名称。包括隐藏文件,它们是以点开头的文件。 $ 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. $ ls -i 12329 courses 22876 mail 12487 personal 显示目录 courses 、 mail 和 personal 的 inode 号分别是 12329 、 22876 和 12487 $ ls –F ~ bin/ courses/ demo@ a.out* personal/ 显示目录 bin 、 courses 和 personal ,符号链接文件 demo ,可执行文件 a.out
  • 105. 文件处理—— 确定文件属性 $ ls -l ~ /sample lrwxrwxrwx 1 sarwar faculty 4 Apr 28 13:12 dir1 -> /bin
  • 106. 文件处理—— 确定文件内容的类型 因为 Linux 不支持普通文件的类型和扩展名类型,所以不能够仅根据文件名就确定文件内容。可以使用 file 命令确定文件的类型。这个命令通常用来确定一个文件是文本文件还是二进制文件。这一点很重要,文本文件的内容可以在屏幕上显示,而要显示二进制文件的内容可能会导致终端崩溃,因为终端可能会把某些二进制值解析成控制代码。
  • 107. file 命令 格式: file [ 选项 ] [ 文件或目录 ...] 功能:辨识文件类型,即文件分类 。 参数: -f< 名称文件 >   从 名称文件 中读取 一个或多个 要检测的 文件,让 file 依序辨识这些文件,格式为每列一个文件名称。
  • 108. $ file banner banner: ELF  32-bit LSB  executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped 显示文件 banner 是一个基于 Intel CPU 的计算机上的可执行文件。   其中, ELF 是一种为 Linux 系统所采用的通用文件格式,支持动态连接 (excutive linked file) 。 LSB 是 Linux Standards Base(Linux 国际标准 ) , LSB 标准定义了二进制环境,符合 LSB 的应用程序可以在其中运行。 $ 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. $ file /* /bin: directory /boot: directory /dev: directory /etc: directory /home: directory /lib: directory /lost+found: directory /mnt: directory /opt: directory /proc: directory /root: directory /sbin: directory /tmp: sticky directory /usr: directory /var: directory 显示根目录下所有文件的类型
  • 110. 查看完整的文件   如果您有文件的读权限,就可以用 cat 命令在屏幕上显示一个或多个文件的所有内容。 cat 命令 格式: cat[ 选项 ] [ 文件列表 ] 功能:在标准输出 ( 默认为屏幕 ) 上连接、显示“文件列表”中的文件。 参数: -E 在每一行的末尾显示符号 $ -n 为显示行添加行号 因为该命令显示文件内容时不是每次一屏或一页,所以,如果文件的内容多于一页时只能看到最后一页。
  • 111. 当不带参数执行 cat 命令时,它每次读取一行标准输入并以标准输出的形式发送。默认情况下,命令的标准输入是键盘,标准输出是显示屏幕。所以,每次执行 cat 命令时,它就会从键盘获取输入,并在显示器上显示输出,每次一行。当用户在新行按下 <Ctrl+D>( 或 Ctrl+C) 时,即 Linux 文件结束标记,命令就会终止。 有时您想要所显示的文件内容带有行号。可以用 cat -n 还显示其行号。例如 cat -n lab1.C 。 可以用 tac 命令 (cat 的逆序 ) 来逆序显示一个文件。
  • 112. 每次查看一页文件 1 、 more 命令 格式: more [ 选项 ] [ 文件列表 ] 功能:在标准输出上连接、分页显示文件列表中的文件内容,每次一页 ( 默认情况为屏幕上显示内容 ) 。 参数: +/str 指定要搜寻的字符串 str ,从包含 str 的第一行的前两行开始显示 -nN 每屏 / 页显示 nN 行 +N 从第 N 行开始显示文件内容 浏览文件内容时 用空格键进行下翻页 按回车则进行向下行移动 按“ q” 则退出
  • 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. 2 、 less 命令 格式: less [ 选项 ] [ 文件列表 ] 功能:分页显示文件列表中的文件内容 参数: -N 显示行号 -p 模式 搜索文件中第一个出现“模式”的位置 浏览文件内容时,用键 <PgUp><PgDn> 进行上下翻页,用方向键进行上下行移动,按“ q” 则退出。 less 在显示一个文件的时候并不完整读取整个文件,这样对大文件来说,与 more 命令或 vi 编辑器相比,它的效率更高。
  • 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. 复制文件 cp 命令 格式: cp [ 选项 ] 文件 1  文件 2 功能:复制文件 1 ,并将副本命名为文件 2 。如果文件 2 是一个目录,就将文件 1 的副本放在该目录下。   其中,文件 1 为源文件,文件 2 为目标文件
  • 117. 参数: -a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,将档案状态、权限等资料都照原状予以复制其作用等于 dpR 选项的组合。 -d 拷贝时保留链接,即当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 -i 如果目标文件存在,在覆盖前提示。 - p 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 -r 递归复制文件和子目录 。 -R 除了管道被复制而不是读取以外,其他和 -r 选项一样。
  • 118. $ ls memo sample temp 显示复制前当前目录的状态 $ cp temp temp.bak 生成 temp 的副本,并将副本命名为 temp.bak $ ls memo sample temp temp.bak 显示复制后当前目录的状态 $ ls -l -rwxr-----   1   sarwar   faculty   371   Nov   17   21:57   memo   --wxr-----   1   sarwar   faculty   164   Nov   17   22:22   sample -r-xr-----   1   sarwar   faculty   792   Nov   17   10:57   temp -r-xr-----   1   sarwar   faculty   792   Nov   17   23:01   temp.bak 以长列表形式显示复制后当前目录的状态,以查看文件权限
  • 119. cp 命令必须有源文件 ( 将要被复制的文件 ) 的读权限和包含源文件和目标文件的目录的执行权限。 如果目标文件不存在,必须它所在的目录的写权限。 如果目标文件存在,则不需要具有包含该文件的目录的写权限,但必须具有该文件的写权限。 如果目标文件存在,而且具有该文件的写权限,那么它会直接被覆盖而不会得到任何系统提示。要在覆盖一个已存在文件之前获得提示,需要使用 -i 选项。 如果没有目标文件的写权限,系统就会提示不能覆盖此文件。 如果没有源文件的读权限,屏幕上会出现相应的错误信息。
  • 120. $ cp letter letter.bak cp: cannot stat ‘letter’:No such file or directory 产生错误信息,因为当前目录中不存在 letter 文件。 $ cp memo temp.bak cp: cannot open ‘memo’ for reading: Permission denied 产生错误信息,因为文件 temp.bak 虽然存在,但用户没有该文件的写权限。 $ cp /etc/shadow ~/etc/shadow cp: cannot open '/etc/shadow' for reading: Permission denied 产生了错误,因为用户没有系统文件 /etc/shadow 的读权限。
  • 121. $ cp -i lab* ~/courses/ee446/backups 复制当前目录中的所有以字符串 lab 开始的文件,并将这些副本放置在目录 ~/course/ee446/backups 下。使用 -i 选项时,如果备份目录中已存在源文件,则该命令会提示您覆盖。 $ cp -r ~/courses ~/backups 将 ~/course 目录递归复制到 ~/backups 目录中。将一个目录完整的复制到另一目录,就需要使用带有 -r 选项的 cp 命令。该选项将源目录下的文件和子目录递归复制到目标目录。 -r 是一个很有用的选项,您可以用它对重要的目录作定期备份。
  • 122. 文件的移动和重命名 mv 命令 格式: mv [ 参数列表 ] 文件 1 文件 2 或 mv [ 参数列表 ] 文件列表 目录 功能: 移动或更名现有的文件或目录。 第一个语法:将文件 1 重命名为文件 2 第二个语法:将“文件列表”中的所有文件移动到目录中
  • 123. 参数: -f 或— forc e 若目标文件或目录与现有的文件或目录重复,则直接 覆 盖现有的文件或目录 ,不给予提示 。 -i 或— interactive 覆 盖前 给出提示让 用户 选择是否覆 盖。 -u 或— update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不 覆 盖目标文件 ,同时,源文件被删除 。
  • 124. mv 命令必须具有包含已存在文件的目录的写访问权限和执行访问权限,但可以没有该文件本身的读、写、或执行权限。 mv 命令必须具有包含目标文件目录的写访问权限和执行访问权限,目标文件路径名中每个目录的执行权限,已存在文件的写权限。 如果目标文件已存在,而且具有它的写权限,默认情况下是不会给出提示直接将它覆盖。但是,如果用 -i 选项,在覆盖目标文件之前,系统会给出提示。
  • 125. $ mv temp temp.moved 将文件 temp 移动到 temp.moved 。这样就是把文件 temp 重命名为 temp.moved 。如果 temp 文件不存在,或者如果您不具有该文件所在目录的写权限和执行权限,就会出现一个错误消息。如果文件 temp.moved 已经存在,但是没有它的写权限, mv 命令也会在您移动该文件时给出提示信息。 $ mv temp ~backups/temp.old 将文件 temp 移动到 ~/backup 目录中,并重命名为 temp.old 。 $ mv -f temp temp.moved 进行强制移动,忽略目标 temp.moved 的权限。 $ mv dir1/* dir2 目录 dir1 中的所有文件和目录 ( 不包括隐藏文件 ) 移动到目录 dir2 中。执行命令后,目录 dir1 仍然存在,但目录中只包含隐藏文件;用命令 ls -a 可以确认这种情况。
  • 126. 移除 / 删除文件 rm 命令 格式: rm [ 选项 ] 文件列表 功能:从文件结构 ( 及磁盘 ) 删除“文件列表”中的文件 参数: -f 强制删除,不考虑“文件列表”的权限,在删除文件时不显示提示 -i 在用户删除“文件列表”的文件之前作出提示 -r 递归删除目录下的所有文件。该操作会删除目录下的所有文件,所以在使用该选项前,应予以确认。
  • 127. $ rm backups/temp.old 从当前目录下子目录 backups 中删除 temp.old 文件 $ rm -f phones grades ~/letters/letter.john 删除文件 phones 、 grades 、 ~/letters/letter.john ,不考虑是否有访问权限 $ rm ~/dir1/* 删除 ~/dir1 目录下的所有文件,但 dir1 目录本身不会被删除 $ rm[a-kA-Z]*.prn 删除当前目录中所有具有 .prn 扩展名,并以小写字母 a 到 k ,或任意大写字母开头的文件 (k 与 A 之间无空格 ) $ rm -rf ~/backups # 递归删除 ~/backups 目录中的所有文件和子目录。 执行该命令后, ~/backups 目录中所有的文件和目录将会丢失。 $ rm -ir ~/personal 在递归删除一个目录时,通常将 -i 和 -r 选项组合使用
  • 128. 确定文件大小 确定 Linux 中文件的大小常使用的两个命令是 ls -l 和 wc 。以前曾经提到过, ls-l 命令的输出中第 5 个字段就是文件的大小 ( 字节 ) 。 $ ls -l lab2 -r-xr--r–   1   sarwar   faculty   163   April   22   17:15   lab2 文件 lab2 的大小是 163 字节 ls -l 是一个通用命令,它可以获得一个或多个文件的大多数属性,包括它们的大小 ( 以字节为单位 ) ;而 wc 是一个专用命令,只显示文件大小。
  • 129. wc 命令 格式: wc [ 选项 ] [ 文件列表 ] 功能:统计文件列表中的文本文件的大小,可以显示行数、单词数和字节数 参数: -c 只输出字节数 ( 包括每行的结束符 ) -w 只输出单词数 -l 只输出行数 在 wc 命令的输出中,每行是一个文件,一行有 4 个字段:行数、单词数、字节数和文件名。该命令不适用于目录。 $ wc sample 4 44 227 sample
  • 130. 输入 / 输出重定向和管道 标准输入 stdin Linux 从标准输入中读取信息 shell 一般将标准输入设置成键盘 ① 标准输入与标准输出
  • 131. 标准输出 stdout Linux 把输出信息送到标准输出中 shell 一般将标准输出设置成显示器 例:命令 “ cat f1 ” 的功能是将 f1 的内容输出到标准输出中,则命令执行结果就是把 f1 内容在显示器上显示 错误输出 stderr Linux 把命令执行时产生的错误信息送往错误输出,而不是标准输出,但一般两者是一致的,即显示器。
  • 132. ② 输入重定向 输入重定向用于改变一个命令输入源。 < 符号用于把当前命令的输入,重定向为指定的文件。 例 1 :统计文本文件 test 的字符数等 $ wc test 或 $ wc<test
  • 133. << 符号进行重定向,产生的文档称为 here 文档,它将对 分隔符之间的正文重定向输入给命令 。 例 2 :使用重定向符“ <<” 对输入的内容进行字数统计 (1) 在 shell 提示符下输入命令,其中 x 为分隔符 (x 为任意“ a-z” 内的字符 ) $ wc –w << x (2) 屏幕出现“ >” 符,在“ >” 符后按要求输入文本 >Jack claimed to be making both ends meet >They declined to accept her proposal (3) 在“ >” 符后,输入“ x”( 开始输入的分隔符 ) 结束输入 >x (4) 屏幕显示统计结果 14 $
  • 135. ③ 输出重定向 (1) 输出重定向是把一个命令的输出,重定向到一个文件里,而不是输出到标准输出(显示在屏幕上)。 输出重定向符为“ > ” 。 $ ls >directory.out 把 ls 命令的输出保存为一个名为 directory.out 文件中 (2) 追加:把一条命令的输出结果加在已有文件名的后面。可使用追加重定向符“ >> ” 。 $ ls f1>>directory.out
  • 136. (3) 错误输出:把正常输出结果输出到屏幕上,而把错误信息输出到另一个文件中,使用输出定向符 2> (或“ 2>>” ) $ ls *.doc 2>err.out (4) 将标准输出和错误输出同时送到同一文件中,使用输出重定向符“ &> ” 。 $ ls *.doc &>both.out (5) 标准输入和标准输出可以同时改变。 $ wc –l <f1 >f2 # 在执行命令 wc –l 时。标准输入变成 f1 ,标准输出变成 f2 。 $ cat <f1 >test
  • 137. ④ 管道 管道( pipe )是一个通信通道,它 把一个进程与另一个进程连接起来 ,管道用于处理 进程之间的信息传送 。 Linux 的 管道通过文件实现 。 管道实际上是 将一个程序的标准输出写到一个文件中去,再将这个文件的内容作为另一条命令的标准输入 。它的作用就是通过临时文件将多个命令结合起来。
  • 138. “ | ” 是 管道符 ,若干个简单命令用“ |” 就构成了一条 命令流水线 ,或称 管道命令 。形式如下: command1|command2|……|commandn $ cat file1 file2|wc –l 相当于执行以下三条命令:     cat file1 file2 >f3     wc f3     rm f3 f3 是临时文件
  • 139. $ cat sample.txt|grep “High”|wc –l 把 cat 命令显示的 sample.txt 文件的内容输出送给 grep 命令。 grep 命令在输入里查找单词 High ,将输入文本中包含单词 High 的行作为输出结果被送给 wc 命令。带 -l 选项的 wc 命令将统计输入里的行数。 假设 sample.txt 的内容如下: Things to do today: Low:Go shopping High:Go to movie High:Writing Medium:Pick up clothes from dry clearner 则命令行执行结果为: 2 指出包含单词 High 的行数有两行
  • 140. 文件的追加 格式: cat [ 文件列表 ] >> 目标文件 功能:将“文件列表”中所有文件的内容追加到目标文件的末尾;如果没有“文件列表”,就使用标准输入。 $ cat sample >> temp 在文件 temp 的末尾加入文件 sample 的内容。 $ cat memo1 memo2 memo3>>memos.record 将 memo1 、 memo2 和 memo3 的内容追加到文件 memos.record 的末尾。 如果没有文件列表参数,该命令用于在文件末尾追加键盘输入内容。 $ cat >> test.letter 从键盘获取输入,并将其追加到名为 test.letter 的文件中。 当在新的一行按下 <Ctrl+D> 时,该命令就会终止。
  • 141. 文件的合并 格式: cat [ 文件列表 ] > 目标文件 功能:合并“文件列表”中的文件到“目标文件”中。 如果没有指定文件列表,就将键盘输入保存在目标文件中,可以用 cat 命令创建文本文件。使用这种方式时,当您在新行按下 <Ctrl+D> 时,该命令就会终止。如果目标文件已经存在,它将被覆盖。如果没有该文件的写权限,则会显示错误信息。 $ cat data1 data2 data3>data123 将文件 data1 、 data2 和 data3 中的内容保存在文件 data123 中 等同于 $ cat data ? >data123 等同于顺序执行以下三条命令 $ cat data1>data123 $ cat data2>>data123 $ cat data3>>data123
  • 142. 文件的比较 diff 命令 格式: diff [ 文件 1] [ 文件 2] 功能:逐行比较文件 1 和文件 2 ,以某种命令的形式显示它们之间的差异。这个命令可以将文件 1 转化为文件 2 或将文件 2 转化为文件 1 ,如果使用“ -” 代替文件 1 或文件 2 ,则从标准输入读取该文件。
  • 143. 在下面的例子中,第一个 diff 命令将文件 1 和它自身进行比较,然后将文件 1 和文件 2 进行比较。第一个 diff 命令不会产生任何输出,因为所比较的文件是相同的。第二个 diff 命令对文件 1 和文件 2 进行比较,比较的结果包含一个指令 1c1 ,该指令之后是第一个文件第一行和第二个文件第一行。这个指令告诉您将第一个文件的第一行改为第二个文件的第一行,使它们成为相同文件。 $ cat filel Hello, World! $ cat file2 Greetings! $ diff filel filel $ diff filel file2 1c1 < Hello, World! -- > Greetings! $
  • 144. 该命令的参数文件 1 和文件 2 也可以是目录,如果文件 1 是一个目录, diff 命令就会在该目录中搜索名为文件 2 的文件,并将它与文件 2( 第二个参数 ) 进行比较。如果文件 2 是一个目录, diff 命令就会在该目录中搜索名为文件 1 的文件,并将它与参数中的文件 1( 第一个参数 ) 进行比较。如果两个参数都是目录,该命令就会比较两个目录中所有的同名文件。 如果被比较的两个文件相同, diff 命令不会输出任何结果。当不带任何选项执行时, diff 命令就会生成一系列说明:当文件不同时,如何将文件 1 转化为文件 2 。它们是 a( 添加 ) 、 c( 改动 ) 和 d( 删除 ) 。
  • 145. $ cat Fall_OH office Hours for Fall 2001 Monday 9:00 – 10:00 A.M 3:00 – 4:00 P.M. Tuesday 10:00 – 11:00 A.M Wednesday 9:00 – 10:00 A.M 3:00 – 4:00 P.M. Thurday 11:00 – 12:00 A.M 2:00 – 3:00 P.M. 4:00 – 4:30 P.M. $ 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. $ 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. 多数系统都有一个命令 diff3 ,它可用于三向比较,即比较三个文件。下例对文件 1 、文件 2 和文件 3 进行比较。输出说明了它们之间的差异,显示了造成差异的行。 $cat file3 Hello,World! $ diff3 file1 file2 file3 ==== 1:1c 3:1c Hello,World! 2:1c Greetings ! $
  • 148. 文件压缩 gzip 命令 压缩后的文件保留了源文件的访问 / 修改时间、所有权以及访问特权。源文件从文件结构中删除。 格式: gzip [ 选项 ] [ 文件列表 ] 功能:将“文件列表”中的文件进行压缩,并保存在“文件名 . gz” 的文件中,这里“文件名”是原始文件的名称;如果命令行中没有指定文件名或使用了“ -” , gzip 就会从标准输入读取输入数据。
  • 149. 参数: -N 根据 N 值控制压缩速度 ( 及压缩比 ) , N 为 1~9 ,数字越小速度越快,其压缩比越小,压缩率越低。 -c 压缩结果输出到标准输出设备上;源文件保持不变 -d 解压缩一个压缩文件 -f 强制压缩文件,即使指定文件有多个链接,或相应的压缩文件 .gz 已经存在,或压缩数据来自标准输入。新产生的压缩文件覆盖相同文件名的文件时,不给提示。 -l 对于压缩文件使用的参数,显示包括压缩文件的长度 (compressed size) 、压缩前文件的长度 (uncompressed size) 、压缩比 (ratio) 以及压缩前的文件名 (uncompressed name) -r 递归压缩被指定为参数的目录下的文件 -t 检查压缩文件的完整性 -v 进入 verbose 模式,即在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 )
  • 150. gunzip 命令 gunzip 命令用于执行 gzip 命令的逆操作,执行解压缩,并将压缩后的文件还原到原始文件。 gzip -d 命令也可完成解压缩。 -N , -c , -f , -l 和 -r 选项在 gunzip 命令中的作用与它们在 gzip 命令中的作用是相同的。
  • 151. $ gzip bash.man 用于压缩文件 bash.man $ gzip -l bash.man.gz tcsh.man.gz 用于显示文件 bash.man 和 tcsh.man 的有关压缩和解压缩信息 Compressed uncompr. Ratio uncompressed_name 72501 284046 74.4% bash.man 73790 261316 71.7% tcsh.man 146291 545380 73.1% (totals) $ gzip bash.man.gz gzip: bash.man.gz already has .gz suffix - unchanged 用于显示 gzip 不能压缩一个已经压缩过的带有 .gz 扩展名的文件 , 如果一个压缩后的文件没有 .gz 扩展名, gzip 会试图再次压缩它。 $ gunzip bash.man.gz 用于对压缩文件 bash.man.gz 进行解压
  • 152. $ gzip -v bash.man tcsh.man bash.man: 74.4% replaced with bash.man.gz tcsh.man: 71.7% replaced with tcsh.man.gz 在压缩过程中显示每个文件的压缩信息 ( 名字和压缩率 ) $ gzip -9 /home/user/* 要求用最高压缩比压缩 /home/user 目录下的所有文件。 $ gzip /home/* $ gunzip /home/* 要求对 /home 目录下的所有文件进行压缩,然后再解压。
  • 153. 搜索命令和文件 find 命令 可以用 find 命令搜索目录列表中匹配表达式标准的文件。该命令递归搜索目录列表中的目录;也就是说,它将会搜索目录列表下任意层的所有子目录。 格式: find [ 目录列表 ] [ 表达式 ] 功能: 搜索“目录列表”中的目录,找出满足“表达式” ( 第二个参数 ) 中所描述标准的文件。表达式中包含一个或多个匹配标准或说明组成 输出:除非在表达式中明确地提出了要求,否则什么也不输出。
  • 154. 参数: -exec CMD 在退出状态时,如果命令‘ CMD’ 返回 0( 成功执行命令真值 ) ,则搜索文件满足标准。标志 {} 用于指定命令执行时文件名出现的地方,‘ CMD’ 的末尾必须以符号“ \;” 结束 -inum N 查找 inode 号为 N 的文件 -links N 搜索有 N 个链接的文件 -name pattern 搜索文件名匹配 pattern 的文件 -newer 文件 搜索在修改时间在“文件”之后的文件 ( 即比“文件”新的文件 ) -ok CMD 像 -exec 一样,但首先提示用户进行确认 -perm octal 搜索文件权限为 octal( 八进制数字,如 777) 的文件
  • 155. -print 在屏幕上显示用符合标准的文件路径和文件名 -size ±N[c ] 搜索大小为 N 个单元块的文件。 N 后面的“ c” 用来测试文件的字节数,默认为 512 个字节;+ N 意味着文件大于 N 个块, -N 意味着文件小于 N 个块 -user name 搜索所有权为 name 的文件 \(expr\) 如果 expr 为真,那么表达式为真;表达式可以用“ OR” 或“ AND” 组合 ! expr 如果 expr 为假,那么表达式为真 注意:转义符“ \(” 表示“ (” ,“ \)” 表示“ )” 可用 -a 或一个空格表示两个条件的逻辑与 (AND) ,用 -o 表示两个条件的逻辑或 (OR) 。
  • 156. $ find ~ -name Pakistan.gif -print /home/faculty/sarwar/myweb/ Pakistan.html 在主目录中搜索文件 Pakistan.gif ,并显示此文件所在目录的路径名。如果要搜索的文件在多个目录中,那么就会显示所有目录的路径名。 $ find /usr/include -name socket.h -print /usr/include/sys/socket.h 在 /usr/include 目录中递归搜索名为 socket.h 的文件,并打印该文件的绝对路径名。 $ find /usr . -inum 258072 -print /home/faculty/sarwar/myweb/LinuxTcpIp 递归搜索目录 /usr 和 . 目录 ( 当前工作目录 ) ,并找出所有 inode 号为 258072 的文件,并打印这些文件的绝对路径名。
  • 157. $ find / -name &quot;CON.FILE&quot; –print 从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 $ find . \( -name core -o -name '*.ps' -o -name'*.o' \ ) -print -exec rm { }  \; [output of the command] 在当前工作目录中搜索名为 core 的文件或扩展名为 .ps 或 .o 的文件,并显示它们的绝对路径名,然后将它们从文件结构中删除。可以用圆括号将复杂的条件括起来。在 \( 和 -o 前后务必要用空格。该命令不会提示您是否有删除的权限;要获得提示,用 -ok 代替 -exec 。   [ 注意 ] : - exec 命令名称 {} 对符合条件的文件执行所给的 Linux 命令,而不询问用户是否需要执行该命令。 {} 表示命令的参数即为所找到的文件;命令的末尾必须以“ \ ;”结束。 -exec 或者 -ok 的用法都要在它所执行的 CMD 后面接 &quot; {} \;&quot;
  • 158. whereis 命令 格式: whereis [ 选项 ] [ 文件列表 ] 功能:查找“文件列表”中的文件。给出可执行 ( 二进制 ) 文件、源代码和联机帮助手册的位置 输出:“文件列表”中命令的可执行文件、源代码和联机帮助手册的绝对路径名。 参数: -b 只搜索可执行文件 -m 只搜索联机帮助手册 -s 只搜索源代码 $ whereis ftp ftp:/usr/bin/ftp/ usr/bin/ftp.expect /usr/share/man/man1/ftp.1.gz
  • 159. which 命令   如果一个系统上的某个命令有多个版本,当键入命令时, which 实用程序可以确定所使用的 shell 所执行命令的版本的位置 ( 绝对路径名 ) 。当某个命令不能按照它的说明正常工作时, which 实用程序可用于确定执行的命令版本的绝对路径名。因为 shell 搜索路径的方式在 PATH 变量中设置,或者本地命令由于系统库的更新,使它不能正常工作。 which 命令采用一个命令列表 ( 实际是这些命令的一个文件列表 ) 作为参数,返回这些命令的绝对路径和文件名到标准输出。 格式 : which [ 命令 ...] 功能 :在环境变量 $PATH 设置的目录里查找符合条件的命令。
  • 160. 文件系统备份 tar 命令 格式: tar <options1> [options2] <fname1> <fname2>… 功能:对由 <filename2> ...指定的文件进行打包或恢复还原到由 <filename1> 指定的打包文件或备份设备上。 说明: tar 命令后使用的可选项可以省略“ -” ,但要注意先后次序。 <fname1> 为指定的打包备份文件或备份设备; <fname2>… 指定需要加入打包文件的文件或指定欲从打包文件中恢复还原的文件。必选选项决定了 tar 究竟要做什么。下面是关于必选选项和可选选项的意义说明。
  • 161. 必选选项的说明: -c 创建一个新的打包备份文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。 -r 向打包备份文件的末尾追加一个文件。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。 -t 列出打包备份文件中所含的文件清单,查看已经备份了哪些文件。 -u 仅追加比打包备份文件中的文件更新的文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。 -x 从打包备份文件中恢复还原文件。
  • 162. 可选选项的说明: -f FILE 使用文件 FILE 或设备文件 FILE 来打包归档文件。如果 FILE 是“ -” ,则是指从标准输入读 ( 对解压文件 ) ,或写到标准输出 ( 对建立备份文件 ) 。 -M 生成 / 列出 / 恢复还原多卷的打包备份文件,以便在几个磁盘中存放。 -v 打包和恢复还原过程中,输出打包文件和恢复还原的文件信息。如无此选项, tar 不报告文件信息。 -w 进行每一步操作前要确认。 -z 用 gzip 来压缩 / 解压缩备份文件。加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
  • 163. 例如:打包并压缩备份 /etc 目录下的所有文件到备份文件 alldoc.tar.gz 中,再解压还原。 其实 tar 命令包括的 z 选项,它指示 tar 用 gzip 压缩算法来自动压缩或解压缩文件。 $ tar cvfz alletc.tar.gz /etc $ tar xvfz alletc.tar.gz 完成相同的功能,也可以用: $ tar cvf - /etc | gzip -c > alletc.tar.gz 将 .tar 文件发送给“ -” ,它代表 tar 命令的标准输出。通过管道把控制传给 gzip , gzip 对输入的 .tar 文件进行压缩,其中 -c 告诉 gzip 将它的输出传送给标准输出,而标准输出重定向到文件 alletc.tar.gz 中,即最终结果保存在 alletc.tar.gz 文件中。 $ gunzip -c alletc.tar.gz | tar xvf - 这里 gunzip 解压缩 alletc.tar.gz 的文件内容,然后将得到的 .tar 文件传送到标准输出。接着将标准输出通过管道传给 tar , tar 从“ -” 读入要处理的文件,“ -” 代表 tar 的标准输入。
  • 164. 文件管理 Linux 系统将可设置权限的用户分成三类,分别是:文件主 (User) 、同组用户 (Group) 和其他用户 (Other) 。 Linux 中普通文件的权限依赖于目录文件的权限 命令“ ls –l” ,可查看文件或目录文件的权限 命令列出的前十位中包含了文件类型和文件权限 -rwxr-x--- Linux 提供的常见文件类型有: - 普通文件 d 目录文件 b 块设备文件 c 字符设备文件 l 链接文件。
  • 165. 文件的访问权限 在显示的结果中,第一个字段的第 2 ~ 10 个字符是用来表示权限。这 9 个字符每 3 个一组,组成 3 套 权限控制,第一套控制文件 所有者 的访问权限,第二套控制所有者所在 用户组的其他成员 的访问权限,第三套是 控制系统内其他用户 的访问权限。 所有者的权限 同组用户权限 其他用户权限 文件类型
  • 166. 文件的访问权限 每套控制中三个字符按顺序排列,所代表的含义如下: eXecute ( 执行 ) :对文件而言,具有执行文件的权限。 对目录而言,具有进入目录的权限。用户必须具有“ x”( 检索 ) 权,才能对该目录实施有效操作,如 cd 、 ls 、 cp 、 rm 等操作。 x Read ( 读取 ) :对文件而言,具有阅读文件内容的权限。 对目录而言,具有浏览目录内容的权限。但对该目录还必须有“ x” 权。 r Write ( 写入 ) :对文件而言,具有修改文件内容的权限。 对目录而言,具有建立、移动、删除目录内文件或目录的权限。但对该目录还必须有“ x” 权。 w 表示不具有该权限,或取消该权限 -
  • 167. 访问权限举例 例: -rwx------ 只有文件所有者具有读、写和执行权限 普通文件 用户有读、写和执行权限 用户组其它成员没有读、写和执行权限 系统内其它用户也没有读、写和执行权限
  • 168. 访问权限举例 -rw-r--r-- 普通文件,用户有读、写权限, 组用户和其他用户只有读权限。 drwx--x--x 目录,用户有读、写和执行权限, 组用户和其他用户只有执行权限。 drwx------ 目录,用户有读、写和执行权限, 组用户和其他用户不能访问。 -rwxr-xr-x 普通文件,用户有读、写和执行权限, 组用户和其他用户有读和执行权限。 每个用户都拥有自己的专属目录(主目录),通常放置在 /home 目录下,这些专属目录的默认权限通常为 rwx------
  • 169. 改变文件权限 chmod 命令 格式一: chmod {a,u,g,o} {+,-,=} {r,w,x} <filename> 格式二: chmod nnn <filename> 功能:是用字符 r 、 w 、 x 形式对由 filename 指定的普通文件或目录文件,向各用户设置访问与操作权限 {a , u , g , o} :设置权限的用户对象, a - 所有用户; u - 文件主; g - 同组用户; o - 其他用户 {+ , - , =} :操作符,“ +” 增加权限;“ -” 删除权限;“ =” 赋予权限,使 filename 指定的文件或目录只具有指定的权限 {r , w , x} :读、写、执行权限
  • 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. 例 1 :将文件 junk 的读取权限赋予所有用户 以超级用户或文件主身份登录系统, # chmod a+r junk 例 2 :对文件 junk 删除所有者外所有用户的可读权限 # chmod og-r junk 现在通过例子来说明一下针对一个目录而言,读、写和执行的特权含义。 $ 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. $ 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. 文件链接 Linux 系统提供了 文件链接 的方法,以实现 文件共享 。即不同的用户可同时访问一个文件,且各用户可用不同的文件名访问同一文件 Linux 系统提供了 2 种文件链接方式 — 硬链接 — 符号链接 ,即软链接
  • 174. 硬链接    Linux 系统中每个文件都用一个被称为 inode 的节点( i 结点 )来唯一标识,所以当不同的文件均被链接到同一个 inode 节点时,便实现了文件共享。   硬链接 将一文件直接链接到被链接文件的 inode 上,建立硬链接后,链接文件和被链接文件指向的是同一个 inode 结点,所以链接文件和被链接文件是同一文件。 ln 命令 格式 1 : ln –i <existing-file> <new-file> 格式 2 : ln <existing-file> <new-file> 其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。 命令执行后,便建立了 new-file 到 existing-file 的硬链接。即用户无论是用文件名 existing-file 还是用文件名 new-file ,访问的结果是同一个文件。
  • 175. 例如,要求在当前目录下建立文件 filehard 到文件 file 的链接。 $ ln -i file filehard 当为一个文件建立硬链接时,文件的链接计数会加一。当使用 rm 命令删除多于一个链接(或被链接)的文件时,链接计数减一。如果新的链接计数不为零,实际上删除只不过是文件的一个链接 ( 目录项 ) 。文件的内容和其他链接 ( 目录项 ) 并没有被删除。如果相关的链接计数减到零,系统才会删除文件的目录项,释放文件的 inode 节点以供重用,收回分配给文件的磁盘空间用于保存将来创建的其他文件和目录。当使用 rm 命令删除只有一个链接的文件时,才真正删除文件自身。 注意:用户只能在同一文件系统中对文件进行硬链接。并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。
  • 176. 符号链接 符号链接允许用户为文件另取一个名字,但却不将其与链接文件的 inode 相链接,即链接文件与被链接文件的 inode 节点号是不同的。符号链接允许在两个不同的文件系统间建立文件的符号链接。 格式: ln –s <existing-file> <new-file> 其中, existing-file 是被链接文件的文件名, new-file 是链接文件的文件名。命令执行后,便建立了 new-file 到 existing-file 的符号链接。 例如,若要求建立一个指向文件 file 的符号链接 filesoft 。 $ ln -s file filesoft 注意,符号链接的权限是没有意义的,它们总是 rwxrwxrwx ,其实,符号链接的权限是由被链接文件(即文件主)的权限决定的。符号链接常用于为目录或设备文件增加名称,符号链接还允许对一个不存在的文件建立链接。
  • 177. Linux 的设备文件 Linux 系统的设备的驱动程序存放在 /dev 目录中 这些驱动程序是用来访问系统设备和资源的,如磁盘、 Modem 、内存、鼠标等等 例如: 用户可以通过 /dev/mouse 来访问鼠标的输入, 通过 /dev/fd0H1440 访问第一物理软驱中的 3.5 英寸, 1.44MB 的软盘
  • 178. 常用设备名与具体硬件设备的对应 ( 注意区分大小写 ) 以“ fd ” 开头的设备名是 软盘设备 fd0 代表第 1 软盘驱动器,相应软盘称为 fd0 盘 fd1 代表第 2 软盘驱动器,相应软盘称为 fd1 盘 以“ hd ” 开头的设备名是 IDE 硬盘设备 /dev/hda 代表物理上第一的硬盘 /dev/hdb 代表物理上第二的硬盘 /dev/hda1 代表第一硬盘的第一个分区,依次类推 /dev/cdrom 是用于访问 光盘驱动器 的设备文件
  • 179. 以“ lp ” 开头的设备名代表 并行端口 /dev/lp0 代表第一个物理并行口 以“ tty ” 开头的设备名代表 虚拟终端 /dev/tty1 代表第一个虚拟终端 /dev/tty2 代表第二个虚拟终端 以 “ sd ” 开头的设备名代表 SCSI 设备 如果你有一个 SCSI 硬盘,那么就要用设备文件 /dev/sda 而不是 /dev/hda 来访问它,而 SCSI 的 CD-ROM ,则通过 /dev/sr 设备文件访问。
  • 180. Linux 支持的文件系统 Linux 系统对能识别的所有文件系统类型提供了一个通用接口, 可以 通过 cat /proc/filesystems 命令了解 当前注册的文件系统类型。 Linux 目前支持的常用文件系统 : — ext2 文件系统(是 Linux 使用的磁盘文件系统,用于存储 Linux 文件) — ext3 在原有 ext2 系统的元数据块上增加日志信息,构成的日志文件系统。 — vfat 是微软的 Win95 和 Win NT 使用的扩展 DOS 文件系统, vfat 在 msdos 文件系统下增加了对长文件名的支持。 — MS-DOS 文件系统(是 DOS 、 Windows 系统使用的文件系统 ,允许 Linux 访问 MS-DOS 分区和软盘上的文件) — ISO9660 符合 ISO9660 标准的 CD-ROM 文件系统 — usbdevfs 支持 USB 设备的文件系统
  • 181. ext2 文件系统 ext2 文件系统 ( Second Extended File System ) Linux 中最普遍使用的文件系统, ext2 是 Linux 所有发行版本的基本文件系统 是一个高性能的磁盘文件系统,是迄今为止最成功的文件系统
  • 182. Linux 中使用外存的 3 个步骤 在 Linux 系统中使用外存须经过 3 个步骤: ( 1 )文件系统的格式化 ( 2 )创建文件系统 ( 3 )文件系统的挂装
  • 183. ( 1 )文件系统的格式化 存放文件系统的块设备(如磁盘),在使用之前需要进行格式化。 命令格式: fdformat [options] <device> 功能:对 device 设备文件名所指定的设备进行格式化 例 : 对一张 3.5 英寸, 1.44MB 的 fd0 软盘进行格式化,则 # fdformat /dev/fd0H1440
  • 184. ( 2 )创建文件系统 格式化后,还须装入指定文件系统后才能使用。 创建文件系统命令 mkfs 用于在一个设备上建立一个 Linux 文件系统,一般情形是在一个硬盘分区上或单个软盘上建立一个文件系统 。 格式: mkfs [-V] [–t fstype] [fs-options] <filesys> 功能:在 filesys 指定设备上创建指定类型的文件系统 例:在已格式化好的 fd0 软盘上,创建 ext2 的文件系统 # mkfs –t ext2 /dev/fd0H1440 注意:创建文件系统将删除相应物理设备(软盘,硬盘分区等)上的所有数据, mkfs 在创建文件系统之前一般不提示用户,所以要特别小心 。
  • 185. ( 3 )文件系统的挂装 在 Linux 下要访问任何文件系统,必须先把它 挂装 到系统中一个确定的目录上 ,然后,通过 访问该目录下的文件就可以访问该文件系统 了。 当需要更换一个文件系统或该文件系统不再使用时,必须将文件系统从挂装目录上 卸载 下来。 卸载一个文件系统主要有两方面的动作: 一是 使文件系统与作为安装点的目录脱离 ,卸载后的文件系统将不能再使用。这时就可以在同一安装点挂装别的。 二是使系统缓冲区的内容与磁盘上的文件系统的实际内容同步。 Linux 提供挂装与卸载的命令是 mount 和 umount
  • 186. mount 命令 格式: mount [options] <device> <mount-point> 功能:在由 mount-point 指定的挂装点,由 device 指定的设备文件上,挂装指定的文件系统。 例 1 :将之前安装好 ext2 文件系统的 fd0 盘,挂装在 /mnt/floppy 目录上。 # mount –t ext2 /dev/fd0H1440 /mnt/floppy 之后只要通过目录 /mnt/floppy 便可访问 fd0 盘上的 Linux 的 ext2 文件系统了 例 2 :要求挂装一个 CD-ROM 。 # mount –t iso9660 /dev/cdrom /mnt/cdrom 或 # mount /mnt/cdrom
  • 187. umount 命令 格式: umount [options] <mount-point> 功能:将由 mount-point 指定的挂装点上的当前挂装着的文件系统卸下,该设备上的文件系统不能再使用 例 1 :要求卸载之前已挂装的 fd0 软盘 # umount /mnt/floppy 例 2 :要求卸载之前已挂装的 CD-ROM 光盘 # umount /mnt/cdrom 注意:用 mount 命令装入的是软盘、光盘,而不是软驱、光驱。当需要换一张软盘或光盘时,一定要先用 umount 命令卸载,然后,把盘从驱动器上拿走。再对新盘重新挂装,否则,会造成这些设备的系统信息与实际的情况不同步。为了防止这种不同步,在卸载光盘之前,系统会使光驱面板上的弹出键不起作用。
  • 188. 挂装 U 盘命令 #fdisk -l 查看 U 盘所在路径(假设为 /dev/sdb1 ) #mkdir /mnt/usb 为 U 盘创建一个挂装目录 #mount -t vfat /dev/sdb1 /mnt/usb 或 #mount /dev/sdb1 /mnt/usb 进入 U 盘进行操作 #cd /mnt/usb 卸载 U 盘命令 返回到其他路径,如根目录 #cd / #umount /mnt/usb
  • 189. 检查和修补文件系统 有时需要检查 Linux 文件系统的一致性,如果有错误或数据丢失就要加以修补(类似于 MS-DOS 下的 scandisk 命令)。这些错误通常来自系统崩溃或突然停电,因内核不能使文件系统缓冲区的内容与磁盘的内容保持同步所致。 Linux 提供的检查和修补文件系统的工具是 fsck 命令 格式: fsck [-t fs-type] [fs-options] < filesys > 功能:检查由 filesys 指定的文件系统设备上的文件系统并 修正错误。 例:检查在 /dev/hda2 上的一个 ext2 的文件系统 # fsck –t ext2 /dev/hda2
  • 190. 查看文件系统占用磁盘的情况 Linux 使用 df 命令查看文件系统占用磁盘情况。 格式: df [options] … [filename]… 功能:显示文件系统与使用磁盘的状况。 常用选项的说明: -a 列出所有文件系统,包括只有 0 块的文件系统。 -i 列出 inode 信息,而不是块数量的信息。 -k 以 KB 为单位来表示容量。 |-m 以 MB 为单位来表示容量。 -H 以人们熟悉的容量表示方式来表示。如 1.2G 、 234M 、 256k 等。 -T 输出出各分区文件系统的类型。如 ext2 , msdos 等。
  • 191. -t <fstype> 列出由 fstype 指定的文件类型的文件系统信息。 -x <fstype> 此选项正好与选项 -t 的作用相反,它列出除 fstype 指定的文件类型以外的文件系统信息。 例:要求以熟悉的容量表示方式,列出类型为“ ext2” 的文件系统占用磁盘的情况 # df -t ext2 -H
  • 192. 查看文件或目录的空间使用程度 Linux 提供了查看工具 du 命令,以了解文件系统中每个文件占用的磁盘空间的情况 格式: du [options] … [filename] … 功能:查看文件系统中任何文件或目录占用磁盘空间的大小。 常用选项的说明: -a 输出所有文件和目录的计数。 -k|-b|-m 以 KB 或 Byte 或 MB 为单位对文件占用空间进 行计数。 -c 产生总计值。 -h 以用户易于理解的形式输出统计结果。 -l 统计所有文件所用的空间,即使某些文件通过硬链接已经在其他目录中被统计过了。
  • 193. -H 使用 1000 而不是 1024 进行计数。 -S 统计时不包含子目录的大小。 -L 对于符号链接,显示该链接所指向的文件的空间使用情况而不是该链接本身使用的空间。 -s 仅显示每个参数的总计值。 -x 略过不在当前文件系统中的目录。 例:查看目录 /home 占用磁盘空间的情况,显示的总计值以 MB 为单位表示。 # du -cm /home -c 产生总计值
  • 194. 转换和复制输入文件到指定的输出文件 格式: dd [ 选项 ] 功能: dd 可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。 系统默认使用标准输入文件和标准输出文件。 参数: if=FILE 从由 FILE 指定的文件 ( 或设备名称 ) 读取,而不是从标准输入读取 of=FILE  写入由 FILE 指定的文件 ( 或设备名称 ) ,而不是写入标准输出 ibs=BYTES 一次读入由 BYTES 指定的字节数,即读入缓冲 区的字节数
  • 195. obs=BYTES  一次写入由 BYTES 指定的字节数,即写入缓冲区的字节数 bs=BYTES 同时设置读 / 写缓冲区的字节数,强制使 ibs 和 obs 的值,等于由 bs=BYTES 指定的 BYTES cbs=BYTES 一次对由 BYTES 指定的字节数进行转换 count=BLOCKS 只拷贝由 BLOCKS 指定的输入块数
  • 196. 例如,把一张软盘的内容拷贝到另一张软盘上。 利用 /tmp 作为临时存储区,输入命令: $ dd if =/dev/fd0 of = /tmp/tmpfile 拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令: $ dd if = /tmp/tmpfile of =/dev/fd0 例如,把 net.i 这个文件写入软盘中,并设定读 / 写缓冲区的数目(注意:软盘中的内容会被完全覆盖掉)。 $ dd if = net.i of = /dev/fd0 bs = 16384 例如,将文件 sfile 拷贝到文件 dfile 中 $ dd if=sfile of=dfile
  • 197. 查看当前系统的内存使用情况 格式: free [ 选项 ] 功能:用来查看系统内存分配情况。 参数: -b 以 Byte 为单位来显示系统内存的分配信息。 -k 以 KB 为单位来显示系统内存的分配信息。缺省时以 KB 为单位。 -m 以 MB 为单位来显示系统内存的分配信息。 -t 表示内存包含总计行。 -V 显示版本信息。
  • 198. 磁盘分区 格式: fdisk -l [-u] [device ...] 或 fdisk -s partition 参数: -u 列出分区表的时候以扇区的大小代替柱面大小,来表示每个分区的起始地址。 -l 列出给定设备的分区表,如果没有给定设备,则列出 /proc/partions 中设备的分区表。 -s partition 将 partition 分区的大小 ( 以块为单位 ) 输出到 标准输出上。
  • 199. linux 系统的系统管理命令 date 命令 格式: date [-u] [-d 字符串 ] [-s 字符串 ] [--utc] [--universal] [--date 字符串 ] [--set 字符串 ] [--help] [--version] [+ 格式参数 ] [MMDDhhmm[[CC]YY][.ss]] 功能:显示或设置系统时间和日期。 说明:    date 命令如果用来显示系统日期或时间,以 % 为开头的参数为格式参数,可指定日期或时间的显示格式;只有管理员才有设置日期与时间的权限;若不带任何参数的 date 命令,则表示显示当前系统的日期和时间。   在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss] ,其中 MM 为月份, DD 为日, hh 为小时, mm 为分钟, CC 为年份前两位数字, YY 为年份后两位数字, ss 为秒数。
  • 200. 参数: -d 字符串 显示字符串中所设定的时间 ( 非系统时间 ) -s 字符串 将系统时间设为字符串中所设定的时间 -u 显示目前的格林威治时间 时间方面: %n 在显示时,插入新的一行 %t 在显示时,插入 tab %H 小时 (00~23) %I 小时 (01~12) %k 小时 (0~23) %l 小时 (1~12) %M 分钟 (00~59) %p 显示本地 AM 或 PM %r 直接显示时间 (12 小时制,格式为 hh:mm:ss [AM/PM]) %s 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S 秒 (00~59 ,本地惯用法 ) %T 直接显示时间 ( 含时分秒, 24 小时制 ) %X 相当于 %H:%M:%S %Z : 显示时区 ( 本地惯用法 )
  • 201. 日期方面: %a 星期几 (Sun~Sat) %A 星期几 (Sunday~Saturday) %b 月份 (Jan~Dec) %B 月份 (January~December) %c 直接显示日期与时间,只输入 date 指令也会显示同样的结果 %d 日 (01~31) %D 直接显示日期 (mm/dd/yy) %j 一年中的第几天 (001~366) %m 月份 (01~12) %U 一年中的第几周 (00~53) ( 以 Sunday 为一周的第一天的情形 ) %w 一周中的第几天 (0~6 , 0 代表周日, 1 代表周一 ) %x 直接显示日期 (mm/dd/yy ,本地惯用法 ) %y 年份的最后两位数字 (00~99) %Y 完整年份 (0000~9999)
  • 202. 例如,显示时间后跳行,再显示目前日期。 $ date '+%T%n%D' 例如,显示月份与日数。 $ date '+%B %d' 例如,显示时间为 12:34:56 ,而非系统时间。 $ date –date '12:34:56' 例如,设置时间为 1999 年 11 月 28 号。 # date –s 991128
  • 203. 清屏 格式: clear 清除屏幕上的信息 , 它类似于 DOS 中的 cls 命令。清屏后,提示符移动到屏幕左上角。 clear 命令
  • 204. man 命令 格式: man < 命令名 > 功能:获取命令名指定的命令的帮助信息,即命令的格式和使用细节。 Linux 提供了联机帮助手册( man ),手册中有大量的可用信息,分成若干节,下表给出了每节的主要用途说明。 例如,要得到有关 ls 命令的帮助手册页 $ man ls
  • 205. 别名 alias 命令   经过一段时间之后,用户会发现自己经常需要输入一些复杂的命令,或者需要经常使用某些命令行的同一些参数。为了减少用户输入的字符量,他们可以使用 alais 命令来为各种 shell 命令创建假名 (pseudonyms)( 别名 ) ,也就是使用一个比较简短的命令来代替原来很长的命令内容。 要想建立别名,需要编辑他们自己用户目录中的 .bash_profile 或 .bashrc 文件。不管用户是使用哪个帐户登录进入系统的,本系统可以使用“ vi ~/.bashrc” 命令开始操作。
  • 206. 格式: alias [name=string] 或 alias [name] 或 alias 功能:为命令设置别名、显示别名设置。 说明: 第一个语法是指为“ name” 命令建立别名“ string” 。 第二个语法是显示出“ name” 所对应的命令。 若不带任何参数的 alias 命令,则表示显示所有别名设置。 注:等号两边不能有空格!
  • 207. 例如,将原来的“ ls -la” 命令定义为别名命令 dir , #alias dir='ls –la 当在 shell 提示符下运行 dir 命令时,实际上是在运行 ls -al 这个命令。 $ dir linuxbook 实际执行的是 ls -al linuxbook 如果想使用新的别名,请先退出登录再重新登录进入原先的帐户。 $ alias 不使用任何参数,列出所有的别名设置。 可以使用 unalias 命令从别名列表中删除别名。用 unalias -a 命令,可以删除所有的别名。 $ unalias ls # 删除 ls 这个别名 $ unalias –a # 删除别名列表中所有的别名
  • 208. linux 系统的网络相关命令 ifconfig 命令 格式: ifconfig [ 网络设备 ] 功能:显示或设置网络设备。使用不带任何参数的 ifconfig 命令,可以用来查看当前系统的网络配置情况。 在刚刚安装完系统之后,实际上是在没有网卡或者网络连接的情况下使用 Linux ,但通过 ifconfig 可以使用回绕方式工作,使计算机认为自己工作在网络上。
  • 209. 运行一下 ifconfig 命令,不带参数的 ifconfig 命令可以显示当前启动的网络接口,其输出结果为: ----------------------------------------------------------- [root@machine1 /sbin]#ifconfig eth0 Link encap:Ethernet Hwaddr 52:54:AB:DD:6F:61 inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:46299 errors:0 dropped:0 overruns:0 frame:189 TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:5 Base address:0xece0 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:44 errors:0 dropped:0 overruns:0 frame:0 TX packets:44 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 -------------------------------------------------------------------- eth0 为首的部分是本机的以太网卡配置参数,显示了网卡的设备名 /dev/eth0 和硬件的 MAC 地址 52:54:AB:DD:6F:61 显示本机的 IP 地址信息,分别是本机的 IP 地址,网络广播地址和子网掩码。必须确认这些信息都是正确无误的,否则 Linux 服务器无法与其它网络设备建立连接。
  • 210. ping 命令 用于检查本地机是否可以与网络上的一台主机连通。 格式: ping [ 选项 ] [ 主机名称 /IP 地址 ] 功能:向目的主机发送一个 IP 数据包,测试它是否在网络上,若对应主机的网络功能没有问题,就会响应该请求,因而得知该主机运作正常。 参数: -f 极限检测。产生 ping 风暴,会对网络带来严重负担,仅限 root 用户使用,可用来统计数据包的丢包、误码率; -c< 完成次数 > 设置完成要求回应的次数。 -s< 数据包大小 > 设置发送数据包的大小,默认为 56 字 节 ( 加上 8 字节的报头 ) 。
  • 211.   不带任何参数执行 ping 命令时,命令将会持续显示响应消息,直到通过 Ctrl+C 命令结束。由于执行 ping 命令的宿主机和目的主机之间的距离和网络质量不同,所以不同主机之间的往返时间可能不同。 通过使用参数 -c 指定发送消息的次数,例如,发送两个长度为 2048 的消息包加上 8 字节的 ICMP 协议报头。 $ ping -c 2 -s 2048 sspu.edu
  • 212. ftp 命令 格式: ftp [-dignv] [ 主机名称或 IP 地址 ] 功能:设置文件系统相关功能。 ftp 是 ARPANet 的标准文件传输协议,该网络就是现今 Internet 的前身。 参数: -d 详细显示指令执行过程,便于排错或分析程序执行的情形。 -i 关闭互动模式,不询问任何问题。 -g 关闭本地主机文件名称支持特殊字符的扩充特性。 -n 不使用自动登陆。 -v 显示指令执行过程。 其中,“主机名称或 IP 地址”是所要连接的远程 ftp 服务器的主机名或 IP 地址。
  • 213. 在命令行中,主机名属于选项,如果省略主机名, ftp 将给出提示符,等待用户输入命令。 可以在 ftp> 提示符后面输入 open 命令加主机名或 IP 地址,将试图连接指定的主机。用户如果在远程机上有账号,就可以通过 ftp 使用这一账号并提供口令。 $ ftp 主机名 /IP $ ftp ftp > 在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。 如果用户没有 ftp 中文件的存取权限,就不能从远程系统中获得文件或向远程系统传输文件。 ftp> 提示符下用 help 命令取得可供使用的命令清单,也可以在 help 命令后面指定具体的命令名称,获得说明。
  • 214. 常用的 ftp 会话命令有: ls 列出远程机的当前目录 cd 在远程机上改变工作目录 lcd 在本地机上改变工作目录 ascii 设置文件传输方式为 ASCII 模式 binary 设置文件传输方式为二进制模式 close 终止当前的 ftp 会话 hash 每次传输完数据缓冲区中的数据后就显示一个 # 号 get ( mget ) 从远程机传送指定( 多个 )文件到本地机 put ( mput ) 从本地机传送指定( 多个 )文件到远程机 open 连接远程 ftp 站点 quit 断开与远程机的连接并退出 ftp ? 显示本地帮助信息 ! 转到 Shell 中
  • 215. 格式: minicom [-8lmMostz] [-a] [-c] [-C< 取文件 >] [-d< 编号 >] [-p< 模拟终端机 >] [-S] [ 配置文件 ] 功能:调制解调器通信程序。是一个相当受欢迎的 PPP 拨号连线程序。 minicom 命令    minicom 是一个串口通信工具,就像 Windows 下的超级终端。可用来与串口设备通信,如调试交换机和 Modem 等。在 Linux 环境中,可以在宿主机上用 Minicom 命令建立与目的主机的串口通信。
  • 216. 参数: -8 不要修改任何 8 位编码的字符。 -a <on 或 off> 设置终端机属性。 -c <on 或 off> 设置彩色模式。 -C < 取文件 > 指定取文件,并在启动时开启取功能。 -d < 编号 > 启动或直接拨号。 -l 不会将所有的字符都转成 ASCII 码。 -m 以 Alt 或 Meta 键作为指令键。 -M 与 -m 参数类似。 -o 不要初始化调制解调器。 -p < 模拟终端机 > 使用模拟终端机。 -s 开启程序设置画面。 -S <script 文件 > 在启动时,执行指定的 script 文件。 -t 设置终端机的类型。 z 在终端机上显示状态列。 [ 配置文件 ] 指定 minicom 配置文件。
  • 217. 默认的 minicom 配置文件位于 /etc/minicom 目录下,文件名为 minirc.dfl 。 一般来说,在使用 minicom 前需进行配置,以便正确连接串口设备。 配置 minicom 的方式:一种是用 minicom -s 命令直接从命令行进入配置菜单;另一种方式是用不带参数的 minicom 命令进入 minicom 后,在命令模式中配置。 minicom 的命令模式可 Ctrl+A 进行切换。按 Z 键可查看所有的命令。按 O 键,可进入 minicom 的配置菜单。配置完成后,可用 Save setup as.. 菜单把配置参数以文件的形式保存起来,下次就可直接用 minicom filename 命令调用该参数文件了。用 Save setup as dfl 命令可把配置存在 minirc.dfl 这个默认配置文件中。 要挂机的话可先按 Ctrl+A 切换到命令模式,再 H 键。当屏幕很花时,在命令模式下按 C 键可清屏。
  • 218. 内核模块 内核模块是 Linux 内核向外部提供的一个接口,其全称为动态可加载内核模块( Loadable Kernel Module , LKM ),简称为模块。 Linux 内核之所以提供模块机制,是因为它本身是一个单内核。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。 模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或内核中其他上层的功能。
  • 219. 模块实用程序 modutils modutils 是管理内核模块的一个软件包。可以在任何提供内核源代码的地方获取 modutils ( modutils-x.y.z.tar.gz )源代码,安装在 /sbin 目录下就会有 insmod 、 rmmod 、 ksyms 、 lsmod 、 modprobe 等实用程序。当然,通常在加载 Linux 内核时, modutils 已经被载入。 函数 init_module() 和 cleanup_module() 是模块编程中最基本也是必需的两个函数。 init_module() 向内核注册模块所提供的新功能。 cleanup_module() 注销由模块提供的所有功能。
  • 220. (1) insmod 命令 格式: insmod [-fkmpsvxX][-o < 模块名称 >][ 模块文件 ][ 符号名称 = 符号值 ] 功能:载入模块。 Linux 有许多功能是通过模块的方式,在需要时才载入 kernel 。如此可使 kernel 较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。
  • 221. 参数: -f 不检查目前 kernel 版本与模块编译时的 kernel 版本是否一致,强制将模块载入 -k   将模块设置为自动卸除 -m   输出模块的载入信息 -o < 模块名称 >  指定模块的名称,可使用模块文件的文件名 -p   测试模块是否能正确地载入 kernel -s   将所有信息记录在系统记录文件中 -v   执行时显示详细的信息 -x   不要汇出模块的外部符号 -X   汇出模块所有的外部符号,此为预设置
  • 222. 调用 insmod 程序,把需要插入的模块以目标代码的形式插入到内核中。在插入的时候, insmod 自动调用 init_module() 函数运行。注意,只有超级用户才能使用这个命令。例如: #insmod hello.o
  • 223. (2) lsmod 命令 格式: lsmod 功能:显示已载入系统的模块。执行 lsmod 指令,会列出所有已载入系统的模块。 Linux 操作系统的核心具有模块化的特性,应此在编译核心时,须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。 实际上这个程序的功能就是读取 /proc 文件系统中 /proc/modules 文件中的数据。 #lsmod
  • 224. (3) rmmod 命令 格式: rmmod [-as][ 模块名称 ...] 功能:删除模块。执行 rmmod 指令,可删除不需要的模块。 Linux 操作系统的核心具有模块化的特性,应此在编译核心时,须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。 参数: -a   删除所有目前不需要的模块 -s   把信息输出至 syslog 常驻服务,而非终端机界面
  • 225. 调用 rmmod 程序,将已经插入内核的模块从内核中移出。 rmmod 会自动运行 cleanup_module() 函数。 #rmmod hello
  • 226. (4) ksyms 命令 ksyms 这个程序用来显示内核符号和模块符号表的信息。与 lsmod 相似,它的功能是读取 /proc 文件系统中另一个文件 /proc/ksyms 的内容。
  • 227. mknod 命令 用于建立设备文件,只有 root 能使用这个命令建立设备文件。其参数是文件名,字母 c 或 b 分别代表字符特别文件或块特别文件,主设备号,次设备号。 块特别文件是像磁带,磁盘这样一些以块为单位存取数据的设备。字符特别文件是像终端,打印机, MODEM 或者其它任何与系统通讯时,一次传输一个字符的设备,包括模仿对磁盘进行字符方式存取的磁盘驱动器。 主设备号指定了系统子程序 ( 设备驱动程序 ) ,当在设备上执行 I/O 时,系统将调用这个驱动程序。调用设备驱动程序时,次设备号将传递给该驱动程序 ( 次设备规定具体的磁盘驱 动器,带驱动器,信号线编号,或磁盘分区 ) 。每种类型的设备一般都有自己的设备驱动程序。
  • 228. mknod 命令 文件系统将主设备号和次设备号存放在 i 节点中的磁盘地址表内,所以没有磁盘空间分配给设备文件 ( 除 i 节点本身占用的磁盘区外 ) 。当程序试图在设备文件上执行 I/O 操作时,系统识别出该文件是一个特别文件,并调用由主设备号指定的设备驱动程序,次设备号作为调用设备驱动程序的参数。 主设备号用于 kernel 中区分设备驱动,次设备号用于设备驱动内区分设备。 格式: mknod 设备名字 [b/c] 主设备号 次设备号 功能:为设备文件产生一个目录项和对应的 i 节点。
  • 229. #mknod /dev/hda1 b 127 1 /dev/hda1 是设备名, b 表示 block 设备, c 表示字符设备。 127 是主设备号, 1 是次设备号。次设备号可以是 0~255 之间的值,限制为 8 位。 #ls -al /dev/hda1 brw-rw---- 1 root disk 31 Mar 25 12:00 /dev/hda1

Editor's Notes

  • #17: 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 字段包含用户的相关信息,典型的信息是用户全名。
  • #18: 上面一行来自于系统中的文件 /etc/passwd ,是描述用户 davis 的。 在这一行中,登录名为 davis ,密码字段用 x 表示,用户 ID 是 134 ,组 ID 是 105 ,个人信息是用户的全名 James A Davis ,主目录是 /home/student/davis ,登录 shell 是 /bin/bash 。
  • #73: 例如,对 Linux 来说,一个 C 程序文件和一具作为网页的 html 文件或一个视频文件是没有区别的。然而这些文件分别由 C 语言编译器,网络浏览器和视频播放器给予不同的处理。
  • #78: 这个目录包含所有的设备文件,每个连接到计算机的设备至少有一个相应的设备文件,即命令或应用程序通过访问特殊文件来访问相应的设备。而应用程序和命令读写外围设备文件的方式和读写普通文件相同。因此, Linux 的输入和输出被称为是设备无关的。各种特殊文件都模拟物理设备,因此也被称为虚拟设备。可以通过虚拟设备和 Linux 系统进行交互,不需要使用和系统连接着的物理设备。