目录存放着Linux的源代码(linux文件及目录常用管理命令)

在Linux系统下,一切皆文件,文件主要分为五类:普通文件、目录文件、设备文件、链接文件、管道文件。普通文件:是最基本的文件,保存着运行指令和各种数据。普通文件是以ASCII码形式存储,人类能够读懂可以编辑修改的文件。目录文件:是文件信息的集合,实际

在Linux系统下,一切皆文件,文件主要分为五类:普通文件、目录文件、设备文件、链接文件、管道文件。

普通文件:是最基本的文件,保存着运行指令和各种数据。普通文件是以ASCII码形式存储,人类能够读懂可以编辑修改的文件。

目录文件:是文件信息的集合,实际上就是我们通常认识的“目录”。

设备文件:是对计算机硬件的抽象化,例如,硬盘、鼠标、键盘被作为一个设备文件管理。

链接文件:是指向另一个文件的链接,它本身没有数据,内部的数据来自其他文件。链接文件区分为硬链接与软件,两者均用于同步数据。

管道文件:是用于程序之间进行通信的特殊文件。

那么要怎么区分这些文件呢?这时可以用ll命令来看打印文件的详细信息,每一行的第一个字段里的第一个字符代表的就是这个文件的类型。

-:表示普通文件。

d:表示目录。

l:链接文件。

b:块设备文件。

c:字符设备文件。

s:套接口文件。

p:管道。

目录存放着Linux的源代码(linux文件及目录常用管理命令)

一、绝对路径与相对路径

在Linux中文件的路径,就是文件存在的地址。如同快递寄送东西需要寄货地址,这个地址在Linux文件中就是它的路径。例如:/root/mfkddd/file,file是一个文件,它的路径就是/root/mfkddd。在Linux的世界中,路径可分为绝对路径和相对路径两种。

绝对路径:路径的写法一定是由根目录“/”开始。例如:cat /root/mfkddd/file,该语句的意思是file文件里的内容,cat后面跟的是绝对路径。

相对路径:路径的写法不是由根目录开始的。例如:假如进入到mfkddd目录,可以用cat file这个命令直接file文件里面的内容,这里的cat后面跟的file文件相对mfkddd而言便是相对路径。

二、操作目录的相关命令

2.1 Linux系统中的常见特殊目录(见表1)

表1.特殊目录

符号    说明

.     代表当前目录

..     代表上一层目录

-     代表前一个工作目录

~     代表当前用户的家目录

每个目录下都有两个目录:“.”和“..”,分别代表当前目录和上层目录。在根目录下使用ls -a命令查询,可以看到根目录下存在“.”和“..”两个目录,这两个目录的属性和权限完全一致,这说明根目录的“.”和“..”是同一个目录,如表2.2所示。

2.2 常用操作目录的命令

2.2.1 cd:切换目录。

[rootlocalhost ~]# cd /tmp<==切换到/tmp目录中

[rootlocalhost tmp]# <==由此可知,此目录为tmp

如上述操作,cd命令是切换命令,cd后面跟的tmp是相对路径,cd tmp命令的意思是从当前目录切换到tmp目录。这里使用的是tmp的相对路径,使用相对路径的前提是目标目录必须事先存在。

如果只输入cd或者cd ~代表会回到使用者的家目录。输入cd -代表回到上一个工作目录。输入cd /root/mfkddd代表进入到mfkddd目录,这里cd后面跟的是绝对路径,所以在任何目录下输入cd /root/mfkddd这条命令都可以进入到mfkddd目录。

2.2.2 pwd:显示当前目录的路径。

例如,先在root目录下创建一个mfkddd目录,并在里面创建一个file文件。

[rootlocalhost /]# cd /root <==首先进入到root目录

[rootlocalhost root]# mkdir mfkddd<==创建目录

[rootlocalhost root]# cd /root/mfkddd<==再进入到mfkddd目录

做好所有准备后,可以使用pwd命令来查询文件路径了。在mfkddd目录下输入pwd命令,打印出来的/root/mfkddd路径是mfkddd目录的绝对路径。

[rootlocalhost mfkddd]# pwd

/root/mfkddd

2.2.3 mkdir:建立一个新的目录。

mkdir命令后面可以选择-m或-p参数。-m表示可以给创建的目录设置权限,-p表示可以创建多级目录。

如果没有加-p参数创建多级目录,终端将会弹出“没有这样的文件或目录”的提示框。因为当前目录下没有test1这个目录,所以找不到它,后面的test2和test3自然也无法被创建。

[rootlocalhost mfkddd]# mkdir test1/test2/test3 <==创建目录

mkdir: 无法创建目录\”test1/test2/test3\”: 没有那个文件或目录<==创建失败

[rootlocalhost mfkddd]#

为了解决上述问题,在mkdir后面加上一个参数-p,系统就会默认先创建test1,然后创建test2,最后创建test3,操作如下。

[rootlocalhost mfkddd]# mkdir -p test1/test2/test3 <==创建多级目录

[rootlocalhost mfkddd]#

现在已经执行了mkdir -p test1/test2/test3命令,如果没有看到效果,就说明创建成功,可以通过切换命令进入到test3目录,如果能成功进入,表示多级目录创建成功,操作如下。

[rootlocalhost mfkddd]# cd test1/test2/test3 <==切换目录

[rootlocalhost test3]# <==已切换到此目录

2.2.4 rmdir:删除一个空的目录。

rmdir命令删除目录时需要一层一层地进行,而且被删除的目录必须是空目录。如果要将目录下的所有东西都删除,需要在rmdir命令后面加上-p参数。

当直接用rmdir命令删除一个多级目录时,将出现提示错误信息:目录不为空。

[rootlocalhost mfkddd]# rmdir test1/ <==删除test1目录

rmdir: 删除 \”test1/\” 失败: 目录非空<==删除失败

[rootlocalhost mfkddd]#

为了解决上述问题,在rmdir命令后面加上参数-p 。rmdir只是针对目录,且在目录内没有其他文件的情况下使用。如果既要删除目录又要删除文件,可以用rm命令来实现。

[rootlocalhostmfkddd]# rmdir -p test1/test2/ <==删除多层目录,加-p参数

[rootlocalhostmfkddd]#

2.3 关于执行文件路径的变量$PATH

当执行一个命令时,如ls,系统会按照PATH的设定到每个PATH定义的目录下查找文件名为ls的可执行文件。如果在PATH定义的目录中含有多个名为ls的可执行文件,那么先查询到的同名命令就会先被执行。

使用echo $PATH命令可以有哪些目录被定义。echo命令的作用是显示或打印文件内容,而PATH前面加的$表示后面接的是变量,所以会显示目前的PATH。

[rootlocalhost ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PATH一定要大写,这个变量的内容由一堆目录组成,每个目录使用(:)分隔,每个目录有顺序之分。无论是root还是其他用户都有/bin或/usr/bin这个目录在PATH变量内,所以就能在任何地方执行ls命令来找到/bin/ls执行文件。

2.3.1 在PATH中加入目录的方法如下(例如在任何目录均可执行/root目录下的命令,那么就将/root加入到PATH当中即可)。

[rootlocalhost ~]# PATH=”${PATH:/root}”

2.3.2 PATH的特点。

a.不同身份用户预设的PATH不同,因此预设能够随意执行的命令也不同;

b.PATH是可以修改的;

c.使用绝对路径或相对路径直接指定某个命令的文件名进行执行,会比查找PATH正确率更高;

d.命令应该要放到正确的目录下,执行起来会更加方便;

e.本地目录(.)最好不要放到PATH中。

三、文件与目录管理

Linux的目录结构为树状结构,最顶级的目录为根目录,其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

Linux中可以使用ls、cd、mkdir、cp、mv和rm等常见命令对文件或者目录进行处理,示例如下。

3.1 列出/tmp目录下的所有文件/文件夹。

[rootlocalhost tmp]# ls /tmp<==tmp目录下的所有文件

xuedaoxuedao.tar

[rootlocalhost tmp]#

3.2 直接用ls命令,表示当前目录下的所有文件/文件夹。

[rootlocalhost tmp]# ls <==当前目录下的所有文件

xuedaoxuedao.tar

[rootlocalhost tmp]#

3.3 当前目录下所有文件的详细属性/信息。

[rootlocalhost tmp]# ls -l <==当前目录下所有文件的详细信息

总用量 16

-rw-r–r–. 1 root root 52 12月 25 00:09 xuedao

-rw-r–r–. 1 root root 10240 12月 24 22:24 xuedao.tar

[rootlocalhost tmp]#

3.4 切换到home目录。

[rootlocalhost ~]# cd /home/

[rootlocalhost home]# pwd

/home

3.5 在/root目录下创建test目录。

[rootlocalhost ~]# mkdir test

[rootlocalhost ~]# ls

test

四、文件内容

4.1 文件命令:cat、tac、nl

操作命令前先在/tmp目录下用vi xuedao命令创建一个xuedao文件,并在里面写入第1~3行的内容,操作如下:

[rootlocalhost tmp]# vi xuedao<==使用vi编辑器打开文件

1Hello xuedao 001

2Hello xuedao 002

3.xuedaon.com

下面将介绍tac命令的使用与tac和cat两个命令之间的区别。

4.1.1 ac命令也是用来文件内容的,只不过tac命令是从最后一行开始显示文件的信息,与cat命令恰好相反。tac xuedao命令,如下:

[rootlocalhost tmp]# tac xuedao<==从最后一行开始显示xuedao文件

3.xuedaon.com

2Hello xuedao 002

1Hello xuedao 001

[rootlocalhost tmp]#

4.1.2 nl命令是命令,它与cat或tac命令的区别在于nl命令默认带行号显示内容。

语法格式如下:

nl [参数] [文件]

参数如下。

-b指定行号的方式,主要有以下两种。

-b a:表示不论是否为空行,也同样列出行号(类似于cat -n)。

-b t:如果有空行,则空的那一行不列出行号(默认值)。

nl命令的示例如下:

[rootlocalhost tmp]# nl –b a xuedao

1Hello xuedao 001

2Hello xuedao 002

3.baidu.com

4<==空行(没有数据的一行)

5 <==空行(没有数据的一行)

[rootlocalhost tmp]# nl –b t xuedao

1Hello xuedao 001

2Hello xuedao 002

3.baidu.com

4.2 翻页文件内容命令:more、less

4.2.1 more命令用于逐页显示文件信息。在more命令运行过程中,可以使用如表2所示的按键进行后续操作。

表2 more命令运行过程中按键的功能

键功能

Enter向下翻一行

/在显示内容中,向下查询“字符”这个关键字

:f立刻显示出文件名以及目录显示的行数

Q立即离开more,不再显示该文件内容

B向回翻页,该操作只对文件有效

N重复搜索同一个字符

4.2.2 less命令与more命令功能类似,区别在于less运行过程中,可以使用如表3所示按键进行后续操作。

表3 less命令运行过程中按钮的功能

键      功能

空格键    向下翻一页

PgDn     向下翻一页

PgUp     向上翻一页

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

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

n       重复前一个搜索

N       反向重复前一个搜索

g       显示到这个文件的第一行去

G       显示到这个文件的最后一行去

q       离开less这个程序

4.3 获取资料命令:head、tail

4.3.1 head是查询文件内容命令,它可以指定参数从前往后显示指定的行数。

语法格式如下:

head [参数] [文件名]

参数如下。

-n: n代表int类型数字,假设数字设置为3,显示的内容从前往后显示前3行,如果不指定参数则默认显示前10行。

head命令的示例如下:

[rootlocalhost tmp]# head xuedao

1Hello xuedao 001

2Hello xuedao 002

3.xuedaon.com

4

5

[rootlocalhost tmp]#

4.3.2 tail命令也是查询命令,tail命令从后往前显示指定的行数,并且空格也会被显示出来。

语法格式如下:

tail [参数] file

参数如下。

-n:n代表int类型数字,假设数字设置为3,显示的内容从前往后显示前3行,如果不指定参数默认下显示后10行。

-f:代表实时显示。

tail命令的示例如下:

[rootlocalhost tmp]# tail -3 xuedao

3.baidu.com

4

5

[rootlocalhost tmp]#

4.4 查询非纯文字文件命令:od

语法格式如下:

od [参数] [文件名]

参数如下。

-t:后面可以接类型(type)的输出。

a:利用默认的字符进行输出。

c:使用ASCII字符进行输出。

od命令的示例如下:

[rootlocalhost tmp]# od -t c xuedao

0000000 H e l l o x u e d a o

0000040 2 \\n w w w . b a i d u . c o m

0000064

[rootlocalhost tmp]#

以上左侧的第一列是以八进制表示的字节数。

五、文件与目录的默认权限与隐藏权限

5.1 设置默认文件权限的命令:umask

umask命令是用于设置用户在创建文件时的默认权限,当在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。

[rootlocalhost ~]# umask

0022

[rootlocalhost ~]#

[rootlocalhost ~]# umask -S

u=rwx,g=rx,o=rx

[rootlocalhost ~]#

若使用者创建文件,默认没有可执行(x)权限,只有r(读)和w(写)两个权限,也就是最大权限为666,默认权限为-rw-rw-rw-。

默认情况下r、w、x的值分别是4、2、1,umask的值指“该默认值需要减去的权限”,即如果需要减去写的权限,则为2;而如果要减去读的权限,则为4。上述umask的值为002,表示user、group并没有被拿掉任何权限,不过others的权限被减去2,也只是说others被减去写的权限。

5.2 文件隐藏属性命令:chattr、lsattr

5.2.1 chattr命令是设置文件隐藏属性的命令。

语法格式如下:

chattr [+ – ][参数] [文件]

参数如下。

+:增加某一个特殊参数,其他原本存在参数不动。

-:移除某一个特殊参数,其他原本存在参数不动。

a:当设置a后,这个文件将只能增加信息,不能修改、删除信息,只有root才能设定这个参数。

i:当设置i后,该文件“不能被删除、改名、设置链接,也无法定稿或新增信息”,可增加系统安全性,只有root能设置该属性。

常见的属性是a和i,且很多属性只有root才能设置。

[rootlocalhost tmp]# touch attrtest<==创建attrtest文件

[rootlocalhost tmp]# chattr +i attrtest<==给attrtest文件赋上i的权限

[rootlocalhost tmp]# rm attrtest<==删除attrtest

rm:是否删除普通空文件 \”attrtest\”?Y<==是否删除,设置为Y(是)

rm: 无法删除\”attrtest\”: 不允许的操作<==删除失败

[rootlocalhost tmp]# chattr -i attrtest<==给attrtest文件去掉上i的权限

[rootlocalhost tmp]# rm attrtest<==删除attrtest

rm:是否删除普通空文件 \”attrtest\”?Y <==是否删除,设置为Y(是)

[rootlocalhost tmp]# <==没有任何错误,表示删除成功

在上述例子中用touch attrtest命令创建了一个attrtest文件,并用chattr +i attrtest命令给attrtest文件赋上i的权限,然后用rm attrtest命令删除attrtest文件。此时rm发出提示rm: cannot remove ‘attrtest’ : Operation not permitted不允许执行删除操作,只有通过chattr –i attrtest命令减去attrtest文件的i权限后才能删除attrtest文件。

5.2.2 lsattr命令是显示文件隐藏属性的命令。

语法格式如下:

lsattr [参数] [文件]

参数如下。

-a:显示隐藏属性。

-d:如果接的是目录,则仅显示目录本身的属性而不是目录内的文件名。

-R:连同子目录的文件一起显示。

[rootlocalhost ~]# cd /tmp<==切换目录到/tmp

[rootlocalhost tmp]# touch xuedao<==创建文件名为xuedao

[rootlocalhost tmp]# chattr +ai Sxuedao<==为xuedao文件设置属性

[rootlocalhost tmp]# lsattr xuedao<==显示xuedao文件隐藏的属性

–S-ia——-e- xuedao<==xuedao文件属性结果

[rootlocalhost tmp]#

5.2.3 文件类型:file

文件基本信息,属于哪类文件,如文件属于ASCII、data或者binary等。显示文件的类型是ASCII的纯文字文件。

[rootlocalhost ~]# file ~/.bashrc

/root/.bashrc: ASCII text

显示passwd的文件信息,例如文件的suid权限、兼容Intel x86-64的硬件平台、使用Linux核心2.6.18的动态方法库连接等。

[rootlocalhost ~]# file /usr/bin/passwd

/usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

六、查找命令和文件

6.1 查找指定命令所在路径的命令:which

which命令能够根据PATH这个环境变量所规范的路径,查询执行文件的文件名。

语法格式如下:

which [参数] [命令]

参数如下。

-a:将所有由PATH目录中可以找到的命令均列出,而不止第一个找到的命令名称。

示例如下。

6.1.1 查询ifconfig命令的完整文件名。

[rootlocalhost ~]# which ifconfig

/sbin/ifconfig

6.1.2 用which命令搜索ls命令的文件路径。

[rootlocalhost ~]# which ls

alias ls=\’ls –color=auto\’

/usr/bin/ls

6.1.3 查询history命令的完整文件名。

[rootlocalhost ~]# which history

/usr/bin/which: no history in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

最后一个应用中查找history这个常用命令,是因为history是bash内建命令,而which默认查找PATH内规范的目录。

6.2 查找文件的文件名命名:whereis、find

6.2.1 whereis命令。

用于在一些特定的目录中查询指定命令路径。

语法格式如下:

whereis[参数] [文件]

参数如下。

-b:只查找binary格式的文件。

-m:只查找在说明manual路径下的文件。

示例如下。

①查找ifconfig的文件名。

[rootlocalhost ~]# whereis ifconfig

ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

②只查询在man里面的passwd文件。

[rootlocalhost ~]# whereis -m passwd

passwd: /usr/share/man/man1/passwd.1.gz

whereis命令主要是针对/bin/sbin目录下的执行文件,以及/usr/share/man目录下的man文件,或者对几个特定的目录进行查找,因此速度较快。可以使用whrereis –lwhereis查找的目录。

[rootlocalhost ~]# whereis -l

whereis [ -sbmu ] [ -SBM dir … -f ] name…

[rootlocalhost ~]#

6.2.2 find命令。

Linux下find命令的作用是在目录结构中搜索文件,并执行指定的操作。Linux下的find命令提供了相当多的查找条件,功能非常强大,所以find的选项也非常多。本节将介绍find的选项功能和find的简单使用方法。

语法格式如下:

find [查询路径][选项] [参数] [查询内容]

选项如下。

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

示例如下。

根据关键字查找。例如,通过find命令搜索指定目录下的mysql文件文字。

[rootlocalhost ~]# find / -name mysql

/usr/share/mysql

/usr/lib64/mysql

[rootlocalhost ~]#

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 449@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://www.hnhgjc.com/n/85495.html

(0)
小智的头像小智
上一篇 2022-08-22
下一篇 2022-08-22

相关推荐

联系我们

qq:65401449

在线咨询: QQ交谈

邮件:65401449@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信