【面试全纪实 | Linux 07 文件管理命令类】请回答,你真的了解Linux吗?

🗺️博客地图

📍一、cat 命令

📍二、chmod 命令

📍三、chown 命令

📍四、cp 命令

📍五、find 命令

📍六、head 命令

📍七、more 命令

📍八、less 命令

📍九、ln 命令

📍十、 locate 命令

📍十一、mv 命令

📍十二、rm 命令

📍十三、tail 命令

📍十四、touch 命令

📍十五、vim 命令

📍十六、whereis 命令

📍十七、 which 命令


一、cat 命令

cat 命令用于连接文件并打印到标准输出设备上。

  • cat 主要有三大功能

1、一次显示整个文件:

cat filename

2、从键盘创建一个文件:只能创建新文件,不能编辑已有文件。

cat > filename

3、将几个文件合并为一个文件

cat file1 file2 > file
  • 命令参数

-A,--show-all,等价于 -vET

-b,--number-nonblank,对非空输出行编号

-e,等价于 -vE

-E,--show-ends,在每行结束处显示 $

-n,--number,对输出的所有行编号,由 1 开始对所有输出的行数编号

-s,--squeeze-blank,有连续两行以上的空白行,就代换为一行的空白行 

-t,与 -vT 等价

-T,--show-tabs,将跳格字符显示为 ^I

-v,--show-nonprinting,显示内容,但是不打印出来,除了空格、回车以及TAB

  • 示例

① 把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

命令:cat -n log2012.log log2013.log

[root@localhost test]# cat log2012.log 
2012-01
2012-02
======
[root@localhost test]# cat log2013.log 
2013-01
2013-02
2013-03
======
[root@localhost test]# cat -n log2012.log log2013.log 
1 2012-01
2 2012-02
3
4
5 ======
6 2013-01
7 2013-02
8
9
10 2013-03
11 ======

② 把 log2012.log log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log

命令:cat -b log2012.log log2013.log log.log 

[root@localhost test]# cat -b log2012.log log2013.log log.log
1 2012-01
2 2012-02
3 ======
4 2013-01
5 2013-02
6 2013-03
7 ======

③ 使用 here doc 生成新文件

here doc:Here-Document(here doc)是Bash和其他shell中用于向命令传递多行文本的重定向方式。它可以与cat、tee等命令结合,常用于创建和编辑文件,或者在SSH连接中执行远程命令。

1、cat<<EOF,以EOF输入字符为标准输入结束
2、cat >filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束,注意:以这个方式输入时是没有’>'的。

[root@localhost test]# cat >log.txt <<EOF
\> Hello
\> World
\> MUZI
\> PWD=$(pwd)
\> EOF
[root@localhost test]# ls -l log.txt 
-rw-r--r-- 1 root root 37 11-21 17:07 log.txt
[root@localhost test]# cat log.txt 
Hello
World
MUZI
PWD=/opt/soft/test

④ 反向列示

tac:反向列示,tac 刚好是将 cat 反写过来,所以他的功能就跟 cat 相反。cat 是由第一行到最后一行连续显示在屏幕上,而 tac 则是由最后一行到第一行反向在屏幕上显示出来。

命令:tac log.txt

[root@localhost test]# tac log.txt
PWD=/opt/soft/test
MUZI
World
Hello

二、chmod 命令

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。

用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找。

以文件 log2012.log 为例:

[root@localhost test]# ls -l log2012.log
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列共有 10 个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是 d,表示是一个目录。从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。权限字符用横线代表空许可,r 代表只读,w 代表写,x 代表可执行。

  • 命令常用参数

-c:当发生改变时,报告处理信息

-R:处理指定目录以及其子目录下所有文件

  • 权限范围

u:目录或者文件的当前的用户

g:目录或者文件的当前的群组

o:除了目录或者文件的当前用户或群组之外的用户或者群组

a:所有的用户及群组

  • 权限代号

r:读权限,用数字4表示

w:写权限,用数字2表示

x:执行权限,用数字1表示

- :删除权限,用数字0表示

s :特殊权限

  • 示例

① 增加文件 t.log 所有用户可执行权限

chmod a+x t.log

② 撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息

chmod u=r t.log -c

③ 给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod 751 t.log -c

或者

chmod u=rwx,g=rx,o=x t.log -c

