欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 目录和文件的基本操作

程序员文章站 2022-05-14 23:17:11
...

一、显示文件命令

1、文件查看和连接命令 cat

使用方式:cat [选项] <file1>…
说明:把文件串接后显示在标准输出上。
主要选项的含义:
* -n或者–number:由1开始对所有输出的行数进行编号。
* -b或者–number-nonblank:和-n类似,但是对于空白行不编号。
* -s或者–squeeze-blank:当遇到有连续两行以上的空白行时,就代换为一行的空白行。
* -v或者–show-nonprinting:显示不可打印字符。
eg:
cat -n textFile1 代表将文件textFile1的内容加上行号后显示输出。
cat -b textFile1 textFile2 代表将文件textFile1和textFile2的内容串接在一起加上行号(空白行不加行号)之后输出,两个文件各自单独编号。

2、分屏显示命令 more

使用方式:more [选项] <file> …
说明:该命令类似于cat,可将文件显示在屏幕上,但它每次只显示一页。显示文件时,空格键可显示下一页,按<q>键退出显示,<h>键给出帮助信息。该命令还具有搜索字符串的功能。
主要选项的含义:
* -<num>:指定屏幕显示的行数为num行
* -d:在屏幕下方显示提示信息“Press space to continue,’q’ to quit.”,如果用户按错键,则显示“Press ‘h’ for instructions.”。
* -l:more命令下遇到特殊字符^L(送纸字符)会暂停,使用该选项可取消该功能。
* -f:计算行数时,计算的是实际的行数而非自动换行后的行数,因为单行字数太长时会自动换行。
* -p:不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。
* -c:与-p类似,不同的是先从顶部开始显示内容,再清除每行后剩余的内容。
* -s:当遇到有连续两行以上的空白行时,代换为一行的空白行。
* -u:不显示下划线。
* +/<String>:在文件中搜寻字符串string,然后显示字符串所在页的内容。
* +<num>:从第num行开始显示。

3、按页显示命令 less

使用方式:less [选项] <fileName>
说明:less作用与more非常相似,都是用来浏览文本文件的内容,不同的是less允许使用者往回卷动以浏览已经看过的部分,同时less并不在一开始就读入整个文件,因此在遇到大型文件的时候会比较快。与more相比less功能更加强大,在less命令执行时,可以使用的指令与vi编辑器的命令以及more的指令类似。
主要选项含义:
* -i:在查找时忽略大小写
* -p<string>:搜索指定的字符串,并从第一个符合条件的地方开始显示。
* -<显示列数>:改变页面的显示列数。
* -S:当某行的内容超过显示页面的宽度,直接将超出的部分截断舍弃,默认情况下less指令会把超出的部分折回来再显示。

二、复制、删除和移动命令

1、复制命令cp

命令格式:cp [选项] <source> <dest>
或者 cp [选项] <source>…<directory>

说明:将一个文件拷贝至另一文件,或一个或多个文件拷贝至另一个目录。
主要选项含义:
* -r:若source中含有目录,则递归地将目录下的文件拷贝至另一个目录。
* -f:若目的地已经有同名文件存在,则在复制前先予以删除再进行复制。
* -a:尽可能将文件模式、所有者、时间标签、链接等信息照原状予以复制,并且递归地复制子目录中的文件。
eg:
cp aaa bbb 将文件aaa复制为文件bbb。
cp *.c Finished 将所有的C语言源程序拷贝至Finished子目录中。

2、删除命令 rm

命令格式:rm [选项] <name>…
说明:逐个删除指定的文件或目录。默认情况下,<name>为文件名,rm命令不删除目录,只有指定-d选项时才表示删除指定的目录。
主要选项含义:
* -i:删除前逐一询问确认。
* -f:强制删除,即使原文件属性为只读,也直接删除而无需逐一确认。
* -r:递归地删除目录下的内容。
eg:
rm -i *.c 删除当前目录下所有的C语言源程序文件,删除前逐一询问确认。
rm -rf myfiles 将myfiles子目录以及子目录中所有文件强制删除。

3、移动或者重命名命令mv

命令格式:mv [选项] <source> <dest>或者 mv [选项] <source>…<directory>
说明:将一个文件重命名为另一个文件,或将数个文件移至另一目录。
主要选项含义:
* -i:若目的地已有同名文件,则先询问是否覆盖原文件。
* -f:强制移动,如果目的地有同名文件,则覆盖原文件。
eg:
mv aaa bbb 将文件aaa重命名为bbb
mv -i *.c myproject 将所有的C语言源程序移至myproject子目录中,若目的地已有同名文件,则先询问是否覆盖原文件。

