上一篇记录了开发环境的安装,也做了一些必要的配置,从上节可以看出,linux系统的使用和界面与windows都是有较大差异的,但其实对于早期的DOS系统也是使用大量的命令进行交互的,在某些方面而言,使用命令的操作灵活性要优于界面。对于Linux开发,尤其是嵌入式linux开发,在很多应用场景是没有界面的,开发者必须通过命令去操作与调试。不仅如此,通常公司开发使用的服务器也不提供界面,需要使用命令去编译自己的代码。本篇将记录大部分常用的命令。

linux命令大全

        Linux 命令大全 | 菜鸟教程 (runoob.com)

常用命令

cat 命令

        cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

        语法格式

cat [-AbeEnstTuv] [--help] [--version] fileName

        参数说明:

        -n 或 --number:由 1 开始对所有输出的行数编号。

        -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

        -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

        -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

        -E 或 --show-ends : 在每行结束处显示 $。

        -T 或 --show-tabs: 将 TAB 字符显示为 ^I。

        -A, --show-all:等价于 -vET。

        -e:等价于"-vE"选项;

        -t:等价于"-vT"选项;

        实例:

        将text.txt文件的内容带行号显示至当前终端

cat -n test.txt

chgrp 命令

        chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。

        与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。

        在 UNIX 系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用 chgrp 指令去变更文件与目录的所属群组。

        语法格式

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

        参数说明

        -c 或 --changes:效果类似"-v"参数,但仅回报更改的部分。

        -f 或 --quiet 或 --silent:  不显示错误信息。

        -h 或 --no-dereference:  只对符号连接的文件作修改,而不改动其他任何相关文件。

        -R 或 --recursive:  递归处理,将指定目录下的所有文件及子目录一并处理。

        -v 或 --verbose:  显示指令执行过程。

        --help:  在线帮助。

        --reference=<参考文件或目录>:  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

        --version:  显示版本信息。

        实例:

        将text.txt文件的用户组修改为user

chgrp user test.txt

chmod 命令

        Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

        Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

init 1和reboot区别_linux

        只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

init 1和reboot区别_arm_02

        语法

chmod [-cfvR] [--help] [--version] mode file...

        参数说明

        mode : 权限设定字串,格式如下 :


        [ugoa...][[+-=][rwxX]...][,...]


        其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

        其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

        符号模式

        使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:

who

用户类型

说明

u

user

文件所有者

g

group

文件所有者所在组

o

others

所有其他用户

a

all

所有用户, 相当于 ugo

        operator 的符号模式表:

Operator

说明

+

为指定的用户类型增加权限

-

去除指定用户类型的权限

=

设置指定用户权限的设置,即将用户类型的所有权限重新设置

        permission 的符号模式表:

模式

名字

说明

r


设置为可读权限

w


设置为可写权限

x

执行权限

设置为可执行权限

X

特殊执行权限

只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行

s

setuid/gid

当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限

t

粘贴位

设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

        八进制语法

        chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。

#

权限

rwx

二进制

7

读 + 写 + 执行

rwx

111

6

读 + 写

rw-

110

5

读 + 执行

r-x

101

4

只读

r--

100

3

写 + 执行

-wx

011

2

只写

-w-

010

1

只执行

--x

001

0


---

000

        例如, 765 将这样解释:

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

        实例

        赋予test.txt文件最高权限

chmod 777 test.txt

chown 命令

        Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。

        Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 

        chown 需要超级用户 root 的权限才能执行此命令。

        只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。

        语法

chown [-cfhvR] [--help] [--version] user[:group] file...

        参数 :

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • --help : 显示辅助说明
  • --version : 显示版本

        实例

        将文件test.txt的所属用户和用户组均修改为root用户

sudo chown root:root test.txt

cmp 命令

        Linux cmp 命令用于比较两个文件是否有差异。

        当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。

        语法

cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]

        参数

  • -c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
  • -i<字符数目>或--ignore-initial=<字符数目>  指定一个数目。
  • -l或--verbose  标示出所有不一样的地方。
  • -s或--quiet或--silent  不显示错误信息。
  • -v或--version  显示版本信息。
  • --help  在线帮助。

        实例

        比较test.txt 和 test1.txt是否有区别

cmp test.txt test1.txt

ps:比较文件差异的命令还有diff,功能略强于cmp

file 命令

        Linux file命令用于辨识文件类型。

        通过file指令,我们得以辨识该文件的类型,通常用于判断在PC中交叉编译出的嵌入式平台可执行软件信息。

        语法

file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

        参数

  • -b  列出辨识结果时,不显示文件名称。
  • -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • -L  直接显示符号连接所指向的文件的类别。
  • -m<魔法数字文件>  指定魔法数字文件。
  • -v  显示版本信息。
  • -z  尝试去解读压缩文件的内容。
  • [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

        实例

        查看test.txt文件格式

file test.txt

find 命令

        Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

        语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

        参数说明 :

        find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

        expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

        -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

        -amin n : 在过去 n 分钟内被读取过

        -anewer file : 比文件 file 更晚被读取过的文件

        -atime n : 在过去 n 天内被读取过的文件

        -cmin n : 在过去 n 分钟内被修改过

        -cnewer file :比文件 file 更新的文件

        -ctime n : 在过去 n 天内创建的文件

        -mtime n : 在过去 n 天内修改过的文件

        -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

        -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

        -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

        -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

        -type c : 文件类型是 c 的文件。

        d: 目录

        c: 字型装置文件

        b: 区块装置文件

        p: 具名贮列

        f: 一般文件

        l: 符号连结

        s: socket

        -pid n : process id 是 n 的文件

        你可以使用 ( ) 将运算式分隔,并使用下列运算。

        exp1 -and exp2

        ! expr

        -not expr

        exp1 -or exp2

        exp1, exp2

        实例

        将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

find . -name "*.c"

cut 命令

        Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。

        语法

cut [-bn] [file]
    cut [-c] [file]
    cut [-df] [file]

        使用说明:

        cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

        如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

        参数:

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除

        实例

        截取一段字符串中的3-5个字符

cut -b 3-5 test.txt

ln 命令

        Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

        当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

        语法

ln [参数][源文件或目录][目标文件或目录]

        其中参数的格式为

        [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]

        [--help] [--version] [--]

        命令功能 :
        Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

        不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

        软链接

  • 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 2.软链接可以 跨文件系统 ,硬链接不可以
  • 3.软链接可以对一个不存在的文件名进行链接
  • 4.软链接可以对目录进行链接

        硬链接

  • 1.硬链接,以文件副本的形式存在。但不占用实际空间。
  • 2.不允许给目录创建硬链接
  • 3.硬链接只有在同一个文件系统中才能创建

        必要参数

  • -b 删除,覆盖以前建立的链接
  • -d 允许超级用户制作目录的硬链接
  • -f 强制执行
  • -i 交互模式,文件存在则提示用户是否覆盖
  • -n 把符号链接视为一般目录
  • -s 软链接(符号链接)
  • -v 显示详细的处理过程

        选择参数

  • -S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
  • -V "-V<备份方式>"或"--version-control=<备份方式>"
  • --help 显示帮助信息
  • --version 显示版本信息

        实例

        给文件创建软链接,为test.txt文件创建软链接link,如果test.txt丢失,link将失效:

ln -s test.txt link

        给文件创建硬链接,为test.txt创建硬链接link,test.txt与llink的各项属性相同

ln test.txt link

mv 命令

        Linux mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。

        语法

mv [options] source dest
    mv [options] source... directory

        参数说明

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  • -n: 不要覆盖任何已存在的文件或目录。
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

        mv 参数设置与运行结果

命令格式

运行结果

mv source_file(文件) dest_file(文件)

将源文件名 source_file 改为目标文件名 dest_file

mv source_file(文件) dest_directory(目录)

将文件 source_file 移动到目标目录 dest_directory 中

mv source_directory(目录) dest_directory(目录)

目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory

mv source_directory(目录) dest_file(文件)

出错

        实例

        将文件 aaa 改名为 bbb :

mv aaa bbb

patch 命令

        Linux patch命令用于修补文件。

        patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。

        语法


patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>][-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>][-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]


        参数

  • -b或--backup  备份每一个原始文件。
  • -B<备份字首字符串>或--prefix=<备份字首字符串>  设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称。
  • -c或--context  把修补数据解译成关联性的差异。
  • -d<工作目录>或--directory=<工作目录>  设置工作目录。
  • -D<标示符号>或--ifdef=<标示符号>  用指定的符号把改变的地方标示出来。
  • -e或--ed  把修补数据解译成ed指令可用的叙述文件。
  • -E或--remove-empty-files  若修补过后输出的文件其内容是一片空白,则移除该文件。
  • -f或--force  此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新 版本。
  • -F<监别列数>或--fuzz<监别列数>  设置监别列数的最大值。
  • -g<控制数值>或--get=<控制数值>  设置以RSC或SCCS控制修补作业。
  • -i<修补文件>或--input=<修补文件>  读取指定的修补文件。
  • -l或--ignore-whitespace  忽略修补数据与输入数据的跳格,空格字符。
  • -n或--normal  把修补数据解译成一般性的差异。
  • -N或--forward  忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过。
  • -o<输出文件>或--output=<输出文件>  设置输出文件的名称,修补过的文件会以该名称存放。
  • -p<剥离层级>或--strip=<剥离层级>  设置欲剥离几层路径名称。
  • -f<拒绝文件>或--reject-file=<拒绝文件>  设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej。
  • -R或--reverse  假设修补数据是由新旧文件交换位置而产生。
  • -s或--quiet或--silent  不显示指令执行过程,除非发生错误。
  • -t或--batch  自动略过错误,不询问任何问题。
  • -T或--set-time  此参数的效果和指定"-Z"参数类似,但以本地时间为主。
  • -u或--unified  把修补数据解译成一致化的差异。
  • -v或--version  显示版本信息。
  • -V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串。
  • -Y<备份字首字符串>或--basename-prefix=--<备份字首字符串>  设置文件备份时,附加在文件基本名称开头的字首字符串。
  • -z<备份字尾字符串>或--suffix=<备份字尾字符串>  此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里。
  • -Z或--set-utc  把修补过的文件更改,存取时间设为UTC。
  • --backup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件。
  • --binary  以二进制模式读写数据,而不通过标准输出设备。
  • --help  在线帮助。
  • --nobackup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件。
  • --verbose  详细显示指令的执行过程。

        实例        

        使用patch指令将文件"testfile1"升级,其升级补丁文件为"testfile.patch",输入如下命令:

