Linux命令行的一般格式

命令 [长选项列表] [短选项列表] [参数列表]

其中,长选项是指以双横线引导的选项,如--verbose;短选项是指以单横线引导的单个字母,如-v,字母是大小写敏感的,而且不同的短选项可以合并成只使用一个短横线引导,例如-a -b可以合并成-ab的形式;参数是指前面没有短横线引导的字母或短语。

  1. pwd命令
    pwd用于显示用户当前的工作目录的绝对路径,所有用户对该命令都有使用权。该命令为

pwd

  1. cd命令
    cd命令的作用是进入到某个目录,所有用户对该命令都具有使用权限,该命令的一般语法格式为:

cd [目录名]

使用cd命令可将当前用户的当前工作目录移至cd命令中指定的目录。如果省略掉目录名,则返回到当前用户的主工作目录。如果要进入到当前工作目录的上一层父目录,可以使用下面的命令(cd与”..“之间必须要有空格):

cd ..

如果要进入当前工作目录的上一层父目录的父目录时,可以使用下面的命令:

cd ../..

  1. chmod改变文件的权限命令

使用格式:chmod [options] [--help] [--version] mode file...

说明:Linux/Unix的文件存取权限分为3级:文件拥有者、群组、其他。利用chmod命令可以控制文件如何被他人存取。

参数说明:

mode:权限设定字串,格式为:ugoa[rwxX]],其中,u表示该文件的拥有者,g表示与该文件拥有者所属的组,o表示其他人,a表示这3者都设置。+表示增加权限、-表示取消权限、=表示唯一设定权限。r表示可读取,w表示可写入,x表示可执行。

-c:该文件权限确实已经更改,才显示其更改动作。

-f:若该文件权限无法被更改,则不要显示其错误讯息。

-v:显示权限变更的详细资料。

-R:对所指定目录及其子目录下满足条件的文件进行权限变更(即以递归的方式逐个变更)。

--help:显示辅助说明。

--version:显示版本。

例如:

1)将文件file1.txt设为所有人皆可读取:

chmod ugo+r file1.txt或者chmod a+r file1.txt

2)将文件file1.txt和file2.txt设为该文件拥有者与其所属组可写入,但其他人不可写入:

chmod ug+w file1.txt file2.txt

chmod o-w file1.txt file2.txt

3)将ex1.py设定为只有该拥有者可以执行:

chmod u+x ex1.py

chmod go-x ex1.py

4)将当前目录下的所有文件与子目录设为任何人都可读取:

chmod -R a+r *

此外,文件的权限可以表示成数字,r、w和x具有规定的顺序,Fedora操作系统中使用数字来表示这些权限。r:对应的数字为4;w:对应的数字为2;x对应数字为1;-对应数字为0;根据上述数字表示,在一组三位权限表示中,将存在的权限与对应的数据相加,如rwx表示7,而r--表示4,r-w表示5。rwxrwxrwx 使用数字表示为777;r--rw---x 使用数字表示为461;

chmod a=rwx file 和chmod 777 file效果相同。

  1. chown改变文件的属主命令

使用格式:chown [options] [--help] [--version] user [:group] file...

说明:只有系统的root管理员才能修改文件的属主。

参数说明:

user:设置文件的新所有者

group:设置文件新的组

-c:该文件拥有者确实已经更改,才显示其更改动作。

-f:若该文件权限无法被更改,则不要显示其错误讯息。

-h:只对于连接(link)进行变更,而非该link真正指向的文件。

-v:显示拥有者变更的详细资料。

-R:对所指定目录及其子目录下满足条件的文件进行权限变更(即以递归的方式逐个变更)。

--help:显示辅助说明。

--version:显示版本。

例如:

1)将文件file.txt的拥有者设为users,组设为wei:

chown wei:users file.txt

2)将目前目录下的所有文件与子目录的拥有者设为users,组设为lam

chown -R lam:wei *

  1. rm删除命令

使用格式:rm [options] name...

说明:删除文件及目录

参数说明:

-i:删除前逐一询问确认

-f:强制性删除。即使原文件属性设为只读,也直接删除,无需逐一确认。

-r:将目录及子目录下的所有文件删除,删除目录必须使用此参数。

例如:

1)删除当前目录下所有C语言源文件,删除前逐一询问确认。

rm -i *.c

2)将Fin子目录及下级子目录中所有文件删除

rm -r Fin

  1. mv文件移动/改名命令

改名:mv [options] source dest

移动:mv [options] source directory

说明:将一个文件改名为另一文件名或将数个文件移至另一目录。

