HOME AUTHORS

Linux常用命令

2020年1月5日 09:02 2022年3月26日 21:57 更新
ali
Tags file1 user 文件

文件相关命令

ls & ll

rm

mv

查看文件内容

cat命令

-n 或者 --number:由1开始对所有输出的行进行编号,包括空白行

-b 或者 --number-nonblank: 和 -n类似,只不过对输出的空白行不进行编号

实例

tac命令

taccat的反命令,该命令同样是显示文件内容,只不过是倒序显示。但是tac没有cat那样的参数

more命令

more命令可以让日志分页,会显示内容的百分比,更方便阅读

按下空白键(space)就往下显示一页,按b键就往上一页显示

常用参数

实例

less命令

less和more类似

区别:

  1. more从前到后读取文件,在启动时会加载整个文件,如果文件较大,加载速度较慢

  2. less并未在一开始就加载整个文件,因此速度比较快,less的查看功能也更强大

  3. more和less都支持用空格键显示下一页,b键显示上一页

head命令

显示文件的开头内容(默认10行)

tail命令

显示文件的最后几行内容(默认10行)

用于查看文件内容,参数-f常用于查看正在改变的日志文件

  1. tail -f filename 查看文件最尾部的内容(默认10行),并且会不断刷新。

  2. tail filename 查看文件的最后10行,并退出文件,不会自动刷新

  3. tail +20 filename 查看文件的第20行至文件末尾的内容

  4. tail -c 20 filename 查看文件的最后20个字符

  5. tail -n 20 filename 查看文件的最后20行内容,并退出文件,不会自动刷新

    tail -20 filename是一样的

  6. tail -50f fielname 显示文件的最后50行内容,并且会不断刷新

软链接和硬链接

软链接

也称符号链接,类似windows系统下的快捷方式,可以跨文件系统进行链接,可以对目录进行链接

ln -s file1 file2 创建file2是file1的软链接

图片

权限前面的l代表是链接

修改file2的内容的话,file1的内容也会同步修改;

修改file1的内容的话,file2的内容也会同步修改

如果删除file1的话,file2就会变成死链接,打开file2文件的内容,也是空的:

图片

删除file2的话,不会影响到file1

硬链接

多个文件共用一个索引节点指向同一个文件数据块,本质上指向的是同一份数据

2022-03-17_19-23

删除11.md不会影响到1.md,删除1.md也不会影响到11.md。只有同时删除这两个文件,它们共同指向的文件内容才会消失

用户与权限

su

用于变更为其他使用者的身份

su root //切换到root用户,会让输入密码

chown

改变文件的所有者

举例

chown ali text1.md

chown -R ali:ali test1.md

chown ali:ali test

chown -R ali:ali test

chmod

修改访问权限

举例

chmod +x file

chmod u+rx file

chmod g-x file

chmod 755 file

chmod 600 test/

chmod -R 600 test/

查看系统版本等信息

  1. uname -a

  2. cat /etc/os-release

查看文件夹的完整路径

查看进程

ps: ps auxps -elf的区别:

  1. ps aux是最常用的BSD风格组合,选项前不能有"-"连字符; ps -elf是unix标准风格,选项前必须有"-"连字符

  2. ps aux不会显示父进程的ID,而ps -elf会显示父进程的ID

查看进程号并杀死进程

找到进程号(PID):

ps aux | grep "程序名称"

或者:

ps -elf | grap "程序名称"

kill命令杀死进程:

kill -9 上面查询出的PID

查看端口占用情况

查看内存等信息

free以KB为单位展示数据

free -m以MB为单位展示数据

free -h以GB为单位展示数据

2022-03-17_17-46

查看cpu等信息

linux管道命令

文本数据处理:awk命令

默认情况下,awk会将如下变量分配给在文本行中的数据字段

默认的字段分隔符是任意的空白字符(例如空格或tab制表符),awk在读取每一行时,会按照字段分隔符划分每个数据字段

image

echo "my name is ali" | awk '{$4="owl";print $0}'

以上命令把每行的第4个数据字段替换成了owl,并且输出整个文本行:

image

awk {print $1,$2,"end"} 文件名

image

如果后面没有带文件名,那就是从标准输入进行读取并进行格式化

文本数据处理命令:sed命令

采用的是流编辑模式,在sed处理之前,需要预先提供一组规则,sed会按照此规则来编辑数据

sed每次仅读取一行内容,根据提供的规则命令匹配并修改数据(不会直接修改源文件数据,而是会将数据复制到缓冲区,只会修改缓冲区的数据),然后将执行结果输出

sed 's/good/bad/g' aek.md