④ 将 test 目录及其子目录所有文件添加可读权限

chmod u+r,g+r,o+r -R text/ -c

三、chown 命令

chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。

  • 命令常用参数

-c:显示更改的部分的信息

-R:处理指定目录及子目录

  • 示例

① 改变拥有者和群组,并显示改变信息

chown -c muzi:muzi log2012.log

② 改变文件群组

chown -c :muzi mail.log

③ 改变文件夹及子文件目录属主及属组为 mail

chown -cR mail: test/

四、cp 命令

将源文件复制至目标文件,或将多个源文件复制至目标目录。

注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

  • 常用命令参数

-i:提示

-r:复制目录及目录内所有项目

-a:复制的文件与原文件时间一样

-s:复制创建文件的符号链接

  • 示例

① 复制 a.txt test 目录下,保持原文件时间,如果原文件存在提示是否覆盖

cp -ai a.txt test

② 为 a.txt 建议一个链接(快捷方式)

cp -s a.txt link_a.txt

拓展:cp -s 与 ln-s 的区别

   cp -s 命令是创建符号链接的命令。它的作用是将一个文件或目录复制成一个符号链接文件,这个符号链接文件指向原始文件或目录。符号链接文件是一个指向另一个文件或目录的快捷方式,也就是说,当你访问符号链接文件时,系统将会自动跳转到指向的文件或目录。例如,cp -s /source/file /destination/link 命令会在 /destination 目录下创建一个名为 link 的符号链接文件,指向 /source/file

   ln -s 命令是创建软链接的命令。软链接是指向另一个文件或目录的文件,类似于 Windows 中的快捷方式。与符号链接不同的是,软链接文件本身是一个文件,而不是一个文件复制的指向。软链接文件指向另一个文件或目录的路径,而不是文件或目录本身。例如,ln -s /source/file /destination/link 命令会在 /destination 目录下创建一个名为 link 的软链接文件,指向 /source/file

五、find 命令

用于在文件树中查找文件,并作出相应的处理。

  • 命令格式

find [pathname] -命令选项 指定条件和操作

  • 命令参数

pathname:find命令所查找的目录路径。例如用 . 来表示当前目录,用 / 来表示系统根目录。

-print:find命令将匹配的文件输出到标准输出。

-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 'command' { } \; ,注意 { } \; 之间的空格。

-ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

  • 命令选项

-name:按照文件名查找文件

-perm:按文件权限查找文件

-user:按文件属主查找文件

-group:按照文件所属的组来查找文件

-type:查找某一类型的文件,诸如:

b:块设备文件

d:目录

c:字符设备文件

l:符号链接文件

p:管道文件

f:普通文件

  • 示例

① 查找 48 小时内修改过的文件

find -atime -2

② 在当前目录查找 以 .log 结尾的文件。. 代表当前目录

find ./ -name '*.log'

③ 查找 /opt 目录下 权限为 777 的文件

find /opt -perm 777

④ 查找大于 1K 的文件

find -size +1000c

⑤ 查找等于 1000 字符的文件

find -size 1000c

-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。

六、head 命令

head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。

  • 常用参数

        -n <行数>:显示的行数(行数为复数表示从最后向前数)

  • 示例

① 显示 1.log 文件中前 20

head 1.log -n 20

② 显示 1.log 文件前 20 字节

head -c 20 log2014.log

③ 显示 t.log最后 10

head -n -10 t.log

七、more 命令

功能类似于 cat,more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键

space)就往下一页显示,按 b 键就会往回(back)一页显示。

  • 命令参数

+n:从笫 n 行开始显示

-n:定义屏幕大小为n行

+/pattern:在每个档案显示前搜寻该字串: pattern,然后从该字串前两行之后开始显示

-c:从顶部清屏,然后显示

-d:提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

-l:忽略 Ctrl+l(换页)字符

-p:通过清除窗口而不是滚屏来对文件进行换页,与 -c 选项相似

-s:把连续的多个空行显示为一行

-u:把文件内容中的下画线去掉

  • 常用操作命令

Enter  向下 n 行,需要定义。默认为 1 行

Ctrl+F  向下滚动一屏

空格键  向下滚动一屏

Ctrl+B  返回上一屏

=  输出当前行的行号

:f  输出文件名和当前行的行号

