Linux基础第一章:基础知识与基础命令

目录

一.虚拟机的三种网卡模式

二.基础知识

2.1  shell的内外部命令

2.2可以使用type命令来区分内外部命令

2.3命令行头解释

2.4文件具体信息含义

2.5命令行格式

三.基础命令

3.1 help

3.2 man

3.3 pwd 

3.4 cd

3.5 ls

3.6 通配符

​3.7 alias

3.8 du(disk usage)

3.9 mkdir

3.10 软连接与硬链接

3.11 复制

3.12 移动 改名   批量改名?写脚本

3.13 删除文件

3.14 which

3.15 find


一.虚拟机的三种网卡模式

桥接模式:虚拟机和本机使用同一个物理网卡,共享主机IP地址

nat模式:内外网地址转换,生成一个VMware8网卡,此网卡必须与虚拟机在同一个网段,虚拟机                   才可上网。

仅主机模式:主机和虚拟机在独立的网络,不能上外网

  二.基础知识

luinx,一切都是一个文件(硬件,文本,二进制,源代码), 系统中拥有小型单一用途的程序,            遇到复杂任务,通过通过不同功能用途的程序组合起来完成,没有复杂用户界面,配置文件            都存储在文本。

2.1  shell的内外部命令

shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进            行交互操作的一种接口。

bash是linux里面默认的shell程序,路径位于/bin/bash,分为内外部命令

内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行

2.2可以使用type命令来区分内外部命令

比如

内部命令

[root@localhost /]# type cd         
cd 是 shell 内嵌                       //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名        //别名代表外部命令        
ls 是 /usr/bin/ls                    //外部命令会有程序路径
      
[root@localhost /]# whereis ls       //whereis 可以查找命令具体的位置所在

[root@localhost ~]# type -a echo 
echo 是 shell 内嵌
echo 是 /usr/bin/echo

help    内部命令

外部命令

外部命令存放于 echo $PATH  一个一个找,找到为止,找不到就报无命令

外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度

