目录

ubuntu学习day2

linux常用命令

3.文件查看及处理命令

3.1查看文件内容

cat+[选项]+[文件]
-b 对非空输出行编号
-E 在每行结束处显示$
-n 对输出的所有行编号
-s 不输出多行空行

标准输入、标准输出和标准错误

在 Linux 中,每个进程默认有三个文件描述符:

  • 标准输入(stdin):文件描述符为 0,用于向程序提供输入。
  • 标准输出(stdout):文件描述符为 1,用于输出正常信息。
  • 标准错误(stderr):文件描述符为 2,用于输出错误信息。
重定向标准输出
bash 复制代码
cat file1 >file3 #将file1内容复制到file3文件中

注意:重定向标准输出会把原文件内容覆盖掉。

bash 复制代码
echo helo >file 
cat file #输出hello
echo world >file
cat file #输出world

避免此类问题可以使用添加输出

格式:>>

bash 复制代码
echo world >>file
重定向标准输入

command < input_file

bash 复制代码
sort < names.txt #将 names.txt 文件的内容作为 sort 命令的输入,并输出排序结果。
错误重定向

2>错误重定向用于将标准错误输出重定向到文件或与其他输出合并。

bash 复制代码
grep "error" log.txt 2> error.log#将 grep 命令的错误信息保存到 error.log 文件中。
错误和信息重定向

将标准输出和标准错误同时重定向到同一个文件。
command &> output_file

bash 复制代码
ls -l * &> all_output.txt
#ls -l * 会列出所有文件,如果某些文件不存在,会产生错误信息。
#&> 将标准错误输出重定向到标准输出,因此错误信息也会被保存到 all_output.txt
linux 中创建空文件的四种方式
  • echo a.txt
  • touch b.txt
  • cat > c.txt(按ctrl+c退出)
  • vi d.txt (:wq 退出)

3.2 显示文件内容的前几行

head - n +行数值+文件名

3.3 显示文件的后几行

tail --n +行数值 +文件名

3.4 单页浏览文件

more或者less(很鸡肋。查看大文件使用)、

3.5 对文件内容进行排序

sort+文件名

3.6 查看文件内容类型

file +文件名 (根据文件内容,判别文件类)

3.7 报告或删除文件中重复的行

uniq +文件名
-c 在输出行前面加上每行在输入文件中出现的次数。
-d 仅显示重复行。
-u 仅显示不重复的行

3.8 统计指定文件中的行数、字数、字节数

wc +文件名
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串

3.9 汉字编码转换

iconv -f+原始编码+-t+目标编码

bash 复制代码
iconv -f utf-8 -t gb2312 hanzi>hanzi1
#将hanzi文件内容以utf-8编码转化为gb2312编码并保存到hanzi1文件中

3.10 搜索文件内容 grep

grep+[选项]+[关键字或查找模式]+[文件名 1,文件名 2,......]
^ 以什么开头 ,例如 ls --l | grep ^d 显示当前目录下的所有子目录的详细信息。
$ 以什么结尾 。例如 ls --l | grep c$ 显示当前目录下以 c 结尾的文件。

  • 常用的参数:
    -F 每个模式作为固定的字符串对待
    -c 只显示匹配行的数量。
    -i 比较式不区分大小写。
    -n 在输出前加上匹配串所在的行号。
  • grep 通配符
    • .*一个或任意多个字符
    • .一个字符
    • []范围

4. 其他命令

4.1 管道与命令替换

管道:是重定向的一种,就像一个导管一样,将一个程序或命令的输出作为另一个程序或命令的输入

bash 复制代码
ls -l /etc| wc -l #统计etc目录下个数(原理ls输出该目录下每个文件占一行的详细信息,wc统计有多少行数因此知道有多少个文件)

4.2 文件或目录的创建掩码

umask 是一个掩码值,用于限制新创建的文件和目录的默认权限。它的作用是通过减法的方式,从文件或目录的初始权限中"屏蔽掉"某些权限。

  • 假设当前的 umask 值为 002
    • 文件的初始权限:666
    • 屏蔽的权限:002
    • 最终权限:666 - 002 = 664
  • 对于目录:
    • 目录的初始权限:777
    • 屏蔽的权限:002
    • 最终权限:777 - 072 = 775
  • umask 的作用
    • 安全性:通过限制新文件和目录的默认权限,防止不必要的访问。
    • 一致性:确保所有用户在创建文件和目录时遵循统一的权限规则。

4.3 文档管理

tar +[主选项+辅选项] +目标文档源文件或目录
c:创建新的档案文件。
r: 要把存档的文件追加到档案文件的末尾。
x:从档案文件中释放文件。
f:使用档案文件或设备。
v:在归档过程中显示处理的文件。
z:用 gzip 来压缩/解压缩文件,后缀名为.gz,加上该选项后可以将档案文件进行压缩。

需要注意,在linux系统下"打包"与"压缩"是两个操作步骤。

示例 1:创建一个未压缩的归档文件
bash 复制代码
tar -cvf archive.tar file1 file2 directory1
  • -c:创建归档文件。
  • -v:显示详细信息。
  • -f:指定归档文件的名称为 archive.tar。(需注意第一个是目标文件,后面跟的是打包文件)
  • file1file2directory1:要归档的文件和目录。
    (仅归档不压缩,相当于拿大箱子装了一堆文件,一般来说箱子占内存要略大于总文件和)
示例 2:创建一个 gzip 压缩的归档文件
bash 复制代码
tar -czvf archive.tar.gz file1 file2 directory1
  • -z:使用 gzip 压缩。
示例 3:解压未压缩的归档文件
bash 复制代码
tar -xvf archive.tar
  • -x:解压归档文件

示例 4 :解压 gzip 压缩的归档文件

