Linux commands ppt

Post on 14-May-2015

1.608 views 16 download

description

Linux 命令

Transcript of Linux commands ppt

第第 44 章 章 LinuxLinux 常用命常用命令令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字段是用户主目录的绝对路径。login_shell 包含了用户登录 shell 的绝对路径。当用户登录到系统时,相应于该字段所指定路径名的命令就会被系统执行。如果出现两个连续的冒号,就意味着两个冒号之间的那个字段缺少字段值,值为空。有时 user_info字段会出现空值。

例如: davis:x:134:105:James A Davis:/home/student/davis:/bin/bash

login_name:dummy_or_encrypted_password:user_ID:group_ID:user_info:home_directory:login_shell

4.2 Linux 系统的启动和退出

启动系统 登录方式 修改口令 退出登录 关闭机器 用户帐号管理 虚拟终端 Shell 简介 Linux 系统常用命令格式

以 Fedora Core 4 为例说明 启动计算机,出现 GRUB(GRand Unified

Bootloader 多重启动管理器 ) 引导程序

启动 Linux 系统

GRUB 菜单

GRUB 启动菜单

一些基本术语 命令 (Command) 给计算机的指令,通常使用键盘输入 命令行 (Command line) 输入命令的地方 shell :是一种命令解释器,它提供了用户和操作系统之间的交互接口。当用户在命令行输入命令后, shell 进行解释,然后送往操作系统(内核)执行。 shell 可以执行 Linux 的系统内部命令,也可以执行应用程序。你还可以利用 shell 编程,执行复杂的命令程序。 root :根用户、超级用户、管理员,它对整个系统有完全的访问权。只有超级用户才能更改系统的设置等。

当使用超级用户登录后,进行相关操作时需非常谨慎,否则可能会对系统或用户文件造成不可挽回的损失。

虽然 Linux 提供了漂亮的图形界面操作环境,但有时仍需返回到字符界面命令行方式下工作。特别是当系统出现问题时,在字符界面下, Linux 只加载少量的应用程序,以便用户修正 Linux 相同可能的错误。某些无法或不方便在图形界面下操作的任务,也需要命令行方式。

终端是 UNIX 的一个标准特性,用户可以通过终端访问系统资源。

Linux 下的字符操作环境有两种:一种是控制台( console )或终端 (Terminal) ;另一种是图形界面下提供的多种虚拟终端,如 xterm、 rxvt 等。

字符操作环境

Linux 有两种登录方式:文本模式 和 图形模式 文本模式:字符操作环境

Fedora Core release 4 (Stentz) Kernel 2.6.11-1.1369_FC4 on an i686

login:

键入正确的用户名和口令后,就可以进入系统

注: Linux 区分大小写!

Linux 登录方式

用户登录后,将会进入一个系统指定的专属目录,即用户的主目录,该目录名通常为用户的登录帐号。

在创建用户时,系统管理员会给每个用户建立一个主目录,通常在 /home/ 目录下。

例:用户 user1 的主目录为 /home/user1/

用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。

每个用户名对应一个用户 ID 号(一个数字)。

用户主目录

每个用户都被分配到一个指定的组 (group) 中

图形登录方式 在图形界面下登录

语言 (L) :选择语言,默认为安装是选择的语言。

登录回话菜单

上次:上次登时使用的桌面管理器 系统默认: Fedora core 默认的桌面管理器是 GNOME GNMOE : GNMOE 桌面管理器 KDE : KDE 桌面管理器 安全模式:显示没有桌面管理器的 xterm 终端

会话 (S) :采用什么样的桌面管理器

重新引导 (R) :重启计算机 关机 (R) :关闭计算机

登录后出现的图形界面:

桌面

面板panel

X Widows 系统 也称为 X ,是在 UNIX 类的操作系统中应用最为广泛的基于窗口的用户图形界面。

X Windows 系统

X Widows 使用方便,界面直观,并且和具体的计算机的硬件无关,也独立于操作系统。同时它支持分布式的网络操作。所以,基于 X Window 的应用程序一直在 UNIX 类的操作系统中占有主导的地位。

Linux 出现以后, X Window 系统也有了在 Linux 系统上的实现,成为 Linux 图形用户界面的基础。

GNOME、 KDE ( Fedora 安装盘自带) FVWM、WINDOWMAKER (自己下载安装)

Linux 下常见的桌面系统有:

X Windows 系统

通常 X 窗口分两层:桌面管理器和窗口管理器 桌面管理器 是面向图像的用户界面,它允许用户通过管理图标而不是输入相应的 shell 命令来与系统交互。 窗口管理器 主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……

在字符界面中,如果想进入图形界面,可以输入命令

startx或 switchdesk GNOME

在图形模式中,想进入字符操作环境,有以下方式 切换到另一个虚拟控制台。 Linux 共提供了 7 个虚拟控制台,可以用 Ctrl+Alt+Fn或 Alt+Fn 来切换, Fn 为功能键 F1~ F7 。其中 F1~ F6 是文本模式, F7 是图形界面。 在图形界面下,可以打开一个或多个虚拟终端。

