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]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选项表示直接修改文件内容,而不是将结果输出到标准输出(如终端)。如果没有- -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,同时直接修改文件内容。