参数说明:

-i:若目的地已有同名文件,则先询问是否覆盖。

例如:

1)将文件aaa更名为bbb:

mv aaa bbb

2)将所有的C语言源文件移动到Finished子目录中:

mv -i *.c Finished

  1. mkdir创建目录命令

使用格式:mkdir [option] [目录]

参数说明:

-m,--mode=模式:设定权限<模式>(类似chmod),而不是rwxrwxrwx减umask。

-p,--parents:需要时创建上层目录,若目录早已存在则不当作错误。

例如:

mkdir -p /mnt/udisk

  1. ls文件列表命令

使用格式:ls [options] [name...]

说明:显示指定目录下的内容,列出指定目录下所有的文件及子目录。

参数说明:

-a:显示所有文件及目录,包括隐含文件(以“.”开头的文件或目录,默认不显示)。

-l:以详细格式显示文件,即显示除文件名外,还显示权限、拥有者、文件大小时间日期等信息。

-r:将文件以相反次序显示(原定依英文字母A->Z或a->z次序)。

-t:将文件依建立时间先后次序列出。

-A:同-a,但不列出“.”(当前目录)及“..”(父目录)。

-F:在列出文件名称后加一个符号表示文件的发行,例如可执行文件则加“*”,目录则加“/”。

-R:若子目录下有文件,则将所有子目录下的文件也列出来

  1. cp文件复制命令

使用格式:cp [options] source dest 或 cp [options] source directory

说明:将一个文件复制至另一个文件,或将数个文件复制至另一个目录。

参数说明:

-a:尽可能将文件状态、权限等属性照原样复制。

-r:若source中含有目录名,则将目录下的文件及目录都依次序复制至目的地。

-f:若目的地已经有相同文件名的文件存在,则强制覆盖。

-u:更新选项,只有当源文件比目的文件新时才复制。

  1. tar文件打包压缩命令

10.1. 压缩文件命令

10.1.1 bzip2命令

bzip2命令通过分析和有效记录文件内容的方法来压缩文件,压缩后的文件与原文件看上去完全不同,具有许多非打印字符,所以无法直接浏览其内容。对于包含许多重复信息的文件,如文本文件或图像数据,使用bzip2命令的压缩效果尤其出色。压缩之后的扩展名为“.bz2”。

使用bzip2命令的语法格式为:

bzip2 [参数] [文件列表]

bzip2具有许多参数,其中最常用的参数是-v。使用该参数后,bzip2会显示出压缩文件节省的空间百分比。

10.1.2 gzip命令

gzip命令的全称为GNU.zip,该压缩命令比bzip命令出现得早且效率较低,其使用方法与bzip2命令相同。使用gzip命令压缩的文件后缀为“.gz”。

使用gzip命令的一般语法格式为:

gzip [参数] [文件列表]

参数与bzip2相同。

10.1.3 compress命令

compress命令也可以进行压缩,但没有gzip命令效率高,压缩之后的扩展名为“.z”

10.2. 打包命令

tar(Tape Archive)命令可以完成许多功能,其名源于它的原始功能:创建和读取归档文件和备份磁盘。利用tar命令可以把一大堆的文件和目录打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输来说非常有用。

10.2.1 tar命令

tar命令是一个打包工具,它可以将一大堆文件先打包成一个包,然后再用原来的压缩程序进行压缩。使用tar程序打出来的包称为tar包,通常是以.tar结尾的。生成tar包之后,就可以用其他的程序来进行压缩了。

使用tar命令的一般语法结构为:

tar [主选项+辅选项] 打包后的文件名 [文件名或目录名]

上面的命令执行后,根据主选项和辅选项,将多个文件或目录打包,其名称在命令中指定。

主选项有以下各种可用值:
-c 创建新的档案文件。如果用户想备份一个目录或是一些文件就要选择这个选项。

-r 把要存档的文件追加到档案文件的末尾。

-t 列出档案文件的内容,查看已经备份了哪些文件。

-u 更新文件,就是说,用新增的文件取代备份文件,如果在备份文件中打不到要更新的文件,则把它追加到备份文件的最后。

-x 从档案文件中释放文件,解压缩时候用。

辅助选项有以下各种可用值:

-f 使用档案文件或设备,这个选项通常是必选的。

-k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件不会进行覆盖。

-m 在还原文件时,把所有文件的修改时间设定为现在。

-M 创建多卷的档案文件,以便在几个磁盘中存放。

-v 详细报告tar命令处理的文件信息。如无此选项,tar命令不报告文件信息。

