Linux常用命令(文件及目录相关操作)-ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台
记录工作点滴
分享运维知识

Linux常用命令(文件及目录相关操作)

Linux常用命令(博客地图):https://blog.csdn.net/sysukehan/article/details/105804511

1、切换目录cdChange Directory

cd [相对路径或绝对路径]

相对路径:路径的写法不是由根目录/写起,如cd opt

绝对路径:路径的写法一定由根目录/写起,如cd /etc/ssh

.代表此层目录,..代表上一层目录,~代表“目前用户身份”所在的主文件夹。

回到上一级目录:cd ..

回到上三级目录:cd ../../../

2、显示当前目录pwd(Print Working Directory)

3、列出目录下的内容ls

ls 目录名

目录名可以是相对路径也可以是绝对路径,不加目录名列出的是当前所在文件夹下的内容。

参数:

-a:全部文件,连同隐藏文件(开头为.的文件)一起列出来。

-l:列出长数据串,包含文件的属性与权限等数据。

-h:将文件容量以人类较易读的方式(例如GB,KB等)列出来。

-i:列出inode号码。

-n:列出UID与GID,而非用户与用户组的名称。

-S:以文件容量大小排序,而不是用文件名排序。

-t:依时间排序,而不是用文件名。

ls -al /opt

ls不加参数l的情况下文件或目录名会横向排列。

4、新建文件及目录

新建目录:mkdir

mkdir newDir

新建文件:touch

touch newFile

touch /opt/newFile

touch还可以用来修改已有文件的时间,每个文件有三个时间:

modification time(mtime):

当文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。

status time(stime):

当该文件的“状态”(status)改变时,就会更新这个时间。举例来说,如果权限和属性被更改了,就会更新这个时间。

access time(atime):

当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,使用cat去读取/etc/ssh/ssh_config,就会更新该文件的atime了。

默认情况下,ls -l显示的是文件的mtime。

touch [-acm] filename

参数:

-a:仅修改访问时间;

-c:仅修改文件的时间,若该文件不存在则不创建新文件;

-m:仅修改mtime;

不加参数在文件存在的情况下会修改文件的三个时间。文件不存在的情况下创建文件。

Linux文件长度限制:

1)单一文件或目录的最大容许文件名为255个字符。

2)包含完整路径名称及目录(/)的完整文件名为4096个字符。

5、文件及目录属性

关注第一列的十个字符。

第一个字符代表类型,有以下几种:

d:目录

-:文件(含纯文本文件(ASCII)、二进制文件(binary)、数据格式文件(data))

l:链接文件

b:块(block)设备文件

c:字符(character)设备文件

s:套接字(sockets)

p:管道(FIFO,pipe)

后九位分为三组,为rwx三个参数的组合。r代表可读,w代表可写,x代表可执行。

第一组为“文件所有者的权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”。

r:表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用ls这个命令将该目录的内容列表显示出来。

w:表示具有更改该目录结构列表的权限:

1)新建新的文件与目录;

2)删除已经存在的文件与目录(不论该文件的权限为何);

3)将已存在的文件或目录进行重命名;

4)转移该目录内的文件、目录位置;

x:代表用户能否进入该目录成为工作目录。

chgrp:改变文件所属用户组

chgrp 组名 文件或目录

如:chgrp kehan newFile(图中第三列是所有者名,第四列是组名)

chown:改变文件所有者

chown 账号名称 文件或目录

chown 账号名称:组名 文件或目录

如:

chown root:root newFile

chown kehan newDir

chmod:改变文件或目录的权限

chmod 750 newFile

以上命令均可加-R参数,意思是进行递归的持续更改,即连同子目录下的所有文件、目录一起修改。如:chmod -R root:root newDir

chmod命令中修改权限用的是数字750,前面提过rwx分为三组,每一组的数字和占一位数字,r=4,w=2,x=1,因此750意思是rwxr-x—,而rw-r—–的数字表示为640.

6、文件隐藏属性

查看文件隐藏属性:lsattr filename

常见的几个属性:

a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性;

i:让一个文件“不能被删除、改名,而且设置连接也无法写入或添加数据”,对于系统安全性有相当大的帮助,只有root能设置此属性;

修改文件的隐藏属性:chattr [+-=][ai] filename

参数:

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

-:删除某一个特殊参数,其他原本存在参数则不动;

=:仅有后面接的参数;

如:chattr +i newFile

这时候尝试去删除这个文件,会报错。

把i属性去掉:chattr -i newFile

再尝试删除,删除成功。

7、拷贝文件(夹)

拷贝文件:cp sourceFile targetFile

