ls
命令可以列出文件夹下的所有文件
ll
命令是 ls -l
的缩写,可以列出文件夹下的所有文件的详细信息,包含文件所有者、访问权限等信息
rm file1
表示删除文件file1
rm -rf dir1
表示递归删除文件夹dir1以及子目录下的所有文件
mv file1
表示删除文件file1
mv file1 file2
表示把file1重命名为file2
-n
或者 --number
:由1开始对所有输出的行进行编号,包括空白行
-b
或者 --number-nonblank
: 和 -n
类似,只不过对输出的空白行不进行编号
cat是一次性显示整个文件的内容到屏幕上,适用于文件内容较少的情况
cat file1
把file1文件的内容显示在屏幕上
还可以通过cat把文件内容保存在另一个文件中
cat -n file1>file2
把file1文件的内容复制一份到file2文件中,并且所有的行会有编号。如果file2有内容,会被完全覆盖掉。(-n
参数也可不加)
cat file1 file2 > file3
把file1和file2的文档内容合并到file3,同样,如果file3原本有内容的话,会被完全覆盖掉
cat file1 file2 >> file3
把file1和file2的文档内容合并之后追加到file3的尾部,如果file3原本有内容的话,不会被覆盖掉
清空文件内容
cat /dev/null > file1
tac
是cat
的反命令,该命令同样是显示文件内容,只不过是倒序显示。但是tac
没有cat
那样的参数
more命令可以让日志分页,会显示内容的百分比,更方便阅读
按下空白键(space)就往下显示一页,按b键就往上一页显示
-num
一次显示的行数
+num
从第几行开始显示
+/string
在每个文档中搜索string字符串,然后从该字符串前两行开始显示
逐页显示file1的内容
more file1
设定每屏显示的行数
more -10 file1
设置为10行为单位进行翻页
从第几行开始显示file1内容
more +20 file1
从第20行开始显示文件内容
同时显示多个文件内容
more file1 file2
从文件file1查找第一个出现liu
字符串的行,并从该处前两行开始显示输出
more +/liu file1
less和more类似
区别:
more从前到后读取文件,在启动时会加载整个文件,如果文件较大,加载速度较慢
less并未在一开始就加载整个文件,因此速度比较快,less的查看功能也更强大
more和less都支持用空格
键显示下一页,b
键显示上一页
显示文件的开头内容(默认10行)
显示文件的最后几行内容(默认10行)
用于查看文件内容,参数-f常用于查看正在改变的日志文件
tail -f filename
查看文件最尾部的内容(默认10行),并且会不断刷新。
tail filename
查看文件的最后10行,并退出文件,不会自动刷新
tail +20 filename
查看文件的第20行至文件末尾的内容
tail -c 20 filename
查看文件的最后20个字符
tail -n 20 filename
查看文件的最后20行内容,并退出文件,不会自动刷新
与tail -20 filename
是一样的
tail -50f fielname
显示文件的最后50行内容,并且会不断刷新
也称符号链接,类似windows系统下的快捷方式,可以跨文件系统进行链接,可以对目录进行链接
ln -s file1 file2
创建file2是file1的软链接
权限前面的l代表是链接
修改file2
的内容的话,file1
的内容也会同步修改;
修改file1
的内容的话,file2
的内容也会同步修改
如果删除file1
的话,file2
就会变成死链接,打开file2
文件的内容,也是空的:
删除file2
的话,不会影响到file1
多个文件共用一个索引节点指向同一个文件数据块,本质上指向的是同一份数据
删除11.md不会影响到1.md,删除1.md也不会影响到11.md。只有同时删除这两个文件,它们共同指向的文件内容才会消失
用于变更为其他使用者的身份
su root //切换到root用户,会让输入密码
改变文件的所有者
chown ali text1.md
chown -R ali:ali test1.md
chown ali:ali test
chown -R ali:ali test
修改访问权限
chmod +x file
chmod u+rx file
chmod g-x file
chmod 755 file
chmod 600 test/
chmod -R 600 test/
uname -a
cat /etc/os-release
pwd
ps aux
查看系统中的所有进程,包括其他使用者
ps -elf
显示系统内的所有进程信息,包括进程的父进程(PPID)也会标注出来
top
显示进程的排名情况
ps: ps aux
与ps -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
lsof
lsof -i:8080
查看8080端口的占用情况
netstat
netstat -tunlp
显示tcp、udp的端口占用情况
top
free
free
以KB为单位展示数据
free -m
以MB为单位展示数据
free -h
以GB为单位展示数据
ps aux --sort -rss
根据rss排序展示进程情况
ps: rss是指resident set size
(常驻内存大小)的缩写,表示进程使用了多少内存(RAM中的物理内存),不包含已经被换出的内存。
top
默认情况下,awk会将如下变量分配给在文本行中的数据字段
$0
代表整个文本行
$1
代表文本行中的第1个数据字段
$2
代表文本行中的第2个数据字段。依次类推
默认的字段分隔符是任意的空白字符(例如空格或tab制表符),awk在读取每一行时,会按照字段分隔符划分每个数据字段
awk {print $1}
是指打印出每行的第一个数据字段:awk {print $1,$2}
是指打印出每行的第1,第2个数据字段
可以进行数据字段的替换:
echo "my name is ali" | awk '{$4="owl";print $0}'
以上命令把每行的第4个数据字段替换成了owl
,并且输出整个文本行:
awk {print $1,$2,"end"} 文件名
如果后面没有带文件名,那就是从标准输入进行读取并进行格式化
采用的是流编辑模式,在sed处理之前,需要预先提供一组规则,sed会按照此规则来编辑数据
sed每次仅读取一行内容,根据提供的规则命令匹配并修改数据(不会直接修改源文件数据,而是会将数据复制到缓冲区,只会修改缓冲区的数据),然后将执行结果输出
sed 's/good/bad/g' aek.md
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以此类推
-c参数:统计匹配的行数(有几行),但是不将具体的行打印出来
grep -c am 1.md
例如一个文件中查询'am'这个字符,有4行都出现过这个字符,那么结果就是4
-n参数: 将匹配的行号和具体的行打印出来
-i参数:忽略大小写进行查找
-v参数:反向搜索,搜索不符合条件的行,并且把行内容打印出来
-o参数:只显示匹配到的字符串,不显示具体的行
-e参数:实现逻辑or
grep -e aaa -e bbb test
查找test文件中包含aaa或者bbb字符串的行
-e参数后面接正则表达式时,用于查找和正则表达式匹配的行
cut为剪切的意思,能将一行行的数据按照指定分隔符切成一列列,然后只显示特定的列
参数:
-b以字节为单位进行分割
例如提取每一行的第3个字节:-b 3
提取每一行的第3,4,5个字节: -b 3-5
提取每一行的第3,4,5个字节,以及第8个字节:-b 3-5,8
提取前3个字节-b -3
:
从每行的第3个字节开始提取全部:-b 3-
-c以字符为单位进行分割
-c
与-b
类似,只是-c是以字符为单位进行分割,-b是以字节为单位进行分割,如果都是英文字母看不出什么差别,如果是中文,就能看出明显差别
-d自定义分隔符,常与-f连用,显示指定的列
-f,与-d连用,显示指定的列
统计文件的字符信息
什么参数也不加,列出行数,字数,字符数
-l
参数列出行数
-w
参数列出单词数
-m
列出字符数
可以去除排序过的文件中重复的行,常和sort命令一起使用。为了使uniq起作用,重复的行必须是相邻的
下面经过去重之后并没有变化,因为重复的行都不是相邻的:
经过sort排序后再去重:
-c参数进行计数(统计每一个重复的次数):
-i参数忽略大小写进行去重:
-u参数只显示不重复的行:
可按照不同的数据类型来排序,例如数字或文字排序
不加任何参数,默认是按ascii
字符进行升序排序
-f
参数忽略大小写
-b
参数忽略最前面的空格
-m
参数将前面3个字母按照月份(英文)的缩写来排序
-r
参数反向排序
-t
参数表示分隔符,与-k连用
-u
参数指忽略相同行,也可使用uniq命令
-n
按照数值大小进行排序
用于把数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的数据输入。就是把数据重定向到给的的文件和屏幕上。
参数:
-a:向文件中重定向时使用追加模式
tee -a out1.md
追加标准输入的内容到out1.md文件的尾部,而不是覆盖
-i:忽略中断信号
直接使用tee命令可以从标准输入读取数据,然后将内容输出到标准输出设备,同时保存为文件(内容复制到了out1.md和out2.md中):
参数:
-b :后面接欲切割的文件大小
split -b3 test1.md //把test1文件按3个字节的大小切割成一个个文件,并且自动命名
合成文件:cat命令
例如:切割之后的文件名分别为xaa~xaz,那么合成一个文件:cat x* > test.md
就会把切割之后的所有文件内容合成一个文件(也就是恢复成原来的文件)
可用来删除和替换一些文字信息(只是会改变输出内容,并不会真正去修改文件的内容)
参数:
tr -d '字符'
表示删除掉该字符
从标准输入中删除指定的字符之后输出到标准输出中:
tr -s '原字符' '替换字符'
表示替换字符常用于查找可直接执行的命令,只能查找可执行文件,在PATH变量指定的路径里,搜索某个系统命令的位置,并且返回第一个搜索结果:
查找范围小,查找速度快,加-a
参数可以返回所有匹配结果
不只可以查看命令,其他类型的文件都可以找。在PATH路径基础上加了一些系统目录的查找,查找范围比which的大,查找速度也快。可以加-b
参数只查找二进制文件
查找符合条件的文档,在linux系统内置的索引数据库找
查找passwd文件
搜索 etc 目录下所有以 sh 开头的文件
locate /etc/sh
直接搜索整个文件目录,默认从根目录开始搜索,功能最强大但是最慢。可以通过-name选项指定要查找的文件名
find . -name "*.c"
find . -type f
find . -ctime 20
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb
。默认情况下updatedb每天会执行一次
diff命令用来比较文件的差异。
diff以逐行的方式去比较文本文件的异同处,如果要比较目录的话,则会比较目录中相同文件名的文件,而且不会比较其中的子目录
ip addr show
查看文件的详细信息,如大小,块,权限,最近访问时间,最近修改时间,创建时间等
who
-H
参数)who -H
who -q