Linux基本命令及Linux文件类型

Linux文件类型

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 - : 切换到上一个操作所在的目录。

扫描二维码关注公众号,回复: 14734280 查看本文章

目录的操作命令(增删查改)

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 . \(- name a.out - o - name '*.o'\)\ > - atime +7 -exec rm {} \;

4.locate命令:

locate [-d ][--help][--version][范本样式...]

参数: 

  • -d或--database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。
  • --help  在线帮助。
  • --version  显示版本信息。

附加说明

locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。

locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

locate -u 

显示文件内容命令——cat、more、less、head、tail

1.cat命令

该命令的主要功能是用来显示文件,可依次读取其后所指文件的内容并将其输出到标准输出设备上。另外,还能够用来连接两个或多个文件,形成新的文件。该命令的常用形式如下:

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

2.more命令

在查看文件过程中,因为某些文本过于庞大,文本在屏幕上迅速的闪过,用户来不及看清其内容。该命令就可以一次显示一屏文本,并在终端底部打印出“--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显示当前文件的文件名和行数。

3.less命令

该命令的功能和more命令的功能基本相同,也是用来按页显示文件。不同之处在于,less命令在显示文件时,允许用户既可以向前又可以向后逐行翻阅文件,而more命令只能向后翻阅文件。由于该命令参数的使用与more命令类似,在此不在赘述。如果要按页显示test文件,则执行如下命令:

# less test

如果要向后翻阅,可以使用键盘的【Page Up】键;如果要向前翻阅文件,则相应地使用键盘的【Page Down】键即可。按方向键可以逐行滚动,按【Q】键退出。

4.head命令

该命令用来显示一个文件的头几行数据。如果用户希望查看一个文件究竟保存的是什么内容,只要查看文件的头几行,而不必浏览整个文件,便可以使用这个命令。该命令的常用形式如下:

head - number filename

该命令用来显示每个指定文件的前面n行。如果没有给出n值,默认设置为10。如果没有指定文件,head就从标准输入读取。例如,以下命令显示文件test.c的前3行。# head - 3 test.c

5.tail命令

和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、egrep、fgrep

1.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 在显示符合范本样式的那一列之前,标示出该列的列数编号。
  • -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--update 

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-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.  

2.fgrep

本指令相当于执行grep指令加上参数"-F",详见grep命令说明。

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

语法

fgrep [范本样式][文件或目录...]

3.egrep

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 

文本处理命令——sort、uniq

1.sort命令

该命令的功能是对文件中的各行进行排序(对于重复的行不能删除掉而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 作为字段分隔符。

2.uniq 

文件经过处理后在它的输出文件中可能会出现重复的行。例如,用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是字符数。

............. 

猜你喜欢

转载自blog.csdn.net/weixin_54401017/article/details/127438964