三、创建和删除目录命令

1、创建目录命令 mkdir

命令格式:mkdir [-p] <dirName>…
说明:如果指定目录不存在,则建立之。
选项-p表示,若要建立的目录的上层目录尚未建立,则一并建立上层目录。

2、删除目录命令 rmdir

命令格式:rmdir [-p] <dirName>
说明:删除空目录dirName,如果目录非空,则出现错误信息。
选项-p表示当删除指定目录后,如果该目录的上层目录也变成了空目录,则将其一并删除。

四、切换工作目录和显示目录命令

1、切换工作目录命令 cd

命令格式:cd <dirName>
说明:变换工作目录至dirName。其中dirName可以用绝对路径表示,也可以用相对路径表示。若目录名省略,则变换至当前用户的主目录。

2、显示当前路径命令 pwd

命令格式:pwd

3、查看目录命令 ls

命令格式:ls [选项] [<name>…]
说明:列出文件或者目录的信息。<name>是文件或者目录名,默认情况下列出当前工作目录的信息。如果给定文件或者目录名则列出指定文件或者目录的情况。
主要选项:
* -a:显示所有文件及目录,ls默认将名称以“.”开头的文件或目录视为隐藏,不会列出。
* -b:当文件名包含不可打印字符时,以八进制形式列出文件的名字。
* -d:如果name参数是一个目录,那么默认情况下ls命令仅列出目录的名字,而不列出目录下的文件。-d选项与-l选项一起使用,可列出目录的属性信息。
* -l:使用长格式,除文件名外,还显示文件的类型(d:目录,c:字符型设备,b:块设备,p:命名管道,f:一般文件,l:符号链接,s:套接字)、权限、硬链接个数、所有者名、群组名、文件大小(单位为字节)、修改时间等详细信息;如果列表的是一个目录,则在最前面给出“总用量…”表示该目录占用的总块数(1块=1024字节)。
* -r:将文件以相反顺序显示,默认情况下按文件或目录名的英文字母顺序显示。
* -t:将文件依修改时间排序,愈新的愈排前面。
* -A:同-a,但不列出“.”、“..”文件。
* -F:在列出的文件名后以符号表示文件的类型,一般文件之后不加符号,可执行文件加“*”,目录加“/”,符号链接加“@”,管道加“|”,套接字加“=”。
* -R:若目录下有文件,则递归地列出目录下的文件。

五、查找与定位命令

1、查找文件或者目录命令 find

find命令按照用户指定的条件,从指定的目录开始检索,找到所有满足匹配准则的文件。指定的条件可以是文件名、文件大小或文件修改日期等。

命令格式:find [path…] [expression]
说明:在目录树结构中从path开始向下查找文件,将符合expression规定的文件列出来。输入的命令中第一个以“-”
“(”、“)”、“,”或者“!”开始的参数作为expression参数,在这之前的参数都被认为是要搜索的路径,在这之后的才被认为是expression的部分。如果不给出path,则使用当前工作目录,如果不给出expression,则使用“-print”作为默认的expression。
主要选项:
* -amin <n>:在过去n分钟内被访问过。
* -anewer <file>:比文件file更晚被访问过的文件。
* -atime <n>:在过去n天被访问过的文件。
* -cmin <n>:在过去n分钟被修改过。
* -cnewer <file>:比文件file更新后更新的文件。
* -ctime <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表示kilobytes,w表示两个字节组成的字。
* -type <c>:文件类型是c的文件。其中文件类型可以是:d、c、b、p、f、l、s之一,它们的含义与命令的选项-l中的说明一样。
* -pid <n>:进程的id是n的文件。

exp1 exp2或者 exp1 -a exp2或者 exp1 -and exp2:三者含义相同,表示同时满足规定exp1和exp2。
!exp1 或者 -not exp1:两者含义相同,表示exp的否定。
exp1 -o exp2或者exp1 -or exp2:两者含义相同,表示满足exp1或者exp2之一便可。

2、文件定义命令 locate

