栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux基础-head tail which

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux基础-head tail which

nl 输出文件里的内容,并且进行编号

同样的效果 :cat -n 文件名

   nl - number lines of files


[root@sc lianxi]# nl hosts 
     1	127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@sc lianxi]# 


[root@sc lianxi]# top 查看系统的cpu,内存,进程等信息,系统负载(运行的压力情况)
%Cpu(s):  0.8 us,  7.8 sy,  0.0 ni, 90.8 id,  0.0 wa,  0.0 hi,  0.6 si,  0.0 st

us --》user process 用户进程消耗的cpu资源
sy --》system process 系统进程消耗的cpu资源

us+sy = 总的消耗的cpu资源

id --》idle  空闲的cpu系统资源

100% 表示cpu满负荷运转

| 管道符号: 将前面一个命令的输出送给后面一个命令作为输入
管道符号:本质是实现了进程和进程之间的通信
[root@localhost lianxi]# tac song.txt |nl
     1	SONG ZHI QIANG
     2	东北 吉林 长白山
     3	changsha
     4	男
     5	22
[root@localhost lianxi]# 
[root@localhost lianxi]# cat -n  zhangshaowei.txt |more
wc 统计文件有多少行,单词,字节 head 默认取文件前10行 tail 默认取文件的尾10行
[root@localhost lianxi]# cat zhangshaowei.txt |wc -l  统计zhangshaowei.txt文件有多少行
19980000
[root@localhost lianxi]# 
wc 统计文件有多少行,单词,字节
wc - print newline, word, and byte counts for each file
 -l, --lines
              print the newline counts

[root@localhost lianxi]# wc -l zhangshaowei.txt  直接统计有多少行
19980000 zhangshaowei.txt
[root@localhost lianxi]# 

head 默认取文件前10行
tail 默认取文件的尾10行
[root@localhost lianxi]# head -5  passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost lianxi]# 
[root@localhost lianxi]# tail -3  passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost lianxi]# 

[root@localhost lianxi]# nl passwd|head|tail -6  取5到10行的内容
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6	sync:x:5:0:sync:/sbin:/bin/sync
     7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8	halt:x:7:0:halt:/sbin:/sbin/halt
     9	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10	operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost lianxi]# 
只取第8行
[root@localhost lianxi]# nl passwd|head -8|tail -1
     8	halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost lianxi]# 

两种格式: head -n number 文件名
         head -数字 文件名
[root@localhost lianxi]# nl passwd|head -n 8|tail -n 1
     8	halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost lianxi]# nl passwd|head -8|tail -1
     8	halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost lianxi]# 

[root@localhost lianxi]# head -200 zhangshaowei.txt 
1 welcome to sanchuang ,we are now learning cat and more , we want to know what their diffrence 
2 welcome to sanchuang ,we are now learning cat and more , we want to know what their diffrence 

tail  -f  动态监控某个文件,一直盯着这个文件的末尾查看,一旦有的内容往文件里写入,马上就可以看到
[root@localhost lianxi]# touch  zengqilin.txt
[root@localhost lianxi]# tail  -f  zengqilin.txt 
hello,zengqilin
hello,zengqilin
hello,zengqilin
zengdashi
^C            ---》按ctrl+c强行终止
[root@localhost lianxi]# 


再另外开一个终端,使用重定向追加内容到zengqilin.txt里
[root@localhost lianxi]# echo  "hello,zengqilin"   >>zengqilin.txt 
[root@localhost lianxi]# echo  "hello,zengqilin"   >>zengqilin.txt 
[root@localhost lianxi]# echo  "hello,zengqilin"   >>zengqilin.txt 
[root@localhost lianxi]# echo "zengdashi"  >>zengqilin.txt 
[root@localhost lianxi]#


tail -f 未来我们会监控一些日志文件,看日志文件的变化

日志文件:记录日志的文件
日志 log: 是电脑里的程序记录当时发生的事情到一个文件里,会记录时间,程序,发生事情 --》摄像头监控,把发生的事情记录下来,方便以后排查故障

[root@localhost log]# df -Th  查看linux里的磁盘分区的挂载使用-->打开计算机
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  903M     0  903M    0% /dev
tmpfs                   tmpfs     915M     0  915M    0% /dev/shm
tmpfs                   tmpfs     915M  9.5M  905M    2% /run
tmpfs                   tmpfs     915M     0  915M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  3.5G   14G   21% /
/dev/sda1               xfs      1014M  150M  865M   15% /boot
tmpfs                   tmpfs     183M     0  183M    0% /run/user/0

windows里喜欢叫盘,linux喜欢叫分区
一个分区就是一个盘

