Linux基础命令、虚拟机的安装与环境配置

297 阅读15分钟

虚拟机环境配置

1、安装虚拟机

  1. 点击 "创建新的虚拟机" Snipaste_2021-08-18_09-10-07.png Snipaste_2021-08-18_09-11-02.png

  2. 选择"典型" Snipaste_2021-08-18_09-11-23.png

  3. 选择 "稍后安装操作系统" Snipaste_2021-08-18_09-11-37.png

  4. 选择系统类型和版本 Snipaste_2021-08-18_09-11-56.png

  5. 选择虚拟机文件路径(建议每台虚拟机单独存放并且路径不要有中文) Snipaste_2021-08-18_09-14-29.png

6.默认硬盘或者自行调大硬盘 Snipaste_2021-08-18_09-16-45.png

  1. 配置完成,稍后调整硬件 Snipaste_2021-08-18_09-17-04.png

  2. 选择编辑虚拟机文件 Snipaste_2021-08-18_09-17-24.png

  3. 内存建议4G,处理器2个,网络选择NAT,最后点击光驱(根据个人的机器来调整) Snipaste_2021-08-18_09-19-45.png

  4. 配置光驱文件设备状态要勾选启动时连接 Snipaste_2021-08-18_09-20-26.png Snipaste_2021-08-18_09-20-57.png

  5. 开启虚拟机 Snipaste_2021-08-18_09-21-33.png

  6. 选择第一项 INSTALL Centos7  ctrl+ALT 切换虚拟机和真机之间的鼠标 Snipaste_2021-08-18_09-22-06.png

  7. 选择语言,初学建议选择中文 Snipaste_2021-08-18_09-23-10.png

  8. 继续后点击软件选择(centos7 默认最小安装不带桌面) Snipaste_2021-08-18_09-23-38.png

15.勾 选GNOME桌面 环境勾选开发工具 Snipaste_2021-08-18_09-24-24.png

  1. 点击完成后等待识别安装源 Snipaste_2021-08-18_09-24-52.png

  2. 如果自动分区识别安装源后直接安装 Snipaste_2021-08-18_09-25-29.png

  3. 手动分区需要点击安装位置 image-20210818095436284.png

  4. 选择我要配置分区后 点击完成 Snipaste_2021-08-18_09-26-27.png

  5. 进入手动分区,按下图选择 Snipaste_2021-08-18_09-27-00.png

  6. 分区 一般需要  / , swap , /boot 三个分区 虚拟内存 /boot 引导程序启动项 Snipaste_2021-08-18_09-27-47.png Snipaste_2021-08-18_09-28-07.png Snipaste_2021-08-18_09-28-38.png Snipaste_2021-08-18_09-33-09.png 最后点击上图左上角的"完成"按钮

  7. 分区结束后 开始安装 Snipaste_2021-08-18_09-33-27.png

  8. 设置密码和创建用户 Snipaste_2021-08-18_09-33-45.png Snipaste_2021-08-18_09-34-01.png Snipaste_2021-08-18_09-34-34.png

  9. 安装完成后重启 Snipaste_2021-08-18_09-52-37.png

  10. 接受许可 Snipaste_2021-08-18_10-01-37.png Snipaste_2021-08-18_10-01-56.png Snipaste_2021-08-18_10-02-56.png

  11. 切换用户 root登录 因为普通用户权限有限(点击"未列出?") Snipaste_2021-08-18_10-03-21.png Snipaste_2021-08-18_10-03-35.png Snipaste_2021-08-18_10-03-46.png

  12. 前进-完成-开始使用centos Snipaste_2021-08-18_10-07-19.png

  13. 右击空白桌面调出终端 Snipaste_2021-08-18_10-11-35.png Snipaste_2021-08-18_10-11-49.png

2、网络环境调试

2.1配置网卡

虚拟机三种网卡模式:

1、桥接   相当于虚拟机和真机之间架了一座桥,虚拟机需要配置和真机在同一网段(常用vm0)我们可以认为虚拟机主机网卡和物理主机网卡连接在同一台虚拟机上,它们之间可以通过虚拟交换机互相通信,再通过物理主机实现与外网通信。

image-20220117231637999.png

桥接模式下,可以实现虚拟机、虚拟机与物理机之间相互通信 同时虚拟机可以连接外网(Internet)设置

