命令
1.man
man命令是Linux的帮助命令,通过man命令可以查
看命令的帮助,配置文件帮助和编程帮助等信息。
例:man 1 passwd :查看passwd的命令帮助
man 5 passwd :查看passwd配置文件的帮助
更多用法可以使用man man命令查看
man命令快捷键:
上下键就是向上或者向下一行
pageUp|pageDown向上一个屏幕或者向下一个屏幕
d|u向下或者向上半个屏幕
G|gg跳转页面到man最下面或最上面
”/关键字“:搜索关键字,关键字会高亮显示,
n向下匹配,N向上匹配,“q”退出帮助。
2.wc
“wc”是统计文件容量信息的命名。
例如:
"wc -l /etc/passwd"统计“passwd文件的行数”,
“wc -c /etc/passwd”统计文件的字节数
“-w”统计字数
“-m”统计字符数
3.pwd
“pwd”命令可以查看当前所在的目录
4、cd
“cd”是切换工作目录的命令,后可跟绝对路径或相对路径
例如:
“cd 目录”可以切换到指定目录,如切换到目录“/etc”.
"cd -":可以切换到之前所在的目录
“cd ~”:可以切换到自己的home目录
“cd ~username”:可以切换到指定用户的home目录
“cd ..”:进入当前目录的上级目录
“cd ../..”:返回上两级目录
5.ls
“ls”命令可以列出目录或者文件的信息
“ls”后面如果没有目标那么就默认为当前目录
“ls”后面加一个目录或者文件,如“ls test”则是列出test目录下的内容,
参数“-d”表示列出目录本身
参数“-l”表示列出目录或文件里内容的属性
参数“-ld”列出目录本身属性
参数“-a”显示目录中的所有内容,包括“.”开头的隐藏文件。
参数“-R”表示递归显示目录中的内容。
参数“-F”查看目录中的文件
参数“*[0-9]*”显示包含数字的文件名和目录名
ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法
ls(选项)(参数)
选项
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time:列出完整的日期与时间;
--color[=WHEN]:使用不同的颜色高亮显示不同类型的。
参数
目录:指定要显示列表的目录,也可以是具体的文件。
6.cp
cp file1 file2 复制一个文件
cp dir/*. 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1.复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
7.rm
rm命令可以删除一个目录中的一个或多个文件
或目录,也可以将某个目录及其下属的所有文件
及其子目录均删除掉。
注意: 使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。
rm命令可以用-i选项,这个选项在使用文件扩展
名字符删除多个文件时特别有用,使用这个选项
,系统会要求你逐一确定是否要删除。这时,必
须输入y并按Enter键,才能删除文件,如果仅按E
nter键或其他字符,文件不会删除。
语法:
rm (选项)(参数)
选项:
-d:直接把欲删除的目录的硬链接数据删除成0,删除该目录
-f:不提示,强制删除文件或目录
-i:删除已有文件或目录之前先询问用户
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
--preserve-root:不对根目录进行递归操作
-v:显示指令的详细执行过程
参数:
参数为文件或者文件名
例子:
删除第一个字符为‘-’的文件(例如“-foo”),要使用下面这种方法
rm -- -foo
rm ./-foo
通常使用rm删除文件可以恢复原状,如果想删除的文件不能还原,使用shred
删除.c结尾的文件,删除前逐一询问确认:
rm -i *.c
删除test子目录及子目录中所有文档
rm -r test
将test子目录和子目录中所有文档删除,并且不用一一确认
rm -rf test
8.rmdir命令
rmdir命令用来删除空目录,利用rmdir命令可以
从一个目录中删除一个或多个空的子目录
注意:子目录被删除之前应该是空目录,应该首先使用rm命令删除所有文件,并且当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不可能是被删除目录的子目录。
虽然可以使用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做有很大的危险性。
语法
rmdir(选项)(参数)
选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
参数
目录列表:要删除的空目录列表。当删除多个
空目录时,目录名之间使用空格隔开。
实例
删除子目录os_1和其父目录bin
cd /usr/meng/test
rmdir -p bin/os_1
9.cp命令
cp命令用来将一个或多个源文件或目录复制到
指定的目的文件或目录,它可以将单个源文件复
制成一个指定文件名的具体文件或者已经存在的
目录下。产品命令还支持同时复制多个文件,当
一次复制多个文件时,目标文件参数必须是一个
已经存在的目录,否则将出现错误。
语法:
cp [option] [source] [dest]
选项
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。
例子:
复制文件
ubuntu@ubuntu:~/Public$ touch 1.txt #新建一个文件
ubuntu@ubuntu:~/Public$ cp 1.txt a1/ #复制到a1文件夹
ubuntu@ubuntu:~/Public/a1$ ls 查看a1是否有1.txt文件
11.txt 1.txt a11
复制目录 复制目录只需使用“-r”选项即可
ubuntu@ubuntu:~/Public$ cp -r a1 a2/
ubuntu@ubuntu:~/Public$ cd a2
ubuntu@ubuntu:~/Public/a2$ ls
a1
ubuntu@ubuntu:~/Public/a2$ cd a1
ubuntu@ubuntu:~/Public/a2/a1$ ls
11.txt 1.txt a11
10 touch命令
touch有两个功能:
一,是用于把已存在的文件的时间标签更新为系统当前的时间
二,是用来创建新的空文件
语法:
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 #修改文件的时间属性
首先,使用ls命令查看testfile文件的属性,如下所示:
$ ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:
$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:
$ touch file #创建一个名为“file”的新的空白文件
11.find
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索
文件,还可以按照权限、大小、时间、inode
号等来搜索文件。但是 find 命令是直接在硬盘
中进行搜索的,如果指定的搜索范围过大,find
命令就会消耗较大的系统资源,导致服务器压力
过大。所以,在使用 find 命令搜索时,
不要指定过大的搜索范围。
语法
find 搜索路径 [选项] 搜索内容
1.按照文件名搜索
-name:按照文件名搜索
-iname:按照文件名搜索,不区分文件名大小
-inum:按照inode号搜索
inode号通过ls -l 文件名 命令 获得
例子:
[root@localhost ~]# find /-name yum.conf
/etc/yum.conf
#在目录下査找文件名是yum.conf的文件
find 命令有一个小特性,就是搜索的文件名必须和你的搜索内容一致才能找到。如果只包含搜索内容,则不会找到
2.按照文件大小搜索
-size[+-]大小:按照指定大小搜索文件
这里的"+“的意思是搜索比指定大小还要大的文件,”-" 的意思是搜索比指定大小还要小的文件
[root@localhost ~]# ll -h install.log
-rw-r--r--.1 root root 25K 1月 14 2014 install.log #在当前目录下有一个大小是25KB的文件
[root@localhost ~]#
[root@localhost ~]# find.-size 25k
./install.log
#当前目录下,査找大小刚好是25KB的文件,可以找到
[root@localhost ~]# find .-size -25k
find命令-size选项默认是按照512Byte去搜索的
b' for 512-byte blocks (this is the default if no suffix is used)
#这是默认单位,如果单位为b或不写单位,则按照 512Byte搜索
'c' for bytes
#搜索单位是c,按照字节搜索
'w' for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k'for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
'M' for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
'G' for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G
3.按照修改时间搜索
Linux中的文件有访问时间(atime),数据修改时间(mtime),状态修改时间(ctime)这三个时间,我们可以按照时间来搜索文件
选项:
-atime [+-]时间: 按照文件访问时间搜索
-mtime [+-]时间: 按照文改时间搜索
-ctime [+-]时间: 按照文件修改时间搜索
这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[+-]"时间的含义。
-5:代表@内修改的文件。
5:代表前5~6天那一天修改的文件。
+5:代表6天前修改的文件。
每次笔者讲到这里,"-5"代表 5 天内修改的文件,而"+5"总有人说代表 5 天修改的文件。要是笔者能知道 5 天系统中能建立什么文件,早就去买彩票了,那是未卜先知啊!所以"-5"指的是 5 天内修改的文件,“5"指的是前 5~6 天那一天修改的文件,”+5"指的是 6 天前修改的文件。我们来试试:
[root@localhost ~]#find.-mtime -5
#查找5天内修改的文件
find 不仅可以按照 atmie、mtime、ctime 来査找文件的时间,也可以按照 amin、mmin 和 cmin 来査找文件的时间,区别只是所有 time 选项的默认单位是天,而 min 选项的默认单位是分钟。
查看当前目录下所有文件的大小:“ll -h”
4.按照权限搜索
选项:
-perm 权限模式:査找文件权限刚好等于"权限模式"的文件
-perm -权限模式:査找文件权限全部包含"权限模式"的文件
-perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件
【例 1】"-perm权限模式"。
这种搜索比较简单,代表査找的权限必须和指定的权限模式一模一样,才可以找到。
[root@localhost test]#find.-perm 444
./test2
[root@localhost test]#find.-perm 200
./test4
#按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到
【例 2】"-perm-权限模式"。
如果使用"-权限模式",是代表的是文件的权限必须全部包含搜索命令指定的权限模式,才可以找到。
[root@localhost test]#find .-perm -200
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限
因为 test4 的权限 200(-w-------)、test3 的权限 600(-rw-------)和 test1 的权限 755(-rwxr-xr-x) 都包含 200(–w-------) 权限,所以可以找到;而 test2 的权限是 444 (-r–r--r–),不包含 200 (–w-------)权限,所以找不到,再试试:
[root@localhost test]# find .-perm -444
.
./test2 <-此文件权限为444
./test1 <-此文件权限为755
#搜索文件的权限包含444的文件
上述搜索会找到 test1 和 test2,因为 test1 的权限 755 (-rwxr-xr-x)和 test2 的权限 444 (-r–r--r–)都完全包含 444 (-r–r--r–)权限,所以可以找到;而 test3 的权限 600 (-rw-------)和 test4 的权限 200 (-w-------)不完全包含 444 (-r–r--r–) 权限,所以找不到。也就是说,test3 和 test4 文件的所有者权限虽然包含 4 权限,但是所属组权限和其他人权限都是 0,不包含 4 权限,所以找不到,这也是完全包含的意义。
【例 3】"-perm+权限模式"
刚刚的"-perm-权限模式"是必须完全包含,才能找到;而"-perm+权限模式"是只要包含任意一个指定权限,就可以找到。我们来试试:
[root@localhost test]# find .-perm +444
./test4 <-此文件权限为200
./test3 <-此文件权限为600
./testl <-此文件权限为755
#搜索文件的权限包含200的文件,不会找到test2文件,因为test2的权限为444,不包含200权限。
因为 test4 的权限 200 (–w-------)、test3 的权限 600 (-rw-------)和 test1 的权限 755 (-rwxr-xr-x)都包含 200(–w-------)权限,所以可以找到;而 test2 的权限是 444 (-r–r--r–),不包含 200 (–w-------)权限,所以找不到。
按照所有者和所属组搜索
find 搜索路径 [选项] 搜索内容
选项:
-uid 用户 ID:按照用户 ID 査找所有者是指定 ID 的文件
-gid 组 ID:按照用户组 ID 査找所属组是指定 ID 的文件
-user 用户名:按照用户名査找所有者是指定用户的文件
-group 组名:按照组名査找所属组是指定用户组的文件
-nouser:査找没有所有者的文件
这组选项比较简单,就是按照文件的所有者和所属组来进行文件的査找。在 Linux 系统中,绝大多数文件都是使用 root 用户身份建立的,所以在默认情况下,绝大多数系统文件的所有者都是 root。例如:
[root@localhost ~]#find.-user root
#在当前目录中査找所有者是 root 的文件
由于当前目录是 root 的家目录,所有文件的所有者都是 root 用户,所以这条搜索命令会找到当前目录下所有的文件。
按照所有者和所属组搜索时,"-nouser"选项比较常用,主要用于査找垃圾文件。在 Linux 中,所有的文件都有所有者,只有一种情况例外,那就是外来文件。比如光盘和 U 盘中的文件如果是由 Windows 复制的,在 Linux 中査看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者。
除这种外来文件外,如果系统中发现了没有所有者的文件,一般是没有作用的垃圾文件(比如用户删除之后遗留的文件),这时需要用户手工处理。搜索没有所有者的文件,可以执行以下命令:
[root@localhost ~]# find/-nouser
按照文件类型搜索
find 搜索路径 [选项] 搜索内容
选项:
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件
这个命令也很简单,主要按照文件类型进行搜索。在一些特殊情况下,比如需要把普通文件和目录文件区分开,比如需要把普通文件和目录文件区分开,使用这个选项就很方便。
[root@localhost ~]# find /etc -type d
#查找/etc/目录下有哪些子目录
逻辑运算符
[root@localhost ~]#find 搜索路径 [选项] 搜索内容
选项:
-a:and逻辑与
-o:or逻辑或
-not:not逻辑非
1) -a:and逻辑与
find 命令也支持逻辑运算符选项,其中 -a 代表逻辑与运算,也就是 -a 的两个条件都成立,find 搜索的结果才成立。
举个例子:
[root@localhost ~]# find.-size +2k -a -type f
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
在这个例子中,文件既要大于 2KB,又必须是普通文件,find 命令才可以找到。
再举个例子:
[root@localhost ~]# find.-mtime -3 -a -perm 644
#在当前目录下搜索3天以内修改过,并且权限是644的文件
- -o:or逻辑或
-o 选项代表逻辑或运算,也就是 -o 的两个条件只要其中一个成立,find 命令就可以找到结果。例如:
[root@localhost ~]#find.-name cangls -o -name bols
./cangls
./bols
#在当前目录下搜索文件名要么是cangls的文件,要么是bols的文件
-o 选项的两个条件只要成立一个,find 命令就可以找到结果,所以这个命令既可以找到 cangls 文件,也可以找到 bols 文件。
-
-not:not逻辑非
-not是逻辑非,也就是取反的意思。举个例子:
[root@localhost ~]# find.-not -name cangls
#在当前目录下搜索文件名不是cangls的文件
其他选项
1) -exec选项
这里我们主要讲解两个选项"-exec"和"-ok",这两个选项的基本作用非常相似。我们先来看看 "exec"选项的格式。
[root@localhost ~]# find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \;
首先,请大家注意这里的"{}“和”;“是标准格式,只要执行”-exec"选项,这两个符号必须完整输入。
其次,这个选项的作用其实是把 find 命令的结果交给由"-exec"调用的命令 2 来处理。"{}"就代表 find 命令的査找结果。
我们举个例子,刚刚在讲权限的时候,使用权限模式搜索只能看到文件名,例如:
[root@localhost test]#find.-perm 444
./test2
如果要看文件的具体权限,还要用"ll"命令査看。用"-exec"选项则可以一条命令搞定:
[root@localhost test]# find.-perm 444 -exec ls -l {}\;
-r--r--r-- 1 root root 0 6月 17 11:05 ./test2
#使用"-exec"选项,把find命令的结果直接交给"ls -l"命令处理
“-exec"选项的作用是把 find 命令的结果放入”{}"中,再由命令 2 直接处理。在这个例子中就是用"ls -l"命令直接处理,会使 find 命令更加方便。
2) -ok选项
“-ok"选项和”-exec"选项的作用基本一致,区别在于:"-exec"的命令会直接处理,而不询问;"-ok"的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。例如:
[root@localhost test]# find .-perm 444 -ok rm -rf {} \;
<rm…./test2>?y <-需要用户输入y,才会执行
#我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下
tail命令
tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail[选项][文本]”。
有时我们可能会遇到这样的一种情况,比如查看文本内容的最后20行,这时就需要用到tail命令了。tail命令的操作与head命令非常相似,只需执行“tail -n 20”文件名“命令就可以达到这样的效果”。tail命令最强的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,命令格式为“tail -f 文件名”。
语法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件
假设包括中文字,假设指定-c参数,可能导致
截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
例:
tail -n 20 filename
显示filename最后20行
tail -f filename
#监视filename文件尾部内容,默认10行,相当
于增加参数-n 10 刷新在屏幕上退出按Ctrl+C
tail -r -n 10 filename
逆序显示filename最后10行