Linux常用文件命令
ls 列出目录下的文件
cd 切换目录
pwd 当前所处的目录
mkdir 创建文件夹
rmdir 删除文件夹
cp 复制文件或目录
rm -rf 文件名 删除文件
mv 移动文件或修改文件名称
文件属性及权限
drwxrwxrwx
文件类型:d目录 -文件 1连接文件 b设备文件 c设备文件中的串行端口设备如键盘鼠标
第一个rwx:代表文件拥有者
第二个rwx:代表拥有者所属的用户组
第三个rwx:代表其他人
r:读权限 read 4
w:写权限 write 2
x:操作权限 execute 1
修改权限 chmod 777 test.txt
ls -l 查看文件属性
ls -ld 查看指定文件的属性
cd (change directory)切换目录
- cd #root根目录
- cd / #系统根目录
- cd ../../ #返回上上一层目录
ls/dir (list)列出目录下文件
ls -a (--all) #列出所有文件
ls -d (--directory) #列出目录
ls -i (--inode) #显示每个文件的inode 号(索引节点号,可以理解为文件的存储地址)
ls -l (-long) #较长格式列出
ls -lh (--human-readable)与-l #人性化阅读输出
网络
ping 测试网络连接
-c 网络连接次数
-l 每次连接间隔
netstat 打印Linux网络系统的状态信息
-t 列出所有tcp
-u 列出所有udp
-l 显示监听端口
-n 以数字形式显示地址
-p 显示进程的pid跟名字
例如:netstat -ntlp
性能
top 动态的监控进程活动与系统负载
第一行:系统时间、运行时间、登录终端数、系统负载(1分钟、5分钟、15分钟的平均值数字小即负载小)
第二行:进程总数、正在运行进程数、睡眠中的进程数、停止的进程数、僵死的进程数
第三行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比、所有数据均为CPU数据并以百分比展示
第四行:物理内存总量、内存使用量、内存空闲量、内核缓存的内存量
第五行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量
ps -aux 查看进程状态
-a 显示所有进程 包括其他用户
-u 用户及其他详细信息
-x 显示没有控制终端的进程
进程状态
R 运行 进程正在运行或在运行队列中等待
S 中断 进程处于休眠,当某个条件形成或接受信号,则脱离该状态
D 不可中断 进程不响应系统异步信号,kill命令也不能中断
Z 僵死 进程终止,但进程描述符依然存在,直到父进程调用wait()系统函数将进程释放
T 停止 进程收到停止信号后停止运行
Linux三剑客
管道
管道符 |
概念:将2个命令隔开,管道符左边的命令的输出就会作为管道符右边的输入
正则
011-12345678
电话号码匹配: 0\d{2}-\d{8}
常用元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线、或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串结束
限定符(次数)
* 0次或更多次
+ 1次或更多次
? 0次或1次
{n} n次
{n,} n次或更多次
{n,m} n到m次
匹配a开头的单词 \ba\w*\b
匹配正好8位的单次 \b\w{8}\b
匹配数字 \d+
5-12位QQ号 ^\d{5,12}$
grep
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配行号
-c 统计匹配的行数
-o 只显示匹配到的字符串
-E 使用ERE,相当于egrep
查找文件内容包含root的行数
grep -n root test.txt
查找不包含root的行并显示行数
grep -vn root test.txt
查找以s开头的行
grep ^s test.txt
查找以n结尾的行
grep n$ test.txt
sed
sed是流编辑器,一次处理文件的一行内容
模式:
第一行存储在模式空间
sed命令处理
送入屏幕
清空行模式空间
第二行存储在模式空间。。。。
循环处理每一行直到结束
命令参数:sed [-hnV] [-e<script>] [-f<script文件>][文本文件]
-h 显示帮助
-n 只显示script处理后的结果
-e<script> 以选项中指定的script来处理输入的文本文件
-f<script> 以选项中指定的script文件来处理输入的文本文件
常见的操作:
a:新增 sed -e '4 a newline' 指定行的后面
c:取代 sed -e '2,5c No 2-5 number'
d:删除 sed -e '2,5d'
i:插入 sed -e '2i newline' 指定行的前面
p:打印 sed -n '/root/p'
s:取代 sed -e 's/old/new/g'
命令举例:
查看帮助 man sed sed -h
在文本文件第四行后添加新字符串 sed -e '4 a newline ' test.txt
在第二行前加上newline sed -e '2 i drink tea' test.txt
全局替换 sed -e 's/root/hello/g' test.txt
(全局替换时 加参数g 会修改所有匹配到的内容,否则只修改匹配到的第一个)
直接修改文件内容 sed -i 's/root/hello/g' test.txt
(-i 参数会直接修改源文件)
awk
定义:文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
原理:还是每行循环操作
(1)把行作为输入,赋值给$0
(2)以空格为分隔符,将行切断,分别赋值给$1、$2...
(3)对行匹配正则,执行操作
(4)打印出内容
命令格式:awk 'pattern + action' [file]
-pattern 正则表达式
-action 对匹配到的内容执行的命令,默认为输出每行内容
常用参数:
FILENAME awk浏览的文件名
BEGIN 处理文本之前需要执行的操作
END 处理文本之后需要执行的操作
FS 设置输入域分隔符,等价于命令行-F选项
NF 浏览记录的域的个数(列数)
NR 已读的记录数(行数)
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 整条记录
$1 表示当前行的第一个域
举例1:
打印文件的第一行;打印文件第一行被:分隔后的第七列
(1)搜索/etc/password中有root关键字的所有行,并显示对应的shell
awk -F:'/root/{print $7}' /etc/password
(2)打印/etc/password/ 的第二行信息
awk -F:'NR==2{print $0}' /etc/password
举例2:
(1)使用begin加入标题
awk 'BEGIN {print "BEGIN","BEGIN"}{print $1,$2}' /etc/passwd
(2)自定义分割符
echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'