V  调用vi编辑器

!命令  调用Shell,并执行命令

q  退出more

  • 示例

① 显示文件中从第3行起的内容

more +3 text.txt

② 在所列出文件目录详细信息,借助管道使每次显示 5

ls -l | more -5

按空格显示下 5

八、less 命令

less more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且less 在查看之前不会加载整个文件。

  • 常用命令参数

-i:忽略搜索时的大小写

-N:显示每行的行号

-o:将 less 输出的内容在指定文件中保存起来

-s:显示连续空行为一行

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

-x:将“tab”键显示为规定的数字空格

b:向后翻一页

d:向后翻半页

h:显示帮助界面

Q:退出 less 命令

u:向前滚动半页

y:向前滚动一行

[空格键]:滚动一行

[回车键]:滚动一页

[pagedown]:向下翻动一页

[pageup]: 向上翻动一页

  • 示例

① ps 查看进程信息并通过 less 分页显示

ps -aux | less -N

② 查看多个文件

less 1.log 2.log

可以使用 n 查看下一个,使用 p 查看前一个。

九、ln 命令

功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。

链接分类:软链接、硬链接

  • 软链接
  1. 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  2. 软链接可以 跨文件系统 ,硬链接不可以
  3. 软链接可以对一个不存在的文件名进行链接
  4. 软链接可以对目录进行链接
  • 硬链接
  1. 硬链接,以文件副本的形式存在。但不占用实际空间。
  2. 不允许给目录创建硬链接
  3. 硬链接只有在同一个文件系统中才能创建

注意:

  1. ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  2. ln的链接又分软链接和硬链接两种,软链接就是 ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。 
  3. ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
  • 常用参数

-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程

  • 示例

① 给文件创建软链接,并显示操作信息

ln -sv source.log link.log

② 给文件创建硬链接,并显示操作信息

ln -v source.log link1.log

③ 给目录创建软链接

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

十、 locate 命令

locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,updatedb是由 cron daemon 周期性调用的。默认情况下 locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb 每天会跑一次,可以由修改 crontab 来更新设定值 (etc/crontab)

locate find 命令相似,可以使用如 *? 等进行正则匹配查找

  • 常用参数

-l num:要显示的行数

-f:将特定的档案系统排除在外,如将proc排除在外

-r:使用正则运算式做为寻找条件

  • 示例

