Linux基础和命令(三)

216 阅读7分钟

2、创建

  • 文件名最长255个字节

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

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

    号来引用

2.1 创建目录mkdir touch

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
创建时间:-

2.2 硬连接与软连接文件

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

软连接 类似于windows里快捷方式,软连接,符号连接

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?
#.也是名字..也是

软连接例子

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[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 路径

2.3复制

cp(copy)备份

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

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

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

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

[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.4移动 改名

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

移动 或者改名

批量

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

rename 旧字符 新字符 目标文件

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

rename 旧字符 新字符 目标文件

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

2.5 删除文件

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

  • -f、强制
  • -i、交互
  • -r 递归(删除目录需要)

2.6查找文件

find

命令的特点:

  • 精确查找
  • 实时查找
  • 支持查找条件较多 格式: find [OPTION]... [查找路径] [查找条件] [处理动作] 查找路径:指定具体目标路径;默认为当前目录

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

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

常用可选项

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

3、查看硬件信息以及系统信息

3.1查看CPU

lscpu命令可以查看cpu信息

cat /proc/cpuinfo也可看查看到

3.2查看内存

[root@test1 opt]# free

[root@test1 opt]# cat /proc/meminfo

3.3查看硬盘和分区情况

[root@test1 opt]# lsblk
[root@test1 opt]# cat /proc/partitions
major minor  #blocks  name

3.4查看机器架构

[root@test1 opt]# arch

查看内核版本

[root@test1 opt]# uname -r

系统时间

date查看当前系统时间

-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间

%F 完整日期格式,等价于 %Y-%m-%d

% T 时间(24小时制)(hh:mm:ss)

[root@localhost ~]# date -d '-1 day' +%F 
2020-08-18

[root@localhost ~]# date  +%F 
2020-08-19
[root@localhost ~]# date -d '1 day ' +%F-%T
2020-08-20-23:28:42
[root@localhost mnt]# date -d "-3 day"      前三天
20200818日 星期三 11:30:15 CST
[root@localhost mnt]# date -d "+3 day"  后三天
20200818日 星期三 11:30:15 CST