首页 > 系统相关 >Linux小知识

Linux小知识

时间:2025-01-17 09:31:14浏览次数:3  
标签:输出 文件 -- 知识 默认 命令 Linux options

linux命令使用方法,在网页中搜索命令用Ctrl+F
查看命令用法可以在命令后加-h--help,或者用man <command>查看详细用法

常用命令

nohup

不挂断地执行命令
烦恼于晚上跑的任务因为网络波动或是电脑自动重启挂了?用它就对了!

nohup <command> [> logfile] [2>&1] [&]

最常用的方式是与&结合使用,后台执行command,配合输出重定向> logfile 2>&1更佳哦(默认输出到当前目录下的nohup.out
能够在关闭终端的情况下也不间断地执行命令,如果是连接到远程跑任务那么关闭远程连接也没事,这样妈妈再也不用担心任务跑断啦!

time

记录命令使用的系统资源,一般用于记录cpu时间最大使用内存等信息
根据选项可以自定义不同的输出信息,默认输出到标准输出的最后

time [options] <command>
	-f FORMAT	以FORMAT字串设定输出格式
	-o FILE		设定结果输出文件(默认覆盖)
	-a			配合-o使用,以追加形式

Example:
// 我常用的格式
/usr/bin/time -f "%e %U %P %M" [command]
	e	执行命令所花费的现实时间(s)
	U	用户模式下的CPU时间(s)
	P	平均使用CPU率
	M	占用最大内存(KB)

top

查看当前运行进程信息及系统资源使用情况

top [options]
	-u username	查看指定用户相关进程
	-d N		指定刷新时间间隔(s)(默认1s)
	-c			显示完整命令

history

查看历史命令
注1:该命令是直接输出到屏幕,所以一般配合浏览命令使用(如lessmore

history | less

注2:如果想执行之前相同的命令,可直接使用!number执行对应number行数的命令,比如!1024就是执行1024行对应的命令。

ln -s

创建软链接(也称为符号链接,可理解为C语言里的指针)
测试时拷贝数据嫌麻烦?命令里输入一长串地址又费力?到它登场啦!
工作中每个人对于自己的目录有不同的管理方式,我个人一般会把代码和数据分开存放。在测试某个项目单元时对需要用到的数据创建一个软链接到测试目录,这样测试的时候在相同目录取用数据岂不美哉?

ln -s <src file> <link file>
	-s				创建symbolic link
	source file		你想创建的链接指向的目标
	link file		创建的链接名

:如果输入源文件名的时候用的是绝对路径,那么即使把软链接拷贝到另一个目录下也可以继续使用,但如果用的是相对路径,那么拷贝后可能无法使用。

du

查看目录或文件大小

du -h <path>
	-h	结果以K、M、G为单位显示(可读性更好)

free

查看内存使用情况

free -h
	-h	结果以K、M、G为单位显示(可读性更好)

文件操作

touch

本来是用于修改文件或目录的时间属性的,但一般用它来创建空文件
touch <filename>

chmod

更改文件或目录权限
一般用于限制或开放自己目录,或是给新脚本加权限


wc

对文件的换行符、单词或字符计数(WordCount)。一般用作看文件行数。

wc [options] <file(s)>
	-c,--bytes	输出字节数
	-m,--chars	输出字符数
	-w,--words	输出单词数
	-l,--lines	输出行数(换行符数)

head & tail

打印文件内容,head打印开头的,tail打印结尾的,两者用法差不多。默认打印10行内容。
head为例:

head [options] <file(s)>
	-c,--bytes=N	显示前N字节的内容
	-n,--lines=N	显示前N行的内容

注1:数字N可以是数字,也可以加上乘数后缀,比如

1K	= 1024
1KB	= 1000
1M	= 1K*1K
1MB	= 1KB*1KB
后续还有G、T、P、E等类似

注2:数字如果是负数,如--lines=-3,则表示打印除最后3外的其他内容

vim

文本编辑器,详细使用教程请看这里。下面是常用命令:

:set number     显示行号
:set nonumber   隐藏行号
:N		跳转到N行
/pattern 向下搜索pattern
			按 n 跳到下一个搜索结果
			按 N 跳到上一个搜索结果
?pattern 向上搜索,n N 作用与上面相反
*		直接对光标当前所在的单词执行向下搜索
#		直接对光标当前所在的单词执行向上搜索
/\<pat\>    \<和\>是单词定界符
:noh        取消当前高亮(搜索时匹配的结果会高亮)

cut

有点类似awk对文本每一行进行操作,但不如awk那么强大。
更适合对每一行格式相同有固定分隔符的文本进行打印

cut [options] <file>
// 必须选用下面三个选项中的一个且仅能用一个
	-b,--bytes=范围			只选中指定字节
	-c,--characters=范围	只选中指定字符
	-f,--fields=范围		只选中指定字段(默认打印不包含分隔符的行,除非指定了-s)

	-d,--delimiter=分隔符	指定分隔符(默认TAB)

:范围可以有一个或多个(用,分隔),每个范围格式如下(类似python切片):

N		第N个字节、字符或字段(从1开始)
N-M		从N到M(包含M)
N-		从N开始到行末
-M		从行首开始到第M个

diff

比较两个文件内容

diff [options] <file1> <file2>
	-s	文件相同时进行报告
	-y	以两列的格式进行输出(默认一列输出,具体格式请自行查阅帮助文档)
	--suppress-common-lines	相同的行不进行输出

hexdump

以16进制打印文件内容,默认输出到标准输出
一般用于检查输出的二进制文件内容对不对,比如文件头格式之类的

hexdump [options] <file>
	-n <length> //格式化输出前length字节
	-v          //显示所有数据。不含此选项时,对于与上一行完全相同的数据,会以 * 显示
	-C          //输出规范的十六进制和Ascii码
	-c          //单字节字符显示
	-d          //双字节十进制显示
	-o          //双字节八进制显示
	-x          //双字节十六进制显示

:如果文件较大请配合浏览命令使用(如lessmore

hexdump -C test.txt | less

文件同步

scp

节约资源,系统负荷小,可实现免密登录,但不支持断点续传

scp [options] <source> <destination>
	-r		递归处理文件夹
	-q		不显示进度
	-l N	限制传输速度(kb/s)

rsync

最大特点是支持断点续传

rsync [options] <source> <destination>
	-P				等于 --progress, --partial
	--progress		显示进度
	--partial		保留中间文件,实现断点续传
	-r,--recursive	递归处理文件夹
	-v,--verbose	显示详细信息
	-L,--copy-links	将软链接复制为链接文件

Example:
// 将远端某路径同步到本地路径
rsync -P -r username@192.168.0.1:/path/on/remote ./local/path

三剑客

因为位置不够了我就放个简单版本吧,详细的后面再补(

awk

太强大了我用不来

sed

用命令行字符串或脚本来处理文件,以为单位
一般用在想在指定行附近操作,如插入删除某些行,或替换指定行的部分内容等

sed [-e script | -f script_file] <file>
	-e action	指定操作动作(可省略)
	-f file		指定操作文件
	-n			只输出script处理的行
	-i			修改源文件(默认不修改)

action:
	除了查找替换,其他所有操作都遵循模式:N(范围)A(动作)
	范围:可以没有
		N			第N行(从1开始)
		N,M			第N~M行
		/pattern/	搜索符合pattern的行
	动作:至少1个,有多个命令时用{}括起来,命令之间用;进行分隔
		i	插入(指定行前)
		a	追加(指定行后)
		d	删除
		p	打印
		c	取代(整行取代)
		s	替换(通常搭配正则表达式对匹配结果进行替换)
		q	退出

Examples:
	sed -n '2p'		// 打印第2行
	sed -e '2,5d'	// 删除2~5行
	sed -n '/oo/{s/oo/kk/;p;q}' 	// 搜索包含oo的行并替换成kk,打印,退出
	sed -n 's/oo/kk/'	// 将每行第一个oo替换为kk
	sed -i 's/oo/kk/g'	// 将所有oo都替换为kk,原地编辑

注1:插入多行时用\来进行新行标记
注2$表示最后一行
注3:可以用多个-e script进行多点编辑

grep

搜索并打印文件中包含字符串或正则的行

grep [options] pattern [file]
	-i	忽略大小写
	-n	显示匹配行号
	-r	递归查找子目录中的文件
	-v	反向搜索,只打印不匹配的行

任务管理

kill

给任务发送信号,默认发送TERM(15),即终止。

kill [-s 信号说明符 | -信号说明符 | -n 信号编号] <pid>
	-l,-L	列出所有信号名
	STOP	挂起后台进程
	CONT	恢复后台进程(前台的不行)

Examples:
// 3种强制杀死进程的方式
kill -s KILL <pid>
kill -KILL <pid>
kill -9 <pid>

前后台切换

  • jobs:查看暂停执行的任务
    -l 显示pid
    把任务后台执行时会有一个提示(类似下图),前面的1是job number(任务序号),后面的3694则是任务的pid
    在这里插入图片描述

  • Ctrl+z:挂起前台进程

  • Ctrl+c:终止前台进程

  • stop [job num] 暂停任务

  • fg [job num] 恢复任务到前台运行(foreground)

  • bg [job num] 恢复任务到后台运行(background)

  • kill [job num] 终止任务

压缩解压

gzip

gzip [options] <file>
	-c	输出到标准输出,不修改源文件
	-k	保留源文件
	-d	解压模式
	-f,--force		强制覆盖输出文件
	-r,--recursive	递归压缩子文件/子目录
	-v,--verbose	打印冗余信息
	-N	设定压缩等级[1-9],数字越小压缩速度越快,数字越大压缩率越好
		默认为[6]

gzip / gunzip / zcat

zcat命令可理解为对gz压缩文件的cat命令,把输出重定向到文件即可完成与gzip -c -dgunzip -c相同的解压功能

// 3种解压gz文件方式
gzip -c -d *.gz > output_filename
gunzip -c *.gz > output_filename
zcat *.gz > output_filename

tar

这是一个强大的打包工具,集成了各种压缩算法,可以用于备份和打包文件或目录。

tar [options] <output.tar> [files ...]
	-z	使用gzip压缩归档文件
	-c	创建新归档文件
	-x	解压归档文件
	-t	列出归档文件内容
	-v	显示详细信息(verbose)
	-f	指定归档文件名(必须放在选项最后)

常见错误集

  • 执行脚本时permission denied
    一般是脚本忘记开执行权限了,具体看这里
  • 执行脚本提示bad interpreter: No such file or directory
    可能是脚本由windows编写,每行末尾包含不可见字符/r/n导致的。
    可用vim打开文件,执行:set ff查看文件格式(fileformat),如果显示为dos则确实是格式有误,再执行:set ff=unix设置文件格式后:wq保存退出即可
  • windows下编写的脚本上传到linux后每行末尾包含^M字样
    这是换行符不一致问题。
    可用vim打开文件,执行:%s/^M$//g替换掉^M^M输入方式为Ctrl+v,Ctrl+M

标签:输出,文件,--,知识,默认,命令,Linux,options
From: https://blog.csdn.net/PYPYPYJ/article/details/145174134

相关文章

  • Linux系统中 ping 的平均时间
    使用ping命令可以测试网络连接的质量,包括延迟和丢包率。在Linux系统中,计算ping命令的耗时可以通过以下方法进行:ping-c5域名|grep'rttmin/avg/max/mdev'|awk-F'[/]''{print$8,$NF}'ping-c5域名:向域名发送5次ICMP请求包(-c5表示发送5个包)。g......
  • 【Linux性能】如何在 Linux 中优雅地让 HTTP 请求超时?
    在Linux系统中,优化HTTP请求的性能和可靠性是每个系统管理员和开发者的必备技能之一。特别是当你在处理大量HTTP请求时,合理设置超时可以有效防止资源被长时间占用、提高系统性能,并避免潜在的安全风险。本篇文章将带你深入探讨如何在Linux中设置HTTP请求超时,逐步揭示各种......
  • Ubuntu等各类Linux系统安装配置Docker详细教程(全网最详细,步骤简洁,看完包懂)
    文章目录前言详细步骤1.安装相关依赖2.安装阿里云的DockerGPG密钥3.设置stable仓库4.安装Docker5.启动服务6.验证测试常见问题及对应解决方案Ubuntu22.04配置Docker-速通版前言Docker是一个非常常用的工具,但是由于其涉及到的知识点较多,所以网上的教程大部分非......
  • 【c++】【Linux】内存碎片
    【c++】【Linux】内存碎片内碎片分配给进程未被使用的部分当内存被分配给某个进程时,分配的内存块可能比实际需求稍大,未被使用的部分称为内碎片。例如,如果需要3.6k内存此时根据buddy伙伴系统内存分配方式最少分配4k为一页那其中0.4k未被使用的内存就是内碎片如果使......
  • Linux基础03:用户相关操作 + 用户组相关操作 + 权限管理
    主要内容用户相关操作用户组相关操作权限管理用户和用户组基础1.计算机通过用户名和密码识别用户。2.Linux中新建用户后,需要设置密码。3.系统有一个特殊的用户root,这个被称为超级用户,一般会默认。4.用户组:把几个用户归在一起,这样的组被称之为用户组,规定文件所属用户组......
  • Linux基础02:+文件系统+ 目录操作+ 文件操作+ 存储转换
    内容提要文件系统目录操作文件操作存储转换文件系统Linux本质就是一个文件系统,Linux文件系统是操作系统组织、存取、保存数据的一种手段,整体采用层级式的倒状目录结构。倒树状结构中的目录/:根目录,Linux中的绝对路径就是由这个开始的/bin:主要存放系统的普通指令......
  • Linux运维学习记录14
    1.Docker的网络模式Docker的网络支持5种网络模式nonebridgecontainerhostnetwork-namebridge:描述:默认网络模式。如果未显式指定网络模式,Docker会将容器连接到一个默认的桥接网络docker0。每个容器都有自己的虚拟网卡,并通过docker0与其他容器通信。特点:容器之间......
  • Vue 开发者必备的 JavaScript 基础知识
    变量与数据类型为什么重要:Vue3的响应式系统严重依赖于正确的变量声明。组合式API要求理解 const 用于ref和reactive对象。类型意识有助于Vue3的模板渲染和prop验证。const count= ref(0)const user= reactive({  name: 'John',  age: 30......
  • linux kernel tcp丢包分析
     现象使用netstat-s能看见如下丢包统计  1352910failedconnectionattempts1352910resetsreceivedforembryonicSYN_RECVsockets 查看netstat的代码https://sourceforge.net/p/net-tools/code/ci/master/tree/ 取的这两个文件:/proc/net/netstat, /pro......
  • Telnet在Windows和Linux上的使用方法
    Telnet是一个基于TCP/IP协议的远程登录协议,用于在网络上的计算机之间进行通信。它主要用于远程管理和测试网络服务。本文将详细介绍在Windows和Linux系统上如何安装和使用Telnet。一、在Windows上使用Telnet1.1启用Telnet客户端在Windows系统中,默认情况下Telnet客户端是未启用......