命令格式:locate [选项] <search string>
说明:locate可以快速地搜寻文件系统内是否有满足查询条件的文件。其工作原理是:先建立一个包括系统内所有文件名称及路径的数据库,之后当寻找文件时就只需查询这个数据库,而不必深入文件系统之中了。它还存储文件的访问权限及所有者信息,从而保证用户不能看到他们无权访问的文件。一般的,数据库的建立可以放在crontab中自动执行。使用者在搜索时只要用locate filename的形式就可以了。
主要选项:
* -u:从根目录/开始创建数据库。
* -U <dir>:从目录dir开始创建数据库。
* -e <dir1,dir2,…>:将指定的目录排除在搜索的范围之外。
* -l <level>:level表示安全级别,0表示不进行安全检查。如果level等于1,则启动安全模式,在安全模式下,使用者不会看到权限无法看到的文件,这会使速度减慢。
* -i:大小写敏感。
* -q:安静模式,不会显示任何错误信息。
* - <n>:至多显示n个输出
* -r <regexp>:使用正则表达式regexp做搜索的文件。

3、文件内容检索命令 grep

find命令和locate命令是根据文件名或者文件属性查找文件,而grep命令可以检索文件的内容,找到文件中满足匹配模式的文本行。grep命令的功能相当强大
命令格式:grep [选项] <string> <file> …
其中string是准备检索的字符串或模式。file是准备从中检索的文件。
常用选项:
* -i:表示在进行比较时忽略大小写。
* -n:表示在输出的检索结果之前给出文本行在文件中的行号。
* -v:表示检索不包括给定字符串或者模式的所有文本行。

六、链接命令 ln

对于同一文件,出于应用的需要,可以分配不同的名字。
链接分为两种:硬链接(hard link)与软链接(又叫符号链接 symbolic link)。

硬链接的意思是一个文件是另外一个文件的别名,它们不可区分,是用一个文件实体。
符号链接则是一个特殊的文件,它的内容不是真正的数据,而是指向另外一个文件(链接目标)的路径名。他们的关系与指针和指针所指的对象之间的关系有些相似。
对符号链接的大部分操作,包括打开,读,写等,都被传递给其链接目标,操作真正作用在链接目标上,另外一些操作,如删除等则作用在符号链接本身。
硬链接则必须在同一文件系统中,软链接却可以跨越不同的文件系统,并且可以对目标创建链接,不论是硬链接还是软链接都不会将原本的文件复制一份,因而只会占用非常少量的磁盘空间。

命令格式: ln [选项] <source> <dest>
说明:该命令产生一个dest到source的链接,至于ln命令是创建硬链接还是软链接则由选项-s决定
选项主要含义:
* -f:链接时先将与dest同名的文件删除。
* -d:允许系统管理员创建对目录的硬链接,默认情况下不允许创建目录的硬链接。
* -i:在删除与dest同名的文件时先进行询问。
* -n:在进行软链接时,将dest视为一般文件。
* -s:创建软链接,默认情况下创建硬链接。
* -v:在链接之前显示每个文件的文件名。
* -b:在链接时将可能被覆盖或删除的文件进行备份。
eg:
ln -s yy zz 对文件yy产生一个符号链接 zz;
ln yy xx 对文件yy产生一个硬链接zz;

七、创建文件、改变文件或者目录时间的命令touch

命令格式: touch [选项] <file1> [file2…]
说明:修改指定文件的访问时间和修改时间记录,默认修改为当前时间。如果指定文件不存在则创建该文件。
主要选项:
* -a:只改变文件的访问时间记录。
* -m:只改变文件的修改时间记录。
* -c:如果指定文件不存在,不会建立新的文件。与–no-create的效果一样。
* -r <参考文件或目录>:使用参考文件或目录的时间记录修改指定文件。
* -d <datestring>:根据datestring设定文件的时间与日期,datestring可以使用各种不同的日期时间格式。
* -t <stamp>:设定文件的时间记录,stamp的格式为[ [CC] YY] MMDDhhmm [.ss]。
* –no-create:如果指定文件不存在,不建立新的文件。
eg:
touch -t 1505061803 file 将file的时间记录改为2015年5月6日18点3分。
touch -d “6:03pm 05/06/2015” file 同上。
touch -r rfile file 将file的时间改变成rfile时间一样。

八、文件比较与排序

1、文件比较命令 diff和diff3

diff用于两个文件名
diff3用于三个文件比较

2、文件排序命令 sort

sort命令用于对输入数据或者文本文件的内容进行排序,并按照一定的顺序逐行显示。
命令格式: sort [选项] [file]
主要选项:
* -b:表示忽略前置的空白符。
* -d:表示仅考虑字母、数字和空格字符,按字典顺序排序。
* - f:表示忽略字母的大小写。
* - i:表示忽略非打印字符。
* -n:表示按照字符串的数字值而不是文字进行排序
* -r:表示按照反序,即从大到小的反向字符顺序排序。
* -k:表示按关键字或字段的位置排序。
* -o:表示存储排序结果的输出文件,默认情况下为标准输出。