RHCSA_Linux 从命令行管理文件

目录

一、文件命令规范:

二、创建链接文件

1、创建软链接文件

2、创建硬链接文件

三、目录操作命令

[1、创建目录 -- mkdir](#1、创建目录 -- mkdir)

[2、统计目录及文件的空间占用情况 -- du](#2、统计目录及文件的空间占用情况 -- du)

3、删除目录文件

四、创建、删除普通文件

1、创建普通文件

2、删除普通文件

五、数据流和重定向

1、数据流

2、重定向操作符

3、输出重定向案例

[标准输出重定向:1> 或 >、 1>> 或 >>](#标准输出重定向:1> 或 >、 1>> 或 >>)

[标准错误输出重定向:2>、 2>>](#标准错误输出重定向:2>、 2>>)

4、输入重定向案例

1)从文件读取数据作为cat命令的输入

2)标准输入重定向<<并不表示追加,而是表示输入结束的意思,即作为一个结束符

六、将标准输出重定向到文件

1、echo命令用于在终端设备上输出字符串或变量提取后的值

2、将标准输出重定向到文件

七、tee命令读取数据输出到文件

[1、管道符 |](#1、管道符 |)

2、tee文件


一、文件命令规范:

(1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的

(2)文件名不能超过255个字符

(3)区分大小写file File FILE fIle

(4)目录也是文件,在同一路径下,两个不同类型文件不能同名

二、创建链接文件

1、创建软链接文件

XML 复制代码
ln -s 原文件 目标文件
XML 复制代码
[root@localhost ~]# ln -s /etc/hostname /root/hostname
[root@localhost ~]# ll -i /etc/hostname /root/hostname
35502652 -rw-r--r--. 1 root root  1 Sep 10 21:48 /etc/hostname
17597092 lrwxrwxrwx. 1 root root 13 Sep 17 11:32 /root/hostname -> /etc/hostname

符号链接又叫软链接,和原文件不是一个文件 例如Windows的快捷方式,如果原始文件被删除,所有 指向它的符号链接也就都被破坏了。软链接有自己的node,是linux特殊文件的一种,作为一个文件, 它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。

2、创建硬链接文件

XML 复制代码
ln 原文件 目标文件
XML 复制代码
[root@localhost ~]# ln /etc/motd /root/motd
[root@localhost ~]# ll -i  /motd /root/motd
ls: cannot access '/motd': No such file or directory
33677060 -rw-r--r--. 2 root root 0 Jun 23  2020 /root/motd

硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。 当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在件结构中的位置。

三、目录操作命令

1、创建目录 -- mkdir

XML 复制代码
mkdir [-p] [/路径/]目录名

-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会覆盖

-v 显示创建目录的详细过程

XML 复制代码
[root@localhost ~]# mkdir new_dir

查看新创建的目录:

创建多层级目录:

XML 复制代码
[root@localhost ~]# mkdir b/c/d/1/2/3 -p

查看多层级目录结构:

2、统计目录及文件的空间占用情况 -- du

------查看某个目录中的各级子目录所占用的磁盘空间数

------格式:du [选项] [目录名]

|----|-----------------------------------|
| 选项 | 功能 |
| -a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
| -s | 只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小 |
| -h | 以K,M,G为单位显示磁盘使用情况,以提高信息的可读性 |

XML 复制代码
[root@localhost ~]# du -a Videos
0	Videos
[root@localhost ~]# du -s Music
0	Music
[root@localhost ~]# du -h Desktop
0	Desktop

3、删除目录文件

XML 复制代码
语法格式:rm -r [-f] 目录文件名
XML 复制代码
[root@localhost ~]# rm -rf 1 2 3 d c b -rf
[root@localhost ~]# tree b
b [error opening dir]

0 directories, 0 files

四、创建、删除普通文件

1、创建普通文件

格式:touch [OPTION] ... FILE...

选项:-c 在修改文件的时候避免创建新文件

-a 修改文件访问(Access)时间

-m 修改文件的内容修改(Modify)时间

若不带任何选项touch一个已存在的文件,则会修改它的三个时间

touch用法:

(1)若文件已存在,更新文件的三个时间,stat可查看文件的详细信息

XML 复制代码
#touch前:
[root@localhost ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 1         	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 35502652    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2023-09-17 07:25:16.795457980 +0800
Modify: 2023-09-10 21:48:50.144530986 +0800
Change: 2023-09-10 21:48:50.144530986 +0800
 Birth: 2023-09-10 21:48:50.142531046 +0800

[root@localhost ~]# touch /etc/hostname    #touch后
[root@localhost ~]# date
Sun Sep 17 05:13:19 PM CST 2023
[root@localhost ~]# stat /etc/hostname
  File: /etc/hostname
  Size: 1         	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 35502652    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2023-09-17 17:13:17.296969959 +0800
Modify: 2023-09-17 17:13:17.296969959 +0800
Change: 2023-09-17 17:13:17.296969959 +0800
 Birth: 2023-09-10 21:48:50.142531046 +0800
#三个时间已更新

atime,即access time,访问文件的时间,查看了一下文件内容(cat),文件的atime时间会更新

mtime,即modify time,修改内容的时间,文件内容被改变了,ctime会更新

ctime, 即change time,修改文件元数据的时间

(2)若文件不存在,则表示创建文件

创建多个普通文件

a. touch 文件名1 文件名2 文件名3

b. touch {文件名1,文件名2,文件名3}

2、删除普通文件

格式:rm [-f] 文件名

例子:将abc1~abc10删除掉

五、数据流和重定向

1、数据流

标准输入(standard input------stdin):默认情况下,标准输入指从键盘获取的输入

标准输出(standard output------stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕

标准错误输出(standard error output------stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上

标准输入(stdin):代码为0

标准输出(stdout):代码为1

标准错误输出(stderr):代码为2

2、重定向操作符

------可将命令输入和输出数据流从默认设备重定向到其他位置。

------本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号

输出重定向操作符:> >>

输入重定向操作符:< <<

1)命令 > 文件 或 命令 1 > 文件

------将命令执行后的标准信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件

2)命令 2 > 文件

------将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件

3)命令 2>/dev/null

------将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件中,即将输出的错误信息丢弃掉

4)命令 &>文件 或 命令 >&文件

------将命令执行后的正确信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件

5)命令 >>文件

------将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件

6)命令 <文件

------使命令从指定的文件中读取数据作为输入,通过$()转换字符串为命令要使用的参数

7)命令 <<结束标识字符串