image

选取命令: grep

grep是全面搜索正则表达式并把行打印出来,是一种文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来,匹配的字符串会标红。搜索出来的结果被送到标准输出,不会影响原文件

ps:要查找的字符串如果包含了空格,则一定要加引号,否则可加可不加。后面接的文件名可多个

grep "account" test 等于 grep account test

grep "small name" test 在test文件中查找包含small name字符串的行

grep "test" test1 test2 test3 表示在test1、test2、test3这三个文件中查找包含test字符串的行

-B参数:和A相反,打印出符合条件的行包括该行前面的行,后面可接需要打印出来的前面的行数。

-C参数:结合AB,打印出符合条件的行并包括该行前面或后面的行。

grep am -A3 test1.md //打印出符合条件的行以及该行的前3行。-B或-C以此类推

image

grep -e aaa -e bbb test 查找test文件中包含aaa或者bbb字符串的行

-e参数后面接正则表达式时,用于查找和正则表达式匹配的行

选取命令:cut命令

cut为剪切的意思,能将一行行的数据按照指定分隔符切成一列列,然后只显示特定的列

参数:

image

提取每一行的第3,4,5个字节: -b 3-5

提取每一行的第3,4,5个字节,以及第8个字节:-b 3-5,8

提取前3个字节-b -3:

image

从每行的第3个字节开始提取全部:-b 3-

统计命令:wc

2022-03-17_18-36

统计文件的字符信息

什么参数也不加,列出行数,字数,字符数

-l参数列出行数

-w参数列出单词数

-m列出字符数

uniq

可以去除排序过的文件中重复的行,常和sort命令一起使用。为了使uniq起作用,重复的行必须是相邻的

下面经过去重之后并没有变化,因为重复的行都不是相邻的:

image

经过sort排序后再去重:

image

-c参数进行计数(统计每一个重复的次数):

image

-i参数忽略大小写进行去重:

image

-u参数只显示不重复的行:

image

排序命令:sort

可按照不同的数据类型来排序,例如数字或文字排序

不加任何参数,默认是按ascii字符进行升序排序

-f参数忽略大小写

-b参数忽略最前面的空格

-m参数将前面3个字母按照月份(英文)的缩写来排序

-r参数反向排序

-t参数表示分隔符,与-k连用

-u参数指忽略相同行,也可使用uniq命令

-n按照数值大小进行排序

双重数据流命令tee

用于把数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的数据输入。就是把数据重定向到给的的文件和屏幕上。

参数:

直接使用tee命令可以从标准输入读取数据,然后将内容输出到标准输出设备,同时保存为文件(内容复制到了out1.md和out2.md中):

image

切割命令split

参数:

合成文件:cat命令

例如:切割之后的文件名分别为xaa~xaz,那么合成一个文件:cat x* > test.md就会把切割之后的所有文件内容合成一个文件(也就是恢复成原来的文件)

字符转换命令tr

可用来删除和替换一些文字信息(只是会改变输出内容,并不会真正去修改文件的内容)

参数:

image

文件查找命令

which

常用于查找可直接执行的命令,只能查找可执行文件,在PATH变量指定的路径里,搜索某个系统命令的位置,并且返回第一个搜索结果:

image

查找范围小,查找速度快,加-a参数可以返回所有匹配结果

whereis

不只可以查看命令,其他类型的文件都可以找。在PATH路径基础上加了一些系统目录的查找,查找范围比which的大,查找速度也快。可以加-b参数只查找二进制文件

image

locate

查找符合条件的文档,在linux系统内置的索引数据库找

  1. 查找passwd文件

  2. 搜索 etc 目录下所有以 sh 开头的文件

locate /etc/sh

2022-03-17_18-41

find命令

直接搜索整个文件目录,默认从根目录开始搜索,功能最强大但是最慢。可以通过-name选项指定要查找的文件名

  1. 将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

find . -name "*.c"

  1. 将目前目录其其下子目录中所有一般文件列出

find . -type f

  1. 将目前目录及其子目录下所有最近 20 天内更新过的文件列出

find . -ctime 20

find和locate区别

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb 。默认情况下updatedb每天会执行一次

文件比较命令

diff

diff命令用来比较文件的差异。

2022-03-17_18-50

diff以逐行的方式去比较文本文件的异同处,如果要比较目录的话,则会比较目录中相同文件名的文件,而且不会比较其中的子目录

ip命令

查看本地的ip地址

ip addr show

stat命令

查看文件的详细信息,如大小,块,权限,最近访问时间,最近修改时间,创建时间等

image

who命令

who

who -H

image

who -q

image