挂载: 相当于windows里的移动硬盘连接到系统里,系统给它分配一个盘符,这样我们就可以去使用移动硬盘里的数据了

[root@localhost log]# df |tail -n +2  从第2行开始,显示到末尾
devtmpfs                  924396       0   924396    0% /dev
tmpfs                     936380       0   936380    0% /dev/shm
tmpfs                     936380    9704   926676    2% /run
tmpfs                     936380       0   936380    0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 3583272 14228184   21% /
/dev/sda1                1038336  153580   884756   15% /boot
tmpfs                     187280       0   187280    0% /run/user/0
[root@localhost log]# df |tail -n 2  显示最后2行
/dev/sda1                1038336  153580   884756   15% /boot
tmpfs                     187280       0   187280    0% /run/user/0
[root@localhost log]#  
sed 可以显示不连续的行
sed是linux里的文本替换和处理的命令
-n  不显示不符合条件的行
1p 显示第1行 print
; 命令连接符号:作用是先执行前面的命令,然后执行后面的命令
  多个命令一起执行的时候使用



[root@localhost lianxi]# nl new_passwd|sed  -n '1p;3p;5p'   不连续的
     1	root:x:0:0:root:/root:/bin/bash
     3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost lianxi]# nl new_passwd|sed  -n '1,5p' 
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin
     3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4	adm:x:3:4:adm:/var/adm:/sbin/nologin
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost lianxi]# nl new_passwd|sed  -n '5,10p' 
5,10p 显示第5行到第10行之间的行

     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6	sync:x:5:0:sync:/sbin:/bin/sync
     7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8	halt:x:7:0:halt:/sbin:/sbin/halt
     9	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10	operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost lianxi]# 
history 查看历史命令记录,你累计使用了多少命令了

提升效率–》偷懒的
!620 表示执行第620条历史命令
!nl 表示执行离最后一条命令最近使用过的以nl开头的命令
上下方向键 --》可以调出以前的历史命令

history -c 清除历史命令 clear

env bc grep
[root@localhost lianxi]# env  查看Linux系统里的当前的环境变量,

HISTSIZE=1000   --》指明历史命令最多可以保留1000条


[root@localhost lianxi]# yum    install   bc  -y
bc 是linux里计算器

[root@localhost lianxi]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
20*1*2000
40000
40000/1024
39   --》39k的空间
quit
[root@localhost lianxi]# 
[root@localhost lianxi]# echo  "60+50"|bc
110
[root@localhost lianxi]# echo 60+50
60+50
[root@localhost lianxi]# echo 60+50|bc
110
[root@localhost lianxi]#
[root@localhost lianxi]# echo 60+50.5|bc
110.5
[root@localhost lianxi]# 

数组:

[root@localhost lianxi]# vim /etc/profile  

修改HISTSIZE变量的值
HISTSIZE=2000  

[root@localhost lianxi]# env|grep HIS
HISTSIZE=1000
HISTConTROL=ignoredups
[root@localhost lianxi]# 

不会立马生效,三种方法:
                   重新登录用户
                   重启系统
                   source shell脚本
[root@localhost lianxi]# su - root  重新登陆用户,会加载新的变量的值
上一次登录:二 10月 19 11:46:17 CST 2021从 192.168.149.1pts/2 上
[root@localhost ~]# env|grep HISTS
HISTSIZE=2000
[root@localhost ~]# 

reboot系统也是可以

[root@localhost ~]# source /etc/profile  在当前shell里执行脚本/etc/profile  --->推荐使用
[root@localhost ~]# env|grep HISTS
HISTSIZE=3000
[root@localhost ~]# 

grep 是文本过滤的命令
		一行一行的去匹配字符串,如何有符合要求的行,就显示出来,不符合要求就不显示
====
linux文本处理3剑客
	1.grep  文本过滤
	2.sed   文本替换
	3.awk   文本截取(列,字段)
[root@localhost lianxi]# cat zengqilei.txt |grep shaoyang
zengqilei  shaoyang wugang
[root@localhost lianxi]#
[root@localhost lianxi]# sed  -i 's/zeng/hu/' zengqilei.txt 
[root@localhost lianxi]# cat zengqilei.txt 
huqilei  shaoyang wugang
21
[root@localhost lianxi]# 

[root@localhost lianxi]# w|tail -n +2|awk '{print $2}'
TTY
tty1
pts/0
pts/1
pts/2
[root@localhost lianxi]# 
为什么重新登陆,发现历史命令又多了?

.bash_history 文件是保存在用户的家目录下的,里面保存的是这个用户上次登录linux系统的时候,使用过的命令

