1.普通文件它最常使用的一类文件,其特点是不包含有文件系统的结构信息。通常用户所接触到的文件,如图形文件、数据文件、文档文件、声音文件等都属于这种文件。这种类型的文件按其内部结构又可细分为文本文件和二进制文件。
2.目录文件目录文件是用于存放文件名及其相关信息的文件。它是内核组织文件系统的基本节点。目录文件可以包含下一级目录文件或普通文件。在Linux中,目录文件是一种文件。但Linux的目录文件和其他操作系统中的“目录”的概念不同,它是Linux文件中的一种。
3.链接文件链接文件是一种特殊的文件,实际上是指向一个真实存在的文件链接,类似于Windows下的快捷方式。根据链接文件的不同,它又可以细分为硬链接(Hard Link)文件和符号链接(SymbolicLink,又称为软链接)文件。
4.设备文件设备文件是Linux 中最特殊的文件。正是由于它的存在,使得Linux系统可以十分方便地访问外部设备。Linux 系统为外部设备提供一种标准接口,将外部设备视为一种特殊的文件,使用户可以像访问普通文件一样访问任何外部设备。通常Linux系统将设备文件放在“/dev”目录下,设备文件使用设备的主设备号和次设备号来指定某外部设备。根据访问数据方式的不同,设备文件又可以分为块设备和字符设备文件。
5.管道文件管道文件是一种很特殊的文件,主要用于不同进程间的信息传递。当两个进程间需要进行数据或信息传递时,可以使用管道文件。一个进程将需传递的数据或信息写入管道的一端,另一进程则从管道的另一端取得所需的数据或信息。通常管道是建立在调整缓存中的。
6.套接字(s,socket) :用于进程间的网络通信,也可以用于本机之间的非网络通信。
cd usr : 切换该目录下的usr目录。
cd .. : 切换上一层目录。
cd / : 切换到系统根目录。
cd ~ : 切换到用户主目录。
cd - : 切换到上一个操作所在的目录。
1.mkdir 目录名称 :增加目录。
2.ls/ll : (ll是ls-l 的别名,ll命令可以看到该目录下的所有目录和文件的详细信息,ls只有目录):查看目录信息。
3.find path -option [-print] [-exec -ok command {}] : find命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。
逻辑运算符and、or、not的含义如下:
(1)and:逻辑与,在命令中用“-a”表示,是系统默认的选项,表示只有当所给的条件都满足时,寻找条件才满足。
(2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就满足。
(3)not:逻辑非,在命令中“!”表示。该运算符表示查找不满足所给条件的文件。
find命令的查找方式主要为以名称和文件属性查找,参数如下:
(1)-name '字串' :查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[]。
(2)-lname '字串' :查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[]。
(3)-gid n:查找属于ID号为n的用户组的所有文件。
(4)-uid n:查找属于ID号为n的用户的所有文件。
(5)-group string:查找属于用户组名为所给字串的所有的文件。
(6)-user string:查找属于用户名为所给字串的所有的文件。
(7)-empty:查找大小为0的目录或文件。
(8)-path string:查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[]。
(9)-perm permission:查找具有指定权限的文件和目录,权限的表示可以如711(表示文件目录所有者具有读写、执行权限,同组用户和系统其他用户只具有执行权限),644(文件/目录所有者具有读写权限,同组用户和系统其他用户之具有读权限)等,具体如何设置数字权限形式,读者请参看本章后面对文件/目录访问权限管理的介绍。
(10)-size n[bckw]:查找指定文件大小的文件,n后面的字符表示单位,默认为b,代表512字节的块。
(11)-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
(12)-pid n : process id 是 n 的文件
(13)-amin n : 在过去 n 分钟内被读取过
(14)-anewer file : 比文件 file 更晚被读取过的文件
(15)-atime n : 在过去 n 天过读取过的文件
(16)-cmin n : 在过去 n 分钟内被修改过
(17)-cnewer file :比文件 file 更新的文件
(18)-ctime n : 在过去 n 天过修改过的文件
该命令也提供了对查找出来的文件进行特定操作的选项。
(1)-exec cmd{}:对符合条件的文件执行所给的Linux命令,而不询问用户是否要执行该命令。表示命令的参数即为所找到的文件;命令的末尾必须以“\;”结束。
(2)-ok cmd{}:对符合条件的文件执行所给的Linux命令,与exec不同的是,它会询问用户是否要执行该命令。
(3)-ls:详细列出所找到的所有文件。
(4)-fprintf 文件名:将找到的文件名写入指定文件。
(5)-print:在标准输出设备上显示查找出的文件名。
实例
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"将目前目录其其下子目录中所有一般文件列出
# find . -ftype f将目前目录及其子目录下所有最近 20 分钟内更新过的文件列出
# find . -ctime -20查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -ctime +7 -ok rm { } ;查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls -l { } ;为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls -l { } ;查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;查找当前目录中所有以main开头的文件,并显示这些文件的内容。
$ find . - name 'main*' - exec more {} \;
删除当前目录下所有一周之内没有被访问过的a.out或*.o文件
$ find .
− n a m e a . o u t − o − n a m e ′ ∗ . " role="presentation">\ > - atime +7 -exec rm {} \; o ′
4.locate命令:
locate [-d ][--help][--version][范本样式...]
参数:
附加说明
locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:
locate -u
该命令的主要功能是用来显示文件,可依次读取其后所指文件的内容并将其输出到标准输出设备上。另外,还能够用来连接两个或多个文件,形成新的文件。该命令的常用形式如下:
cat [option] filename
cat 命令中各个选项(option)的含义如下:
(1)v:用一种特殊形式显示控制字符,LFD与TAB除外。
(2)T:将TAB显示为“^I”。该选项要与 -v选项一起使用,即如果没有使用-v选项,则这个选项将被忽略。
(3)E:在每行的末尾显示一个“$”符。该选项要与 -v选项一起使用。
(4)u:输出不经过缓冲区。
(5)A:等同于 -vET。
(6)t:等同于 -vT。
(7)e:等同于 -vE。
例子:
在屏幕上显示出Readme.txt文件的内容。
# cat Readme.txt
在屏幕上显示出Readme.txt文件的内容,如果文件中含有特殊字符的话,一起显示出来。
# cat - A Readme.txt
把文件test1和文件test2的内容合并起来,放入文件test3中。(此时在终端屏幕上不能直接看到该命令执行的结果,也就是文件test3的内容,若想看到连接后的文件内容,可以使用cat test3命令)
# cat test1 test2 > test3
在查看文件过程中,因为某些文本过于庞大,文本在屏幕上迅速的闪过,用户来不及看清其内容。该命令就可以一次显示一屏文本,并在终端底部打印出“--more--”,系统还将同时显示出已显示文本占全部文本的百分比。若要继续显示,按回车或空格键即可。
more [option] filename
more命令中部分常用选项的含义如下。
(1)-p :显示下一屏之前先清屏。
(2)-c:作用同-p类似。
(3)-d:在每屏的底部显示更友好的提示信息为“--more-- (XX%)[Press space to continue,'q' to quit]”。
(4)-s:文件中连续的空白行压缩成一个空白行显示。
另外,在more命令的执行过程中,用户可以使用其一系列命令动态地根据需要来选择显示的部分。more在显示完一屏内容之后,将停下来等待用户输入某个命令。下面列入常用的几种命令:
(1)n:n在命令行中指定了多个文件名的情况下,可用此命令使之显示第i个文件,若i过大(出界),则显示文件名列表中的最后一个文件。
(2)p:p在命令行中指定了多个文件名的情况下,可用此命令使之显示倒数第i个文件,若i过大(出界),则显示第一个文件。
(3)f:f显示当前文件的文件名和行数。
该命令的功能和more命令的功能基本相同,也是用来按页显示文件。不同之处在于,less命令在显示文件时,允许用户既可以向前又可以向后逐行翻阅文件,而more命令只能向后翻阅文件。由于该命令参数的使用与more命令类似,在此不在赘述。如果要按页显示test文件,则执行如下命令:
# less test
如果要向后翻阅,可以使用键盘的【Page Up】键;如果要向前翻阅文件,则相应地使用键盘的【Page Down】键即可。按方向键可以逐行滚动,按【Q】键退出。
该命令用来显示一个文件的头几行数据。如果用户希望查看一个文件究竟保存的是什么内容,只要查看文件的头几行,而不必浏览整个文件,便可以使用这个命令。该命令的常用形式如下:
head - number filename
该命令用来显示每个指定文件的前面n行。如果没有给出n值,默认设置为10。如果没有指定文件,head就从标准输入读取。例如,以下命令显示文件test.c的前3行。# head - 3 test.c
和head命令的功能相对应。如果想查看文件的尾部,可以使用tail命令。该命令显示一个文件的指定内容。他把指定文件的指定显示范围内的内容显示在标准输出上。同样,如果没有给定文件名,则使用标准输入文件。该命令的常用形式如下。
tail option filename
tail命令中各个选项的含义如下。
(1)+num:从第num行以后开始显示。
(2)-num:从距文件尾num行处开始显示;如果省略num参数,系统默认值为10。
(3)1:以文本行为num的计数单位;与参数选项+num或-num选项同时使用时,num表示要显示的文本行行数。(这个为系统的默认选项,即按行计)
(4)c:以字节为num的计数单位;与参数选项+num或-num选项同时使用时,num表示要显示的字符数。
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 在显示符合范本样式的那一列之前,标示出该列的列数编号。
- -q或--quiet或--silent 不显示任何信息。
- -r或--recursive 此参数的效果和指定"-d recurse"参数相同。
- -s或--no-messages 不显示错误信息。
- -v或--revert-match 反转查找。
- -V或--version 显示版本信息。
- -w或--word-regexp 只显示全字符合的列。
- -x或--line-regexp 只显示全列符合的列。
- -y 此参数的效果和指定"-i"参数相同。
- --help 在线帮助。
实例
1、在当前目录中,查找后缀有"test"字样的文件中包含"test"字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file结果如下所示:
$ grep test test* #查找后缀有“test”的文件包含“test”字符串的文件 testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行 testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行 testfile_2:Linux test #列出testfile_2 文件中包含test字符的行2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi输出结果如下:
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi” #下包含“update”的文件 /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test*结果如下所示:
$ grep-v test* #查找文件名中包含test 的文件中不包含test 的行 testfile1:helLinux! testfile1:Linis a free Unix-type operating system. testfile1:Lin testfile_1:HELLO LINUX! testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. testfile_1:THIS IS A LINUX TESTFILE! testfile_2:HELLO LINUX! testfile_2:Linux is a free unix-type opterating system.
本指令相当于执行grep指令加上参数"-F",详见grep命令说明。
Linux fgrep命令用于查找文件里符合条件的字符串。
语法
fgrep [范本样式][文件或目录...]
Linux egrep命令用于在文件内查找指定的字符串。
egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。
egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。
语法
egrep [范本模式] [文件或目录]参数说明:
- [范本模式] :查找的字符串规则。
- [文件或目录] :查找的目标文件或目录。
实例
显示文件中符合条件的字符。例如,查找当前目录下所有文件中包含字符串"Linux"的文件,可以使用如下命令:
egrep Linux *结果如下所示:
$ egrep Linux * #查找当前目录下包含字符串“Linux”的文件 testfile:hello Linux! #以下五行为testfile 中包含Linux字符的行 testfile:Linux is a free Unix-type operating system. testfile:This is a Linux testfile! testfile:Linux testfile:Linux testfile1:helLinux! #以下两行为testfile1中含Linux字符的行 testfile1:This a Linux testfile! #以下两行为testfile_2 中包含Linux字符的行 testfile_2:Linux is a free unix-type opterating system. testfile_2:Linux test xx00:hello Linux! #xx00包含Linux字符的行 xx01:Linux is a free Unix-type operating system. #以下三行为xx01包含Linux字符的行 xx01:This is a Linux testfile! xx01:Linux
该命令的功能是对文件中的各行进行排序(对于重复的行不能删除掉而uniq对于重复的行可以覆盖)。该命令逐行地对文件中地内容进行排序,如果两行的首字符相同,那该命令将继续比较这两行的下一字符。sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。在默认情况下,以整行为关键字按ASCLL字符顺序进行排序。
sort命令的常用格式如下:
sort [option] filename
该命令改变默认设置的主要选项如下:
(1)-m:若给定文件已排好序,合并文件。
(2)-c:检查给定文件是否已排好序,如果他们没有都排好序,则打印一个出错的信息,并以状态值1退出。
(3)-u:对排序后认为相同的行只保留其中一行。
(4)-o:输出文件将排序输出写到输出文件中而不是标准输出,如果输出文件是输人文件之一,sort便将该文件的内容写入一个临时文件,然后再排序和写输出结果。
(5)-d:按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
(6)-f:将小写字母与大写字母同等对待。
(7)-I:忽略非打印字符。
(8)-M:作为月份比较,“JAN”<“FEB”<“DEC”。
(9)-r:按逆序输出排序结果。
(10)+posl-pos2:指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos21为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位从0开始。
(11)-b:在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。
(12)-t separator:指定字符separator 作为字段分隔符。
文件经过处理后在它的输出文件中可能会出现重复的行。例如,用cat 命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。
uniq命令的常用格式如下:
uniq [option] filename
该命令各选项含义如下:
(l)-d:只显示重复行。
(2)-u:只显示文件中不重复的行。
(3)-c:显示输出中,在每行行首加上本行在文件中出现的次数。它可取代-u和-d选项。(4)-n:前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
(5) +n: 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
(6) -fn: 与-n相同,这里n是字段数。
(7)-sn:与+n相同,这里n是字符数。
.............