linux常用命令
3.文件查看及处理命令
3.1查看文件内容
cat
+[选项]+[文件]
-b
对非空输出行编号
-E
在每行结束处显示$
-n
对输出的所有行编号
-s
不输出多行空行
标准输入、标准输出和标准错误
在 Linux 中,每个进程默认有三个文件描述符:
- 标准输入(stdin):文件描述符为 0,用于向程序提供输入。
- 标准输出(stdout):文件描述符为 1,用于输出正常信息。
- 标准错误(stderr):文件描述符为 2,用于输出错误信息。
重定向标准输出
cat file1 >file3 #将file1内容复制到file3文件中
注意:重定向标准输出会把原文件内容覆盖掉。
echo helo >file
cat file #输出hello
echo world >file
cat file #输出world
避免此类问题可以使用添加输出
格式:>>
echo world >>file
重定向标准输入
command < input_file
sort < names.txt #将 names.txt 文件的内容作为 sort 命令的输入,并输出排序结果。
错误重定向
2>
错误重定向用于将标准错误输出重定向到文件或与其他输出合并。
grep "error" log.txt 2> error.log#将 grep 命令的错误信息保存到 error.log 文件中。
错误和信息重定向
将标准输出和标准错误同时重定向到同一个文件。
command &> output_file
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
+目标编码
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 管道与命令替换
管道:是重定向的一种,就像一个导管一样,将一个程序或命令的输出作为另一个程序或命令的输入。
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:创建一个未压缩的归档文件
tar -cvf archive.tar file1 file2 directory1
-c
:创建归档文件。-v
:显示详细信息。-f
:指定归档文件的名称为archive.tar
。(需注意第一个是目标文件,后面跟的是打包文件)file1
、file2
、directory1
:要归档的文件和目录。
(仅归档不压缩,相当于拿大箱子装了一堆文件,一般来说箱子占内存要略大于总文件和)
示例 2:创建一个 gzip 压缩的归档文件
tar -czvf archive.tar.gz file1 file2 directory1
-z
:使用gzip
压缩。
示例 3:解压未压缩的归档文件
tar -xvf archive.tar
-x
:解压归档文件
示例 4 :解压 gzip 压缩的归档文件
tar -xzvf archive.tar.gz
-z
:使用gzip
解压。
4.4 scp 远程 copy 文件命令
scp -r filename username@ip:path
filename
:文件名称
username
:copy 到的目标主机的用户名
ip
:目标主机 IP
path
:目标主机路径
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]G
10-光标定位到第 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
选项表示直接修改文件内容,而不是将结果输出到标准输出(如终端)。如果没有-i
,sed
会将结果输出到终端,而不会修改文件。s
表示替换操作。g
表示全局替换
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,同时直接修改文件内容。