[qiangge@localhost ~]$ history -c  清除历史命令
[qiangge@localhost ~]$ rm -rf .bash_history   删除保存历史命令的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FOodtV2y-1645066395211)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l39WBzzB-1645066426780)(%28C:%5CUsers%5Cxixi%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20211220120431792.png#pic_center)]
)]

which PATH变量
[root@localhost qiangge]# which  cp
alias cp='cp -i'
	/usr/bin/cp
[root@localhost qiangge]# which mkdir
/usr/bin/mkdir
[root@localhost qiangge]# 

bin  binary  二进制 0 1 1 0
一般的linux命令都是二进制文件,而且是可以运行(执行)


[root@localhost bin]# which  zhangshaowei
/usr/bin/which: no zhangshaowei in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost bin]# which zengqilei
/usr/bin/which: no zengqilei in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost bin]# 

PATH变量
which命令去linux系统里查找命令的时候,会固定的到某些文件夹里去寻找
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

which mkdir 
	会从PATH变量定义的路径里,从左边第1个文件夹开始查找,如果找到了,就不往下走,如果没有找到,往第2个文件夹里查找,以此类推

[root@localhost bin]# env|grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost bin]#
我们自己编写的程序,要想让linux系统知道,如何处理? 答案1:将你的程序复制到PATH变量指定的文件夹下就可以了
linux会到PATH变量指定的路径(文件夹)里查找命令
[root@localhost bin]# mkdir  /sc
[root@localhost bin]# cd  /sc
[root@localhost sc]# ls
[root@localhost sc]# vim  hello.c
#include
int main()
{
  printf("hello,world,i am calin");
  printf("we are learning linux PATH n ");
  return 0;
}

[root@localhost sc]# yum  install gcc  -y  安装gcc编译器

编译器: 将c语言的代码翻译成机器可以认识的语言(二进制)
gcc  -o  hello  hello.c  将hello.c文件编译成hello这个二进制文件(程序)
[root@localhost sc]# gcc -o hello  hello.c
[root@localhost sc]# ls
hello  hello.c
[root@localhost sc]# 

[root@localhost sc]# which hello
/usr/bin/which: no hello in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost sc]# pwd
/sc
[root@localhost sc]#
1.改变不了世界,我们要适应世界  ---》搭顺风车
[root@localhost sc]# cp  hello   /usr/bin
[root@localhost sc]# which hello
/usr/bin/hello
[root@localhost sc]# 
[root@localhost sc]# hello  运行hello程序
hello,world,i am cali
we are learning linux PATH 
 [root@localhost sc]# 
答案2:修改PATH变量的值
x=1
x= x +1       先算=号的右边的公式,然后将结果赋值给左边的x
x=2


[root@localhost sc]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost sc]# PATH=/sc:$PATH         --->临时修改
			PATH=/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost sc]# echo $PATH
/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost sc]# which haoge
/sc/haoge
 
去掉前面的/sc,重新定义PATH变量
[root@localhost sc]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
如果永久有效的修改PATH变量的值?
修改/etc/profile
添加下面的一行,在第1行添加就可以
[root@localhost /]# vim  /etc/profile  -->对所有的用户都生效,都知道你的程序安装的路径了
PATH=/sc:$PATH
练习题:
1.新建一个文件夹/changsha
2.进入/changsha,使用vim编写一个程序叫changsha.c
	#include
	int main()
	{
	  printf("hello,world,i am changshan");
	  return 0;
	}
3.编译changsha.c成saychangsha程序
4.复制saychangsha到/usr/bin目录下
5.修改PATH变量的值,在最前面添加/changsha
6.which saychangsha 查看路径
7.删除/usr/bin下的saychangsha
8.which saychangsha 查看路径
9.执行saychangsha
10.永久修改PATH变量的值,让所有的用户都可以使用saychangsha这个程序
11.新建用户cs
12.切换用户到cs
13.输出PATH变量的值,执行saychangsha

文件夹/changsha
2.进入/changsha,使用vim编写一个程序叫changsha.c
#include
int main()
{
printf(“hello,world,i am changshan”);
return 0;
}
3.编译changsha.c成saychangsha程序
4.复制saychangsha到/usr/bin目录下
5.修改PATH变量的值,在最前面添加/changsha
6.which saychangsha 查看路径
7.删除/usr/bin下的saychangsha
8.which saychangsha 查看路径
9.执行saychangsha
10.永久修改PATH变量的值,让所有的用户都可以使用saychangsha这个程序
11.新建用户cs
12.切换用户到cs
13.输出PATH变量的值,执行saychangsha

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号