linux常用命令 笔记
vim命令
vim 文件名 打开文件
输入 字母 i 进入编辑模式,
输入字母o,在光标下一行开始编辑
按下esc 输入:wq! 强制写入文件内容退出vim并保存
:q! 不保存直接退出
vim快捷键
k 向上 j 向下 h 向左 l 向右
移动光标的快捷键
w 移动到下一个单词
b 移动到上一个单词
数字0 移动到行首
字符$ 移动到行尾
按下g 移动到文章的开头
按下G 移动到文章的结尾
按下H 移动到屏幕的开头
按下L 移动到屏幕的结尾
按下M 移动到屏幕的结尾
命令模式下的查找
向下查找 / 你要查找的内容,按下n跳转到下一个单词
向上查找 ?你要查找的内容,按下n跳转到下一个单词
命令模式下的复制,粘贴,删除
输入 yy 复制光标所在行
输入 4yy 复制4行内容
输入 p 打印粘贴的内容
输入 dd 删除光标当前行
输入 D 删除光标当前位置到行位的内容
输入 x 删除光标当前字符,向后删除
输入 X 删除光标当前字符,向前删除
输入 u 撤销上一步的操作
快捷操作
输入 C 删除光标所在位置,到行位的内容,且进入编辑模式
输入 o 在当前光标的下一行开始标记
输入 O 在光标的上一行开始编辑
输入 A 快速进入行位,且进入编辑模式
输入 ZZ 快速保存退出
批量快捷的操作
步骤删除
出入 ctrl +v 进入可视块模式
用上下左右命令,选择你的操作块
选中块后,输入 d 删除块内容
快捷插入多行
选中块后,输入大写I,进行写代码
按下esc两次,会自动生成多行代码
重定向符号
重定向的意思是,将数据传到其他地方
> 输出覆盖重定向
>>输出追加重定向
<或<< 标准输入重定向
案列
读取文件内容,且写入另一个文件当中,并覆盖文件当中的内容
cat douyin.txt > kuaishou.txt
追加写入文件内容
cat douyin.txt >> kuaishou.txt
重定向写入符
cat < douyin.txt 把文件中的数据,发送给cat命令去读取
xargs 命令
xargs -n 4 < douyin,txt 把文本内容拆分成多行显示且每行只显示4个字符
重定向追加写入符 <<
可以结合cat命令使用
cat >> gushi.txt <<EOF (EOF代表文件的开头或者结尾的关键字)
系统信息
arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
关机 (系统的关机、重启以及登出 )
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销
cat命令
cat的功能参数用法
cat 加文件名 查看文本内容,以及功能参数
cat -b 对非空行显示行号
cat -n 对所有行显示行号
cat -E 在每行结尾加上$并显示
cat -s 减少空行数量,多个空行,减为一个
cat命令合并多个文件
cat douyin.txt gushi.txt > ./抖音和古诗的内容.txt(合并多个文件内容,写入到新的文件中)
cat >> 抖音.txt <<EOF 你好呀 EOF 非交互式的写入文件内容信息
cat清空文件的方法
echo > gushi.txt 直接清空文件,留下了一个空行
> gushi.txt 直接清空文件内容,不留空行
cat /dev/null > gushi.txt 利用cat读取一个黑洞文件,然后清空其他文本
/dev/null 黑洞文件在linux系统中
cat 文件名 -n 显示文件中信息并显示是行数
tac命令
tac与cat命令查看结果相反
管道符 | 过滤字符串信息命令 grep
cat gushi.txt | grep “know me” 精确找出文本中所有有关konw me的语句
more less 命令
more 加文件名 分屏查看大文本内容命令
按下回车是下一行 空格是向下滚动一个屏幕 =显示当前行号 按下q时退出more
head和tail命令
head 默认10行命令用于查看文件开头的N行 head -5 文件名 查看文件中第五行
head -c 5 文件名 显示文件中的5个字符
tail 默认10行从后向前看,也可以指定行数
-f 实时刷新文件内容变化
-F 不断的打开文件,一般和小写-f结合使用
tail -F -f 文件名 可以实时查看还没有创建或即将创建出的文件或目录的内容
cut命令
cut -c 4 文件名 用于查看文件中每一行的第4个字符
cut -c 4-7 文件名 用于查看文件中每一行的第4到第7的字符
cut -c 4,7 文件名 用于查看文件中每一行的第4个和第7个字符
cut -c -7 文件名 用于查看文件中每一行的首个字符到第7个字符
cu -c 7- 文件名 用于查看文件中每一行的第7个字符到结尾
cut -c “:” -f 区域范围 文件名 指定分隔符号,进行显示
cut -d “:” -f 3 文件名 找出第三个区域的内容
cut -d “:” -f -3 文件名 找出开头到第三个区域的内容
cut -d “:” -f -3 文件名 | head -5 找出开头到第三个区域的内容前五行
sort 命令
sort 命令将输入的文件内容按照规则排序,然后输出结果
用法:sort (选项)....(文件)...
或:sort (选项).... -- fileso-from=F
串联排序所有指定文件并将结果显示
sort -n 文件名 对文件第一个字符进行排序,默认从小到大
sort -n -r 文件名 对文件第一个字符进行排序,默认从大到小
sort -u 文件名 对排序结果去重
sort -n -t “.” -k 4(. 是分隔符) 文件名 指定分隔符号,指定区域进行排序
uniq 命令
uniq命令可以输出或忽略文件中的重复行,常与sort排序命令结合使用
uniq 文件名 去除连续的重复行
sort -n 文件名 uniq 先排序再去重更精准
sort -n 文件名 uniq -c 统计每一行重复出现的次数
sort -n 文件名 uniq -d -c 只找出文件中重复行,且统计出现的次数
sort -n 文件名 uniq -c -u 找出只出现过一次的行
wc命令
wc -l 文件名 统计文件的行数
echo "文件名1 文件名2" 打印出文件信息但不创建
echo "文件名1 文件名2 文件名3 文件名4" | wc -w 统计出单词数量是几
echo " 文件名" | wc -m 统计字符数量
who命令
who | wc -l 查询当前用户有几个人在访问
tr命令
echo "my name is alex" | tr '[a-z]' '[A-Z]' 替换标准输入中的大小写
echo "my name is alex an i am 9999 years old" | tr -d 'a-z' 删除标准输入中的a到z的字符信息
tr 'a' 'A' < 文件名 把文件当做标准输入,进行小写a替换成大写A
echo "iiii am aaaaalllllexxxxx" | tr -s 'iaxl' 把标准输入中连续重复的字符删除只保留一个
stat命令 du -h 命令显示文件大小
stat命令用于显示文件的状态信息,比ls命令输出信息要更详细
find命令
find命令用来在指定目录下查找文件
处理符号链接 要查找的路径 参数 限定条件 执行动作
find -H -l -P PATH options tests actions
pathname 要查找的路径
-maxdepth 1设置最大目录层级为1 常用
-mindepth 1设置最小目录层级为2
-atime 按照文件访问Access的时间查找,单位是天 常用
-ctime 按照文件改变Change的时间查找,单位是天
-mtime 按照文件修改Modify的时间查找,单位是天 常用
-name 按照文件名字查找,支持*通配符 常用
-group 按照文件的所属组查找
-perm 按照文件的权限查找
-type 按照文件类型查找 b块设备文件 d目录 c 字符设备文件 p管道文件 i符号链接文件 f普通文件 s socket文件
-size n[cwbkMG] 按照文件大小查找 n数量 b代表512位元组的区块c表示字节数k表示[1024字节]w字[2字节]M兆字节[1048576字节]G千兆字节[1073741824字节] 常用
-user 按照文件属于谁来查找文件
-path 配合 -prune参数来排除指定目录 常用
-prune 使find命令不在指定的目录查找 常用
-delete 删除找出的文件 常用
-exec或-ok 对匹配的文件执行相应shell命令 或-ok 对配的文件执行相应shell命令
-prinr 将匹配的结果标准输出
! 取反 -a 取交集 -o取并集 作用类似&&和\
案列:
find . -type f -name"[0-9]*" -delete 在当前文件夹下找出 普通文件 名字是所有带有0到9的数字文件名 并删除
find . -atime -1在当前目录查找一天以内被访问过的文件 [ -1 一天以内 1恰好在1天前 +1超过1天]
find . -mtime -1在当前目录查找一天以内文件内容变化的文件
. 代表当前文件夹下 -path "./文件夹名字或目录" -prune 代表忽略此文件或目录 -o -name "*文件名" -prinr 代表找出想要的文件
find . -path "./文件夹名字或目录" -prune -o -name "*文件名" -prinr 当前文件夹下 忽略此文件或目录 找出想要的文件
查找 文件名 格式普通文件 名字是以.txt结尾 执行删除命令 以删除掉此文件
find . -type f -name "*.txt" -ok rm {} \; 查找出普通文件 文件名字是以.txt为结尾 执行命令 以删除掉此文件
Access 访问时间 Modify 修改时间 Change 更改时间
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
xargs命令
xargs命令 简单的说就是 把其他命令给他的数据变为参数 传递给另一个命令 与管道符相似
xargs语法操作就是 命令加上空格加上参数加上文件名
-d 为输入指定一个分隔符,默认分隔符是空格
-i 用{}代替 传递的数据
-I sting 用string来代替传递的数据-n [数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-p n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于-s 设置的最大长度结果. xargs命令执行
shred -u 加文件名 彻底粉碎文件 慎用
useradd 用户名 创建新用户
passwd 用户名 更改用户密码

chmod命令 更改文件可读可写可执行属性权限
chmod u+rwx 文件名
chmod u-rwx 文件名
chmod g+rwx 文件名
chmod 754 文件名
u(代表主用户) g (代表组) o(其他人) rwx=421
group 创建用户组
chwon命令 更改文件属主 属组
chwon 属主名字:属组名字
chattr 给文件特殊的权限 a 权限,代表只能写入数据,不得删除文件数据
chattr +a 文件名 给文件只能写入权限 ,不得删除文件
chattr -a 文件名
chattr +i 文件名 给文件特殊权限 文件不能被删除 改名 修改内容
chattr -i 文件名
lsattr 查看文件的特殊权限
grep命令
grep 【参数】{匹配模式}文件数据 grep,擅长单纯的查找或匹配文本内容
-i 忽略字符的大小写 awk,适合编辑,处理匹配到的文件内容
-n 显示匹配行与行号 sed,适合格式化文本内容,对文本进行复杂处理
-o 仅显示匹配到的字符串本身
-v 显示不能被模式匹配到的行
-E 支持使用扩展的正则表达式元字符
-c 只统计匹配的行数
-q 静默模式,既不输出任何信息
基本正则表达式BRE集合
^ 尖角号,用于模式的最左侧,如“^oldboy”,匹配以oldboy单词开头的行
$ 美元符,用于模式的最右侧,如“oldboy$”,匹配以oldboy单词结尾的行
^$ 组合符,表示空行
. 匹配任意一个且只有一个字符,不能匹配空行
\ 转义符,让特殊含义的字符,先出原形,例如\.代表小数点
* 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容
.*组合符,匹配所有内容
^.*组合符,匹配以任意多个字符开头的内容
.*$ 组合符,匹配以任意多个字符结尾的内容
[0-9] 匹配【】内包含0到9中所有数字的内容
[abc]匹配【】内包含的任意一个字符,a或b或c,也可以写成【a-c】
[^abc] 匹配除了^后面的任意字符,a或b或c ,^表示对[abc]的取反
扩展正则表达式
+号表示匹配前一个字符1次或多次,必须使用grep-E扩展正则
?匹配前一个字符0次或1次 grep -E 'go?d' 文件名 找出文件中包含gd或god的行
|符 竖线|在正则中是或者的意思
find / -maxdepth 3 -name "*.txt" grep -i -E "a|b" 找出系统中的txt文件,且名字里包含a或b的字符
()小括号 将一个或多个字符捆绑在一起,当做一个整体进行处理
小括号功能之一是,分组过滤被括号起来的内容,括号内的内容表示一个整体
括号内的内容可以被后面的"\n"正则引用,n为数字,表示引用第几个括号的内容
\1表示从左侧起,第一个括号中的模式所匹配到的字符
\2表示从左侧起,第二个括号中的模式所匹配到的字符
grep -E 'good|glad' 文件名 找出包含good和glad的行
grep -E 'g(oo|la)d' 文件名 找出包含good和glad的行
{n,m} 匹配次数 grep -E "y{2,4}" 文件名 匹配y字符对少两次,最多四次
sed命令
语法 sed[选项】{sed内置命令字符}【输入文件】
参数选项
-n 取消默认sed的输出,常与sed内置命令p一起用
-i 直接将修改结果写入文件,不用-i,sed修改的是内存数据
-e 多次编辑,不需要管道符
-r 支持正则扩展
sed的内置命令字符
a 在指定行后面添加一行/多行文本
i 在指定行见面添加一行/多行文本
d 删除匹配行
p 打印匹配行的内容,通常p与-n一起用
s/正则/替换内容/g 匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配
sed匹配范围
空地址 全文处理
单地址 指定文件某一行
/pattrn/ 被模式匹配到的每一行
范围区间 10,20 十到二十, 10,+5第10行向下5行
步长 1~2,表示1.3.5.7.9行,2~2,表示2.4.6.8.10.偶数行
sed "2,3p" 文件名 -n 打印文件中的第2,3行数据 -n 代表取消显示默认输出
sed "2,+3p" 文件名 -n 打印文件中的第2行向下+3行
sed "/linux/p"文件名 -n 打印出与linux相关的行
sed "/linux/d" 文件名 -i 删除文件中与linux相关的数据行
sed "5,$" 文件名 -i 删除文件中的第五行到结尾的数据行
sed "s/My/His/g" 文件名 -i 将文件中的My替换成His
sed "s/你想找到的内容/你想替换后的内容/g
sed -e "s/My/His/g" -e "s/77625/88888/g" 文件名 -i 替换所有的My为His,同时换掉77625数字为88888
sed "2a My linux is good" -i 文件名 在文件第二行的下一行写入My linux is good
sed "4i My linux is good" -i 文件名 在文件第四行的上一行写入 My linux is good
sed "3a 123456.\n456789" -i 文件名 在文件第三行的下一行插入123456.456789
ifconfig etho 输出计算机的网卡信息
inet 10.141.32.137 netmask 255.255.192.0 broadcast 10.141.63.255
ifconfig eth0 | sed "2p" -n | sed "s/^.*inet//" | sed "s/net.*$//" 以管道符形式掐头去尾找出1.141.32.137
ifconfig eth0 | sed -e "2s/^.*inet//" -e "2s/net.*$//p" -n 以-e参数多次编辑形式掐头去尾找出1.141.32.137
awk命令 默认以空格为分隔符,且多个空格也被识别成一个空格,作为分隔符
print 打印
printf 格式化 $NF 表示当前分割后的最后一列 倒数第二列可以写成 $(NF-1)
$n 指定分隔符后,当前记录的第n个字段
$0 完整的输入记录
对于awk而言,变量分为(内置变量) 与(自定义变量)
FS 字段分隔符,默认是空格
OFS 输出字段分割符,默认是空格
RS 输入记录分隔符(输入换行符),指定输入时的换行符
ORS输出记录分隔符(输出换行符),输出时用指定符号代替换行符
内置变量
NF 显示分割后的列数是多少
NR 在awk中表示行号,NR==5表示行号是5的那一行 注意一个等于号,是修改变量值的意思,两个等于号是关系运算符,是“等于”的意思
FNR 各文件分别计数的行号
awk参数
-F 指定分割字段符
-v 定义或修改一个awk内部的变量
-f 从脚本中读取awk命令
awk '{print $1}' 文件名 打印文件中每一行的第一列数据
awk '{print $0}' 文件名 打印文件中每一行的数据
awk '{print $3,$5,$7}' 文件名 打印文件中每一行的3,5,7列的数据
awk '{print "n3:"$3,"n5:"$5,"n7:"$7}' 文件名 打印文件中每一行的3,5,7列的数据并在开头添加(n3: n5: n7:)
awk 'NR==5{print $0}' 文件名 显示文件第5行内容 awk 'NR==2,NR==5{print $0}' 文件名 显示文件2到5行的内容
awk 'NR==37,NR==40{print NR,$0}' 文件名 打印出文件37到40行内容,并加上行号显示内容
awk '{print $1,$(NF-1),$(NF-2)}' 文件名 打印文件中的第一列,倒数第一列,倒数第二列数据
awk '{print $1,NF}' 文件名 打印出文件的第一列,并显示总共分割了多少列
awk -F ":" -v OFS="------" '{print $1,$NF}' 文件名 指定分割符为:找出文件中的第一列与最后一列,每列之间以------分割开,并显示
awk -F ":" 指定输入分割符为: -v OFS="------" 指定输出分割符为------ -v OFS="/t" 指定输出分割符为制表的形式
awk '{print FNR,$0}' 文件名 文件名 处理多个文件,并分别显示行号
awk -v RS=' ' '{print NR,$0}' 文件名 指定换行符为空格 找出文件中的每一行数据,并且显示行号
awk -v ORS='nb666' '{print NR,$0}' 文件名 我们修改了每一行的换行符更改为nb666,因此没有换行输出,而是在每一行的结尾添加了nb666
BEGIN模式 在文件处理之前做好的事
awk 'BEGIN{print "开始学习awk了,注意!"}' 文件名 在awk没有对文件处理前 调用BEGIN动作打印,开始学习awk....这么一串信息
print和printf的区别
printf语句后不会自动打印换行符;\\n
%c 显示字符的ASCII码
%d %i 代表十进制整数(阿拉伯数字)
%e %E 科学计数法显示数值
%f 显示浮点数
%g %G 以科学计数法的格式或浮点数的格式显示数值
%s 显示字符串(英文,中文)
%u 无符号整数
%% 显示%自身
\n 代表换行
printf修饰符
- 减号代表左对齐,默认右对齐
+ 显示数值符号,printf “%+d”
awk '{printf "%s\n",$0}' 文件名 等同于 awk '{print $0}' 文件名 printf 格式化输出不加\n, 默认是不会自动添加换行符
printf "%s------\n" a b c d 在a b c d 每一个字符结尾的后面加上一个------
浙公网安备 33010602011771号