------在命令行读取数据作为输入,通常配合输入重定向>使用,当输入的内容为结束标识符后方的字符串时,标识退出当前输入

3、输出重定向案例

标准输出重定向:1> 或 >、 1>> 或 >>

XML 复制代码
1、覆盖
[root@localhost ~]# date
Sun Sep 17 05:49:26 PM CST 2023
[root@localhost ~]# date 1>date.txt
[root@localhost ~]# cat date.txt
Sun Sep 17 05:49:34 PM CST 2023
2、追加
[root@localhost ~]# date >>date.txt
[root@localhost ~]# cat date.txt
Sun Sep 17 05:49:34 PM CST 2023
Sun Sep 17 05:50:48 PM CST 2023

标准错误输出重定向:2>、 2>>

XML 复制代码
1、重定向到不同位置
[root@localhost ~]# ls /home/ /aaaa >list.txt
ls: cannot access '/aaaa': No such file or directory
[root@localhost ~]# ls /home/ /aaaa >list.txt 2>error.txt
[root@localhost ~]# cat error.txt
ls: cannot access '/aaaa': No such file or directory

2、正确和错误都输入到相同位置
1)
[root@localhost ~]# ls /home/ /aaaa &>list.txt
[root@localhost ~]# cat list.txt
ls: cannot access '/aaaa': No such file or directory
/home/:
zx

2)
[root@localhost ~]# ls /home/ /aaaa >list.txt 2>&1

3、重定向到空设备/dev/null
1)
[root@localhost ~]# ls /home/ /aaaa >list.txt 2>/dev/null
2)
[root@localhost ~]# ls /home/ /aaaa &>/dev/null

4、输入重定向案例

标准输入重定向:< 或 0<、 0<< 或 <<

1)从文件读取数据作为cat命令的输入

XML 复制代码
[root@localhost ~]# echo test >file
[root@localhost ~]# cat <file
test

2)标准输入重定向<<并不表示追加,而是表示输入结束的意思,即作为一个结束符

XML 复制代码
[root@localhost ~]# cat > file3 << end
> hello
> 你好
> end
[root@localhost ~]# cat file3
hello
你好

六、将标准输出重定向到文件

1、echo命令用于在终端设备上输出字符串或变量提取后的值

------格式:echo [字符串][$变量]

------$:提取变量的实际值,以便后续的输出操作

XML 复制代码
# 输出字符串在终端设备上
[root@localhost ~]# echo kongd.com
kongd.com

# 提取变量SHELL的值
[root@localhost ~]# echo $SHELL
/bin/bash

2、将标准输出重定向到文件

XML 复制代码
[root@localhost ~]# echo test > /root/test/file
[root@localhost ~]# echo test2 >> /root/test/file

七、tee命令读取数据输出到文件

1、管道符 |

------用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入

2、tee文件

------读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕

------tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件

语法:tee [-ai][--help][--version][文件...]

参数:

-a 或 --append 附加到现有文件的后面,而非覆盖它

-i 或 --ignore-interrupts 忽略中断信号

--help 在线帮助

Q1:在Linux上使用这个命令

command\] \| tee \[file

Q2:确保tee命令追加信息到文件中

command\] \| tee -a \[file

XML 复制代码
[root@localhost ~]# cat new_file
new_file
new_file
[root@localhost ~]# tee -a new_file
new_file1
new_file1
^C
[root@localhost ~]# cat new_file
new_file
new_file
new_file1

Q3:让tee写入多个文件

command\] \| tee \[file1\] \[file2\] \[file3

相关推荐
对你无可奈何4 分钟前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
qq_3129201127 分钟前
Nginx限流与防爬虫与安全配置方案
运维·爬虫·nginx·安全
GanGuaGua33 分钟前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm42 分钟前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
全糖去冰吃不了苦43 分钟前
ELK 集群部署实战
运维·jenkins
不掰手腕1 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
Lynnxiaowen1 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉2 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说2 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活2 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx