【越学学糊涂的Linux系统】Linux指令篇(三)

目录

一、grep指令:

 二、打包和压缩:

1、是什么:

2、为什么:

3、指令:

①zip/unzip指令:

②tar指令:

4、传送和接受压缩包:

三、bc指令:

 四、scp指令:

 五、uname指令:

六、重要的热键:

七、扩展指令:


一、grep指令:

✨语法:

grep 选项 搜索的字符串 文件(搜寻的目标文件)

✨功能:在文件中搜索字符串,将找到的字符串打印出来。

✨常用选项:

-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

-n: 

🐸目前我在一个叫study的目录底下,log.txt是当前目录下的一个普通文件去查找需要找的字符串,值得一提的是:字符串可以不加引号,也可以加引号括起来(下面我未加引号

🪰当然默认只写文件名就是在当前目录底下找目标文件,也可以通过绝对路径指定目标文件👉下面我们回到了根目录,提供文件的绝对路径,输出的结果与上图无异


 -v

🐸在这里结果太长,只露出一部分结果,下图可以看出带9的没有被打印出来,就是跟着反着来;😡唱反调


 -i

🐸为了便于更好理解,对log.txt文件进行修改,讲一些字母改了大写👉看下图,发现我们搜索道到的数据缺失了一些,左边可以看出只要出现了大写的那行就没有被打印出来。

🧑‍🎓 这个时候我们想要不区分大小写就可以直接用-i选项了,无论是否大小写都会被打印出来!


 二、打包和压缩:

补充说明:这里只讲了比较常用的指令

1、是什么:

《1》打包:文件合并.✨

《2》压缩:减小体积.✨

2、为什么:

《1》打包:将所有需要一起发送的文件打包起来,防止文件发生丢失.✨

《2》压缩:减小体积,节省存储空间,所有的项目/软件的传输都是通过网络传送的,经过压缩可以有效的减少网络传送的时间。✨

3、指令:

linux中可能没有下载如下指令,可以通过特定的安装指令进行下载,如:在centos中下载就是yum install -y 指令名称(相当于Windows下的安装软件)

①zip/unzip指令:

zip: 

✨语法:

zip 选项 压缩后文件命名.zip 需要压缩的文件

✨功能:将目录或文件压缩成zip格式的压缩文件。

✨常用选项:

-r :递归处理,将指定目录下的所有文件和子目录一并处理

🧑‍🎓先来看一下,不选择任何选项默认的打包压缩是什么样的👉我们直接将要打包的文件打包好,给予自己的朋友

 👉👉然后我们进行解压:看下图,解压的文件并没有将log.txt带过来,只带了一个空目录

🧑‍🎓🧑‍🎓所以说:默认的压缩只会打包名字 


-r

🐸🐸当我们压缩时选择-r选项时,就会通过递归的方式将该目录以及子目录全部压缩


 unzip:

 ✨语法:

unzip 选项 压缩文件名.zip 选项 目标路径(目录)

✨功能:压缩文件解压到指定目录中,未选择,默认解压到当前目录底下。

✨常用选项:

-d :将压缩文件解压到指定目录下

-d

🐸默认情况上面就能看出来,直接解压到当前路径底下,-d则是解压到我们指定路径(目录)


②tar指令:

🧑‍🎓🧑‍🎓压缩和解压都是该指令,且压缩的文件名后缀为.tgz 

 ✨压缩语法:

tar 选项 压缩文件名.tgz 打包文件名

  ✨解压语法:

tar 选项 压缩文件名.tgz -C 指定解压路径(目录)

✨功能:对文件进行压缩或者压缩文件解压到指定目录中,当未选择,默认解压到当前目录底下。

✨常用选项:

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!(指定文档名)
-C : 解压到指定目录

 🐸🐸选项比较多,选择适当的3个就够了,记住接下来用的选项

✨✨压缩:选择-czf就可以了


🐸解压:选择-xzf就可以了,x就是解压

注意: 当有多个参数时,-f命令参数必须在最后一个,否则会报错,原因是 -f后面跟的是目标文件名称,如果-fc,则会把c当做源文件名称。


4、传送和接受压缩包:

🤔🤔前面提到了压缩包是为了让我们传输时不容易丢失数据,那么我们在Windows怎么和云服务器进行传输了??

✨用到了2个指令👉👉

sz指令:传送文件

SZ 压缩文件

rz指令:接收文件

rz 

 ✨✨接收文件时,可以从Windows直接拖拽到自己指定的目录下。

三、bc指令:

 ✨语法:

bc 选项 计算任务的文件

✨功能:进行算术操作精密运算的工具。bc命令也是一种支持任意精度的交互执行的计算器语言。

✨选项:

-i:强制进入交互式模式
-l:定义使用的标准数学库
-w:对POSIX bc的扩展给出警告信息
-q:不显示bc环境信息,直接运行命令
-v:显示指令版本信息
-h:显示指令的帮助信息容的那一行

 、


 四、scp指令:

✨✨远程拷贝

✨语法:

scp 压缩包 用户名@公网ip:目标机器指定路径

✨这里还有一个账户就好了,由于本人只有一个云服务器,就不做演示了,当然感兴趣的可以去查查怎么拷贝到windows或者拷贝到虚拟机


 五、uname指令:

 ✨语法:

uname 选项

✨功能:用来获取电脑和操作系统的相关信息。

✨常用选项:

-r:内核版本
-a:a 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

-a

[root@hcss-ecs-2dc9 ~]# uname -a
Linux hcss-ecs-2dc9 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
[root@hcss-ecs-2dc9 ~]# 

-r


六、重要的热键:

[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]+c按键---让当前的程序『停掉』
[Ctrl]+d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit,退出当前用户

[Ctr]+r按键 搜索历史命令

上下键 查前历史命令

七、扩展指令:

 shutdown指令 关机

✨语法:

shutdown [选项] 

✨选项:

-r: 重启计算机

-h: 关闭系统后关闭电源

-c: 取消已经计划的 shutdown 操作

 -t sec : -t 后面加秒数,即过几秒后关机


 🧑‍🎓🧑‍🎓🧑‍🎓扩展指令:

◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;

◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;

◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

🥰🥰最后补充一个网站:

 Linux命令查询器

<think>我们正在处理一个关于Python JSON库的使用教程和指令详解的请求。根据用户的要求,我们需要使用中文回答,并且遵循特定的格式要求(如行内数学表达式使用$...$,独立公式使用$$...$$等)。不过,由于JSON库的使用不涉及数学公式,因此我们可能不需要使用数学表达式,但会遵循其他格式要求。 用户要求生成相关问题,并且回答结构要清晰,逐步解决问题。 根据提供的引用,我们知道: - 引用[1]介绍了json库是标准库的一部分,无需安装,提供序列化和反序列化功能。 - 引用[2]和[3]是关于Python第方库的总体介绍和另一个库networkx,与当前问题关系不大,但我们可以主要参考引用[1]。 因此,我们将围绕json库的核心功能展开:序列化和反序列化,并详细介绍常用方法。 回答结构: 1. 简介 2. 核心方法 - 序列化:将Python对象转换为JSON字符串或文件 - 反序列化:将JSON字符串或文件解析为Python对象 3. 常用参数和选项 4. 处理复杂对象(如自定义类) 5. 示例代码 6. 注意事项 最后,生成相关问题。 注意:由于用户要求生成相关问题,我们在回答的最后会添加相关问题部分。 开始回答:</think>### Python JSON库使用教程与指令详解 JSON(JavaScript Object Notation)是一种轻量级数据交换格式,Python的`json`库是标准库的一部分,无需安装即可直接导入(`import json`)。它提供Python对象与JSON格式的双向转换功能,适用于API通信、配置文件存储等场景[^1]。 --- #### 一、核心功能与指令 1. **序列化(Python对象 → JSON)** - `json.dumps()`:将Python对象转换为JSON字符串 ```python import json data = {"name": "Alice", "age": 30, "skills": ["Python", "SQL"]} json_str = json.dumps(data) # 输出: {"name": "Alice", "age": 30, "skills": ["Python", "SQL"]} ``` - `json.dump()`:将Python对象写入JSON文件 ```python with open("data.json", "w") as f: json.dump(data, f) # 写入文件 ``` 2. **反序列化(JSON → Python对象)** - `json.loads()`:将JSON字符串解析为Python对象 ```python json_data = '{"name": "Bob", "active": true}' py_obj = json.loads(json_data) # 输出字典: {'name': 'Bob', 'active': True} ``` - `json.load()`:从JSON文件读取数据 ```python with open("data.json", "r") as f: data = json.load(f) # 读取为Python字典 ``` 3. **关键参数** - `indent`:美化输出(缩进空格数) ```python print(json.dumps(data, indent=4)) # 格式化缩进 ``` - `ensure_ascii`:处理非ASCII字符 ```python json.dumps({"城市": "北京"}, ensure_ascii=False) # 输出: {"城市": "北京"} ``` - `sort_keys`:按键排序 ```python json.dumps(data, sort_keys=True) # 按键名字母排序 ``` --- #### 二、处理复杂数据类型 | JSON类型 | Python类型 | 注意事项 | |----------------|---------------|----------------------------| | `object` | `dict` | 键必须是字符串 | | `array` | `list` | 支持嵌套结构 | | `number` | `int`/`float` | NaN/Infinity需特殊处理 | | `boolean` | `bool` | `true`→`True`, `false`→`False` | | `null` | `None` | 无对应值 | **自定义对象序列化**: ```python class User: def __init__(self, name, age): self.name = name self.age = age # 自定义编码器 def user_encoder(obj): if isinstance(obj, User): return {"name": obj.name, "age": obj.age} raise TypeError("Object not serializable") user = User("Charlie", 25) json_str = json.dumps(user, default=user_encoder) # 输出: {"name": "Charlie", "age": 25} ``` --- #### 、常见问题与解决方案 1. **日期时间处理** JSON无日期类型,需转换为字符串: ```python from datetime import datetime data = {"time": datetime.now().isoformat()} ``` 2. **循环引用错误** 对象存在循环引用时会报错`TypeError`,需手动打破循环。 3. **解析大文件** 使用`ijson`库流式解析超大JSON文件: ```python import ijson with open("large.json", "r") as f: for item in ijson.items(f, "item"): # 逐项读取 process(item) ``` 4. **安全警告** 避免用`json.loads()`解析不可信数据(可能引发代码注入),改用`json.load()`读取文件[^1]。 --- #### 四、应用场景示例 1. **API响应解析** ```python import requests response = requests.get("https://api.example.com/data") data = json.loads(response.text) # 解析API返回的JSON ``` 2. **配置文件读写** ```python # 读取配置 with open("config.json") as f: config = json.load(f) # 修改后保存 config["timeout"] = 60 with open("config.json", "w") as f: json.dump(config, f, indent=2) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值