-w 每一步都要确认。

-z 用gzip命令来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也要使用该选项进行解压缩。

对一个文件进行打包,创建新的备份文件,用下面命令:

tar -cf bmp.tar c.bmp

对于已经存在的包,用户可以不打包而添加新的文件,用下面的命令:

tar -rf bmp.tar syslog.conf

用户可以使用下面的命令来查看包中的内容:

tar -tf bmp.tar

如果用户在tar命令后使用路径添加一个新文件,添加到包中的文件会带有该路径,如下:

tar -rf bmp.tar /root/Desktoop/Capura

tar -tf bmp.tar

会看到:

c.bmp

syslog.conf

root/Desktoop/Capura

10.2.2 打包与压缩

在Linux下用tar包可以使用bzip2、compress和gzip命令进行压缩,这样做易于存储和管理tar包。如用bzip2命令压缩的tar包扩展名为.tar.bz2;用compress命令压缩的tar包扩展名为.tar.z;用gzip命令压缩的tar包扩展名为.tar.gz。

用gzip和bzip2打包分别如下:

gzip bmp.tar

bzip2 bmp.tar

如果用户不希望打包和压缩分两步来完成,可以在tar命令中调用相应的压缩程序。tar命令中的参数-z即可用来调用gzip压缩命令,参数-j即可调用bzip2命令,如下所示:

tar -czf bmp2.tar.gz *.bmp

tar -cjf bmp2.tar.bz2 *.bmp

10.2.3 解压命令

10.2.3.1 bunzip2和bzcat命令

bunzip2解压缩命令针对扩展名为.bz2的压缩文件进行解压,将由bzip2命令压缩的文件恢复成原文件,使用该命令的一般语法结构为:

bunzip2 [压缩文件名]

bunzip2只能解压由bzip2命令压缩的文件,这些文件的扩展名为.bz2。解压命令执行后,压缩文件被还原成原始文件。

bzcat命令用于查看扩展名为.bz2的文件内容,其使用方法与cat命令相同。使用bzcat命令时,首先将数据解压缩,然后显示解压缩后的文件内容。。

10.2.3.2 gunzip和zcat命令

gunzip命令用于解压扩展名为.gz的压缩文件,使用该文件的一般语法结构为:

gunzip [压缩文件名]

该命令的使用方法与bunzip2命令相同,将压缩文件恢复成原文件。zcat命令与bzcat命令的作用相同,用于查看扩展名为.gz的压缩文件。

10.2.3.3 解包

如果某个tar包被压缩后,将其解压回正常文件需要两步。例如bmp.tar.bz2包,将其解压时首要要将.bz2扩展名去掉,即先使用bunzip2命令将其解压,然后再解压tar包,如下面的命令所示:

bunzip2 bmp.tar.bz2

tar -xvf bmp.tar

由前面对tar命令的介绍可知,使用参数-t只能列举包中的文件,而不能将其解压。解压时可以使用-x参数,但需注意的是-x参数解压后的文件会将相同文件名的文件覆盖。

使用使用tar命令与参数-x,并结合参数-z和-j,可以直接解压.tar.gz和.tar.bz2格式的文件,如下面的命令所示:

tar -zxvf bmp2.tar.gz

tar -jxvf bmp2.tar.bz2

10.2.4 备份与还原

Linux 备份在很大程度上就是打包和解包文件。这允许使用现有的系统实用工具和脚本来执行备份,而不必购买商业化的软件包。在许多情况下,这类备份将是足够的,并且为管理员提供了极大的控制能力。

tar 是与文件系统无关的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系统上。

使用 tar 非常类似于使用诸如 PKZip 这样的文件实用工具。只需将它指向一个目的(可以是文件或设备),然后指定您想要打包的文件。您可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过 bzip2 压缩或解压缩文件,可使用 tar -z 命令。

要使用 tar 来把除/proc、/tmp、/mnt、/meida、/lost+found目录之外的整个文件系统备份到debain_bak.tgz:

cd /media/backup

tar cvpzf debain_bak.tgz --exclude=/proc -- exclude=/tmp --exclude=/mnt --exclude=/meida --exclude=/lost+found /

在上面的例子中, -c开关表示归档文件正在被创建。 -p开关表示我们希望保留文件许可权限,这对良好的备份来说是很关键的。 -f 开关指向该归档文件的文件名。/ 表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把 tar 指向一个目录(以 / 结尾)时,它会自动递归。最后,我们排除了 /proc 目录,因为它没有包含需要保存的任何内容。

