Linux重点笔记一:文件操作(一)

一、Linux的目录树结构

1 、了解目录树结构

在这里插入图片描述

在这里插入图片描述


2、绝对路径与相对路径

  • 绝对路径
    1. 一定是以"/"(根)开头,它是唯一 一个绝对能够描述文件所在路径的方式。
    2. “/” 根目录是linux操作系统最顶级的目录,没有任何路径比它还要靠前。
  • 相对路径
    1. 路径是相对的,文件所在的路径是相对于当前所在路径而言的。
    2. 当前路径使用 .或./ 表示;当前目录的上一级目录使用 … 或 …/ 表示
    3. 当前用户家目录使用 ~ 表示;上次工作路径使用 - 表示

路径切换和查看的相关命令:
在这里插入图片描述


二、CentOS7文件操作管理

重要: Linux下,一切皆文件!!!

文件操作命令基础模型:
在这里插入图片描述


1. 文件类型的判断 (file)

  • 常见文件类型
    在这里插入图片描述
  • 用 file 命令来判断文件类型

在这里插入图片描述


2、列出目录内容 (ls)

常见选项
-a all,查看目录下的所有文件,包括隐藏文件
-l 长列表显示
-h human,以人性化方式显示出来
-d 只列出目录名,不列出其他内容
-t 按修改时间排序
-r 逆序排列
-S 按文件的大小排序
-i 显示文件的inode号(索引号)
-R 递归列出目录中的内容
-m 用逗号分隔显示内容

示例:以不同的选项列出/root目录里的内容

[root@localhost ~]# ls -a /root
[root@localhost ~]# ls -l /root
[root@localhost ~]# ls -lh /root 长列表列出且人性化
[root@localhost ~]# ls -lt /root
[root@localhost ~]# ls -S /root
[root@localhost ~]# ls -R /root
[root@localhost ~]# ls -d /root 查看/root目录本身的信息

3、创建目录 (mkdir)

常见选项
-p 级联创建
[root@localhost ~]# mkdir /test/ 在根下创建test目录
[root@localhost ~]# mkdir ./test/ 在当前目录下创建test目录
[root@localhost ~]# mkdir -p /test/yunwei/dir

说明:1.如果创建的目录的上一级目录不存在,就需要加-p参数;-p在前面和后面都可以


4、创建文件 (touch)

Linux下文件的命名规则:

  1. 文件名严格区分大小写 file FILE
  2. 文件名不能包含特殊符号,如 (/或*等)
  3. 文件名最多可达255个字符

创建一个新的空文件(目标文件不存在

[root@localhost ~]# touch /tmp/file1 在/tmp目录下创建file1文件
[root@localhost ~]# touch file1 在当前目录下创建file1文件

思考: 这2个file1文件是同一个文件吗?
答:不是同一个文件,因为路径不一样。

修改文件的时间(目标文件存在

扫描二维码关注公众号,回复: 12426976 查看本文章
  • 查看文件的相关时间
[root@localhost tmp]# stat file1 查看文件的状态信息
File: `file1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 915714 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-12-11 17:36:00.353096343 +0800
Modify: 2020-12-11 17:36:00.353096343 +0800
Change: 2020-12-11 17:36:00.353096343 +0800

Access: 文件的查看访问时间
Modify: 文件的修改时间
Change: 文件的属性时间,文件的大小、权限等信息发生改变时,该时间会变化

  • 修改文件的时间
[root@localhost tmp]# touch -a file1 -t 201506161320 修改文件点访问时间
[root@localhost tmp]# touch -m file1 -t 201612121330 修改文件修改时间
-a:访问时间
-m:修改时间
-t:时间类型格式

[root@localhost tmp]# touch -d 20110808 file1 修改文件日期
[root@localhost tmp]# touch -d 1215 file1 修改文件时间
[root@localhost tmp]# touch -d "20101012 11:11:11" file1 修改文件的日期和时间

只需要掌握 touch -d 的用法即可。


5、查看文件内容

  • cat 命令:一般查看 小文件 ,从第一行到最后一行列出来
    常见选项:
    -n:显示行号
    -A:显示控制字符,如换行符,制表符等( linux $ 和 Windows ^M$ )
  • tac 命令:一般查看 小文件 ,从最后一行到第一行列出来
  • more和less 命令:一般查看 大文件 , more -5 表示5条为一页数据查看,space 键下一页, q 退出查看,可以搜索,建议less命令
  • head 命令:默认查看文件前10行, head -n 15 或 head -15 表示查看前15行
  • tail 命令:默认查看文件后10行, tail -n 15 或 tail -15 表示查看后15行;-f 表示动态查看(实时刷新看到最新的文件内容
  • ldd 命令:一般用来查看 二进制 的命令文件
[root@localhost tmp]# cat /etc/passwd      查看/etc/passwd文件内容
[root@localhost tmp]# cat -n /etc/passwd   查看/etc/passwd文件内容,并打印行号
[root@localhost tmp]# tac /etc/passwd      查看/etc/passwd文件内容
[root@localhost tmp]# head -5 /etc/passwd  查看/etc/passwd文件的前5行内容
[root@localhost tmp]# tail -5 /etc/passwd  查看/etc/passwd文件的后5行内容
[root@localhost tmp]# more -5 /var/log/messages 5条数据为一页查看
[root@localhost tmp]# less /var/log/messages  与more类似
[root@localhost tmp]# ldd /bin/mkdir       查看mkdir命令文件(二进制)的内容

6、拷贝文件 (cp)

注意: 仅限于本地文件拷贝

常用选项:
-a 递归拷贝文件,包括目录及文件属性信息
-r 拷贝目录
-p 拷贝文件包含文件的属性信息
-v 显示拷贝过程信息
-f  覆盖已经存在的目标文件而不给出提示

用法:
cp [选项] 需要拷贝的文件 拷贝到哪里去
[root@localhost ~]# cp /root/file1 /home 拷贝/root/下的file1文件到/home目录下
[root@localhost ~]# cp -r /home/itcast /root 拷贝/home/itcast目录到/root目录下
[root@localhost ~]# su - user01 切换到user01用户下
[user01@localhost ~]$ touch file1
[root@localhost ~]# cp -p /home/user01/file1 /tmp/ 拷贝home/user01/file1文件(包含属性信息)到/tmp下
[root@localhost ~]# cp /root/file1 /tmp/test1 拷贝文件并且重命名

思考:-a 和 -p 有什么区别?
答:相同点都是需要拷贝文件的属性信息,比如拥有者(谁创建的等);不同点在于,-p只能拷贝文件,-a既可以拷贝文件也可以拷贝目录。


7、移动或重命名文件 (mv)

移动文件用法(不同路径下):
# mv 需要移动的文件 移动到新的路径下
注意:文件的路径不一样

重命名用法(相同路径下):
# mv 原来文件的名字 新文件的名字
注意:老文件和新文件的路径一样

# mv /root/file1 /tmp 			移动/root/file1文件到/tmp目录下
# mv /tmp/file1 /tmp/test1 		将/tmp目录下的file1文件重命名成test1

8、删除文件(rm)

常用选项
-r 递归删除,一般用于删除目录
-f 直接删除,不提示

[root@localhost tmp]# rm file1 					删除当前目录下的file1文件,有提示
[root@localhost tmp]# rm -r dir1 				删除当前目录下的dir1目录包含的文件,有提示
[root@localhost tmp]# rm -f /root/file1 		强制删除/root/file1文件,不提示,直接删
[root@localhost tmp]# rm -rf /root/   			强制删除/root/目录以及包含的文件,无提示直接删(危险,慎重使用)

rm -rf /* 删库跑路 ,你懂的


扩展补充

一、Linux下如何获取帮助

学会看帮助文档,就不需要再死记硬背这些命令参数了

1、简约求帮助(help)

help命令:知道该命令的含义,相关参数不知道可以使用 help

内部命令求帮助:help 命令
外部命令求帮助:命令 --help

cp --help
help cd

内部命令:指的是集成于Shell解释器程序(如Bash)内部的一些特殊指令,也成为内建(Built-IN)指令。内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指令也就自动载入内存了,用户可以直接使用。内部命令无需从硬盘中重新读取文件,因此执行效率更高。

外部命令:指的是Linux系统中能够完成特定功能的脚本文件或二进制程序,每个外部命令对应了系统中的一个文件,是属于Shell解释器程序之外的命令,所以称为外部命令。Linux系统必须知道外部命令对应的文件位置,才能够由Shell加载并执行。

Linux系统默认会将存放外部命令、程序的目录(如/bin、/usr/bin、/usr/local/bin等)添加到用户的“搜索路径”中,当使用位于这些目录中的外部命令时,用户不需要指定具体的位置。因此在大多数情况下,不用刻意去分辨内部、外部命令,其使用方法是基本类似的。


2、详细求帮助(man)

实例:

[root@localhost ~]# man cp   查看cp命令的用法和参数

在这里插入图片描述


二、Bash的标准输入输出

1、名词解释

标准输入(stdin):键盘上的输入 文件描述符—>0
标准输出(stdout):屏幕上正确的输出 文件描述符—>1
标准错误(stderr):屏幕上错误的输出 文件描述符—>2

文件描述符是什么意思?

当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:
在这里插入图片描述
因此我们平时在执行shell命令中,都默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将1指向文件,那么标准的输出就会输出到文件中。


2、相关符号

  • > :标准输出重定向,覆盖重定向, 1>或> 标准输出重定向, 2> 标准错误重定向
  • >> :重定向追加, 1>> 标准输出追加, 2>> 标准错误追加
  • < :标准输入
  • &> :标准输出标准错误重定向

3、举例说明

① 环境准备
在这里插入图片描述
② 需求1: 将标准输出(屏幕上的正确结果)重定向到 /tmp/test.log 文件中

在这里插入图片描述
③ 需求2:将标准错误(屏幕上的错误结果)重定向到/tmp/test1.log文件中

在这里插入图片描述

注意:>或者2>都表示覆盖重定向
例子: 查看/etc/hosts文件内容,并将标准输出重定向到/tmp/test1.log

在这里插入图片描述
总结: >或者1>表示标准输出重定向;2>表示标准错误重定向

④ 需求3:将标准输出和标准错误一起重定向到 /tmp/test2.log

在这里插入图片描述

&> 表示标准输出和标准错误一起重定向


4、echo命令

echo会将输入的字符串送往标准输出,并在最后加上换行符。 可以理解为打印字符串。

常见选项:
-n :不输出最后的换行符“\n”
-e:解释转义字符(字符串中出现\n、\t等特殊字符,则特别加以处理,而不会将它当成一般文字输出)

举例说明:

[root@localhost ~]# echo hello world 打印hello world
hello world
[root@localhost ~]# echo aaaa 打印aaaa
aaaa
[root@localhost ~]# echo hello > file1 将hello重定向到file1文件中
[root@localhost ~]# cat file1
hello
总结:
1. echo表示打印字符串,默认将字符串送往标准输出;默认会打印一个换行符
2. echo可以结合>或者>>符号来使用,进行文件的创建或内容追加。
常见控制字符:
\t 表示制表符
\n 表示换行符
[root@localhost ~]# echo -e 'date\nuuu' > 1.sh //-e表示将\n解释为换行符
[root@localhost ~]# cat 1.sh
date
uuu

猜你喜欢

转载自blog.csdn.net/haduwi/article/details/113406964
今日推荐