cp ssh_config ssh_config_bak

拷贝文件到指定目录下,文件名不变:cp ssh_config /opt

拷贝文件夹cp -r sourceDir targetDir

cp -r /etc/ssh /opt

如果targetDir文件夹存在,则把sourceDir文件夹拷贝一份放到targetDir目录下。如果targetDir不存在,会创建一个新文件夹,名称为targetDir,内容是sourceDir的内容。相当于把sourceDir的内容拷贝过去后重命名为targetDir。

如cp -r /etc/ssh /opt/test

因为/opt/test在拷贝文件夹之前并不存在,所以相当于把ssh目录拷贝到/opt目录下后重命名为test。

cp命令几个常用选项:

-d:若源文件为链接文件(link file),则复制链接文件属性而非文件本身的属性。

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)。

-r:递归持续复制,用于目录的复制行为(常用)。

-a:相当于-pdr

拷贝多个文件或目录到指定目录下:

cp [options] source1 source2 source3 … directory

在这种情况下最后一个一定是一个已存在的目录路径。

8、移动文件(夹)

mv source target

同一目录下移动文件或文件夹,相当于重命名。

mv newDir newDir2

不同目录下:

1)移动文件,如果目标存在且是文件夹,则把文件移动到指定文件夹下。如果目标存在但是是文件,则覆盖目标文件。如果目标目录存在但文件不存在,则移动到目录下后重命名为指定文件名。

mv /etc/ssh/ssh_config_bak /opt:移动/etc/ssh/ssh_config_bak文件到/opt下。

mv /etc/ssh/ssh_config_bak /opt/test1:移动/etc/ssh/ssh_config_bak文件到/opt下并重命名为test1。

mv /etc/ssh/moduli_bak /opt/test1:移动/etc/ssh/moduli_bak文件到/opt下,覆盖已有的test1文件。

2)移动文件夹,如果目标存在,则文件夹移动到目标下,名称不变。如果目标不存在,则文件夹移动到存在的上一级目录下,重命名为指定的文件夹名。

mv newDir2 /opt:移动newDir2文件夹到/opt目录下。

mv newDir2 /opt/newDir1:移动newDir2文件夹到/opt目录下并重命名为newDir1.

移动多个文件或目录到指定目录下:

mv [options] source1 source2 source3 … directory

在这种情况下最后一个一定是一个已存在的目录路径。

9、删除文件(夹)

删除文件:rm filename

删除空文件夹:rmdir [-p] dirname

参数-p:连同上层“空的”目录也一起删除。

删除非空文件夹:rm -r dirname

参数:

-f:就是force的意思,忽略不存在的文件,不会出现告警信息。

-r:递归删除,常用在目录的删除。

10、取得路径的文件名与目录名称

取得路径的文件名称basename

basename /etc/ssh/ssh_config

取得路径的目录名称dirname

dirname /etc/ssh/ssh_config

11、链接文件(link)

hard link(硬链接或实际链接)

hard link只是在某个目录下新建一条文件名连接到某inode号码的关联记录而已。一般来说,使用hard link设置链接文件时,磁盘的空间与inode的数目都不会改变。

限制:

1)不能跨文件系统;

2)不能链接到目录;

symbolic link(软链接或符号链接,即快捷方式)

symbolic link就是在创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。由于只是利用文件来作为指向的操作,所以当源文件被删除之后,symbolic link的文件会“打不开”,会一直提示“无法打开某文件”。实际上就是找不到源文件的“文件名”而已。

由于symbolic link所创建的文件为一个独立的新文件,所以会占用掉inode和block。

创建链接文件

ln [-sf] 源文件 目标文件(目标文件是源文件的链接文件)

参数:

-s:如果不加任何参数就创建链接,那就是hard link,-s就是symbolic link。

-f:如果目标文件存在时,就主动将目标文件直接删除后再创建。

创建hard link:ln /etc/ssh/ssh_config /etc/ssh/ssh_hard_link

创建symbolic link:ln -s /etc/ssh/ssh_config /etc/ssh/ssh_soft_link

如果要更新ssh_soft_link指向的链接,直接执行ln -s newFile /etc/ssh/ssh_soft_link是不行的,会报ssh_soft_link文件已存在,需要加上-f参数,把老的ssh_soft_link文件删除后再重新创建链接:ln -sf newFile /etc/ssh/ssh_soft_link。

参考资料

《鸟哥的Linux私房菜基础学习篇(第三版)》

未经允许不得转载:ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台 » Linux常用命令(文件及目录相关操作)

如果文章对你有帮助,欢迎点击上方按钮打赏作者

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址