Linux基础命令之【增删改查】

207 阅读11分钟

linux中七大文件类型

序号类型备注说明
1— (小短杠)普通文件夹
2ddirectory 目录文件夹
3ccharacter 字符设备(键盘)
4b块设备(硬盘、磁盘)
5l软连接link,类似于windows中的快捷方式
6p用于程序之间的数据传递,特点是单项。 好处是减少干扰、加快速度。
7ssocket套接字 作用也是用于传递数据,是双向的,可以跨主机。

不同颜色对应的文件类型

文件颜色文件类型
黑色普通文件
绿色可执行文件
黄色块设备文件硬件设备(硬盘)
红色压缩包
蓝色文件夹
天蓝色连接文件(快捷方式)

linux命令

1、pwd

全称是print work direwctory ,显示当前的绝对路径。

2、cd

change directory 更改、切换工作目录,cd适用对象是文件夹。

3、ls (重点命令!)

list列表,显示当前文件夹下的所有文件。是一个外部命令。

 命令语法:
     ls  [选项]…[参数]…  #其中,参数 默认是当前文件夹。
选项备注说明
-a显示隐藏文件(以点开头的文件为隐藏文件),包括 . 和 ..
-A显示隐藏文件(linux以点开头的行 是隐藏文件),不包括 . 和 ..
-l长格式显示文件的属性 ,可以简写成ll,ls -l 等于 ll
-R递归显示,类似于tree,可以显示文件夹里所有的文件及其逻辑关系。 安装tree的命令:yum install tree -y
-d查看当前目录属性 ls -d
-h友好显示文件大小(human,人性化)
-r倒序显示
-t时间排序,默认新的在前 ls -lt ls -ltr
-S(大S)大小排序
-i显示文件的inode号,是有限的、唯一的,和磁盘大小有关。
-color显示颜色

3.1 ls -l 属性拆分(等于ll):

image.png

-或d:第一个字母,代表文件的属性。
以rw-r--r--为例:第一个字符后面的9个字符,# 代表文件的权限。
   rw-    属主/主人
   r--    属组  #就是对有相同属性的信息,进行设置。
   r--    其他
. 代表建立文件时,启用了selinux 核心防护。
1 或 2 :文件的硬链接个数
第一个root:文件的拥有者    #主人
第二个root:代表文件的拥有组    #也就是属组
0 或 17:         文件的大小
3月 27 12:14     代表文件最后一次的使用时间
123 或 opt :     代表文件的使用名

3.2 ls 与 通配符

生产环境中,如果文件数量巨大,直接使用ls ,容易造成死机,所以ls 一般与 通配符 配合使用。

  1. 通配符含义:将某些字符,赋予新的含义。这种字符又称为元字符。
  1. 通配符作用:是匹配文件的名字

通配符与正则表达式的区别:通配符匹配的是文件的名字,而正则表达式匹配文件的内容,或者字符串。

  • ls 后面一般固定是 通配符
  • grep 后面一般固定是 正则表达式
通配符及补充备注说明
*代表多个字符、任意长度字符,但不匹配以“.”开头的隐藏文件。如果想显示隐藏文件,要用 .*
代表单个字符,长度为1
p*以p开头
*conf以conf结尾
*conf *包含conf的文件名
[0-9]*以数字开头的文件
^取反
{1..10}代表1-10
{a..z}代表a-z,注意是两个点..
{A..Z}代表A-Z,注意是两个点..
[123][ ]代表一个字符,长度为1。[123]是指,在123中显示其中某一个字符。
[:lower:]代表小写字母
[:upper:]代表大写字母
[[:lower:]]代表单个小写字母
[[:alpha:]]任意字母

4、alias 别名

有的命令比较长,比如:vim /etc/sysconfig/network-scripts/ifcfg-nes33 ,不方便使用,可以采用 alias别名 来简化原本复杂的命令。

 命令语法:
     alias  自定义命名='原始命令'  # 引号一定要记得加。
     
     unalias    取消别名   语法是unalias+自定义命名

注意:

  • 使用别名时,不要选用linux系统中原有的命令!比如:系统中原有的ls cd等命令,要避免在别名中进行使用。
  • 使用别名生成的命令是临时性的,系统不会长期保存,重启之后别名就会消失。如果想要进行永久保存,则要将别名写入到文件中。