[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd 
useradd 已被哈希 (/usr/sbin/useradd)
[root@localhost ~]# hash                  //或者使用hash
hash 缓存
使用过一次  外部命令   我就会将这个外部命令  缓存在hash
外部命令需要取找他的路径才能执行,  直接在缓存 调用 加快了速度

--help   外部命令
内部 外部   hash 的优先级 为                      内部  hash  外部

先判断是不是别名,如果是,就执行。如果不是就看是不是内部命令,如果是,就执行,如果不是就看hash表,如果缓存里有,就执行,如果没有就看外部命令,如果有就执行,没有就报错

2.3命令行头解释

[root@localhost ~]#   例如root用户登录的行头

①第一个root代表是登录的用户是root。

②第二个localhost是主机名称位localhost。

③第三个 ~ 代表当前用户的家目录,存放用户个性化设置

除此之外,

cd       change directory,   文件位置

#         超级管理员

/          根目录

$         普通用户

ls         显示当前文件夹

cd~      回到家目录,

end      到最后

../         上层打开的目录

cd-       切换到上次执行cd命令之前所在的目录

..开头   表示当前目录上一级目录

.开头    表示隐藏文件

~ky18   以指定用户的宿主目录作为起点

这些只是简单的少量基础命令,还有很多。

2.4文件具体信息含义

-  rwxr-xr-x       1        root     root       368         11月  1 10:13        ky26.sh

第一字段  文件类型

第二字段  权限    读写执行

第三字段  硬连接数

第四字段  所有者

第五字段  所属组

第六字段  文件大小

第七字段  最后一次修改时间

第八字段  文件名

2.5命令行格式

   命令字     空格     [选项]    空格    [参数]

  

1.命令字   是整条命令中最关键的一部分                                                                                                             唯一确定

2.选项      短格式选项:使用“-”符号引导 通常 一个字母

                长格式选项:使用“--”符号引导 通常完整的单词

3.参数      命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个

   ;可以隔开命令,执行多个命令

编辑Linux命令行的辅助操作

快捷键功能
Tab 键自动补齐(两次可以显示所有选项)
反斜杠“\”强制换行或转义
Ctrl+a光标移到最前
Ctrl+e 或 end 键光标移到最后
Ctrl+U清空至行首不包括当前光标处的 字符
Ctrl+K清空至行尾包括当前光标处的字符
Ctrl+w从当前光标删除到开头
ALT+d从当前光标删除末尾
Ctrl+l清屏
Ctrl+c取消本次命令编辑
Ctrl+s/Ctrl+q锁屏/解锁
向上下箭头回看执行过的命令

三.基础命令

3.1 help

格式说明

  • []表示可选项

  • CAPS或<>表示可变化的数据

  • ...表示一个列表可加多个一个或多个

  • x|y|z 表示或的意思

  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后 

只能查看内部命令的 使用方法   tar  -zxvf    tar zxfv    -区分前后       

--help            查看外部命令帮助

[root@localhost ~]# ls --help
[root@localhost dev]# useradd --help

3.2 man

#whatis 1 passwd  用户指令man第一章节

#man 5 passwd     文件格式man第五章节

3.3 pwd    

#pwd      //显示当前路径

#ped -p   文件的真实路径

#ln -s /opt/ky18/   /mnt/k18    #设置软连接

#cd /mnt/k18/            #切换到软连接

3.4 cd

cd  目标位置change directory

命令效果
cd cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -到前一次目录
一个点号“.”开头(自己)表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头(上一级)表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头表示以指定用户的宿主目录(家目录)作为起点
"."开头文件表示隐藏文件
~ky18 (有个用户叫ky18 家目录为起点)表示以指定用户的宿主目录作为起点

相对路径  cd ../../切换到上两层目录   没有将路径写完整

绝对路径 /          根目录开始的路径

bin   普通用户命令

boot 开机启动文件

dev  设备文件保存位置

etc    配置文件存放位置

var/log 登陆文件保存日志

3.5 ls

生产环境中慎重直接使用,文件量过大会直接死机

ls [选项] [文件或目录… ]

  • -l 已长格式显示文件和目录列表 ll=ls -l

  • -a 显示全部包括隐藏文件

  • -A 显示全部文件或隐藏文件,但不包括 . 和..

  • -d 仅列出目录本身,而不是列出目录内的文件数据

  • -h 友好显示文件大小(human,人性化)

  • -R 递归显示该目录及该目录的子目录下的所有内容

  • --color 显示颜色

  • -S 以文件容量大小排序

# vim /etc/DIR_COLORS     颜色在这里显示

文件类型

  1. - 普通文件

  2. d 目录文件directory

  3. l 符号链接文件link

  4. b 块设备block 比如直接读1块 /dev 4k (512*8(扇区)=4096字节=4k)

  5. c 字符设备character 一个字符一个字符读取 /dev/zero (/dev/null)

  6. p 管道文件pipe 两个软件联系 A-管道文件-B A 写 B 读 单向的

  7. s 套接字文件socket 可以双向的

第一个字符文件类型
-普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d目录,类似 Windows 系统中的文件夹。
b块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c字符设备文件
s套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l链接文件,类似 Windows 系统中的快捷方式。

补充:

file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓

[root@localhost data]# ls /run/
autofs.fifo-misc  
#管道
gssproxy.sock
#套接字

touch file{A..Z}.txt ls file[zhou].txt

3.6 通配符

去匹配文件名(包括文件夹)ls

符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z
{A..Z}A B C .....Z
[123]([此处括号里值代表一个字符])取其中之一有就显示没有也无所谓
[a-z]单个小写字母范围需要注意
[0-9]单个数字匹配数字范围(0123456789)
\转义符,表示原来的意思
[[:lower:]]小写字母表示 a-z
[[:upper:]]大写字母表示 A-Z
[^zhou]匹配列表中的所有字符以外的字符
[[:digit:]]任意数字,相当于0-9

[root@localhost data]# ls -a *
1
#不显示隐藏文件
[root@localhost data]# ls -a
.  ..  1
#显示隐藏文件
[root@localhost data]# ls *
# *不包括.开头的
ls: 无法访问*: 没有那个文件或目录
​
[root@localhost data]# ls .*
#包括了 .. 上层目录中的文件
.:
​
..:
aaa  boot  dev  home  lib64  misc  net  proc  run   sdb1  sys  usr
bin  data  etc  lib   media  mnt   opt  root  sbin  srv   tmp  var
​
[root@test1 opt]# touch f{a..z}.log
[root@test1 opt]# touch f{A..Z}.log
[root@test1 opt]# ls
123456.txt  fa.log      fe.log  fj.log  fo.log  ft.log  fy.log
123.txt     f{A.Z}.log  ff.log  fk.log  fp.log  fu.log  fz.log
1.txt       fb.log      fg.log  fl.log  fq.log  fv.log  rh
2.txt       fc.log      fh.log  fm.log  fr.log  fw.log  test.txt
abc.txt     fd.log      fi.log  fn.log  fs.log  fx.log
[root@test1 opt]# ls f[zhou].log  
#####四个其中的之一有就全显示      
fh.log  fo.log  fu.log  fz.log
[root@test1 opt]# ls f[x-z].log   
####显示的xXyYz 不包括Z
fx.log  fX.log  fy.log  fY.log  fz.log
[root@test1 opt]# ls f[a-c].log   
#####显示的A b B c C 不包括a
fa.log  fA.log  fb.log  fB.log  fc.log   
[root@test1 opt]# ls f{a..c}.log
#显示所有小写
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc
[root@localhost ~]# ls 1[[:lower:]]*                
#########显示小写字母
1a1.txt  1e1.txt  1i1.txt  1m1.txt  1q1.txt  1u1.txt  1y1.txt
1b1.txt  1f1.txt  1j1.txt  1n1.txt  1r1.txt  1v1.txt  1z1.txt
​
[root@localhost ~]# ls 1[[:upper:]]*                 
########################显示大写字母
[root@localhost ~]# ls 1[[:upper:]]*
1A1.txt  1E1.txt  1I1.txt  1M1.txt  1Q1.txt  1U1.txt  1Y1.txt
​
######[0-9]只能匹配10 以下的
[root@localhost data]# touch f{1..10}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ll f[0-9].txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f1.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f2.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f8.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f9.txt
[root@localhost data]# ll f[0-9][0-9].txt
#两个 [0-9]可以匹配双数字
[root@localhost data]# ll f{1..20}.txt
#{10..20}可以匹配双数字
​
[root@localhost data]# ll f??.txt
#两个?号可以匹配
[root@localhost data]# ll f*.txt
#  *也可以
-rw-r--r--. 1 root root 0 8月  29 01:51 f10.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f11.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f12.txt
​
[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
#只显示当前目录
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated
​
​3.7 alias

临时修改

  • alias 命令别名 = ’命令‘

  • unalias 别名命令 删除别名

  • \加别名命令 (显示原始命令)

du --max-depth=1 /etc/ |sort -nr
du -d 2 /etc/ |sort -nr
a s h
[root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
​
#如果不加引号无法识别
[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到
​
#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls
​
#删除别名
[root@localhost dev]# unalias myvim 
[root@localhost dev]# myvim
bash: myvim: 未找到命令...

​永久修改
- 在/etc/.bashrc 会影响全部
- /root/.bashrc只影响当前用户

补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

3.8 du(disk usage)

查看当前所在文件夹的总磁盘占用量了。

du [选项] [文件或目录… ]

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize)只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1)最大显示到第n层
--exclude不计入统计

注意a s无法同时使用

文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth(-d) 选项来进行控制。

[root@localhost opt]#ls -lh
总用量 4.0K
-rw-r--r--. 1 root root 2.6K 8月  26 11:55 passwd
[root@localhost opt]#du -ch passwd 
4.0K    passwd
4.0K    总用量


[root@localhost etc]#du -d1
#只显示etc目录下的第一层
[root@localhost opt]#ls
f1111.txt  ky18  passwd
[root@localhost opt]#du --exclude=*.txt
#排除已txt结尾的
0    ./ky18
4    .

3.9 mkdir

mkdir -p 递归创建 没有文件夹 会自动递归创建

mkdir [选项] 目录位置及名称…

[root@localhost data]# mkdir a b c d
#创建多个文件夹
[root@localhost data]# ls
a  b  c  d
[root@localhost data]# mkdir -p aaa/bbb/cccc
# 递归创建文件夹
[root@localhost data]# ls
a  aaa  b  c  d
​
[root@localhost data]# tree
.
├── a
├── aaa
│   └── bbb
│       └── cccc
├── b
├── c
└── d
touch​
touch 新文件…(可为空)
touch 不会破坏已有文件 刷新时间
每个文件有三个时间戳:
1.access time 访问时间,atime,读取文件内容
2.modify time 修改时间,mtime,改变文件内容(数据)
3.change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )

[root@localhost data]# touch  1 2 3
#创建新文件,或空的新文件
[root@localhost data]# ls
1  2  3
[root@localhost data]# echo "" > 4
#创建4的空文件
[root@localhost data]# ls
1  2  3  4 

[root@localhost bin]# stat /etc/passwd
##############查看三种时间

3.10 软连接与硬链接

硬连接   同一个文件取不同的名或者叫多个名字(比如 苏轼   字子瞻  号东坡居士  苏二   谥号文忠 )不支持文件夹,创建一个连接数加一,多路径访问。

软连接    类似于windows里快捷方式,软连接,符号连接,会指向原来的文件

ln  [-s] 源文件或目录… 链接文件或目标位置

加s是软连接 符号连接

对比项硬链接软链接
本质本质是同一个文件本质不是同一个文件
inode(身份证号)相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除,新建都不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同(指向硬盘上的同一个文件)源文件的路径的长度

例子

[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建 
[root@localhost data]# ln /data/f1.txt  /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
当前目录  opt  . 自己   ..  /根目录
​
opt下有个目录 aa  
cd aa
. ..    .aa   ../opt     

软连接例子

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/

软件版本升级迭代 
开发出 app1.0   做软连接 app
如果有 app2.0   就把 软连接app删除 新建app2.0的软连接app

$PATH    以后自行安装软件  系统不会自行 识别    httpd mysql ls         
1将程序文件 放入$PATH 路径 usr/bin  
2做软连接   $PATH
3修改$PATH 路径

硬链接删除一定要全删除,软连接一定要做绝对路径

软连接#ln -s /etc/ ./test

硬链接#ln/etc/./hard                    "/etc/":不允许将硬链接指向目录

软连接删除#rm-rf soft/^c                              soft     不加/

软连接文件夹不加/会把文件夹下文件全删除

3.11 复制

cp(copy)备份

1. cp [选项]… 源文件     目标   相当改名复制   文件夹    文件相当于 改名字另存为
2. cp [选项]... 源文件... 文件夹    多个源文件只能复制到文件夹

选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)

[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖

[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt 
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt" 不是目录

3.12 移动 改名   批量改名?写脚本

mv  [选项] …  源文件或目录…  目标文件或目录 单个文件

移动    或者改名

- -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
- -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
- -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
- -v:显示文件或目录的移动过程;

批量

rename log log.bak*    //所有 log文件改成 log.bak

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@test1 opt]# ls

rename 旧字符 新字符 目标文件

bash
[root@test1 opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak

3.13 删除文件

rm [选项] 要删除的文件或目录

  • -f、强制

  • -i、交互

  • -r 递归(删除目录需要)

[root@localhost ~]# rm -rf /    #不让执行
[root@localhost ~]# echo *      #删根后查看
[root@localhost ~]# rm -rf /data/*
[root@localhost ~]# rm -rf /data /*    ##之间的区别误操作,等于删根
​

如何删除特殊的文件

[root@localhost ~]# touch ./-f
# -开头的文件
[root@localhost ~]# ls
[root@localhost ~]# rm -f -f
#删除不掉
[root@localhost ~]# rm -f ./-f
#需要加路径
[root@localhost ~]# touch ./-f
[root@localhost ~]# rm -- -f
rm:是否删除普通空文件 "-f"?y
​

删除文件后空间不释放

[root@localhost ~]# cp /dev/zero /boot/bigfile.img
cp: 写入"/boot/bigfile.img" 出错: 设备上没有空间
cp: 扩展"/boot/bigfile.img" 失败: 设备上没有空间
[root@localhost ~]# df
文件系统                   1K-块     已用   可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293876 181644   99% /
devtmpfs                  917600        0 917600    0% /dev
tmpfs                     933524        0 933524    0% /dev/shm
tmpfs                     933524     9216 924308    1% /run
tmpfs                     933524        0 933524    0% /sys/fs/cgroup
/dev/sda1                5232640  5232620     20  100% /boot
tmpfs                     186708       12 186696    1% /run/user/42
tmpfs                     186708        0 186708    0% /run/user/0
#磁盘使用满了以后会造成服务的停止业务受影响,是一个重大的事故
[root@localhost ~]# ll -S /boot             ##文件大小排序
总用量 5191344
-rw-r--r--. 1 root root 5171437568 8月  26 01:00 bigfile.img
-rw-------. 1 root root   69266920 8月   6 21:02 initramfs-0-rescue-869dbd607e5e4f758fa152ef2229f2b6.img
-rw-------. 1 root root   30802796 8月   6 21:03 initramfs-3.10.0-693.el7.x86_64.img
-rw-------. 1 root root   18808968 8月   6 21:06 initramfs-3.10.0-693.el7.x86_64kdump.img
-rw-r--r--. 1 root root   10182684 8月   6 21:02 initrd-plymouth.img
-rwxr-xr-x. 1 root root    5877760 8月   6 21:02 vmlinuz-0-rescue-869dbd607e5e4f758fa152ef2229f2b6
-rwxr-xr-x. 1 root root    5877760 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
-rw-------. 1 root root    3228420 8月  23 2017 System.map-3.10.0-693.el7.x86_64
-rw-r--r--. 1 root root     293027 8月  23 2017 symvers-3.10.0-693.el7.x86_64.gz
-rw-r--r--. 1 root root     140894 8月  23 2017 config-3.10.0-693.el7.x86_64
drwx------. 5 root root         97 8月   6 21:03 grub2
drwxr-xr-x. 2 root root         27 8月   6 20:58 grub
drwxr-xr-x. 3 root root         17 8月   6 20:57 efi
#使用另一个xshell打开  bigfile文件 也是可以删除的,但是空间不会释放
#文件正在使用可以删除,
[root@localhost ~]# rm -rf /boot/bigfile.img 
[root@localhost ~]# df
文件系统                   1K-块     已用   可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293964 181556   99% /
devtmpfs                  917600        0 917600    0% /dev
tmpfs                     933524        0 933524    0% /dev/shm
tmpfs                     933524     9216 924308    1% /run
tmpfs                     933524        0 933524    0% /sys/fs/cgroup
/dev/sda1                5232640  5232620     20  100% /boot
tmpfs                     186708       12 186696    1% /run/user/42
tmpfs                     186708        0 186708    0% /run/user/0
[root@localhost ~]# lsof |grep delete 
#过滤出被删除的文件list open  file
pulseaudi 1671                 gdm    6u      REG                0,4   67108864      23475 /memfd:pulseaudio (deleted)
alsa-sink 1671 1674            gdm    6u      REG                0,4   67108864      23475 /memfd:pulseaudio (deleted)
alsa-sour 1671 1677            gdm    6u      REG                0,4   67108864      23475 /memfd:pulseaudio (deleted)
vim       7532                root    3r      REG                8,1 5171437568         80 /boot/bigfile.img (deleted)
[root@localhost ~]# w
#查看谁在使用什么进程
 01:09:59 up  8:49,  2 users,  load average: 0.98, 0.57, 0.27
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.91.1     00:54    7.00s  0.12s  0.01s w
root     pts/1    192.168.91.1     01:05    4:07   4:07   4:06  vim /boot/bigfile.img
#另一终端退出使用空间被释放
[root@localhost ~]# df 
文件系统                   1K-块     已用    可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293868  181652   99% /
devtmpfs                  917600        0  917600    0% /dev
tmpfs                     933524        0  933524    0% /dev/shm
tmpfs                     933524     9216  924308    1% /run
tmpfs                     933524        0  933524    0% /sys/fs/cgroup
/dev/sda1                5232640   182388 5050252    4% /boot
tmpfs                     186708       12  186696    1% /run/user/42
tmpfs                     186708        0  186708    0% /run/user/0
[root@localhost ~]# echo"" > /boot/bigfile.img 
#写入空文件,依赖shell
[root@localhost ~]# df
文件系统                   1K-块     已用    可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293892  181628   99% /
devtmpfs                  917600        0  917600    0% /dev
tmpfs                     933524        0  933524    0% /dev/shm
tmpfs                     933524     9216  924308    1% /run
tmpfs                     933524        0  933524    0% /sys/fs/cgroup
/dev/sda1                5232640   182388 5050252    4% /boot
tmpfs                     186708       12  186696    1% /run/user/42
tmpfs                     186708        0  186708    0% /run/user/0
[root@localhost ~]# rm -rf /boot/bigfile.img
#清空文件

后者保留etc

rm -rf / 删除不了

在本目录下可以 不管你在不在使用

3.14 which

/user/bin/cp   绝对路径

which ls

which cd

which cp

#crontab -e    类似于定期执行 (周一干什么,周二干什么,周三干什么。。。)

3.15 find

locate 查询系统上预建立的文件索引数据库,跟find功能类似。系统生成文件,有个索引数据库,             在数据库寻找快,但新建的文件需要一段时间才能存进数据库。常用于系统不忙时,寻找               老文件,占用系统效率

#locate -n1 yj

find命令的特点:

全系统搜索,

- 精确查找
- 实时查找
- 支持查找条件巨多

格式:

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径;不指定为默认为当前目录

查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕(print)

常用可选项

查找类型关键字说明
按名称查找-name根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找-size根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找-user根据文件是否属于目标用户进行查找
按文件类型查找-type根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
按inode号-inum根据文件inode号查找
按权限查找-perm按文件权限查找
最大搜索目录深度-maxdepth level将你的文件已分级的形式查找
最小搜索目录深度-mindepth level同上

-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感 +大于  -小于

-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件

-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件

例如

-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-inum n #按inode号查找
-links n   #链接数为n的文件

[root@test1 opt]# find /etc/ -name passwd
#查找名字叫 passwd的文件
/etc/pam.d/passwd
/etc/passwd
[root@test1 opt]# find /etc/ -name *.conf
#查找所有.conf 结尾的 ,不要在当前路径下找自己路径下的文件
/etc/resolv.conf
/etc/fonts/conf.d/57-dejavu-serif.conf
/etc/fonts/conf.d/65-1-vlgothic-gothic.conf
/etc/fonts/conf.d/31-cantarell.conf
/etc/fonts/conf.d/65-0-lohit-nepali.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/65-0-lohit-bengali.conf
/etc/[root@test1 opt]# find /mnt -user root
#查找 用户为root的用户
/mnt
/mnt/abc
/mnt/ad
/mnt/ad/ad2
/mnt/ad/ad2/bbbbb.txt
/mnt/zhangsanlianjie

[root@test1 opt]# find -size 1k    
# 0.1字节 到 1k
./rh
./rh/aaa
[root@localhost boot]# find ./ -name "vm*"  
#查找vm开头的
[root@localhost boot]# find /boot/ -size -10M -a -name "*img"
#小于10M 的img文件

[root@localhost etc]# find /etc/ -maxdepth 2 -mindepth 2
#只看第二级目录

[root@localhost opt]# find /boot -d
#先显示 文件在显示目录
#找/home 下属于zhangsan的文件并列出属性
[root@localhost opt]# find /home -user zhangsan -ls
#找/home 下属于zhangsan的文件并列出属性

[root@localhost opt]# useradd hehe
[root@localhost opt]# userdel hehe
[root@localhost opt]# ls /home/
hehe  mysql  zhangsan
[root@localhost opt]# ll /home/
总用量 0
drwx------. 3     1002     1002 78 8月  26 09:27 hehe
drwx------. 3 mysql    mysql    78 8月  25 11:45 mysql
drwx------. 3 zhangsan zhangsan 78 8月   6 20:57 zhangsan
[root@localhost opt]# find /home/ -nouser
#找home下的无主文件夹
/home/hehe
/home/hehe/.mozilla
/home/hehe/.mozilla/extensions
/home/hehe/.mozilla/plugins
/home/hehe/.bash_logout
/home/hehe/.bash_profile
/home/hehe/.bashrc

#或与且的优先级
[root@localhost opt]# find /etc/ -type d -o -type l |wc -l
1008
[root@localhost opt]# find /etc/ -type d -o -type l -ls |wc -l
1008
[root@localhost opt]# find /etc/ -type d -o -type l -a -ls |wc -l
274
[root@localhost opt]# find /etc/ \( -type d -o -type l \) -a -ls |wc -l
1008

[root@localhost opt]# find -size 1G
#查找1G的文件会把所有都显示出来
.
./100.img
./99.img

#按大小查找新建两个文件
[root@localhost opt]# dd if=/dev/zero of=99.img bs=99M count=1
[root@localhost opt]# dd if=/dev/zero of=100.img bs=100M count=1
[root@localhost opt]# ls
100.img  99.img
[root@localhost opt]# find -size 100M
./100.img
[root@localhost opt]# find /opt/ -size 100M
/opt/100.img
[root@localhost opt]# ll 99.img 
-rw-r--r--. 1 root root 103809024 8月  26 10:02 99.img
[root@localhost opt]# echo >>99.img 
[root@localhost opt]# ll 99.img 
-rw-r--r--. 1 root root 103809025 8月  26 10:03 99.img
[root@localhost opt]# find /opt/ -size 100M
/opt/100.img
/opt/99.img
#这是应为linux中的100M不是正好100M 是99开始不包括99到100(99-100]

#思考 1024M 和 1G 一样么?
1024M 代表 1023M - 1024M 不包括1023
1G    表示 0G      -1G   不包括0G
-size  10k      表示9k  到10k   且不包括9k  
-size -10k      表示9k  以内    包括9k
-size +10k      表示10k 以上    不包括 10k

#权限查找 -perm
[root@localhost opt]# find -perm 644
./100.img
./99.img
./a.txt
[root@localhost opt]# find -name "*.img" -delete
#找到并删除(找到name为什么并且删除)要加引号


############处理动作#############################
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令{}: 用于引用查找到的文件名称自身


[root@localhost opt]# find -name "*.txt"  -ok mv {} /mnt \;
[root@localhost opt]# find -name "*.txt"  -exec mv {} /mnt \;


#以“天”为单位
-atime [+|-]# 
# #表示[#,#+1)
+# #表示[#+1,∞]
-# #表示[0,#)

-mtime
-ctime
#以“分钟”为单位
-amin
-mmin
-cmin


find -mtime 10  
#10天到11天
find -mtime +10
#代表11天以上
find -mtime -10
#10天以内

找到大于 7天,大于1G普通文件,并删除

find /-mtime +7 -typef -size +1G -delete

find -nouser  -delete   无主文件

-empty    空文件或目录

#find /app -type d -empty              app代表空文件

与:-a      可以省略

或:-o

非:-not  !

例子

#find            -name "*.txt"        -ok              mv             {}                          /mnt \;

  找到   名后有.txt的文件          连接符      移动到     找到的所有文件     mnt目录

找到后一个个放入mnt并一个个询问

\;代表结束,一定不能忘

-ok可以换成exec,没有确认,直接移动

find -name “*.tst”  -exec mv  {}.sl \;

find -name “*.tst” -fls abc             导入abc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值