① 查找和 pwd 相关的所有文件(文件名中包含 pwd

locate pwd

② 搜索 etc 目录下所有以 sh 开头的文件

locate /etc/sh

③ 查找 /var 目录下,以 reason 结尾的文件

locate -r '^/var.*reason$'

其中.表示一个字符,*表示任务多个;.*表示任意多个字符

十一、mv 命令

        移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。

        当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

  • 示例

① 将文件 test.log 重命名为 test1.txt

mv test.log test1.txt

② 将文件 log1.txt、log2.txt、log3.txt 移动到根的 test3 目录中

mv llog1.txt log2.txt log3.txt /test3

③ 将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖

mv -i log1.txt log2.txt

④ 移动当前文件夹下的所有文件到上一级目录

mv * ../

十二、rm 命令

        删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm来删除文件,通常仍可以将该文件恢复原状。

rm [选项] 文件…

  • 示例

① 删除任何 .log 文件,删除前逐一询问确认

rm -i *.log

② 删除 test 子目录及子目录中所有档案删除,并且不用一一确认

rm -rf test

③ 删除以 -f 开头的文件

rm -- -f*

十三、tail 命令

用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用于查看日志文件。

  • 常用参数

-f:循环读取(常用于查看递增的日志文件)

-n<行数>:显示行数(从后向前)

  • 示例

① 循环读取逐渐增加的文件内容

ping 127.0.0.1 > ping.log &

& 后台运行,可使用 jobs -l 查看,也可使用 fg命令 将其移到前台运行。

十四、touch 命令

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 ls -l 可以显示档案的时间记录。

  • 命令格式

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"的时间属性为当前系统时间

#修改文件的时间属性
[root@localhost test]# touch testfile

首先,使用ls命令查看testfile文件的属性,如下所示:

#查看文件的时间属性
[root@localhost test]# ls -l testfile
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile

#原来文件的修改时间为16:09

执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:

#修改文件时间属性为当前系统时间
[root@localhost test]# touch testfile

#查看文件的时间属性
[root@localhost test]# ls -l testfile
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile

#修改后文件的时间属性为当前系统时间 

② 使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file"

#创建一个名为“file”的新的空白文件
[root@localhost test]# touch file

十五、vim 命令

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。

 三个模式使用常见命令:

  • 示例

① 打开文件并跳到第 10

vim +10 filename.txt

② 打开文件跳到第一个匹配的行

vim +/search-term filename.txt

③ 以只读模式打开文件

vim -R /etc/passwd

十六、whereis 命令

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。

  • 常用参数

-b 定位可执行文件

-m 定位帮助文件

-s 定位源代码文件

-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件

  • 实例

① 查找 locate 程序相关文件

whereis locate

② 查找 locate 的源码文件

whereis -s locate

 ③ 查找 lcoate 的帮助文件

whereis -m locate

十七、 which 命令

linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

which:查看可执行文件的位置,whereis 查看文件的位置。locate 配合数据库查看文件位置。

find:实际搜寻硬盘查询文件名称。

which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

  • 常用参数

-n:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名

  • 示例

① 查看 ls 命令是否存在

which ls

② 查看 which

which which

③ 查看 cd

which cd

#会显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令

十八、grep 命令

强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。

grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

  • 命令格式

grep [选项] 参数 文件 | 目录

  • 常用参数
-A n    显示匹配字符后 n
-B n    显示匹配字符前 n
-C n   显示匹配字符前后 n
-c    计算符合样式的列数
-i    忽略大小写
-l    只列出文件内容符合指定的样式的文件名称
-f    从文件中读取关键词
-n    显示匹配内容的所在文件中行数
-R    递归查找文件夹
  • grep 的规则表达式

^    锚定行的开始,如: '^grep'  匹配所有以  grep  开头的行
$    锚定行的结束,如: 'grep$'  匹配所有以 grep 结尾的行
.    匹配一个非换行符的字符,如: 'gr.p'  匹配  gr  后接一个任意字符,然后是 p
*    匹配零个或多个先前字符,如:'*grep'  匹配所有一个或多个空格后紧跟 grep 的行
.*    一起用代表任意字符
[]    匹配一个指定范围内的字符,如  '[Gg]rep'  匹配  Grep  和  grep
[^]    匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'  匹配不包含 A-R T-Z 的一个字母开头,紧跟 rep 的行
\(..\)    标记匹配字符,如:'\(love\)' love 被标记为 1
\<    锚定单词的开始,如 :'\<grep' 匹配包含以 grep 开头的单词的行
\>    锚定单词的结束,如: 'grep\>' 匹配包含以 grep 结尾的单词的行
x\{m\}    重复字符x m 次,如: '0\{5\}' 匹配包含 5 o 的行
x\{m,\}    重复字符 x 至少 m 次,如: 'o\{5,\}' 匹配至少有5 o 的行
x\{m,n\}    重复字符 x 至少 m 次,不多于 n 次,如: 'o\{5,10\}' 匹配 5--10 o 的行
\w   匹配文字和数字字符,也就是 [A-Za-z0-9] ,如: 'G\w*p' 匹配以 G 后跟零个或多个文字或数字字符,然后是p
\W   \w 的反置形式,匹配一个或多个非单词字符,如点号句号等
\b    单词锁定符, 如: '\bgrep\b' 只匹配 grep
  • 示例

① 查找指定进程

ps -ef | grep nginx

② 查找指定进程个数

ps -ef | grep nginx -c

③ 从文件中读取关键词

cat test1.txt | grep -f key.log

④ 从文件夹中递归查找以grep开头的行,并只列出文件

grep -lR '^grep' /tmp

 ⑤ 查找非x开关的行内容  

grep '^[^x]' test.txt

⑥ 显示包含 ed 或者 at 字符的内容行

grep -E 'ed|at' test.txt

十九、wc 命令

wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出。

  • 命令格式

wc [选项] file..

  • 命令参数
-c    统计字节数
-l    统计行数
-m    统计字符数
-w    统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
  • 实例

① 查找文件的 行数 单词数 字节数 文件名

wc text.txt

结果:

7 8 70 test.txt

② 统计输出结果的行数

cat test.txt | wc -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子Linux

各位看官老爷,行行好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值