要还原一个或多个文件,可以使用带提取开关( -x )的 tar 命令:

cd /media/backup

tar -xpf debian_bak.tgz -C /

这里的 -f 开关同样指向归档文件, -p 开关表明我们想要还原归档的权限。 -x 开关表明从归档中提取文件。 -C / 表明我们想要让还原从 / 开始。 tar 通常还原到运行这个命令的目录。 -C 开关使我们的当前目录不再相关。

  1. 文件和字符搜索与查找命令

11.1 find

命令格式:find [path] [expression]

说明:

-name:后面接文件名,表示要查找的文件名特点,可以使用通配符。

-size:后面接文件大小,可以根据文件长度的特点来对文件进行查找。

-type: 后面接文件的类型,d: 目录;c: 字型装置档案;b: 区块装置档案;p: 具名贮列;f: 一般档案;l: 符号连结;s: socket;

-pid n : process id 是 n 的档案

-maxdepth n:查找目录的深度。如果设为1,则只搜索指定的目录,不对下一级子目录进行查找还有与时间特点相关的参数。

-amin:访问的时间,单位为min。

-atime:访问的时间,单位为天数

-mmin:修改的时间,单位为min。

-mtime:修改的时间,单位为天。

-cmin:改变的时间,单位为min。

-ctime:改变的时间,单位为天。还可以使用逻辑操作,将几个条件组合起来完成更为复杂的查找操作。

-and:“与”关系

-or:“或”关系

例如:

1)只在当前目录中查找后缀为.h的文件,不对下层的子目录进行查找操作。

find ./ -maxdepth 1 -name '*.h'

2)从当前目录开始查找后缀为.c的文件,但不显示出错信息。

find -name '*.c' > /dev/null

3)查找文件大小为1500字节的文件

find -size 1500c

4)查找文件长度大于100000字节的文件

find -size + 100000c

5)查找文件长度小于100000字节的文件

find -size - 100000c

6)查找10min以内访问过的文件

find -amin -10

7)查找10天之前访问过的文件

find -atime +10

8)查找1天以前6天之内访问过的文件

find ./ -mtime -6 -and -mtime +1

9)查找多个文件

$ find /home/weimen/install/ -name dpkg -or -name cramfs*

11.2 grep

命令格式 [path] [expression]

说明:

-i:--ignore-case ignore case distinctions,忽略大小写

-v:--invert-match select non-matching lines,选择不匹配的行

-l:--files-with-matches print only names of FILEs containing matches,只显示包含匹配的文件名

-R,-r:--recursive equivalent to --directories=recurse,包含递归

同时查找多个字符可使用:

$ ps -e | grep "sshd|tty"
或使用:
$ ps -e | egrep "sshd|tty"

  1. xargs

是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

例如可以如下使用:

find -type f -name Makefile | xargs grep CONFIG

本例中"xargs"将find产生的长串文件列表拆散成多个子串,然后对每个子串调用"grep"。这样要命令效率高的多。

  1. ln

建立链接

-s 建立符号链接

命令格式 ln -s 源文件/目录 符号文件/目录

例如:

$ ln -s /usr/src/linux-headers-2.6.35-24-generic-pae/include/generated/autoconf.h /usr/src/linux/include/linux/autoconf.h

$ ln -s linux-headers-2.6.35-24-generic linux

  1. sed(stream editor)

功能:利用script来处理文本文件

格式:sed -e<script>[文本文件]

-e<script> 以选项中指定的script来处理输入的文本文件

-f<script文件> 以选项中指定的script文件来处理输入的文本文件

例子:

cat file1

my name is Tom,hello!

my name is Tom,hello!

cat file2

my name is Jim!

sed -e "s/Tom/Lily/" file1 >>file2

cat file1

my name is Tom,hello!

my name is Tom,hello!

cat file2

my name is Jim!

my name is Lily,hello!

my name is Lily,hello!

可知:上面的sed是将file1中的内容读出,并将Tom改为Lily,然后追加到file2中。

  1. IO重定向

0表示标准输入,1表示标准输出,2表示标准错误。

ls /dev &>filename

"&"在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了。

重新定义标准输入,输出,和错误的文件标识符

重新定义文件标识符可以用i>&j命令,表示把文件标识符i重新定向到j,你可以把"&"理解为"取地址"

请看以下例子

exec 5>&1

表示把文件标识符5定向到标准输出,这个命令通常用来临时保存标准输入。

exec 3<>filename 把文件filename打开,并指定文件标识符为3

exec 3>&- "&-"表示关闭文件标识符,关闭文件标识符3