命令的执行顺序:别名 内部 缓存 外部

5、du

disk usage 磁盘使用量

 命令语法:
     du [选项] [文件或目录]

在文件夹下使用du 可以统计 文件占用磁盘的大小,但是du 看到的不是文件的真实大小,而是该文件占用了磁盘的具体空间,不满4K按4K来算。

注意: du中,-a 和 -s 不能同时使用。

选项备注说明
-a显示 所有
-s显示 总和
-h人性化显示
-d 数字显示层级 ,语法:du -d2 ,意思是除了当前文件夹之外,最多显示两层
--exclude不计入统计

小tips:

  • ll (ls -l)看到的是文件的真实大小。假如文件大小是7k,ll命令看到的就是7k
  • du看到的却不是文件真实大小,文件大小是4的倍数,不满4K会按4K进行计算。假如文件大小是7k,那du命令看到的就是4+4=8k

小拓展:

1、面试官问你,磁盘满了怎么处理?

答:使用du命令,查找占用量较大的文件夹或文件,然后确认该文件是垃圾或无用文件,可以将其删除。

2、 du统计的时候,是默认统计隐藏文件的。

6、mkdir

mkdir 建立文件夹,文件名最长255个字节。

 命令语法:
     mkdir [选项] [文件夹名字]...   # ...代表可以有多个
选项备注说明
-p递归建立
-v显示过程
mkdir aa创建了aa文件夹
mkdir aa cc同一文件夹下创建aa 和 cc 文件夹
mkdir -p aa/bb/cc创建递归(嵌套)文件夹,中间用 / 相连。 也就是在aa下面创建bb文件夹,在bb下面创建cc文件夹。

小拓展:

mkdir -p /mysql/{1,2,3}/{data,etc,log,config} ,请问根据上述公式,共新建了多少个文件夹?

首先判断,该公式创建的 -p是递归

  1. 首先,在 /根 下面建立了mysql 一个文件夹;
  2. 其次,在mysql 文件夹下创建了1 2 3 共三个文件夹;
  3. 然后,分别在1 2 3 三个文件夹下都建立了data,etc,log,config文件夹,共十二个;
  4. 最后,一共新建了 1+3+12=16 个文件夹。

7、touch

新建空文件

 命令语法:
     touch [选项] [文件名]
     
 # 若文件名已存在
     touch作用:刷新文件的时间
 # 若文件名不存在
     touch作用:新建文件
     
 touch 123 : 新建空文件夹123   # 注意touch建立的文件都是空文件。
 touch aa bb cc : 新建aa bb cc空文件夹。

8、link 链接 (重点!!!)

8.1 硬链接 hard link

硬链接的本质,相当于是小名。 硬链接是将源文件复制出来一份,占用双倍资源,其中一个改动,另一个也会同步改动。 因为无法对文件夹使用硬链接,所以硬链接使用的少,

通过名称找到inode号,再通过inode号对应查看在inode表中的位置,通过位置可以查看对应的文件夹的具体位置。

命令语法:
    ln 源文件(建议使用绝对路径) 硬链接位置

8.2 软链接 soft link

类似于windows的快捷方式。 软连接是相当于,为源文件创建一个快捷方式,不额外占用资源,另一处访问快捷方式,实际访问的是源文件路径。如果源文件被修改,软连接就会失效。

软链接作用: 指明源文件在什么位置。用软链接相当于使用原来的文件。

命令语法:
    ln -s 源文件(建议使用绝对路径)  软链接位置

8.3 硬链接与软链接区别:

image.png

  1. 硬链接不支持文件夹、软链接支持文件夹;
  2. 硬链接本质是同一个文件,软链接本质不是同一个文件;
  3. 硬连接的inode号和源文件是一样的,硬连接的inode号和源文件不一样;
  4. 删除源文件后,硬连接可以继续查看,而软连接无法再查看;
  5. 硬连接文件属性是一样的,软链接文件属性不一样。

9、cp 复制

命令语法:
    cp [选项] [源文件] [存放点/目的文件]  # 可以改名,也可以不改名。

 

