0
点赞
收藏
分享

微信扫一扫

Linux基础命令(二)

回溯 2022-02-20 阅读 124

文章目录


不同文件颜色表示的含义

颜色修改:[root@fyr ~]# ls --color=no   //关闭颜色
        [root@fyr ~]# ls --color=yes  //打开颜色

在这里插入图片描述

  • 黑色:普通文件(如:txt)
  • 蓝色:文件夹
  • 天蓝色:链接文件
  • 绿色:可执行文件
  • 红色:压缩文件
  • 黄色:块设备文件(如:硬盘、U盘)

扩充:

  • -普通文件
  • d 目录文件 directory
  • b 块设备文件block
  • p 管道文件pipe
  • s 套接字文件socket
  • l 符号链接文件link

1 目录的基本操作

1.1 查看当前目录—pwd

pwd命令是print working directory的缩写,中文翻译:输出当前目录。

[root@fyr home]# pwd        //查看当前路径目录
/home

[root@fyr home]# cd /bin
[root@fyr bin]# ll /bin
lrwxrwxrwx. 1 root root 7 14 04:37 /bin -> usr/bin
[root@fyr bin]# pwd -P
/usr/bin
#-P 显示真实路径

1.2 切换工作目录—cd

将用户的工作目录更改到其他位置

命令效果
cd cd ~若不指定目标位置,切换到家目录
cd -切换到上一次执行操作的目录
cd . .切换到上一层目录(父目录)
ls .查看本目录下所有的文件和文件夹(显示当前目录下的文件)
cd .表示当前目录(本级目录)
[root@fyr /]# cd /home/
[root@fyr home]# cd /mnt/
[root@fyr mnt]# cd -
[root@fyr home]# cd .
[root@fyr home]# cd ..
[root@fyr /]# ls .
[root@fyr /]# cd 
[root@fyr ~]# cd ~
[root@fyr ~]# 

例如:
在这里插入图片描述

1.2.1 相对路径的的表现形式

表现形式效果
直接使用目录名或文件名表示当前工作目录的子目录、文件的位置
一个点号“.”开头表示以当前的工作目录作为起点(已点开头的是)
两个点号“…”开头表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头表示以指定用户的宿主目录(家目录)作为起点

cd(相对路径、绝对路径)

命令说明
cd/home后面跟绝对路径,切换到home目录
cd./home后面跟相对路径,切换到home目录
cd ~user切换到某一个用户的家目录,只有root才行,别的用户只能在自己家

1.3 查看当前目录下的文件—ls

ls命令是list files的缩写,中文翻译:显示当前目录下的文件和目录。

格式:ls	[选项]	[文件或目录...]
-l将文件信息属性详细列出,通常直接使用ll,因为设置了别名
-h以更人性化(Human)的方式显示出目录或文件的大小,此选项需要结合-l选项一起使用
-R递归显示,比如一个目录下还有文件,则把那个文件也一起列出
-d查看目录本身信息,不显示目录下的内容
-i显示inode值
-a遍历所有文件及目录,显示所有(All)子目录和文件的信息,包括“.“和”. .“
-A与-a选项的作用基本类似,但有两个特殊,隐藏目录不会显示,“.“和“. .”
  • ls -l:以长格式(Long)显示文件和目录的列表 , 包括权限、大小、最后更新时间等详细信息。 ll=ls -l
    在这里插入图片描述
  • ls -h:以更人性化(Human)的方式显示出目录或文件的大小,此选项需要结合-l选项一起使用
    在这里插入图片描述
  • ls -R:递归显示,比如一个目录下还有文件,则把那个文件也一起列出
    在这里插入图片描述
  • ls -d:查看目录本身信息,不显示目录下的内容 |
    在这里插入图片描述
  • ls -i:显示inode值
    在这里插入图片描述
  • ls -a: 显示所有(All)子目录和文件的信息,包括“.“和”. .“
    在这里插入图片描述
  • ls -A: 与-a选项的作用基本类似,但有两个特殊,隐藏目录不会显示,“.“和”. .“
    在这里插入图片描述

1.4 通配符

符号效果
匹配一个字符 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

举例:
在这里插入图片描述

1.5 统计目录及文件空间占用情况----du

格式:du   [选项]    [文件或目录… ]

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

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

-s表示汇总,-h表示以KB, MB, GB, TB格式进行人性化显示。

注意a s无法同时使用
在这里插入图片描述
例如:

[root@fyr ~]# du -a

在这里插入图片描述
例如:

[root@fyr ~]# du -h

在这里插入图片描述
例如:

[root@fyr ~]# du -s
[root@fyr ~]# du -sh

在这里插入图片描述
补充:很实用的功能,生产环境常这样搭配使用统计当前目录下所有文件的大小并显示出来,常用于磁盘水位过高的情况。

[root@fyr ~]# du -sh *

在这里插入图片描述

2 文件基本操作

  • 文件名最长255个字节

  • 包括路径在内文件名称最长4095个字节

  • 除了斜杠和NULL,所有字符都有效。但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。

2.1 创建新目录—mkdir

格式:mkdir [选项] 目录位置及名称…
[root@fyr home]# mkdir a         //创建单个文件夹
[root@fyr home]# mkdir b c d     //创建多个文件夹
[root@fyr home]# ls
a  b  c  d

例如:
在这里插入图片描述
安装tree命令:

[root@fyr home]# yum install tree -y

-p 递归创建目录(一次性创建嵌套的多层目录)

创建目录/aa,在/aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc
[root@fyr home]# mkdir -p a/aa/bb/cc    // 递归创建文件夹
#递归创建没有文件夹会自动递归创建

例如:
在这里插入图片描述
查看创建的目录

[root@fyr home]# ls a       //查看创建的第一个目录
[root@fyr home]# ls a/aa    //查看创建的第二个目录
[root@fyr home]# tree a     //查看创建的所有目录

例如:
在这里插入图片描述

2.2 创建空文件— touch

格式:touch 文件...

touch(刷新三种时间)
如果不存在 新建空文件

  • touch 新文件…(可为空)
  • touch 不会破坏已有文件 刷新时间

每个文件有三个时间戳:

  1. access time 访问时间,atime,读取文件内容
  2. modify time 修改时间,mtime,改变文件内容(数据)
  3. change time 改变时间,ctime,元数据发生改变
  • 创建新文件,或空的新文件
[root@fyr home]# touch ky18 ky19
[root@fyr home]# ls

例如:
在这里插入图片描述

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

例如:

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

例如:
在这里插入图片描述
刷新三种时间

[root@localhost bin]# stat /etc/passwd

例如:
在这里插入图片描述

2.2.1 创建空文件的三种方式(总结)

[root@fyr home]# touch 1.txt
[root@fyr home]# echo " " > 3.txt
[root@fyr home]# vim 2.txt

例如:
在这里插入图片描述

2.3 创建链接文件—ln(link)

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

案例一:创建软连接(加-s)

删除源文件无法访问,再新建同名文件后依然可以访问
[root@fyr home]# echo "this is kgc" > demo.txt
[root@fyr home]# cat demo.txt
[root@fyr home]# ln -s demo.txt test.txt
[root@fyr home]# rm -rf demo.txt
[root@fyr home]# cat test.txt
[root@fyr home]# rm -rf test.txt

例如:
在这里插入图片描述
案例二:创建硬链接

删除硬链接可以继续访问硬链接
[root@fyr home]# echo "this is kgc" > demo.txt
[root@fyr home]# cat demo.txt
[root@fyr home]# ln demo.txt test2.txt
[root@fyr home]# rm -rf demo.txt
[root@fyr home]# cat test2.txt

在这里插入图片描述
案例三:硬连接不能跨分区建立连接,软连接可以

硬链接:不能跨分区建立连接无法对文件夹创建
软链接:可以跨设备、可以支持文件夹(注:相对路径与绝对路径,建议绝对路径)
[root@fyr home]# ln test2.txt /boot/demo.txt
[root@fyr home]# ln -s test2.txt /boot/demo.txt
[root@fyr home]# ls -l /boot/demo.txt

在这里插入图片描述

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

$PATH    以后自行安装软件  系统不会自行 识别    httpd mysql ls         
1将程序文件 放入$PATH 路径 usr/bin  
2做软连接   $PATH
3修改$PATH 路径
  • 软连接与硬连接对比
对比项硬连接软连接
本质本质是同一个文件本质不是同一个文件
inode相同不同
连接数创建新的硬链接,链接数会增加,删除硬链接,链接数减少删除新建不会改变
文件夹不支持支持
删除源文件只是链接数减一,但链接文件的访问不受影响无法访问连接文件
文件类型和源文件相同链接文件,和源文件无关
文件大小和源文件相同源文件的路径的长度

2.4 复制—cp(copy备份)

cp(具有改名的功能,三次同样的命令结果不同)

atime ctime mtime时间标记

格式:
     cp [选项]… 源文件  目标  //相当改名复制(文件相当于改名字另存为)
     
     cp [选项]... 源文件... 文件夹    多个源文件只能复制到文件夹
     //将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
     
     cp[选项]... 源文件或目录... 目标文件或目录... 
选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认 (i的优先级高于f)
-p复制时保持源文件的权限、属主及时间标记等属性不变(权限)
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息(所有软硬连接)
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)
-b先备份(只保留最近)
[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件

[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" 不是目录

2.5 移动、改名—mv

目标位置与源位置相同,则相当于执行重命名操作
移动到当前目录是改名移动到不同目录是剪切(类似)
格式:mv  [选项] …  源文件或目录…  目标文件或目录 单个文件

例如:
在这里插入图片描述

2.5.1 批量改名—rename

格式:rename  旧字符 新字符 目标文件

例如:

[root@fyr opt]# rename txt back *.txt

在这里插入图片描述

2.6 删除文件或目录—rm

格式:rm  [选项]   要删除的文件或目录  //删除指定的文件或目录

常用用法:rm -rf ./*(当前根目录,不要执行
删除空目录:rmdir

-i删除文件或目录时提醒用户确认(交互(提示))
-r制除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)。递归(删除目录需要)
-f删除文件或目录时不进行提醒,而直接强制删除(强制)

案例一:

[root@fyr home]# rm -f 1.txt
[root@fyr home]# rm -i 2.txt
[root@fyr home]# rm fyr
[root@fyr home]# rm -r fyr

在这里插入图片描述

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

2.7 查找文件或目录—find

命令的特点:

  • 精确查找
  • 实时查找
  • 支持查找条件巨多
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
格式:
    find [OPTION]... [查找路径] [查找条件] [处理动作]
    find  查找文件或子目录的目录位置     查找条件类型
   1 查找路径:指定具体目标路径;不指定默认为当前目录
   2 查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
   3 处理动作:对符合条件的文件做操作,默认输出至屏幕(print)

常用可选项

查找类型关键字说明
按名称查找-name根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找-size根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找-user根据文件是否属于目标用户进行查找
按文件类型查找-type根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
最大搜索目录深度-maxdepth level将你的文件已分级的形式查找
最小搜索目录深度-mindepth level同上
  • 各表达式之间使用逻辑运算符
    “-a”表示 而且(and)
    “-o”表示 或者(or)
    举例一:-name
[root@fyr opt]# find /etc/ -name passwd
[root@fyr opt]# find /etc/ -name *.conf
[root@fyr home]# find /etc/ -name "resolv*.conf"

在这里插入图片描述
在这里插入图片描述
举例二:-size

[root@fyr opt]# find /etc/ -size +4M
[root@fyr opt]# find /etc/setuptool.d -size -4M
[root@fyr opt]# find /etc/ -size 4M

[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 826 09:27 hehe
drwx------. 3 mysql    mysql    78 825 11:45 mysql
drwx------. 3 zhangsan zhangsan 78 86 20:57 zhangsan
[root@localhost opt]# find /home/ -nouser
#找home下的无主文件夹
/home/hehe
/home/hehe/.mozilla
/home/hehe/.mozilla/extensions

#或与且的优先级
[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 826 10:02 99.img
[root@localhost opt]# echo >>99.img 
[root@localhost opt]# ll 99.img 
-rw-r--r--. 1 root root 103809025 826 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为什么并且删除)

[root@localhost opt]#find -name /data /* -delete
#花样删根

##################动作
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会
交互式要求用户确认
-ls
-delete

[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天以内

2.7.4 which

只能查看命令的位置

命令的位置 在系统 echo $PATH(变量)

/usr/bin:/usr/sbin…:/root/bin ls(程序qq.txt) XXX

which 命令|程序名

which ls

3 总结

  • Shell是一 种特殊程序
  • Linux命令的分类、 格式及使用方法
  • Linux常用命令
    • 查看及切换目录(pwd、 cd、 Is、 du)
    • 创建目录和文件(mkdir、 touch、 In)
    • 复制、删除、移动目录和文件(cp、 rm、 mv)
    • 查找目录和文件(which、 find)
举报

相关推荐

0 条评论