$ patch -p0 testfile1 testfile.patch    #使用补丁程序升级文件

rcp 命令

        Linux rcp命令用于复制远程文件或目录。

        rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。

        语法

rcp [-pr][源文件或目录][目标文件或目录]

        参数

        -p  保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。

        -r  递归处理,将指定目录下的文件与子目录一并处理。

        实例

        使用rcp指令复制远程文件到本地进行保存。

        设本地主机当前账户为rootlocal,远程主机账户为root,要将远程主机(218.6.132.5)主目录下的文件"testfile"复制到本地目录"test"中,则输入如下命令:

rcp root@218.6.132.5:./testfile testfile  #复制远程文件到本地  
    rcp root@218.6.132.5:home/rootlocal/testfile testfile  
    #要求当前登录账户cmd 登录到远程主机  
    rcp 218.6.132.5:./testfile testfile

        注意:指令"rcp"执行以后不会有返回信息,仅需要在目录"test"下查看是否存在文件"testfile"。若存在,则表示远程复制操作成功,否则远程复制操作失败。

rm 命令

        Linux rm(英文全拼:remove)命令用于删除一个文件或者目录。

        语法

rm [options] name...

        参数

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

        实例

        删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:

rm  test.txt

touch 命令

        Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

        ls -l 可以显示档案的时间记录。

        语法

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
  • 参数说明
  • a 改变档案的读取时间记录。
  • m 改变档案的修改时间记录。
  • c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
  • f 不使用,是为了与其他 unix 系统的相容性而保留。
  • r 使用参考档的时间记录,与 --file 的效果一样。
  • d 设定时间与日期,可以使用各种不同的格式。
  • t 设定档案的时间记录,格式与 date 指令相同。
  • --no-create 不会建立新档案。
  • --help 列出指令格式。
  • --version 列出版本讯息。

        实例

        使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:

touch testfile                #修改文件的时间属性

which 命令

        Linux which命令用于查找文件。        

        which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

        语法

which [文件...]

        参数

  • -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
  • -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。
  • -w  指定输出时栏位的宽度。
  • -V  显示版本信息。

        实例

        使用指令"which"查看指令"bash"的绝对路径,输入如下命令:

which bash

cp 命令

        Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。

        语法

cp [options] source dest
    cp [options] source... directory

        参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。

        实例

        使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下,输入如下命令:

cp –r test/ newtest


    注意:用户使用该指令复制目录时,必须使用参数 -r 或者 -R 。


scp 命令

        Linux scp 命令用于 Linux 之间复制文件和目录。

        scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

        scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

        语法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[user@]host1:]file1 [...] [[user@]host2:]file2

        简易写法:

scp [可选参数] file_source file_target

        参数说明:

  • -1: 强制scp命令使用协议ssh1
  • -2: 强制scp命令使用协议ssh2
  • -4: 强制scp命令只使用IPv4寻址
  • -6: 强制scp命令只使用IPv6寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

        实例

        1、从本地复制到远程

        命令格式:

scp local_file remote_username@remote_ip:remote_folder 
    scp local_file remote_username@remote_ip:remote_file 
    scp local_file remote_ip:remote_folder 
    scp local_file remote_ip:remote_file
  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

        应用实例:

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music 
    scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
    scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
    scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3

        复制目录命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder 
    scp -r local_folder remote_ip:remote_folder

        第1个指定了用户名,命令执行后需要再输入密码;

        第2个没有指定用户名,命令执行后需要输入用户名和密码;

        应用实例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
    scp -r /home/space/music/ www.runoob.com:/home/root/others/

        上面命令将本地 music 目录复制到远程 others 目录下。

        2、从远程复制到本地

        从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

        应用实例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
    scp -r www.runoob.com:/home/root/others/ /home/space/music/

        说明

        1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

#scp 命令使用端口号 4588
    scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

        2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。

read 命令

        Linux read命令用于从标准输入读取数值。

        read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

        语法

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

        参数说明:

  • -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
  • -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
  • -p 后面跟提示信息,即在输入前打印提示信息。
  • -e 在输入的时候可以使用命令补全功能。
  • -n 后跟一个数字,定义输入文本的长度,很实用。
  • -r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
  • -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
  • -t 后面跟秒数,定义输入字符的等待时间。
  • -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

        实例

        1、简单读取

#!/bin/bash

    #这里默认会换行  
    echo "输入网站名: "  
    #读取从键盘的输入  
    read website  
    echo "你输入的网站名是 $website"  
    exit 0  #退出

        测试结果为:

输入网站名: 
    www.runoob.com
    你输入的网站名是 www.runoob.com

        2、-p 参数,允许在 read 命令行中直接指定一个提示。

#!/bin/bash

    read -p "输入网站名:" website
    echo "你输入的网站名是 $website" 
    exit 0

        测试结果为:

输入网站名:www.runoob.com
    你输入的网站名是 www.runoob.com

        3、-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。

#!/bin/bash

    if read -t 5 -p "输入网站名:" website
    then
        echo "你输入的网站名是 $website"
    else
        echo "\n抱歉,你输入超时了。"
    fi
    exit 0

        执行程序不输入,等待 5 秒后:

输入网站名:
    抱歉,你输入超时了

        4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

#!/bin/bash

    read -n1 -p "Do you want to continue [Y/N]?" answer
    case $answer in
    Y | y)
      echo "fine ,continue";;
    N | n)
      echo "ok,good bye";;
    *)
     echo "error choice";;

    esac
    exit 0

        该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。

        5、-s 选项能够使 read 命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是 read 命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。 

#!/bin/bash

    read  -s  -p "请输入您的密码:" pass
    echo "\n您输入的密码是 $pass"
    exit 0

        执行程序输入密码后是不显示的:

请输入您的密码:
    您输入的密码是 runoob

        5.读取文件        

        每次调用 read 命令都会读取文件中的 "一行" 文本。当文件没有可读的行时,read 命令将以非零状态退出。

        通过什么样的方法将文件中的数据传给 read 呢?使用 cat 命令并通过管道将结果直接传送给包含 read 命令的 while 命令。

        测试文件 test.txt 内容如下:

123
    456
    runoob

        测试代码:

#!/bin/bash
  
    count=1    # 赋值语句,不加空格
    cat test.txt | while read line      # cat 命令的输出作为read命令的输入,read读到>的值放在line中
    do
       echo "Line $count:$line"
       count=$[ $count + 1 ]          # 注意中括号中的空格。
    done
    echo "finish"
    exit 0

        执行结果为:

Line 1:123
    Line 2:456
    Line 3:runoob
    finish

        使用 -e 参数,以下实例输入字符 a 后按下 Tab 键就会输出相关的文件名(该目录存在的):

$ read -e -p "输入文件名:" str 
    输入文件名:a
    a.out    a.py     a.pyc    abc.txt  
    输入文件名:a

grep 命令

        Linux grep 命令用于查找文件里符合条件的字符串。

        grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

        语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

        参数

  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 --count : 计算符合样式的列数。
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --invert-match : 显示不包含匹配文本的所有行。
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定"-i"参数相同。

        实例

        1、在当前目录中,查找所有文件中包含 “1”字符的文件,并打印出该字符串的行号。此时,可以使用如下命令:

grep -nR "1"

        结果如下所示:

test.txt:1:1234567890
    link:1:1234567890
    1.txt:1:i2c mw.l 0x69 0x70.0 0x2d3c0004 1
    1.txt:4:# mw.b 0x80000001 0x00
    1.txt:8:i2c mw.w 0x69 0x08.0 0x0000 1

sed 命令

        Linux sed 命令是利用脚本来处理文本文件。

        sed 可依照脚本的指令来处理、编辑文本文件。

        sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

        语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

        参数说明:

  • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或--help 显示帮助。
  • -n或--quiet或--silent 仅显示script处理后的结果。
  • -V或--version 显示版本信息。

        动作说明

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!

        实例

        我们先创建一个 testfile 文件,内容如下:

$ cat testfile #查看testfile 中的内容  
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test 
    Google
    Taobao
    Runoob
    Tesetfile
    Wiki

        在 testfile 文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:

sed -e 4a\newLine testfile

        使用 sed 命令后,输出结果如下:

$ sed -e 4a\newLine testfile 
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test 
    newLine
    Google
    Taobao
    Runoob
    Tesetfile
    Wiki

        以行为单位的新增/删除

        将 testfile 的内容列出并且列印行号,同时,请将第 2~5 行删除!

$ nl testfile | sed '2,5d'
         1  HELLO LINUX!  
         6  Taobao
         7  Runoob
         8  Tesetfile
         9  Wiki

        sed 的动作为 2,5d,那个 d 是删除的意思,因为删除了 2-5 行,所以显示的数据就没有 2-5 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!

        在第二行后(即加在第三行) 加上drink tea? 字样:

$ nl testfile | sed '2a drink tea'
         1  HELLO LINUX!  
         2  Linux is a free unix-type opterating system.  
    drink tea
         3  This is a linux testfile!  
         4  Linux test 
         5  Google
         6  Taobao
         7  Runoob
         8  Tesetfile
         9  Wiki

        以行为单位的替换与显示

        将第 2-5 行的内容取代成为 No 2-5 number 呢?

$ nl testfile | sed '2,5c No 2-5 number'
         1  HELLO LINUX!  
    No 2-5 number
         6  Taobao
         7  Runoob
         8  Tesetfile
         9  Wiki

        透过这个方法我们就能够将数据整行取代了。

        数据的搜寻并删除

        删除 testfile 所有包含 oo 的行,其他行输出

$ nl testfile | sed  '/oo/d'
         1  HELLO LINUX!  
         2  Linux is a free unix-type opterating system.  
         3  This is a linux testfile!  
         4  Linux test 
         6  Taobao
         8  Tesetfile
         9  Wiki

        数据的查找与替换

        除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的查找与替换。

        sed 的查找与替换的与 vi 命令类似,语法格式如下:

sed 's/要被取代的字串/新的字串/g'

        将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换,然后将该文件内容输出到标准输出:

sed -e 's/oo/kk/' testfile

        g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件:

sed -e 's/oo/kk/g' testfile

        选项 i 使 sed 修改文件:

sed -i 's/oo/kk/g' testfile

        批量操作当前目录下以 test 开头的文件:

sed -i 's/oo/kk/g' ./test*

        sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!

expr 命令

        expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。

        语法

expr 表达式

        表达式说明:

  • 用空格隔开每个项;
  • 用反斜杠 \ 放在 shell 特定的字符前面;
  • 对包含空格和其他特殊字符的字符串要用引号括起来

        实例

        1、计算字串长度

> expr length “this is a test”
     14

        2、抓取字串

> expr substr “this is a test” 3 5
    is is

        3、抓取第一个字符数字串出现的位置

> expr index "sarasara"  a
     2

        4、整数运算

> expr 14 % 9
     5
     > expr 10 + 10
     20
     > expr 1000 + 900
     1900
     > expr 30 / 3 / 2
     5
     > expr 30 \* 3 (使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义)
     90
     > expr 30 * 3
     expr: Syntax error

let 命令

        let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。

        语法格式

let arg [arg ...]

        参数说明:

        arg:要执行的表达式

        实例:

        自加操作:let no++

        自减操作:let no--

        简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20

        以下实例计算 a 和 b 两个表达式,并输出结果:

#!/bin/bash

    let a=5+4
    let b=9-3 
    echo $a $b

cd 命令

        Linux cd(英文全拼:change directory)命令用于切换当前工作目录。

        其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

        另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。

        语法

cd [dirName]
  • dirName:要切换的目标目录。

        实例

        进入目录 /usr/bin/ :

cd /usr/bin

        跳到自己的 home 目录 :

cd ~

        跳到目前目录的上上两层 :

cd ../..

df 命令

        Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

        语法

df [选项]... [FILE]...
  • 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
  • 文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
  • 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
  • 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
  • 文件-k, --kilobytes 就像是 --block-size=1024
  • 文件-l, --local 限制列出的文件结构
  • 文件-m, --megabytes 就像 --block-size=1048576
  • 文件--no-sync 取得资讯前不 sync (预设值)
  • 文件-P, --portability 使用 POSIX 输出格式
  • 文件--sync 在取得资讯前 sync
  • 文件-t, --type=TYPE 限制列出文件系统的 TYPE
  • 文件-T, --print-type 显示文件系统的形式
  • 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • 文件-v (忽略)
  • 文件--help 显示这个帮手并且离开
  • 文件--version 输出版本资讯并且离开

        实例

        显示文件系统的磁盘使用情况统计,以方便读取的形式:

df -h 
    Filesystem      Size  Used   Avail Use% Mounted on 
    /dev/sda6       29G   4.2G   23G   16%     / 
    udev            1.5G  4.0K   1.5G   1%     /dev 
    tmpfs           604M  892K   603M   1%     /run 
    none            5.0M     0   5.0M   0%     /run/lock 
    none            1.5G  156K   1.5G   1%     /run/shm

du 命令

        Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。

        du 会显示指定的目录或文件所占用的磁盘空间。

        语法

du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]

        参数说明

  • -a或-all 显示目录中个别文件的大小。
  • -b或-bytes 显示目录或文件大小时,以byte为单位。
  • -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -D或--dereference-args 显示指定符号连接的源文件大小。
  • -h或--human-readable 以K,M,G为单位,提高信息的可读性。
  • -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
  • -k或--kilobytes 以1024 bytes为单位。
  • -l或--count-links 重复计算硬件连接的文件。
  • -L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
  • -m或--megabytes 以1MB为单位。
  • -s或--summarize 仅显示总计。
  • -S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
  • -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
  • --exclude=<目录或文件> 略过指定的目录或文件。
  • --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
  • --help 显示帮助。
  • --version 显示版本信息。

        实例

        方便阅读的格式显示test目录所占空间情况:

du -h test
    608K    test/test6
    308K    test/test4
    4.0K    test/scf/lib
    4.0K    test/scf/service/deploy/product
    4.0K    test/scf/service/deploy/info
    12K     test/scf/service/deploy
    16K     test/scf/service
    4.0K    test/scf/doc
    4.0K    test/scf/bin
    32K     test/scf
    8.0K    test/test3
    1.3M    test

mkdir 命令

        Linux mkdir(英文全拼:make directory)命令用于创建目录。

        语法

mkdir [-p] dirName

        参数说明

  • -p 确保目录名称存在,不存在的就建一个。

        实例

        在工作目录下的 runoob2 目录中,建立一个名为 test 的子目录。

        若 runoob2 目录原本不存在,则建立一个。(注:本例若不加 -p 参数,且原本 runoob2 目录不存在,则产生错误。)

mkdir -p runoob2/test

pwd 命令

        Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。

        执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。

        语法

pwd [--help][--version]

        参数说明:

  • --help 在线帮助。
  • --version 显示版本信息。

        实例

        查看当前所在目录:

pwd
    /root/test           #输出结果

mount 命令

        Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。

        语法

mount [-hV]
    mount -a [-fFnrsvw] [-t vfstype]
    mount [-fnrsvw] [-o options [,...]] device | dir
    mount [-fnrsvw] [-t vfstype] [-o options] device dir

        参数说明:

  • -V:显示程序版本
  • -h:显示辅助讯息
  • -v:显示较讯息,通常和 -f 用来除错。
  • -a:将 /etc/fstab 中定义的所有档案系统挂上。
  • -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
  • -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
  • -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
  • -r:等于 -o ro
  • -w:等于 -o rw
  • -L:将含有特定标签的硬盘分割挂上。
  • -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
  • -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
  • -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
  • -o sync:在同步模式下执行。
  • -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
  • -o auto、-o noauto:打开/关闭自动挂上模式。
  • -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
  • -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
  • -o suid、-o nosuid:
  • 允许执行档在 root 权限下执行。
  • -o user、-o nouser:使用者可以执行 mount/umount 的动作。
  • -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
  • -o ro:用唯读模式挂上。
  • -o rw:用可读写模式挂上。
  • -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。

        实例

        将 /dev/hda1 挂在 /mnt 之下。

mount /dev/hda1 /mnt

stat 命令

        Linux stat 命令用于显示 inode 内容。

        stat 以文字的格式来显示 inode 的内容。

        语法

stat [文件或目录]

        实例

        查看 testfile 文件的inode内容内容,可以用以下命令:

stat testfile

        执行以上命令输出结果:

$ stat testfile                #输入命令
      File: `testfile'
      Size: 102             Blocks: 8          IO Block: 4096   regular file
    Device: 807h/2055d      Inode: 1265161     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2014-08-13 14:07:20.000000000 +0800
    Modify: 2014-08-13 14:07:07.000000000 +0800
    Change: 2014-08-13 14:07:07.000000000 +0800

tree 命令

        Linux tree命令用于以树状图列出目录的内容。

        执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

        语法

tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]

        参数说明

  • -a 显示所有文件和目录。
  • -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
  • -C 在文件和目录清单加上色彩,便于区分各种类型。
  • -d 显示目录名称而非内容。
  • -D 列出文件或目录的更改时间。
  • -f 在每个文件或目录之前,显示完整的相对路径名称。
  • -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
  • -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
  • -i 不以阶梯状列出文件或目录名称。
  • -L level 限制目录显示层级。
  • -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
  • -n 不在文件和目录清单加上色彩。
  • -N 直接列出文件和目录名称,包括控制字符。
  • -p 列出权限标示。
  • -P<范本样式> 只显示符合范本样式的文件或目录名称。
  • -q 用"?"号取代控制字符,列出文件和目录名称。
  • -s 列出文件或目录大小。
  • -t 用文件和目录的更改时间排序。
  • -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
  • -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

        实例

        以树状图列出当前目录结构。可直接使用如下命令:

tree

umount 命令

        Linux umount(英文全拼:unmount)命令用于卸除文件系统。

        umount可卸除目前挂在Linux目录中的文件系统。

        语法

umount [-ahnrvV][-t <文件系统类型>][文件系统]

        参数

  • -a 卸除/etc/mtab中记录的所有文件系统。
  • -h 显示帮助。
  • -n 卸除时不要将信息存入/etc/mtab文件中。
  • -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
  • -t<文件系统类型> 仅卸除选项中所指定的文件系统。
  • -v 执行时显示详细的信息。
  • -V 显示版本信息。
  • [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。

        实例

        下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:

$ umount -v /dev/sda1          通过设备名卸载  
    /dev/sda1 umounted  
    $ umount -v /mnt/mymount/      通过挂载点卸载  
    /tmp/diskboot.img umounted

        如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:

$ umount -v /mnt/mymount/  
    umount: /mnt/mymount: device is busy  
    umount: /mnt/mymount: device is busy

ls 命令

        Linux ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

        语法

ls [-alrtAFR] [name...]

        参数 :

  • -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R 若目录下有文件,则以下之文件亦皆依序列出

        实例

        列出根目录(\)下的所有目录:

$ ls /
    bin               dev   lib         media  net   root     srv  upload  www
    boot              etc   lib64       misc   opt   sbin     sys  usr
    home  lost+found  mnt    proc  selinux  tmp  var

        列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 :

ls -ltr s*

        将 /bin 目录以下所有目录及文件详细资料列出 :

ls -lR /bin

        列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :

ls -AF

dd 命令

        Linux dd 命令用于读取、转换并输出数据。

        dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

        参数说明:

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。
  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。
  • ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes:同时设置读入/输出的块大小为bytes个字节。
  • cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
  • skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
  • seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
  • count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
  • conv=<关键字>,关键字可以有以下11种:
  • conversion:用指定的参数转换文件。
  • ascii:转换ebcdic为ascii
  • ebcdic:转换ascii为ebcdic
  • ibm:转换ascii为alternate ebcdic
  • block:把每一行转换为长度为cbs,不足部分用空格填充
  • unblock:使每一行的长度都为cbs,不足部分用空格填充
  • lcase:把大写字符转换为小写字符
  • ucase:把小写字符转换为大写字符
  • swap:交换输入的每对字节
  • noerror:出错时不停止
  • notrunc:不截短输出文件
  • sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
  • --help:显示帮助信息
  • --version:显示版本信息

        实例

        在Linux 下制作启动盘,可使用如下命令:

dd if=boot.img of=/dev/fd0 bs=1440k

sync 命令

        Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。

        Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。

        语法

sync

fdisk 命令

        Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。

        语法

fdisk [必要参数][选择参数]

必要参数:

  • -l 列出素所有分区表
  • -u 与 -l 搭配使用,显示分区数目

选择参数:

  • -s<分区编号> 指定分区
  • -v 版本信息

菜单操作说明

  • m :显示菜单和帮助信息
  • a :活动分区标记/引导分区
  • d :删除分区
  • l :显示分区类型
  • n :新建分区
  • p :显示分区信息
  • q :退出不保存
  • t :设置分区号
  • v :进行分区检查
  • w :保存修改
  • x :扩展应用,高级功能

        实例

        显示当前分区情况:

$ fdisk -l

    Disk /dev/sda: 10.7 GB, 10737418240 bytes
    255 heads, 63 sectors/track, 1305 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot   Start     End   Blocks  Id System
    /dev/sda1  *      1     13   104391  83 Linux
    /dev/sda2       14    1305  10377990  8e Linux LVM

    Disk /dev/sdb: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Disk /dev/sdb doesn't contain a valid partition table

mkfs 命令

        Linux mkfs(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。

        使用方式 :

mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

        参数 

  • device : 预备检查的硬盘分区,例如:/dev/sda1
  • -V : 详细显示模式
  • -t : 给定档案系统的型式,Linux 的预设值为 ext2
  • -c : 在制做档案系统前,检查该partition 是否有坏轨
  • -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
  • block : 给定 block 的大小

        实例

        在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :

mkfs -V -t msdos -c /dev/hda5

        将sda6分区格式化为ext3格式

mkfs -t ext3 /dev/sda6

telnet 命令

        Linux telnet命令用于远端登入。

        执行telnet指令开启终端机阶段作业,并登入远端主机。

        语法

telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]

        参数说明

  • -8 允许使用8位字符资料,包括输入与输出。
  • -a 尝试自动登入远端系统。
  • -b<主机别名> 使用别名指定远端主机名称。
  • -c 不读取用户专属目录里的.telnetrc文件。
  • -d 启动排错模式。
  • -e<脱离字符> 设置脱离字符。
  • -E 滤除脱离字符。
  • -f 此参数的效果和指定"-F"参数相同。
  • -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
  • -k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
  • -K 不自动登入远端主机。
  • -l<用户名称> 指定要登入远端主机的用户名称。
  • -L 允许输出8位字符资料。
  • -n<记录文件> 指定文件记录相关信息。
  • -r 使用类似rlogin指令的用户界面。
  • -S<服务类型> 设置telnet连线所需的IP TOS信息。
  • -x 假设主机有支持数据加密的功能,就使用它。
  • -X<认证形态> 关闭指定的认证形态。

        实例

        登录远程主机/,登录IP为 192.168.0.5 的远程主机

telnet 192.168.0.5

ifconfig 命令

        Linux ifconfig命令用于显示或设置网络设备。

        ifconfig可设置网络设备的状态,或是显示目前的设置。

        语法

ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]

        参数说明

  • add<地址> 设置网络设备IPv6的IP地址。
  • del<地址> 删除网络设备IPv6的IP地址。
  • down 关闭指定的网络设备。
  • <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
  • io_addr<I/O地址> 设置网络设备的I/O地址。
  • irq<IRQ地址> 设置网络设备的IRQ。
  • media<网络媒介类型> 设置网络设备的媒介类型。
  • mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
  • metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
  • mtu<字节> 设置网络设备的MTU。
  • netmask<子网掩码> 设置网络设备的子网掩码。
  • tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
  • up 启动指定的网络设备。
  • -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
  • -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
  • -promisc 关闭或启动指定网络设备的promiscuous模式。
  • [IP地址] 指定网络设备的IP地址。
  • [网络设备] 指定网络设备的名称。

        实例

        显示网络设备信息

$ ifconfig        
    eth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C 
         inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
         inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
         RX packets:172220 errors:0 dropped:0 overruns:0 frame:0
         TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)
         Interrupt:185 Base address:0x2024 

    lo    Link encap:Local Loopback 
         inet addr:127.0.0.1 Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING MTU:16436 Metric:1
         RX packets:2022 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)

        启动关闭指定网卡

$ ifconfig eth0 down
    $ ifconfig eth0 up

        为网卡配置和删除IPv6地址

$ ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址
    $ ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址

        用ifconfig修改MAC地址

$ ifconfig eth0 down //关闭网卡
    $ ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
    $ ifconfig eth0 up //启动网卡
    $ ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址 
    $ ifconfig eth1 up //启动网卡

        配置IP地址

$ ifconfig eth0 192.168.1.56 
    //给eth0网卡配置IP地址
    $ ifconfig eth0 192.168.1.56 netmask 255.255.255.0 
    // 给eth0网卡配置IP地址,并加上子掩码
    $ ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
    // 给eth0网卡配置IP地址,加上子掩码,加上个广播地址

        启用和关闭ARP协议

$ ifconfig eth0 arp  //开启
    $ ifconfig eth0 -arp  //关闭

        设置最大传输单元

$ ifconfig eth0 mtu 1500 
    //设置能通过的最大数据包大小为 1500 bytes

ping 命令

        Linux ping 命令用于检测主机。

        执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

        语法

ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

        参数说明

  • -d 使用Socket的SO_DEBUG功能。
  • -c <完成次数> 设置完成要求回应的次数。
  • -f 极限检测。
  • -i<间隔秒数> 指定收发信息的间隔时间。
  • -I<网络界面> 使用指定的网络接口送出数据包。
  • -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
  • -n 只输出数值。
  • -p<范本样式> 设置填满数据包的范本样式。
  • -q 不显示指令执行过程,开头和结尾的相关信息除外。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -R 记录路由过程。
  • -s<数据包大小> 设置数据包的大小。
  • -t<存活数值> 设置存活数值TTL的大小。
  • -v 详细显示指令的执行过程。
  • -w <deadline> 在 deadline 秒后退出。
  • -W <timeout> 在等待 timeout 秒后开始执行。

        实例

        检测是否与主机连通

$ ping www.runoob.com //ping主机
    PING aries.m.alikunlun.com (114.80.174.110) 56(84) bytes of data.
    64 bytes from 114.80.174.110: icmp_seq=1 ttl=64 time=0.025 ms
    64 bytes from 114.80.174.110: icmp_seq=2 ttl=64 time=0.036 ms
    64 bytes from 114.80.174.110: icmp_seq=3 ttl=64 time=0.034 ms
    64 bytes from 114.80.174.110: icmp_seq=4 ttl=64 time=0.034 ms
    64 bytes from 114.80.174.110: icmp_seq=5 ttl=64 time=0.028 ms
    64 bytes from 114.80.174.110: icmp_seq=6 ttl=64 time=0.028 ms
    64 bytes from 114.80.174.110: icmp_seq=7 ttl=64 time=0.034 ms
    64 bytes from 114.80.174.110: icmp_seq=8 ttl=64 time=0.034 ms
    64 bytes from 114.80.174.110: icmp_seq=9 ttl=64 time=0.036 ms
    64 bytes from 114.80.174.110: icmp_seq=10 ttl=64 time=0.041 ms

    --- aries.m.alikunlun.com ping statistics ---
    10 packets transmitted, 30 received, 0% packet loss, time 29246ms
    rtt min/avg/max/mdev = 0.021/0.035/0.078/0.011 ms

    //需要手动终止Ctrl+C

date 命令

        Linux date 命令可以用来显示或设定系统的日期与时间。

        语法

date [OPTION]... [+FORMAT]
    date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

        可选参数

  • -d, --date=STRING:通过字符串显示时间格式,字符串不能是'now'。
  • -f, --file=DATEFILE:类似于--date; 一次从DATEFILE处理一行。
  • -I[FMT], --iso-8601[=FMT]:按照 ISO 8601 格式输出时间,FMT 可以为'date'(默认),'hours','minutes','seconds','ns'。 可用于设置日期和时间的精度,例如:2006-08-14T02:34:56-0600。
  • -R, --rfc-2822 : 按照 RFC 5322 格式输出时间和日期,例如: Mon, 14 Aug 2006 02:34:56 -0600。
  • --rfc-3339=FMT:按照 RFC 3339 格式输出,FMT 可以为'date', 'seconds','ns'中的一个,可用于设置日期和时间的精度, 例如:2006-08-14 02:34:56-06:00。
  • -r, --reference=FILE:显示文件的上次修改时间。
  • -s, --set=STRING:根据字符串设置系统时间。
  • -u, --utc, --universal:显示或设置协调世界时(UTC)。
  • --help:显示帮助信息。
  • --version:输出版本信息。

        FORMAT 参数

        在显示方面,使用者可以设定欲显示的格式 ,格式设定为一个加号后接数个标记,其中可用的标记列表如下:

%%   输出字符 %
    %a   星期几的缩写 (Sun..Sat)
    %A   星期的完整名称(Sunday..Saturday)。 
    %b   缩写的月份名称(例如,Jan)
    %B   完整的月份名称(例如,January)
    %c   本地日期和时间(例如,Thu Mar  3 23:05:25 2005)
    %C   世纪,和%Y类似,但是省略后两位(例如,20)
    %d   日 (01..31)
    %D   日期,等价于%m/%d/%y
    %e   一月中的一天,格式使用空格填充,等价于%_d
    %F   完整的日期;等价于 %Y-%m-%d
    %g   ISO 标准计数周的年份的最后两位数字
    %G   ISO 标准计数周的年份,通常只对%V有用
    %h   等价于 %b
    %H   小时 (00..23)
    %I   小时 (01..12)
    %j   一年中的第几天 (001..366)
    %k   小时,使用空格填充 ( 0..23); 等价于 %_H
    %l   小时, 使用空格填充 ( 1..12); 等价于 %_I
    %m   月份 (01..12)
    %M   分钟 (00..59)
    %n   新的一行,换行符
    %N   纳秒 (000000000..999999999)
    %p   用于表示当地的AM或PM,如果未知则为空白
    %P   类似 %p, 但是是小写的
    %r   本地的 12 小时制时间(例如 11:11:04 PM)
    %R   24 小时制 的小时与分钟; 等价于 %H:%M
    %s   自 1970-01-01 00:00:00 UTC 到现在的秒数
    %S   秒 (00..60)
    %t   插入水平制表符 tab
    %T   时间; 等价于 %H:%M:%S
    %u   一周中的一天 (1..7); 1 表示星期一
    %U   一年中的第几周,周日作为一周的起始 (00..53)
    %V   ISO 标准计数周,该方法将周一作为一周的起始 (01..53)
    %w   一周中的一天(0..6),0代表星期天
    %W   一年中的第几周,周一作为一周的起始(00..53)
    %x   本地的日期格式(例如,12/31/99)
    %X   本地的日期格式(例如,23:13:48)
    %y   年份后两位数字 (00..99)
    %Y   年
    %z   +hhmm 格式的数值化时区格式(例如,-0400)
    %:z  +hh:mm 格式的数值化时区格式(例如,-04:00)
    %::z  +hh:mm:ss格式的数值化时区格式(例如,-04:00:00)
    %:::z  数值化时区格式,相比上一个格式增加':'以显示必要的精度(例如,-04,+05:30)
    %Z  时区缩写 (如 EDT)

        若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

        当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

        当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

        实例

        显示当前时间

$ date
    Tue May 24 09:29:43 CST 2022
    $ date '+%c' 
    Tue 24 May 2022 09:30:03 AM CST
    $ date '+%D' //显示完整的时间
    05/24/22
    $ date '+%x' //显示数字日期
    05/24/2022
    $ date '+%T' //显示日期,年份用四位数表示
    14:09:31
    $ date '+%X' //显示24小时的格式
    09:31:31 AM

        格式化输出:

$ date +"%Y-%m-%d"
    2009-12-07

        输出昨天日期:

$ date -d "1 day ago" +"%Y-%m-%d"
    2012-11-19

        输出 2 秒后的时间:

$ date -d "2 second" +"%Y-%m-%d %H:%M.%S"
    2012-11-20 14:21.31

        时间格式转换:

$ date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
    2009/12/12 00:00.00

exit 命令

        Linux exit命令用于退出目前的shell。

        执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。exit也可用在script,离开正在执行的script,回到shell。

        语法

exit [状态值]

        实例

        退出终端

$ exit

sleep 命令

        Linux sleep命令可以用来将目前动作延迟一段时间。

        使用权限:所有使用者。

        语法


        sleep [--help] [--version] number[smhd]


        参数说明

  • --help : 显示辅助讯息
  • --version : 显示版本编号
  • number : 时间长度,后面可接 s、m、h 或 d
  • 其中 s 为秒,m 为 分钟,h 为小时,d 为日数

        实例

        休眠5分钟        

$ sleep 5m

        显示目前时间后延迟 1 分钟,之后再次显示时间

date;sleep 1m;date

kill 命令

        Linux kill 命令用于删除执行中的程序或工作。

        kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。

        语法

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

        参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。
  • [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

        使用 kill -l 命令列出所有可用信号。

        最常用的信号是:

  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。

        实例

        彻底杀死进程

$ kill -9 123456

        显示信号

$ kill -l
    1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
    6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
    11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
    16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
    21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
    26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
    31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
    38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
    43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
    48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
    53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
    58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
    63) SIGRTMAX-1    64) SIGRTMAX

        杀死指定用户所有进程

$ kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 
    $ kill -u hnlinux //方法二

ps 命令

        Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

        语法

ps [options] [--help]

        参数

  • ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
  • -A 列出所有的进程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的进程
  • au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
  • D: 无法中断的休眠状态 (通常 IO 的进程)
  • R: 正在执行中
  • S: 静止状态
  • T: 暂停执行
  • Z: 不存在但暂时无法消除
  • W: 没有足够的记忆体分页可分配
  • <: 高优先序的行程
  • N: 低优先序的行程
  • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

        实例

        显示进程信息:

$ ps -A

        显示指定用户信息

$ ps -u root //显示root进程用户信息

top 命令

        Linux top命令用于实时显示 process 的动态。

        使用权限:所有使用者。

        语法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

        参数说明

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
  • S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
  • s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
  • n : 更新的次数,完成后将会退出 top
  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

        实例

        显示进程信息

$ top

pstree 命令

        Linux pstree(英文全称:display a tree of processes)) 命令将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。

使用权限:所有使用者。

        语法

pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]

        参数说明

  • -a 显示该进程的完整指令及参数, 如果是被记忆体置换出去的进程则会加上括号
  • -c 如果有重覆的进程名, 则分开列出(预设值是会在前面加上 *)

        实例

        显示进程的关系

pstree

reboot 命令

        Linux reboot命令用于用来重新启动计算机。

        若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代

        语法

reboot [-n] [-w] [-d] [-f] [-i]

        参数

  • -n : 在重开机前不做将记忆体资料写回硬盘的动作
  • -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
  • -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
  • -f : 强迫重开机,不呼叫 shutdown 这个指令
  • -i : 在重开机之前先把所有网络相关的装置先停止

        实例

        重新启动

$ reboot

sudo 命令

        Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

        使用权限:在 /etc/sudoers 中有出现的使用者。

        语法

sudo command

        参数说明

  • -V 显示版本编号
  • -h 会显示版本编号及指令的使用方式说明
  • -l 显示出自己(执行 sudo 的使用者)的权限
  • -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
  • -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
  • -b 将要执行的指令放在背景执行
  • -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
  • -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
  • -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
  • -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
  • command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

        实例

        sudo命令使用

$ sudo ls
    [sudo] password for hnlinux: 
    hnlinux is not in the sudoers file. This incident will be reported.

        切换至root用户执行命令

$ sudo su

        切换回user用户执行命令

$ su user

uname 命令

        Linux uname(英文全拼:unix name)命令用于显示系统信息。

        uname 可显示电脑以及操作系统的相关信息。

        语法

uname [-amnrsv][--help][--version]

        参数说明

  • -a或--all  显示全部的信息。
  • -m或--machine  显示电脑类型。
  • -n或--nodename  显示在网络上的主机名称。
  • -r或--release  显示操作系统的发行编号。
  • -s或--sysname  显示操作系统名称。
  • -v  显示操作系统的版本。
  • --help  显示帮助。
  • --version  显示版本信息。

        实例

        显示系统信息:

$ uname -a
    Linux iZbp19byk2t6khuqj437q6Z 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

        显示计算机类型:

$ uname -m
    x86_64

        显示计算机名:

$ uname -n
    runoob-linux

        显示操作系统发行编号:

$ uname -r
    4.11.0-14-generic

        显示操作系统名称:

$ uname -s
    Linux

        显示系统版本与时间:

$ uname -v
    #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017

free 命令

        Linux free命令用于显示内存状态。

        free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

        语法

free [-bkmotV][-s <间隔秒数>]

        参数说明

  • -b  以Byte为单位显示内存使用情况。
  • -k  以KB为单位显示内存使用情况。
  • -m  以MB为单位显示内存使用情况。
  • -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有: B = bytes K = kilos M = megas G = gigas T = teras
  • -o  不显示缓冲区调节列。
  • -s<间隔秒数>  持续观察内存使用状况。
  • -t  显示内存总和列。
  • -V  显示版本信息。

        实例

        显示内存使用情况

$ free //显示内存使用信息
    total used free shared buffers cached
    Mem: 254772 184568 70204 0 5692 89892
    -/+ buffers/cache: 88984 165788
    Swap: 524280 65116 459164

clear 命令

        Linux clear命令用于清除屏幕。

        语法

clear

        实例

        清屏

$ clear

depmod 命令

        Linux depmod命令用于分析可载入模块的相依性。

        depmod(depend module)可检测模块的相依性,供modprobe在安装模块时使用。

        语法

depmod [-adeisvV][-m <文件>][--help][模块名称]

        参数说明

  • -a或--all  分析所有可用的模块。
  • -d或debug  执行排错模式。
  • -e  输出无法参照的符号。
  • -i  不检查符号表的版本。
  • -m<文件>或system-map<文件>  使用指定的符号表文件。
  • -s或--system-log  在系统记录中记录错误。
  • -v或--verbose  执行时显示详细的信息。
  • -V或--version  显示版本信息。
  • --help  显示帮助。

        实例

        显示可用模块

$ depmod -a //显示可用模块

dmesg 命令

        Linux dmesg(英文全称:display message)命令用于显示开机信息。

        kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。

        语法

dmesg [-cn][-s <缓冲区大小>]

        参数说明

  • -c  显示信息后,清除 ring buffer 中的内容。
  • -s<缓冲区大小>  预设置为 8196,刚好等于 ring buffer 的大小。
  • -n  设置记录信息的层级。

        实例

        显示开机信息

$ dmesg |less

export 命令

        Linux export 命令用于设置或显示环境变量。

        在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

        语法

export [-fnp][变量名称]=[变量设置值]

        参数说明

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。

        实例

        列出当前所有的环境变量

$ export -p //列出当前的环境变量值

定义环境变量赋值

$ export MYENV=7 //定义环境变量并赋值

insmod 命令

        Linux insmod(英文全拼:install module)命令用于载入模块。

        Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。

        语法

insmod [-fkmpsvxX][-o <模块名称>][模块文件][符号名称 = 符号值]

        参数说明

  • -f  不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
  • -k  将模块设置为自动卸除。
  • -m  输出模块的载入信息。
  • -o<模块名称>  指定模块的名称,可使用模块文件的文件名。
  • -p  测试模块是否能正确地载入kernel。
  • -s  将所有信息记录在系统记录文件中。
  • -v  执行时显示详细的信息。
  • -x  不要汇出模块的外部符号。
  • -X  汇出模块所有的外部符号,此为预设置。

        实例

        加载模块

$ insmod led.o //向内核加载模块

lsmod 命令

        Linux lsmod(英文全拼:list modules)命令用于显示已载入系统的模块。

        执行 lsmod 指令,会列出所有已载入系统的模块。Linux 操作系统的核心具有模块化的特性,因此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。

        语法

lsmod

        实例

        显示模块信息

$ lsmod

modprobe 命令

        Linux modprobe命令用于自动处理可载入模块。

        modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

        语法

modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]

        参数

  • -a或--all  载入全部的模块。
  • -c或--show-conf  显示所有模块的设置信息。
  • -d或--debug  使用排错模式。
  • -l或--list  显示可用的模块。
  • -r或--remove  模块闲置不用时,即自动卸载模块。
  • -t或--type  指定模块类型。
  • -v或--verbose  执行时显示详细的信息。
  • -V或--version  显示版本信息。
  • -help  显示帮助。

        实例

        安装软驱模块:

$ modprobe -v test.ko

        卸载软驱模块:

$ modprobe -v -r test.ko

rmmod 命令

        Linux rmmod(英文全拼:remove module)命令用于删除模块。

        执行 rmmod 指令,可删除不需要的模块。Linux 操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。

        语法

rmmod [-as][模块名称...]

        参数

  • -a  删除所有目前不需要的模块。
  • -s  把信息输出至syslog常驻服务,而非终端机界面。

        实例

        卸载模块

$ rmmod -v pppoe //卸载模块pppoe
    Checking ppoe for persistent data

hwclock 命令

        Linux hwclock命令用于显示与设定硬件时钟。

        在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

        语法

hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test][--utc][--version][--set --date=<日期与时间>]

        参数

  • --adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
  • --debug  显示hwclock执行时详细的信息。
  • --directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
  • --hctosys  将系统时钟调整为与目前的硬件时钟一致。
  • --set --date=<日期与时间>  设定硬件时钟。
  • --show  显示硬件时钟的时间与日期。
  • --systohc  将硬件时钟调整为与目前的系统时钟一致。
  • --test  仅测试程序,而不会实际更改硬件时钟。
  • --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
  • --version  显示版本信息。

        实例

        显示当前时间

$ hwclock 
    2010年05月27日 星期四 18时04分31秒 -0.704214 seconds

bzip2 命令

        Linux bzip2命令是.bz2文件的压缩程序。

        bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

        语法

bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

        参数

  • -c或--stdout  将压缩与解压缩的结果送到标准输出。
  • -d或--decompress  执行解压缩。
  • -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。
  • -h或--help  显示帮助。
  • -k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
  • -s或--small  降低程序执行时内存的使用量。
  • -t或--test  测试.bz2压缩文件的完整性。
  • -v或--verbose  压缩或解压缩文件时,显示详细的信息。
  • -z或--compress  强制执行压缩。
  • -L,--license,
  • -V或--version  显示版本信息。
  • --repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。
  • --repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。
  • -压缩等级  压缩时的区块大小。

        实例

        解压.bz2文件

$ bzip2 -v temp.bz2 //解压文件显示详细处理信息

        压缩文件

$ bzip2 -c a.c b.c c.c

        检查文件完整性

$ bzip2 -t temp.bz2

gzip 命令

        Linux gzip命令用于压缩文件。

        gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。

        语法

gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]

        参数

  • -a或--ascii  使用ASCII文字模式。
  • -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
  • -d或--decompress或----uncompress  解开压缩文件。
  • -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
  • -h或--help  在线帮助。
  • -l或--list  列出压缩文件的相关信息。
  • -L或--license  显示版本与版权信息。
  • -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。
  • -N或--name  压缩文件时,保存原来的文件名称及时间戳记。
  • -q或--quiet  不显示警告信息。
  • -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。
  • -t或--test  测试压缩文件是否正确无误。
  • -v或--verbose  显示指令执行过程。
  • -V或--version  显示版本信息。
  • -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。
  • --best  此参数的效果和指定"-9"参数相同。
  • --fast  此参数的效果和指定"-1"参数相同。

        实例

        压缩文件

$ ls //显示当前目录文件
    a.c b.h d.cpp
    $ gzip * //压缩目录下的所有文件
    $ ls //显示当前目录文件
    a.c.gz    b.h.gz    d.cpp.gz

        接范例1, 列出详细的信息

$ gzip -dv * //解压文件,并列出详细信息
    a.c.gz:     0.0% -- replaced with a.c
    b.h.gz:     0.0% -- replaced with b.h
    d.cpp.gz:     0.0% -- replaced with d.cpp

接范例1,显示压缩文件的信息

$ gzip -l *
    compressed    uncompressed ratio uncompressed_name
        24          0  0.0% a.c
        24          0  0.0% b.h
        26          0  0.0% d.cpp

tar 命令

        Linux tar(英文全拼:tape archive )命令用于备份文件。

        tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

        语法

tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]

        参数

  • -A或--catenate 新增文件到已存在的备份文件。
  • -b<区块数目>或--blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
  • -B或--read-full-records 读取数据时重设区块大小。
  • -c或--create 建立新的备份文件。
  • -C<目的目录>或--directory=<目的目录> 切换到指定的目录。
  • -d或--diff或--compare 对比备份文件内和文件系统上的文件的差异。
  • -f<备份文件>或--file=<备份文件> 指定备份文件。
  • -F<Script文件>或--info-script=<Script文件> 每次更换磁带时,就执行指定的Script文件。
  • -g或--listed-incremental 处理GNU格式的大量备份。
  • -G或--incremental 处理旧的GNU格式的大量备份。
  • -h或--dereference 不建立符号连接,直接复制该连接所指向的原始文件。
  • -i或--ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
  • -k或--keep-old-files 解开备份文件时,不覆盖已有的文件。
  • -K<文件>或--starting-file=<文件> 从指定的文件开始还原。
  • -l或--one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
  • -L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
  • -m或--modification-time 还原文件时,不变更文件的更改时间。
  • -M或--multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
  • -N<日期格式>或--newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
  • -o或--old-archive或--portability 将资料写入备份文件时使用V7格式。
  • -O或--stdout 把从备份文件里还原的文件输出到标准输出设备。
  • -p或--same-permissions 用原来的文件权限还原文件。
  • -P或--absolute-names 文件名使用绝对名称,不移除文件名称前的"/"号。
  • -r或--append 新增文件到已存在的备份文件的结尾部分。
  • -R或--block-number 列出每个信息在备份文件中的区块编号。
  • -s或--same-order 还原文件的顺序和备份文件内的存放顺序相同。
  • -S或--sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
  • -t或--list 列出备份文件的内容。
  • -T<范本文件>或--files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
  • -u或--update 仅置换较备份文件内的文件更新的文件。
  • -U或--unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
  • -v或--verbose 显示指令执行过程。
  • -V<卷册名称>或--label=<卷册名称> 建立使用指定的卷册名称的备份文件。
  • -w或--interactive 遭遇问题时先询问用户。
  • -W或--verify 写入备份文件后,确认文件正确无误。
  • -x或--extract或--get 从备份文件中还原文件。
  • -X<范本文件>或--exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
  • -z或--gzip或--ungzip 通过gzip指令处理备份文件。
  • -Z或--compress或--uncompress 通过compress指令处理备份文件。
  • -<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。
  • --after-date=<日期时间> 此参数的效果和指定"-N"参数相同。
  • --atime-preserve 不变更文件的存取时间。
  • --backup=<备份方式>或--backup 移除文件前先进行备份。
  • --checkpoint 读取备份文件时列出目录名称。
  • --concatenate 此参数的效果和指定"-A"参数相同。
  • --confirmation 此参数的效果和指定"-w"参数相同。
  • --delete 从备份文件中删除指定的文件。
  • --exclude=<范本样式> 排除符合范本样式的文件。
  • --group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。
  • --help 在线帮助。
  • --ignore-failed-read 忽略数据读取错误,不中断程序的执行。
  • --new-volume-script=<Script文件> 此参数的效果和指定"-F"参数相同。
  • --newer-mtime 只保存更改过的文件。
  • --no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
  • --null 从null设备读取文件名称。
  • --numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。
  • --owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。
  • --posix 将数据写入备份文件时使用POSIX格式。
  • --preserve 此参数的效果和指定"-ps"参数相同。
  • --preserve-order 此参数的效果和指定"-A"参数相同。
  • --preserve-permissions 此参数的效果和指定"-p"参数相同。
  • --record-size=<区块数目> 此参数的效果和指定"-b"参数相同。
  • --recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
  • --remove-files 文件加入备份文件后,就将其删除。
  • --rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。
  • --same-owner 尝试以相同的文件拥有者还原文件。
  • --suffix=<备份字尾字符串> 移除文件前先行备份。
  • --totals 备份文件建立后,列出文件大小。
  • --use-compress-program=<执行指令> 通过指定的指令处理备份文件。
  • --version 显示版本信息。
  • --volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。

        实例

        压缩文件 非打包

$ touch a.c       
    $ tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
    a.c

        列出压缩文件内容

$ tar -tzvf test.tar.gz 
    -rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c

        解压文件

$ tar -xzvf test.tar.gz 
    a.c

ip 命令

        Linux ip 命令与 ifconfig 命令类似,但比 ifconfig 命令更加强大,主要功能是用于显示或设置网络设备。

        ip 命令是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令。

        语法

ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT 为常用对象,值可以是以下几种:

OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }

        常用对象的取值含义如下:

  • link:网络设备
  • address:设备上的协议(IP或IPv6)地址
  • addrlabel:协议地址选择的标签配置
  • route:路由表条目
  • rule:路由策略数据库中的规则

        OPTIONS 为常用选项,值可以是以下几种:

OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }

        常用选项的取值含义如下:

  • -V:显示命令的版本信息;
  • -s:输出更详细的信息;
  • -f:强制使用指定的协议族;
  • -4:指定使用的网络层协议是IPv4协议;
  • -6:指定使用的网络层协议是IPv6协议;
  • -0:输出信息每条记录输出一行,即使内容较多也不换行显示;
  • -r:显示主机时,不使用IP地址,而使用主机的域名。
  • help 为该命令的帮助信息。
    实例
ip link show                     # 显示网络接口信息
    ip link set eth0 up             # 开启网卡
    ip link set eth0 down            # 关闭网卡
    ip link set eth0 promisc on      # 开启网卡的混合模式
    ip link set eth0 promisc offi    # 关闭网卡的混个模式
    ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
    ip link set eth0 mtu 1400        # 设置网卡最大传输单元
    ip addr show     # 显示网卡IP信息
    ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
    ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址

    ip route show # 显示系统路由
    ip route add default via 192.168.1.254   # 设置系统默认路由
    ip route list                 # 查看路由信息
    ip route add 192.168.4.0/24  via  192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为    192.168.0.254,数据走eth0接口
    ip route add default via  192.168.0.254  dev eth0        # 设置默认网关为192.168.0.254
    ip route del 192.168.4.0/24   # 删除192.168.4.0网段的网关
    ip route del default          # 删除默认路由
    ip route delete 192.168.1.0/24 dev eth0 # 删除路由

其他命令

对于deb格式安装包,使用sudo dpkg -i xxx.deb进行安装
fdisk  磁盘分区 sudo fdisk /dev/sdb
    mkfs  磁盘格式化 sudo mkfs -t vfat /dev/sdb1
添加网关:route add default gw 192.168.xx.xx