2、NAT   虚拟系统借助 NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网(常用vm8)

image-20220117231858003.png

虚拟机与虚拟机、虚拟机与物理机之间相互通信,同时虚拟机可以连接外网(Internet)。 动态获取地址,不需要你设置,一般静态,虚拟机半小时更新你一次地址,静态 ,dhcp和静态 7 台 如下图所示: 虚拟机网卡与Vmnet8连接到虚拟的交换机上,实现互相通信。 再通过物理主机NAT服务,通过物理主机网卡实现与外网(Internet)连接。

3、仅主机     虚拟机和物理机在一个封闭的内网网段中,不可以上外网。(常用vm1)

image-20220117231453746.png

我们可以认为虚拟机网卡与vmnet1连接在一个虚拟的交换机上 这样当它们的IP在同一个网段的时候,虚拟机与虚拟机之间, 虚拟机与物理机之间就可以正常通信了 虚拟机与物理之间是否可以通信,与物理机本地连接无关,与vmnet1有关 。

Snipaste_2021-08-18_10-32-34.png Snipaste_2021-08-18_10-19-46.png

2.2查看你的NAT 网段

Snipaste_2021-08-18_10-20-15.png

2.3查看你的nat网关

Snipaste_2021-08-18_10-20-48.png

2.4 配置你的虚拟机网卡

1、修改配置文件/etc/sysconfig/network-scripts/ifcfg-ens33

2、修改文件内容: BOOTPROTO=static ONBOOT=yes

     添加内容:

     IPADDR=192.168.91.105

     NETMASK=255.255.255.0

     GATEWAY=192.168.91.2

     DNS1=8.8.8.8

3、重启网卡服务

4、测试是否网络通顺

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
BOOTPROTO=static            //网卡获取地址模式
ONBOOT=yes                  //开机是否自启动

IPADDR=192.168.91.105               //配置你自己的IP地址子网网关还有dns服务器
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
DNS1=8.8.8.8
[root@localhost ~]# systemctl restart network         //重启网卡服务 
[root@localhost ~]# ping 192.168.91.1                 //测试网络是否通顺
PING 192.168.91.1 (192.168.91.1) 56(84) bytes of data.
64 bytes from 192.168.91.1: icmp_seq=1 ttl=128 time=0.871 ms
64 bytes from 192.168.91.1: icmp_seq=2 ttl=128 time=0.487 ms
64 bytes from 192.168.91.1: icmp_seq=3 ttl=128 time=0.347 ms

#ctrl+c  停止ping

2.5 连接xshell

2.5.1 新建连接

Snipaste_2021-08-18_10-52-41.png

2.5.2配置你的连接数据

Snipaste_2021-08-18_10-53-58.png

2.5.3保存密码

Snipaste_2021-08-18_10-54-11.png

2.5.4选择登录用户

Snipaste_2021-08-18_10-54-29.png

2.5.5保存密码

Snipaste_2021-08-18_10-54-53.png

2.5.6成功连接

Snipaste_2021-08-18_10-55-08.png

3、系统环境初始化

3.1关闭防火墙软件

  1. 临时关闭命令 systemctl stop firewalld.service
  2. 查看服务状态 systemctl status firewalld.service
  3. 永久关闭(下次开机不自启动) systemctl disable firewalld.service

Linux常用命令

  Linux的优势

  1. 一切都是一个文件。(包括硬件,文本,二进制,源代码)
  2. 系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
  3. 当遇到复杂任务,通过不同功能用途的程序组合起来完成。 轻量级,一台服务 dhcp ip 数据库服务 网页
  4. 避免令人困惑的用户界面就是没有复杂的图形界面。()我想怎么使用程序,win程序
  5. 连配置文件都存储在文本中,方便增删改查。
  6. 不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。  

基础知识 :

root   #表示用户 
localhost #主机名
~   #家目录
#   #管理员用户
$   #普通用户
root #root的家目录  
opt #opt目录

[root@localhost ~]# 
[zhangsan@localhost root]$ 
[zhangsan@localhost root]$ hostname
localhost.localdomain
[zhangsan@localhost opt]$ 

#关机命令:
1、halt   				#立刻关机
2、poweroff  			#立刻关机
3、shutdown -h now       #立刻关机(root用户使用)
4、shutdown -h 10        #10分钟后自动关机

#重启:
reboot
init6
shutdown -r now

#修改语言
修改LANG变量实现中文语言提示
[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# echo $LANG 
zh_CN.UTF-8
[root@localhost ~]# LANG=en_US.UTF-8
[root@localhost ~]# echo $LANG 
en_US.UTF-8

#修改颜色
[root@localhost ~]#vim .bashrc
PS1='\[\e[1;34m\][\u@\h \W]\$\[\e[0m\]'
[root@localhost ~]#source .bashrc
#刷新下文件

Linux 命令精讲

1、shell

1.1什么是 shell(壳),怎么在硬件和用户之间翻译

1.1.1shell的定义

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

1.1.2 不同的shell环境

bash是linux里面默认的shell程序位于/bin/bash csh ksh 语言不同比如中文英文都是交流的语言

1.1.3 shell与内、外部命令

  1. shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)
内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行
  1. help命令可以查看内部命令
[root@localhost opt]# help 
GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表.
输入 `help 名称' 以得到有关函数`名称'的更多信息.
使用 `info bash' 来获得关于 shell 的更多一般性信息
使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息.

名称旁边的星号 (*) 意味着该命令被禁用.

 job_spec [&]                    history [-c] [-d 偏移量] >
 (( 表达式 ))                 if 命令; then 命令; [ el>
 . 文件名 [参数]            jobs [-lnprs] [任务声明 >
 :                               kill [-s 信号声明 | -n 
 [ 参数... ]                   let 参数 [参数 ...]
 [[ 表达式 ]]                 local [option] 名称[=值] >
 alias [-p] [名称[=值] ... >  logout [n]
 bg [任务声明 ...]           mapfile [-n 计数] [-O 起
 bind [-lpvsPVS] [-m 键映射>  popd [-n] [+N | -N]
 break [n]                       printf [-v var] 格式 [参
 builtin [shell 内嵌 [参数>  pushd [-n] [+N | -N | 目录>
 caller [表达式]              pwd [-LP]
 case 词 in [模式 [| 模式>  read [-ers] [-a 数组] [-d >
 cd [-L|[-P [-e]]] [dir]         readarray [-n 计数] [-O 賾
 command [-pVv] 命令 [参数>  readonly [-aAf] [name[=value>
 compgen [-abcdefgjksuv] [-o 缠 return [n]
 complete [-abcdefgjksuv] [-pr>  select NAME [in 词语 ... ;>
 compopt [-o|+o 选项] [-DE] >  set [-abefhkmnptuvxBCHP] [-o>
 continue [n]                    shift [n]
 coproc [名称] 命令 [重嬾  shopt [-pqsu] [-o] [选项厾
 declare [-aAfFgilrtux] [-p] [>  source 文件名 [参数]
 dirs [-clpv] [+N] [-N]          suspend [-f]
 disown [-h] [-ar] [任务声传 test [表达式]
 echo [-neE] [参数 ...]        time [-p] 管道
 enable [-a] [-dnps] [-f 文乾  times
 eval [参数 ...]               trap [-lp] [[参数] 信号
 exec [-cl] [-a 名称] [命乾  真
 exit [n]                        type [-afptP] 名称 [名称>
 export [-fn] [名称[=值] ..>  typeset [-aAfFgilrtux] [-p] >
 伪                             ulimit [-SHacdefilmnpqrstuvx>
 fc [-e 编辑器名] [-lnr] [>  umask [-p] [-S] [模式]
 fg [任务声明]               unalias [-a] 名称 [名称 >
 for 名称 [in 词语 ... ] ;>  unset [-f] [-v] [名称 ...]>
 for (( 表达式1; 表达式2>  until 命令; do 命令; don>
 function 名称 { 命令 ; } >  variables - 一些 shell 变>
 getopts 选项字符串 名祾  wait [编号]
 hash [-lr] [-p 路径名] [-d>  while 命令; do 命令; don>
 help [-dms] [模式 ...]        { 命令 ; }

 

  1. 可以使用 type 命令来区分内外部命令
[root@localhost /]# type cd         
cdshell 内嵌                       //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名        //别名代表外部命令        
ls 是 /usr/bin/ls                    //外部命令会有程序路径
      
[root@localhost /]# whereis ls       //whereis 找的比较详细,包括man手册
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

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

外部命令存放于 echo $PATH  一个一个找,找到为止,找不到就报无命令
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[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
外部命令需要取找他的路径才能执行,  直接在缓存 调用 加快了速度
内部 外部   hash 的优先级
内部  hash  外部

命中	命令
   1	/usr/bin/dd                       //前面数字代表用过几次
   2	/usr/sbin/useradd
   1	/usr/bin/whoami
   3	/usr/bin/ls
[root@localhost ~]# hash -d dd              //清楚dd命令缓存 -r全清
[root@localhost ~]#hash -r
[root@localhost ~]#hash
hash: 哈希表为空
#清除所有缓存
[root@localhost ~]# hash
命中	命令
   2	/usr/sbin/useradd
   1	/usr/bin/whoami
   3	/usr/bin/ls

[root@localhost ~]# which ping      //外部命令的磁盘路径 -a 所有
/usr/bin/[root@localhost ~]# which help    //内部命令找不到
/usr/bin/which: no help in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost ~]# whereis echo            //相关文档的帮助的命令
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

2、命令行格式

  • 在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。
  • 严格来说,命令通常只代表实现某一类功能的程序的名称。

命令字 空格  [选项] 空格 [参数] image-20220117224156792.png

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

  2. 选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词

    类 unix 命令 bsd

  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.获得命令帮助

3.1 help

格式说明

  • []表示可选项
  • CAPS或<>表示可变化的数据
  • ...表示一个列表可加多个一个或多个
  • x|y|z 表示或的意思
  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

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

[root@localhost ~]# help echo
#内部命令查看帮助
echo: echo [-neE] [参数 ...]
    将参数写到标准输出。
    
    在标准输出上显示 ARG 参数后跟一个换行。
    
    选项:
      -n	不要追加换行
      -e	启用下列反斜杠转义的解释
      -E	显式地抑制对于反斜杠转义的解释
    
    `echo' 对下列反斜杠字符进行转义:
      \a	警告(响铃)
      \b	退格
      \c	抑制更多的输出
      \e	转义字符
      \f	格式提供
      \n	换行
      \r	回车
      \t	横向制表符
      \v	纵向制表符
      \\	反斜杠
      \0nnn	以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
    	0到3个八进制数字
      \xHH	以 HH (十六进制)为值的八比特字符。HH可以是
    	一个或两个十六进制数字
    
    退出状态:
    返回成功除非有写错误发生。
