查询指令
file
file指令用于查看文件的类型,其格式为file [参数] [所查看文件名]
be like:
file install.log
运行该命令后会显示file文件的属性:
install.log: UTF-8 Unicode text
若文件为符号链接(软链接),还会显示文件为符号链接,如:
[root@localhost ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'
常用参数:
- -v 显示版本信息。
- -i 显示文件MIME类型
MIME 类型
MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。
MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。
浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL,因此 We b服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会无法解析文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。
语法
MIME 类型通用结构:
type/subtype
MIME 的组成结构非常简单,由类型与子类型两个字符串中间用 / 分隔而组成,不允许有空格。type 表示可以被分多个子类的独立类别,subtype 表示细分后的每个类型。
MIME类型对大小写不敏感,但是传统写法都是小写。
常见的 MIME 类型
-
超文本标记语言文本 .html:text/html
-
普通文本 .txt: text/plain
-
AVI 文件 .avi: video/x-msvideo
-
GZIP 文件 .gz: application/x-gzip
NetStat(查询网络状态)
基础语法
netstat [options]
options包括-a:显示所有连接和监听端口
-l 显示所有监听的端口
-i 显示网络接口的详细信息,包括接收和发送的数据包数量、错误数量等。
-tp 显示进程和端口对应关系
watch -n 1 netstat -an 持续刷新显示网络状态
例:输入:netstat -rn
输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2345/mysqld
链接
链接,即link,类似于windows中快捷方式的建立。在需要在多个目录下用到相同的文件时,为了避免将一份文件存放多次所带来的硬盘开销,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
软链接与硬链接
在linux中,链接分为软链接与硬链接,使用时的区别在于参数中有无-s
在介绍这两种链接的区别时,先介绍一下链接的一般语法
ln [参数][源文件A或目录A][目标文件B或目录B]
该命令作用为建立源文件B到源文件A的链接,即B为A的快捷方式,访问B即为访问A
最重要也是最常用的参数:
- -s 软链接(符号链接)
软链接与硬链接的核心区别在于,软链接以路径的形式存在。类似于Windows操作系统中的快捷方式,实质上是一个指向源文件的指针(大概)。而硬链接则与源文件无差别,实质上是给源文件起了个别名,直接指向源文件的inode。
当查看文件大小时,软链接的文件大小很小(本质上里面只存了路径),而硬链接文件大小与源文件相同。
软链接硬链接对比:
- 1.软链接可以 跨文件系统 ,硬链接不可以
- 2.软链接可以对一个不存在的文件名进行链接,硬链接不可以
- 3.软链接可以对目录进行链接,硬链接不可以
tar指令
tar指令用于创建、解压缩和管理归档文件。tar
命令最初用于磁带归档(tape archive),但现在广泛用于各种类型的文件归档操作。
在日常操作中,tar指令最常用于压缩与解压缩文件,最常见的用法为
tar -zcvf archive.tar.gz directory 用于将指定的directory打包至archive.tar.gz 与 tar -zxvf example.tar.gz 将archive.tar.gz 解压缩
wget命令
wget命令最基本的用法为wget http://example.com/file.zip,把文件下载到当前目录。但在实际工程中,有很多资源需要公司内部账号才有权限能下载,这时候就需要指定访问资源时候的账号密码,具体操作为(http版)
wget --http-user=username --http-passwd=password http://example.com/protectedfile.zip
其中,username为网站的登陆账号,password为登录密码(注意http前为两个横线)
而更为通用的方式为
wget --user=username --password=password http://example.com/protectedfile.zip
区别为上面的方式只设置http的用户名与密码,而下面会设置ftp与http
下面列出另一些我觉得有用的可选选项:
wget -O myfile.zip http://example.com/file.zip
使用 -O
选项可以指定下载后的文件名。其中,myflie.zip是下载后的文件名(减少一次文件重命名)
wget -r http://example.com/
使用 -r
选项进行递归下载,即下载整个网站。默认情况下,它会下载5层深度的链接。适合需要递归下载整个网站的内容。
wget -r -l 2 http://example.com/
使用 -l
选项可以指定递归下载的深度,这里深度为2。
wget -r -A "*.jpg" http://example.com/
使用 -A
选项可以指定下载的文件类型,这里只下载 .jpg
文件。(这里感觉有点像爬虫的功能了)
wget -N http://example.com/file.zip
使用 -N
选项只下载比本地文件新的远程文件。(用于更新每日版本)
wget -c https://www.rarlab.com/rar/rarlinux-6.0.1.tar.gz
这个参数适合下载大文件,网速不理想的场景。借助参数 "c", 可以继续从文件中断的地方继续下载
wget -t 100 https://www.rarlab.com/rar/rarlinux-6.0.1.tar.gz
-t 参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功
touch指令
我之前一直觉得touch指令只能用来创建文件,后续创建文件的功能被我用直接vi创建的方式“优化”掉了,今天看书发现touch指令还有更改文件的timestamps(即时间戳的)属性,故学习记录一下。
touch最基本用法——创建文件
touch filename.txt
若名为filename.txt文件不存在,则创建该文件
若名为filename.txt文件存在,则会将文件的 atime 和 mtime 更新为当前时间
写到这里就要多介绍一些概念了,比如说文件有哪些属性
元属性
文件除了其本身存放的内容,有关于文件的各种信息,比如文件权限、文件所有权、时间戳等。
因此,一个文件至少需要两块区域来存储——一块区域存储文件中的内容,一块区域用于存储文件的各种信息,以及文件中的内容所存放的位置。
这也是linux中文件存放的方式——硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个则是inode区(inode table),用于储存文件元信息的区域。
而元信息,就是这些用来描述一个文件的特征的系统数据(这里的特征是指文件的一些统计数据以及权限等)
文件的元属性主要包括:
-
文件权限:定义了文件的访问权限,包括读、写、执行权限。这些权限可以通过
ls -l
命令查看和通过chmod
命令修改。 -
文件所有权:包括文件的所有者(用户)和所属的组。文件所有权可以通过
chown
和chgrp
命令进行修改。 -
时间戳:
- 访问时间(atime):记录文件最后一次被读取的时间。
- 修改时间(mtime):记录文件内容最后一次被修改的时间。
- 变更时间(ctime):记录文件元数据最后一次被修改的时间(例如,权限或所有权的改变)。
-
文件大小:以字节为单位,描述文件的大小。
-
链接计数:表示链接到此文件的硬链接数量。
-
文件类型:例如普通文件、目录、符号链接、设备文件等。
-
inode 号码:每个文件在文件系统中都有一个唯一的 inode 号码,它用于标识文件
我们来着重看一下时间戳这个属性:
Access time(atime),是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容;使用cp命令把该文件(即来源文件)复制成其他文件;或者在这个文件上运用grep、sed、more、less、tail、head等命令,凡是读取文件的操作,均改变文件的Access time
Modify:Modify time(mtime),是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的Modify time,平常我们使用ls –l查看文件时,显示的时间就是Modify time
Change:Change time(ctime),是指文件属性或文件位置改动的时间(跟随元数据的改变而改变),如:使用chmod、chown、mv指令集;使用ln做文件的硬链接,都会改变文件的Change time——改动atime的操作也会改动ctime!
说回touch指令本身,touch指令用于更改文件的时间戳,上文中提及的方式是将文件的时间戳改为现在的时间,touch也能将文件时间改为指定的时间戳,如:
touch -t 202310101200 filename.txt
使用-t选项指定时间,但这个更改不生效于ctime
#stat corgi
File: corgi
Size: 17 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 787112 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-08-29 10:00:00.000000000 +0000
Modify: 2023-08-29 10:00:00.000000000 +0000
Change: 2024-08-07 08:34:16.164000000 +0000
Birth: -
因为ctime作为记录文件元数据更新的时间戳,无法被直接通过 touch
命令来修改
文件传送类指令
MV指令
mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置
基本用法:mv [options] source dest
options包含以下选项(俺觉得每个都蛮有用的)
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
命令格式 | 运行结果 |
---|---|
| 将源文件名 source_file 改为目标文件名 dest_file |
| 将文件 source_file 移动到目标目录 dest_directory 中 |
| 若目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;若目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory |
| 出错 |
栗子:
1.将文件chashaofan改名为csf
mv chashaofan csf
mv后跟的第一个参数为改名前名字,第二个参数为改名后名字
2.将当前目录下的文件csf放入目录/home/usr/nuaa下
mv csf /home/usr/nuaa
*注意文件使用的路径是绝对路径还是相对路径
SCP指令
scp 命令用于 Linux 之间复制文件和目录
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
一般语法为:scp [可选参数] file_source file_target
scp的大部分可选参数与ssh协议有关,故这里只介绍较为常用的一些(ssh协议我还不太熟呢)
- -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p:保留原文件的修改时间,访问时间和访问权限。
- -r: 递归复制整个目录。
- -P port:注意是大写的P, port是指定数据传输用到的端口号
栗子:1.将本地文件传输至远程
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@222.218.188.5:/home/root/others/music/001.mp3
上面一个栗子将/home/space/music/1.mp3拷贝至www.runoob.com所在服务器下的/home/root/others/music文件夹并指定了登录用户名为root
下面一个栗子直将/home/space/music/1.mp3拷贝至222.218.188.5的/home/root/others/music文件夹并指定了登录用户名为root,拷贝过去的文件名为001.mp3
上面的栗子还补充了一些没有说过的知识:
1.在scp命令中,远程主机的地址由两部分构成——远程主机的ip/域名与在远程主机上的地址构成,两者直接用:连接
即222.218.188.5:/home/root/others/music/001.mp3
红字部分为远程主机的ip/域名 蓝色部分为远程主机上的地址
2.ssh协议中,ip与域名几乎等效,域名会通过DNS协议解析为IP地址,加上了几乎的原因是因为一个域名可以对应多个ip地址。
2.从远程复制到本地
scp -r www.runoob.com:/home/root/others/ /home/space/music/
将远程主机www.runoob.com
上的/home/root/others/
目录及其所有内容复制到本地主机的/home/space/music/
目录下。-r 代表的是递归复制,故该目录下所有内容都会被复制到本地主机。