注:在字符界面下中文可能无法正常显示。但在虚拟终端中可以正常显示。

或 switchdesk KDE

字符界面与图形界面

在图形界面下,如何打开虚拟终端

点击面板上的 “应用程序” “系统工具” “终端”。 单击鼠标右键, 从弹出的快捷菜单中选择 “终端”。

打开虚拟终端

打开新的虚拟终端窗口的快捷键

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 也能被系统中其他应用程序所调用。

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) 。

常用的 Shell

Bourne shell (sh)

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)

常用的 Shell (续 )

Korn shell (ksh)

Bourne Again Shell (即 Bash) 是自由软件基金会 (Gnu)开发 的 一 个 Shell , 是 多 数 Linux 系 统 中 一 个默认的Shell 。 Bash 不但与 Bourne Shell 兼容,并且在 Bourne

Shell 的基础上增加和增强了很多特性,同时还继承了很多C Shell、 Korn Shell 的优点。 Bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。

常用的 Shell (续 )

Bourne Again Shell (Bash)

是现在大多数 Linux 系统的缺省 shell

command [选项 ] [参数 ]

Command 为命令名(也就是对应的程序名),写在一行的开头;开关符选项通常是以 “ -” 开始,多个选项可用一个“ -” 连起来,如 ls -l -a 与 ls –la 相同 ;根据命令的不同,参数分为可选的或必须的;命令名和开关符、参数之间一定要用空格分离。

Linux 系统常用命令格式

当用户打开一个 ( 虚拟 ) 终端时,可以看到一个 shell 提示符,标识了命令行的开始。用户可以在提示符后面输入任何命令及参数

例: ls –l /home/user1/linux/

注意:命令行中选项先于参数输入

command [选项 ] [参数 ]

命令行

Bash 的功能

如果一个命令太长,无法在一行中显示,可以使用反斜杠 \ 来续行,在多个命令行上输入一个命令或多个命令。例如:

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 下可以用很长的一个字符 串 ( 一般不超过 255 个 )

来作文件名。例如: This_is.a.VERY_long.filename

注: Linux 应用程序和文件区分大小写!

Linux 文件名 Linux 下文件的命名规则

文件名中不能直接使用以下字符:! @ # $ % ^ & * ( ) [ ] { }‘ ’‘ / \ ; < > 空格这些字符具有特殊含义,若出现在文件名中,则会产生“多义性”。若一定要使用这些字符,必须在前面加上转义符“ /” ,以取消其特殊含义。

左 /右箭头键 向左 /向右移动一个字符Ctrl+a 移动到当前行的行首Ctrl+e 移动到当前行的行尾Ctrl+f 向前移动一个字符Ctrl+b 向后移动一个字符Ctrl+k 从光标处删除到本行的行尾Ctrl+u 从光标处删除到本行的行首Ctrl+l 清屏 Alt+f 向前移动一个单词 Alt+b 向后移动一个单词

stty –a 可以看到更多的快捷键。

常用的快捷键和组合键

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⑿

a* 以 a开头的所有文件 ⑶[a-zA-Z]??? 以英文字母开头,文件长度为 4 个字符 ⑴⑶

*.rpm 文件类型为 rpm 的所有文件 ⑺⑽⑿F[012] 首字符为 F,长度为 2,第二字符为 0、 1

或 2无

* 全体文件?repo* 文件名的第 2 到第 5字符为 repo ⑼⑿

通常用户在 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 下常见的文件扩展名

TCL 脚本文件.tcl

shell过程文件.sh

类库文件.so

PYTHON脚本文件.py

PERL脚本文件.pl

编译程序产生的目标文件.o

C或C++程序的头文件.h

C++源程序代码文件.cpp/.c

编程与脚本文件

C源程序代码文件.c

REDHATPackage.Manager文件(套件包或软件包).rpm

LOCK文件(锁文件,用来判断一个文件或设备是否正在被使用)

.lock系统文件

系统配置文件,有时也用.cfg.conf

图像文件.xpm

audio文件.wav

信息文档.doc

纯文本文件(ASCII).txt

Postscinpt代码(打印格式文件).ps

PNG图像文件(portal network graphics).png

电子文档(PDF(portable document format)格式的).pdf

JPEG图像文件.jpg

HTML文件.html/.htm

gif图像文件.gif

文字与多媒体文件

audio文件.au

用rar压缩的文件.rar

用zip压缩的文件.zip

tar打包并用gzip压缩的文件.tgz

tar打包并用bzip压缩文件.tbz

tar打包文件(是包文件不是压缩文件).tar

gzip的压缩文件.gz

压缩与归档文件

bzip2的压缩文件.bz2

归类文件内容扩展名

TCL 脚本文件.tcl

shell过程文件.sh

类库文件.so

PYTHON脚本文件.py

PERL脚本文件.pl

编译程序产生的目标文件.o

C或C++程序的头文件.h

C++源程序代码文件.cpp/.c

编程与脚本文件

C源程序代码文件.c

REDHATPackage.Manager文件(套件包或软件包).rpm

LOCK文件(锁文件,用来判断一个文件或设备是否正在被使用)

.lock系统文件

系统配置文件,有时也用.cfg.conf

图像文件.xpm

audio文件.wav

信息文档.doc

纯文本文件(ASCII).txt

Postscinpt代码(打印格式文件).ps

PNG图像文件(portal network graphics).png

电子文档(PDF(portable document format)格式的).pdf

JPEG图像文件.jpg

HTML文件.html/.htm

gif图像文件.gif

文字与多媒体文件

audio文件.au

用rar压缩的文件.rar

用zip压缩的文件.zip

tar打包并用gzip压缩的文件.tgz

tar打包并用bzip压缩文件.tbz

tar打包文件(是包文件不是压缩文件).tar

gzip的压缩文件.gz

压缩与归档文件

bzip2的压缩文件.bz2

归类文件内容扩展名

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”helloworld

输出 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 \14161 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或— force 若目标文件或目录与现有的文件或目录

重复,则直接覆盖现有的文件或目录,不给予提示。

-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 ~/tempdrwx------ 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 ~ .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 $HOME

bin books courses linuxtools mail personal temp

显示主目录中的文件名和目录名

$ 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 910 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或— force 若目标文件或目录与现有的文件或目

录重复,则直接覆盖现有的文件或目录,不给予提示。

-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 Monday9:00 – 10:00 A.M3:00 – 4:00 P.M. Tuesday10:00 – 11:00 A.MWednesday9:00 – 10:00 A.M3:00 – 4:00 P.M. Thurday11:00 – 12:00 A.M2:00 – 3:00 P.M. 4:00 – 4:30 P.M.

$ cat Spring_OH office Hours for Spring 2002 Monday9:00 – 10:00 A.M3:00 – 4:00 P.M. Tuesday10:00 – 11:00 A.M1:00 – 2:00 P.M.Wednesday9:00 – 10:00 A.MThurday11: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.manbash.man: 74.4% replaced with bash.man.gztcsh.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 "CON.FILE" –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 后面接 " {} \;"

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 套 权限控制,第一套控制文件所有者的访问权限,第二套控制所有者所在用户组的其他成员的访问权限,第三套是控制系统内其他用户的访问权限。

所有者的权限

同组用户权限

其他用户权限

文件类型

文件的访问权限

r Read(读取 ) :对文件而言,具有阅读文件内容的权限。对目录而言,具有浏览目录内容的权限。但对该目录还必须有“ x” 权。

w Write( 写入 ) :对文件而言,具有修改文件内容的权限。对目录而言,具有建立、移动、删除目录内文件或目录的权限。但对该目录还必须有“ x” 权。

x eXecute(执行 ) :对文件而言,具有执行文件的权限。对目录而言,具有进入目录的权限。用户必须具有“ x”(检索 )权,才能对该目录实施有效操作,如 cd、 ls、 cp、 rm 等操作。

- 表示不具有该权限,或取消该权限

每套控制中三个字符按顺序排列,所代表的含义如下:

文件的访问权限

例:

-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 :用三位八进制数依次对应于文件主、同组用户和其他用户的权限。三位数字中的每一位就是对应各权限之和如下:

XXX r w x 十进制值(nnn)

含义

--- 0 0 0 0 没有任何访问特权--x 0 0 1 1 只允许执行-w- 0 1 0 2 只允许写-wx 0 1 1 3 允许写和执行r-- 1 0 0 4 只允许读r-x 1 0 1 5 允许读和执行rw- 1 1 0 6 允许读、写rwx 1 1 1 7 允许读、写和执行

例 1 :将文件 junk 的读取权限赋予所有用户以超级用户或文件主身份登录系统, # chmod a+r junk例 2 :对文件 junk 删除所有者外所有用户的可读权限 # chmod og-r junk

现在通过例子来说明一下针对一个目录而言,读、写和执行的特权含义。$ chmod 600 sample$ chmod 500 courses$ chmod 300 personal$ ls -ldr-x------ 2 sarwar faculty 512 Nov 10 09:43 coursesd-wx------ 2 sarwar faculty 512 Nov 10 09:43personaldrw------- 2 sarwar faculty 512 Nov 10 09:43sample

$ mkdir courses/ee345mkdir:Failed to make directory “courses/ee345”;Permission denied#把 courses 目录的写特权关闭,这样就不能在该目录下用 mkdir命令创建一个名为 ee345 的子目录。$ cd samplesample:Permission denied# 如果关闭了对目录 sample 的检索特权,那么就不能用 cd 命令进入该目录。即使用户对 sample 目录下的某个子目录有检索 (x) 的特权,但如果没有对 sample 目录的检索特权,那么仍然不能用 cd 命令进入该子目录。$ ls -l personalpersonal 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