# -n 不换行显示
[root@localhost ~]# echo -n " 1 2 3"   
 1 2 3[root@localhost ~]# 
[root@localhost ~]# echo -n "123456";echo "123456"
123456123456
#  \b  删除前一个字符
[root@localhost ~]# echo -e " 1 2\b 3"      
 1  3
#\n换行
[root@localhost ~]# echo -e " 1\n 2\n 3"
 1
 2
 3
#tab键叫制表符 
[root@localhost ~]# echo -e " 1\t 2\t 3"    tab键叫制表符
 1	 2	 3

3.2 --help

查看外部命令帮助

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

3.3 man

man分九个章节默认打开第一章节(menu菜单 manual手册)

[root@localhost ~]# whatis ls
ls (1)               - 列目录内容
    1代表第一章手册
ls (1p)              - list directory contents
	1p 代表开发程序使用

[root@localhost ~]# whatis passwd 
#可以查看命令的章节
passwd (5)           - (文件格式)
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens
[root@localhost ~]# man 5 passwd      
#查看第五章内容,第5章一般是配置文件格式详细解释
[root@localhost ~]# man 7 ascii
[root@localhost ~]# man 7 UTF-8
[root@localhost ~]# mandb()
#生成man数据库,man命令无效时
正在删除 /usr/share/man 里的旧数据库条目...
mandb: 警告:/usr/share/man/man8/fsck.fat.8.manpage-fix.gz:忽略错误的文件名
正在处理 /usr/share/man 下的手册页...
正在删除 /usr/share/man/hu 里的旧数据库条目...
正在删除 /usr/share/man/pl 里的旧数据库条目...



[root@localhost ~]# man man

 该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖                MANSECT               环境变量。
              有些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区 段,你可以在此指定  man
              查找区段的顺序。具体区段划分如下所示:
              区段1:用户指令
              区段2:系统调用
              区段3:程序库调用
              区段4:设备
              区段5:文件格式     shadow passwd fstab
              区段6:游戏
              区段7:杂项
              区段8:系统指令
              区段9:内核内部指令
              区段n:Tcl或Tk指令

3.4 info

info也可以查看相关的帮助信息 [root@localhost dev]# info ls

4.目录操作

4.1查看切换显示统计目录

4.1.1. pwd(print work directory)

[root@localhost ~]# pwd       //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 86 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径
快捷方式   不是文件真正的路径

[root@localhost opt]#ln -s /opt/ky18/   /mnt/k18
#设置软连接
[root@localhost opt]#cd /mnt/k18/
#切换到软连接
[root@localhost k18]#ls
#
[root@localhost k18]#pwd
#显示的是当前路径
/mnt/k18
[root@localhost k18]#pwd -P
#文件的真实路径
/opt/ky18

4.1.2. cd

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

 

  • 相对路径表现形式
[root@localhost opt]#cat passwd
#此处省略了路径
[root@localhost opt]#cat ./passwd 
#查看当前路径下的passwd文件
[root@localhost opt]#cd ./ky18/
#切换到当前目录下的 ky18 文件夹
[root@localhost ky18]#
[root@localhost ky18]#cd ../../
#切换到上两层的目录
[root@localhost /]#

4.1.3 ls

生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别) ls [选项] [文件或目录… ]

  • -l 已长格式显示文件和目录列表 ll=ls -l
  • -a 显示全部包括隐藏文件
  • -A 显示全部文件或隐藏文件,但不包括 . 和..
  • -d 仅列出目录本身,而不是列出目录内的文件数据
  • -h 友好显示文件大小(human,人性化)
  • -R 递归显示该目录及该目录的子目录下的所有内容
  • --color 显示颜色
  • -S 以文件容量大小排序
  • -i indoe号
ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色
[root@localhost mnt]# ll
#长格式
总用量 0
drwxr-xr-x 3 root root 16 8月  21 10:39 aa
第一个字段 d   代表文件类型比如 d是目录 - 是普通文件
第2-9(rwxr-xr-x)字母表示该文件的权限
root 文件所有者
root 文件所属组
16 文件大小
21 10:39 文件的最近使用时间
aa 文件或目录名称


[root@test1 ~]# ls -a 
#显示所有 包括隐藏文件
.                .cache     .ICEauthority         .viminfo.tmp  下载
..               .config    initial-setup-ks.cfg  .Xauthority   音乐
anaconda-ks.cfg  .cshrc     .lesshst              公共          桌面
.bash_history    .dbus      .local                模板
.bash_logout     .esd_auth  mysql.sh              视频
.bash_profile    hhh.cgg    .tcshrc               图片
.bashrc          .history   .viminfo              文档
################################################
[root@test1 ~]# ls -A 
#显示所有 不包括. ..的隐藏文件
anaconda-ks.cfg  .config    .ICEauthority         .viminfo      图片
.bash_history    .cshrc     initial-setup-ks.cfg  .viminfo.tmp  文档
.bash_logout     .dbus      .lesshst              .Xauthority   下载
.bash_profile    .esd_auth  .local                公共          音乐
.bashrc          hhh.cgg    mysql.sh              模板          桌面
.cache           .history   .tcshrc               视频
########################################################
[root@test1 ~]# ls -d   
#只显示本目录
.


[root@test1 ~]# ls -d /etc
######################################################
[root@test1 ~]# ls -lh   //加单位k友好显示
总用量 16K
-rw-------. 1 root root 1.6K 6月  18 23:13 anaconda-ks.cfg
-rw-r--r--. 1 root root    4 6月  28 13:47 hhh.cgg
-rw-r--r--. 1 root root 1.6K 6月  18 23:15 initial-setup-ks.cfg
-rwxr-xr-x. 1 root root 2.3K 6月  28 00:46 mysql.sh
drwxr-xr-x. 2 root root    6 6月  18 23:38 公共
drwxr-xr-x. 2 root root    6 6月  18 23:38 模板
drwxr-xr-x. 2 root root    6 6月  18 23:38 视频
drwxr-xr-x. 2 root root    6 6月  18 23:38 图片
drwxr-xr-x. 2 root root    6 6月  18 23:38 文档
drwxr-xr-x. 2 root root    6 6月  18 23:38 下载
drwxr-xr-x. 2 root root    6 6月  18 23:38 音乐
drwxr-xr-x. 2 root root    6 6月  18 23:38 桌面
######################################################
[root@test1 opt]# ls -R     //递归显示
.:
123456.txt  123.txt  1.txt  2.txt  abc.txt  rh  test.txt

./rh:
aaa

./rh/aaa:

颜色表示的文件类型:

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

文件类型

  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(ip地址?端口?) 可以双向的

4.1.4 通配符

去匹配文件名(包括文件夹)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 829 01:50 f1.txt
-rw-r--r--. 1 root root 0 829 01:50 f2.txt
-rw-r--r--. 1 root root 0 829 01:50 f8.txt
-rw-r--r--. 1 root root 0 829 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 829 01:51 f10.txt
-rw-r--r--. 1 root root 0 829 01:51 f11.txt
-rw-r--r--. 1 root root 0 829 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

4.1.5 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只影响当前用户( 当前用户的家目录 )

4.1.6 du(disk usage)

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

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

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

注意a s无法同时使用

4.2创建

  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095个字节
  • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。

4.2.1 创建目录mkdir make directories

mkdir

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
##############查看三种时间
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-28 22:53:51.539000016 +0800
最近更改:2021-08-27 16:48:55.881739056 +0800
最近改动:2021-08-27 16:48:55.881739056 +0800
[root@localhost bin]# touch /etc/passwd
#################刷新三种时间

[root@localhost bin]# stat /etc/passwd
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-29 01:43:01.305128380 +0800
最近更改:2021-08-29 01:43:01.305128380 +0800
最近改动:2021-08-29 01:43:01.305128380 +0800
创建时间:-
access time    atime   最近打开文件的时间如果你不打开文件是不会刷新的
change time    ctime   属性权限改变()  
modify time    mtime   内容改变属性(大小)

4.2.2 硬连接与软连接文件

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

软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件(应该使用什么路径? 1绝对?2 相对?). /opt /mnt

ln(link)

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": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
#为什么文件夹的连接数是2?
#.也是名字..也是





当前目录  opt  . 自己   ..  /根目录

opt下有个目录 aa  
cd aa
. ..    .aa   ../opt     


a    
新建 a1

a

a1

 

软连接例子

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root    6 8月  26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root   66 8月  26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月  26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录

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

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

4.2.3复制

cp(copy)备份

  1. cp [选项]… 源文件 目标 相当改名复制
  2. cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-c可视化
-u相当于增备,差异备份
-b先备份(只保留最近)

如果已有文件夹会生成子目录

[zhangsan@localhost ~]$ ll
#张三用户新建文件
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 829 11:17 zhansan

[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root     root     0 829 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 829 11:17 zhansan

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

4.2.4移动 改名

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

移动 或者改名

批量

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

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@test1 opt]# ls
a.txt.bak  E.txt.bak  j.txt.bak  N.txt.bak  R.txt.bak  w.txt.bak
A.txt.bak  f.txt.bak  J.txt.bak  o.txt.bak  s.txt.bak  W.txt.bak
b.txt.bak  F.txt.bak  k.txt.bak  O.txt.bak  S.txt.bak  x.txt.bak
B.txt.bak  g.txt.bak  K.txt.bak  p.txt.bak  t.txt.bak  X.txt.bak
c.txt.bak  G.txt.bak  l.txt.bak  P.txt.bak  T.txt.bak  y.txt.bak
C.txt.bak  h.txt.bak  L.txt.bak  q.txt.bak  u.txt.bak  Y.txt.bak
d.txt.bak  H.txt.bak  m.txt.bak  Q.txt.bak  U.txt.bak  z.txt.bak
D.txt.bak  i.txt.bak  M.txt.bak  rh         v.txt.bak  Z.txt.bak
e.txt.bak  I.txt.bak  n.txt.bak  r.txt.bak  V.txt.bak

4.3 删除文件

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

4.4 查找文件

4.4.1find

命令的特点:

  • 精确查找
  • 实时查找 遍历(慢)
  • 支持查找条件较多

重启预定维护

格式: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 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
/home/hehe/.mozilla/plugins
/home/hehe/.bash_logout
/home/hehe/.bash_profile
/home/hehe/.bashrc

#或与且的优先级
o or
a and 

[root@localhost opt]# find /etc/ -type d -o -type l |wc -l
#查找 etc文件夹下 目录和连接文件并统计数量
1008
[root@localhost opt]# find /etc/ -type d -o -type l -ls |wc -l
#查找 etc文件夹下 目录 和连接文件 并显示连接文件的的详细信息后统计数量
274
[root@localhost opt]# find /etc/ -type d -o -type l -a -ls |wc -l
#此条命令与上条命令对比实际隐藏了一个 a(且) 先执行了-type l -a -ls 处理动作只显示了连接文件
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
#花样删根


############处理动作#############################
-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 \;
[root@localhost opt]#find /home -user zhangsan -fls /opt/test
#找到home文件夹下属于zhangsan的文件,并将查询结果导入到/opt/test 文件

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

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


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


Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
#权限 所有者 所属组
Access: 2016-05-06 23:31:41.396893415 +0800
#访问时间
Modify: 2016-05-06 23:31:41.396893415 +0800
#数据修改时间
Change: 2016-05-06 23:31:41.411006937 +0800
#状态修改时间

4.4.2 标准输入输出

input 输入 键盘 鼠标 窗口里实际完成操作的事终端窗口

一个命令结束有输出 也是靠终端窗口

错误命令是输出,标准错误

output 输出 屏幕

标准输入 标准错误 标准输出 终端窗口 当前使用的

[root@localhost data]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 826 21:15 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 826 21:15 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 826 21:15 /dev/stdout -> /proc/self/fd/1
[root@localhost data]# tty    ###当前终端
/dev/pts/1
[root@localhost data]# ll /proc/self/fd/2
lrwx------. 1 root root 64 827 00:57 /proc/self/fd/2 -> /dev/pts/1
[root@localhost data]# ll /proc/self/fd/1
lrwx------. 1 root root 64 8月  27 00:57 /proc/self/fd/1 -> /dev/pts/1
[root@localhost data]# ll /proc/self/fd/0
lrwx------. 1 root root 64 827 00:57 /proc/self/fd/0 -> /dev/pts/1
[root@localhost ~]# ls > /dev/pts/0
#传给终端0
[root@localhost ~]# xxxx 2> /dev/pts/0
#错误重定向


#将命令结果传入一个文件

重定向 redirect

改变方向

标准输入 重定向 ls > /dev/pts/1

4.4.3 参数替换 xargs

由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数 另外,许多命令不能接受过多参数,命令执行可能会失败,xargs 可以解决

注意:文件名或者是其他意义的名词内含有空格符的情况

单独使用 xargs是将键盘上的输入输出在屏幕上

[root@localhost opt]# ls /opt
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
#我不想固定后面的参数 /opt 我想把后面的参数使用命令生成变成活的
#简单来说就是只要可以加参数的命令后面的参数是可以使用xargs灵活改变的

#xargs默认 是读取键盘输入在输出出来,把输入的东西 传给下一个命令作为参数
[root@localhost opt]# xargs 
1
1
ctrl d 退出
[root@localhost opt]# xargs  echo   可以省略echo
333
333

[root@localhost opt]# xargs ls -l
/etc/passwd
-rw-r--r--. 1 root root 2161 826 09:27 /etc/passwd
#seq打印出10
[root@localhost opt]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost opt]# seq 10 |xargs   取消换行
1 2 3 4 5 6 7 8 9 10
[root@localhost opt]# seq 10 |xargs -n1    处理一个参数换行一次
1
2
3
4
5
6
7
8
9
10


#不支持标准输出重定向
[root@localhost opt]# ls *.txt |rm
rm: 缺少操作数
Try 'rm --help' for more information.

[root@localhost opt]# touch {1..10}.txt
#将显示的结果全部删除
[root@localhost opt]# ls *.txt |xargs rm


#创建10个用户
[root@localhost opt]# echo user{1..10}| xargs -n1 useradd
[root@localhost opt]#for i in {1..10};do useradd ky$i; done
#删除
[root@localhost opt]# echo ky{1..10}| xargs -n1 userdel -r
[root@localhost opt]#for i in {1..10};do userdel -r ky$i; done



##批量下载 b站的视频
#并行下载bilibili视频
yum install python3-pip -y
pip3 install you-get
seq 10 | xargs -i -P3 you-get 
     有多少集就改多少 P3 是并发
https://www.bilibili.com/video/BV1HZ4y1p7Bf?p={}
											连接后面加{}

find 经常和 xargs 命令进行组合,形式如下:

find | xargs COMMAND