linux指令

查询指令

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),用于储存文件元信息的区域。

而元信息,就是这些用来描述一个文件的特征的系统数据(这里的特征是指文件的一些统计数据以及权限等)

文件的元属性主要包括:

  1. 文件权限:定义了文件的访问权限,包括读、写、执行权限。这些权限可以通过 ls -l 命令查看和通过 chmod 命令修改。

  2. 文件所有权:包括文件的所有者(用户)和所属的组。文件所有权可以通过 chown 和 chgrp 命令进行修改。

  3. 时间戳

    • 访问时间(atime):记录文件最后一次被读取的时间。
    • 修改时间(mtime):记录文件内容最后一次被修改的时间。
    • 变更时间(ctime):记录文件元数据最后一次被修改的时间(例如,权限或所有权的改变)。
  4. 文件大小:以字节为单位,描述文件的大小。

  5. 链接计数:表示链接到此文件的硬链接数量。

  6. 文件类型:例如普通文件、目录、符号链接、设备文件等。

  7. 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:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
命令格式运行结果
mv source_file(文件) dest_file(文件)

将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录)

将文件 source_file 移动到目标目录 dest_directory 中
mv source_directory(目录) dest_directory(目录)

若目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;若目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
mv source_directory(目录) dest_file(文件)

出错

栗子:

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 代表的是递归复制,故该目录下所有内容都会被复制到本地主机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值