bash 复制代码
tar -xzvf archive.tar.gz
  • -z:使用 gzip 解压。

4.4 scp 远程 copy 文件命令

scp -r filename username@ip:path
filename:文件名称
username:copy 到的目标主机的用户名
ip:目标主机 IP
path:目标主机路径

bash 复制代码
scp -r file3 king@192.168.4.52:~/ #从本机 copy 到其他机器
scp -r king@192.168.4.52:~/file3 . #从其他机器 copy 到本机 ,注意最后要加.表示下载当前文件夹

4.5 ssh远程登录

ssh 用户名@IP

4.6 用来查看和配置网络设备

ifconfig 查看网络信息。
ifconfig 网卡名 down关闭网络
ifconfig 网卡名 up开启网络

4.7 查看设置路由

route当网络不通时,通过执行 route 查看路由,查看网关配置是否正确。

5.vim编辑器

5.1 命令状态和编辑状态

vim刚进入时默认为命令状态,键盘对应的按键为命令,需要输入关键命令才能进入编辑状态。

新增:
a 从光标后面开始添加文本。
A 从光标所在行的末尾开始添加文本。

插入:
i 从光标前面开始插入文本。(最常用)
I 从光标所在行的开始处插入文本。

在命令模式中输入 gg=G 可以自动对齐

5.2 删除与修改

x 删除光标处的字符。
dd 删除光标所在的整行。
3dd 删除光标所在行以及下面的两行(删除 3 行)。
D 删除光标到行尾的文本,常用语删除注释语句 (d$)。
yy 复制光标所在的整行。
[n]yy 从光标开始往下复制n行,[n]表示一个整数。
p 将复制后的文本粘贴到光标处。
u 撤销上次操作。

5.3 光标移动

^ 光标移动到行首
$ 光标移动到行尾
Ctrl+d向下翻半页
Ctrl+f 向下翻一页
Ctrl+u向上翻半页
Ctrl+b 向上翻一页
gg 光标定位到文档头
G 光标定位到文档尾
H 光标定位到当前页首
L 光标定位到当前页的最后一行的行首
w 光标往后移一个字
b 光标往前移一个字
[n]+光标向后移动 n 行,[n]表示一个整数 10+
[n]-光标向前移动 n 行,[n]表示一个整数
[n]G10-光标定位到第 n 行行首, [n]表示一个整数 20G

5.4 查找与替换

/[str]查找字符串 str,[str]表示要查找的字符串回车后会加亮显示所有找到的字符串,接着命令 n 移动到下一个找到的字符串。shift+n移动到上一个匹配字符串
:s /[str1]/[str2]把str1字符串替换为str2字符串。 /i忽略大小写 /g 全部匹配

  • 部分替换
    :3,6 s/[src]/[dst]/ig(3-6 行中找src换成dst)
  • 全部替换
    :%s/[src]/[dst]/g 将文档中所有 src 的字符串替换为 dst 字符串
    :%s/^ //g 将文档每一行的行首的空格去掉

5.5 块操作

v可视化块选择状态,选中块之后,可以对块进行删除(d),复制(y),剪切(x),撤销(u)
Ctrl +v 竖向选择模式,主要用于批量注释代码,输入步骤如下:

  • 首先按 ctrl+v,竖选选中要注释的行
  • 输入 I(注意是大写的 I),然后输入//
  • 再输入 esc,就会看到选中的行被注释了。

5.6 文档保存及退出

结束编辑:
:q 在未修改文档的情况下退出
:q! 放弃文档的修改,强行退出
:w 文档存盘
:wq 文档存盘退出

其他:
:help查看该命令的帮助提示(不常用,当不小心按 F1时,通过:q 进行退出)
ctrl+s锁死vim面板,需要按ctrl+q来恢复。

6.sed

sed: 管道查找替换程序
s/旧内容/新内容/选项

  • -i 选项表示直接修改文件内容,而不是将结果输出到标准输出(如终端)。如果没有 -ised 会将结果输出到终端,而不会修改文件。
  • s 表示替换操作。
  • g 表示全局替换
bash 复制代码
cat a.txt | sed 's/aa/bb/' > b.txt
#将 a.txt 中的 aa 替换成 bb 并重定向输出到 b.txt 中。
sed -i "s/printf/puts/g" *.c
#对当前目录下所有以 .c 结尾的文件进行批量替换操作
find . -name "*.c" |xargs sed -i "s/puts/printf/g"
# 递归查找当前目录及其子目录中所有以 .c 结尾的文件,并将这些文件中的 puts 替换为 printf,同时直接修改文件内容。
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
知识分享小能手4 分钟前
JavaScript学习教程,从入门到精通,Ajax与Node.js Web服务器开发全面指南(24)
开发语言·前端·javascript·学习·ajax·node.js·html5
搬码临时工8 分钟前
路由器转发规则设置方法步骤,内网服务器端口怎么让异地连接访问的实现
服务器·网络·智能路由器·内网穿透·端口映射·外网访问
2301_8135061311 分钟前
路由与OSPF学习
学习·智能路由器
落笔画忧愁e13 分钟前
数据通信学习笔记之OSPF的基础术语
网络·笔记·学习
阿桨15 分钟前
【(保姆级教程)Ubuntu24.10下部署Dify】
ubuntu·dify·智能体
终身学习基地44 分钟前
第七篇:linux之基本权限、进程管理、系统服务
linux·运维·服务器
安顾里1 小时前
LInux平均负载
linux·服务器·php
unlockjy1 小时前
Linux——进程优先级/切换/调度
linux·运维·服务器
铭阳(●´∇`●)1 小时前
Python内置函数---breakpoint()
笔记·python·学习
该死的碳酸饮料呀1 小时前
PLOG安装
linux·ubuntu