文件相关

参考菜鸟教程:https://www.runoob.com/linux/linux-file-content-manage.html

简介

linux是多用户系统,不同用户处于不同地位

主要目录结构

 

文件和属组

于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组(属组——所有者所在的组)用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用

 

 

修改文件/目录所属用户与权限

  •  chown (change owner) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。

查看文件/目录所属用户和组

ll 或者 ls -l

 第一个字母:

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来三个为一组,且均为 rwx 的三个参数的组合

r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute),要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

 更改文件属组

chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

可以同时更改文件属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

 

更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!

通过数字修改

可以使用数字来代表各个权限,各权限的分数对照表如下:

  •  r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  •  owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以变更权限时就是770:chmod 770

chmod [-R] xyz 文件或目录
  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

 

直接通过符号进行修改

基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

可以使用 u, g, o 来代表三种身份的权限,a 则代表 all,即全部的身份

读写的权限可以写成 r, w, x

 

 例如:将文件权限设置为-rwxr-xr--  (最前面那个中划线(-)表示文件类型的占位)

 chmod u=rwx,g=rx,o=r  test1

查看

# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

去掉权限

#直接做减法
#
chmod a-x test1

 

路径

绝对路径:由根目录 / 写起,例如: /usr/share/doc 这个目录。

相对路径:例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法

 

处理目录的常用命令

  • ls(英文全拼:list files): 列出目录及文件名
  • cd(英文全拼:change directory):切换目录
  • pwd(英文全拼:print work directory):显示目前的目录
  • mkdir(英文全拼:make directory):创建一个新的目录
  • rmdir(英文全拼:remove directory):删除一个空的目录
  • cp(英文全拼:copy file): 复制文件或目录
  • rm(英文全拼:remove): 删除文件或目录
  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

rm

rm命令的一般形式为:rm [选项]... 目录... 删除指定的<文件>(即解除链接)。
-d      --directory    删除可能仍有数据的目录 (只限超级用户)

-f      --force          略过不存在的文件,不显示任何信息,强制删除

-i      --interactive 进行任何删除操作前必须先确认

-r/R --recursive    同时删除该目录及以下所有

-v      --verbose     详细显示进行的步骤

          --help            显示此帮助信息并离开

         --version      显示版本信息并离开

 

 

 

文件内容查看

  • cat  由第一行开始显示文件内容
  • tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl   显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行

cat

 

 

tail

tail [-n number] 文件
  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测  (常用

 

文本编辑

参考:http://www.taodudu.cc/news/show-663392.html

参考 :http://www.taodudu.cc/news/show-6324996.html

同样,创建文本优先选择vim而不是touch,因为,文件创建来就是编辑的,vim 如果文件不存在会自动创建它,等同于——创建+编辑
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode/),输入模式(Insert mode)和底线命令模式(Last line mode)
用户刚刚启动 vi/vim,便进入了命令模式
i 切换到输入模式,以输入字符。
• x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。

命令模式(一般模式)下:
• 字符按键以及Shift组合,输入字符
• ENTER,回车键,换行
• BACK SPACE,退格键,删除光标前一个字符
• DEL,删除键,删除光标后一个字符
• 方向键,在文本中移动光标
• HOME/END,移动光标到行首/行尾
• Page Up/Page Down,上/下翻页
• Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
• ESC,退出输入模式,切换到命令模式
• H 光标移动到这个屏幕的最上方那一行的第一个字符
• M 光标移动到这个屏幕的中央那一行的第一个字符
• L 光标移动到这个屏幕的最下方那一行的第一个字符
•shift + g 移动到这个档案的最后一行(常用)

n+g : 移动光标到指定行

0 :移动到行首

w:移动到下一个单词

 


• [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
• [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
• dd: 删除当前光标所在的行
• o: 在当前光标所在行往下新建一行,并进入输入模式

vim里面的行末行首快捷键和windows里面的一样也是 END HOME两个键

替换:%s/src/destination

搜索:/xxx 回车

上下翻 shift+n 、 n
保存并退出:
:wq

显示行号::set nu

删除多行::startnum,endnumd  d

跳到最后一行: :$

批量注释:命令模式下
1.光标移动到需要注释的行的行首
2.ctrl+v 进入块选择
3.方向键↓,会选中每一行的第一列
4.shift+I 进入批量插入
5.shift+3,插入#号
6.Esc,退出,可以看到选中的行行首都加上了#
批量去注释
1.根上面一样 ctrl+v
2.按方向键↓,选中每一行的行首(第一列的#)
3.按下d,就删除了#

撤销操作:  u (通用)

跳转指定行: 

  :n (底线命令模式下,跳转到文件第n行,需要回车)

返回命令模式: :esc

 

 

 

链接

硬链接、软连接(符号链接)

Linux文件系统中,磁盘块分成了3个部分。一局部称为数据区,用来寄存文件内容。另一部分称为 inod表,用来寄存文件属性。第三局部称为超级块,用来寄存文件系统自身的属性。文件的内容和属性分开寄存,文件的属性存储在一个称为 inod数据结构中,inod寄存在inod表里,每个 inod有一个唯一的编号对应其在inod表中的位置。

硬链接

  • 硬链接建立其实已存在文件的另一个名字,链接与原来的文件并没有什么区别,共享一个 inod而 inod包括了一个文件的所有属性。当为一个文件创立硬链时,内核不会分配新的inod。
  • 硬链接不能引用自身文件系统之外的文件,即链接不能引用与该链接不在同一磁盘分区的文件
  • 硬链接不能引用目录(有些 Linux版本允许超级用户使用 -d选项创立引用目录的链接)

 

软连接

为了克服硬链接的局限性而创建的

通过创立一个特殊类型的文件来起作用的该文件包含了指向引用文件或目录的文本指针,类似windows快捷方式

符号链接指向的文件与符号链接自身几乎没有区别,将一些内容写进符号链接里,那么这些内容同样也写进了引用文件,而当删除一个符号链接时,删除的只是符号链接而没有删除引用文件,如果先于符号链接之前删除引用文件,那么这个链接依然存在但是不指向任何文件。此时,这个链接就称为坏链接。ls命令一般会用不同的颜色来显示坏链接,比方红色。

 

对比

软链接相比硬链接有个不足的地方是由于软链接包括引用文件的路径信息,所以如果引用文件移动到其他目录,链接则变成一个坏链接。

硬链接不可以跨分区,软件链可以跨分区

硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点

目录不可以创建硬链接,但可以创建软连接

源文件和硬链接文件具有相同的索引号节点,可以认为是同一个文件或一个文件的多个入口

源文件和软连接文件索引号节点不同,是不同的文件,软连接相当于源文件的快捷方式。

 

对于删除

删除软连接文件对源文件及硬链接文件无任何影响
删除硬链接文件对源文件及软连接文件无任何影响
删除源文件,对硬链接文件没有影响,但是会导致软连接文件失效,白字红底闪烁
同时删除源文件及硬链接,整个文件会被真正的删除

 

创建:

ln  [选项]  源文件  目标文件

 

一般是将某个文件夹下的执行命令弄一个软链接放到/bin目录下,就可以任何地方执行

 

posted on 2023-08-13 15:00  or追梦者  阅读(3)  评论(0编辑  收藏  举报