选项备注说明
-i提醒覆盖,cp默认就是cp -i
-f不提醒强制覆盖
-p保持权限复制 , cp -p 保留权限的复制
-r复制文件夹一定要加 ,cp -r 复制文件夹
-a更强大的保留权限 ,可以替代-r
-v可视化,显示过程
-u相当于增备,差异备份(只对文件夹起作用)

10、mv 移动或改名

命令语法:
    mv [源文件] [目的地]

怎么区分是移动还是改名?

  • 源文件不改变路径,就是改名;
  • 源文件改变路径,就是移动,也可以移动并改名。

11、rm 删除

也就是remove 移除。

该命令危险系数较高,不建议使用,使用的话尽量不要加选项。

选项备注说明
-f强制
-i交互
-r递归(删除目录需要)

注意: 删除文件后空间不释放,是因为有别的用户在使用这个文件,所以造成空间不释放。

小拓展: rm删除的文件,有可能会被恢复,在安全要求较高的场景下,可以使用shred安全删除文件。

12、which 查找

which 是常用外部命令 ,搜索范围由环境变量PATH决定。(which的查找路径 echo $PATH)

 命令语法:
     which 命令|程序名
     
 which ls 
 whereis passwd   # whereis找的比which多一点 , 勤劳模式

13、locate

locate 特点是快,找的是数据库,但是只适合查找老旧文件。

locate passwd

// 手动更新命令:updatedb

14、find(重点!!!)

find特点: 精确查找、实时查找、支持查找条件多。

 命令语法:
     find [查找范围] [查找精确表达式] [处理动作]
     
     1、范围:要找的文件范围,不写就是默认在当前文件夹
     2、精确表达式:选项  条件表达式  描述你要找的文件
     3、处理动作:对找到的文件进行处理  # 删除、修改、移动等

14.1 常用可选项

选项关键字查找类型备注说明
-name按名字进行查找
-user按文件属组进行查找nouser 是无主文件
-type按文件类型进行查找普通文件(f)、目录(d)、块设备(b)、字符设备文件(c)
-size按文件大小进行查找有三种情况,“ - ”或“ + ”或 “不写”
-mtime/-atime/-ctime按时间查找目前统一用-mtime ,大于30天是+30。
-inum按inode号根据文件inode号查找
-perm按权限查找按文件权限查找
-maxdepth level最大搜索目录深度将你的文件已分级的形式查找
-mindepth level最小搜索目录深度同上 find /etc -maxdepth 2 -mindepth 2
 # 按层次查找
 -maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
 -mindepth level 最小搜索目录深度
14.1.1 size扩展

常用单位:K , M , G , C(byte),同时注意1G不能直接写1G,要写1024M。

 假设大小为6K:
      -6K     表示[0,-1]        意思是:0 到 5K
      6K      表示(-1,#自己]   意思是:大于5K,但小于等于6K。# (5K,6K]左开右闭,是指区间不包括左边的内容,但是涵盖右边的内容。
      +6K     表示(#自己,∞)   意思是:6K以上
14.1.2 时间戳

每个文件有三个时间戳,目前统一用的时间戳是 -mtime

时间戳简写类型备注说明
access timeatime访问时间读取文件内容
modify timemtime修改时间改变文件内容(数据)
change timectime改变时间元数据发生改变(元数据 文件大小 权限 )
 1、以“天”为单位:
 # 同样存在“ - ”或“ + ”或 “不写”
     假设时间为3:
         -3   表示[0,#自己)        意思是:3天以内
         3    表示[#自己,#自己+1)  意思是:34天
         +3   表示[#自己+1,∞]      意思是:4天以上 
   
 2、以“分钟”为单位:
     -amin
     -mmin
     -cmin

14.2 条件表达式

  • 且(与):-a and
  • 或:-o
  • 非:-not ! 取反

// -a 的优先级比 -O 高,并且很多时候句子中会隐藏 -a

14.3 处理动作

动作备注说明
-ls查看
-print打印
-delete删除
-fls把找到的内容存到文件夹里
-exec连接符 ,把前面的命令和后面的命令连接起来,如果用mv移动的时候是不会询问的。
-ok连接符 ,find自带的处理动作。 例如:find -type f -ok mv {} /opt/ \ , 移动的时候会询问你。# 后面不要忘加 \结束符
{ }用于引用查找到的文件名称自身