首页 > 系统相关 >Linux学习笔记

Linux学习笔记

时间:2022-10-11 23:24:28浏览次数:82  
标签:表示 查看 Linux 用户 笔记 学习 命令 使用 进程

目录

操作系统下载:https://www.centos.org/download/

网络配置

桥接模式下,通过虚拟网桥连接一个交换机,各虚拟机连接到交换机上,那么各虚拟机与主机共享主机所在的网络,虚拟机的网络地址与主机的在同一个网段里。

nat模式下,创建一个虚拟路由器,各虚拟机连接到虚拟路由器上,虚拟机有自己的网段。vnet8是为了主机能够访问虚拟机里面的主机,这个虚拟网卡连接到虚拟路由器上,网关是虚拟路由器的地址,vnet8虚拟网卡也有一个地址,网关会将虚拟机的地址转换为网卡的地址进行外部连接。虚拟机访问外部地址是通过主机的网卡访问的。

仅主机模式下,是将nat模式中的路由器换成了交换机,虚拟机仅能连接到主机,主机仍然可通过vnet8访问虚拟机。

  • 网络配置位置:/etc/sysconfig/network-scripts/ifcfg-ens33
  • 主机名配置位置:/etc/hostname,命令hostnamehostnamectlhostnamectl set-hostname xxx
  • hosts配置文件:/etc/hosts

系统管理

进程,是一个正在执行的程序或命令,其中后一直常驻内存的一般被称作服务,linux中服务一般会以d结尾,表示是一个daemon进程

  • 守护进程位置:/etc/init.d//usr/lib/systemd/,后者是centos7才有的,centos7里面使用systemctl start/stop/restart/status serviceName,centos6使用service serviceName start/stop/restart/status。centos7里面NetworkManager服务替代了原来的network服务
  • centos6配置运行级别位置在/etc/inittab,改变当前运行级别:init 3init 5systemctl get-default查看当前运行级别,systemctl set-default设置运行级别
  • setup进入图形化界面配置服务是否开机启动,chkconfig serviceName on/off打开关闭开机启动,chkconfig --level 3 serviceName on/off打开关闭某个级别是否开机启动,cetos7配置开机启动可以使用systemctl enable/disable serviceName。防火墙配置,centos6下是iptables,使用service status/start/stop iptables查看,centos7下使用systemctl status/stop/start/restart/enable/disable firewalld
  • 关机重启
    • shutdown,默认1分钟后关机,shutdown -c取消shutdown命令,shutdown 55分钟后关机
    • shutdown now立刻关机,shutdown 10:00指定时间关机
    • sync将数据由内存同步到硬盘,shutdown now执行后也会先执行
    • halt停机,不断电
    • poweroff关机
    • reboot,重启,相当于shutdown -r now
    • shutdown [选项] 时间

常用命令

sh是指向bash的连接,bash是bourne again shell的缩写

帮助命令

ls是外置命令,cd是内置命令,内置到shell里面的

  • 使用type 命令查看是否是内置命令
  • 内置命令使用help 命令查看使用帮助
  • 外部命令使用命令 --help查看

还使用man 命令查看帮助文档,这个可以直接查看外部命令的,如果查看内置命令可以使用man -f 命令查看该命令的第几册才有,然后使用man 册名(或可以区分的首字符) 命令查看,册名中1p表示posix协议(可移植性协议)

man查看命令是比较全面的,一般使使用命令 --help查看,内部命令使用help 命令查看即可

  • Ctrl + c停止进程
  • Ctrl + l清屏,或者clear,使用reset彻底删除bash的所有记录
  • table补全命令

文件目录命令

cd是内置命令,pwd也是内置命令

  • cd,会回到当前用户的home目录,cd -,进入上一次的工作目录
  • ls -a,显示当前目录下的所有内容,包括以.开头的隐藏文件和目录。ls -l,一行列出一个文件,ls -lh友好显示文件大小
  • mkdirmkdir -prmdir
  • touch,创建一个空文件,或者使用vim然后保存也可以
  • cp\cp使用cp的原生命令,如果用重名文件是不会提示的,默认的cp是cp -i别名,cp -r递归复制
  • alias可以查看系统的别名
  • mv移动文件或目录,或重命名,移动文件,目标目录必须存在,如果文件名称与原来不相同,表示移动后重命名。移动目录,如果目标目录存在,则直接移动,名称不变,如果目标目录不存在但父目录存在,表示重命名,父目录不存在则与移动文件时目录不存在一样不允许移动。
  • cat,将标准输入的内容输出到标准输出,-n显示行号
  • more,分页查看文件内容,查看到最后自动退出,不好用
  • less,分页查看文件内容,比more更加强大,根据要显示的内容加载,对于显示大型文件具有较高的效率。
    • 翻页f/b,滚动e/y,(vim中要加Ctrl)
    • 也可以使用空格向下翻页,enter向下滚动,gg/Shift + g也可以使用
    • =显示当前显示内容的信息,q退出
    • Shift + f接收显示最新的数据,与tail -f类似
  • echo -e,支持反斜线转义的字符
  • 重定向>>>
  • ln -s sourceFile newFile,创建软连接,ln sourceFile newFile创建硬链接,不能为目录创建硬链接,硬链接表示多个文件指向了同一个inode节点,删除一个别的还可以访问这个inode。软连接是指向了某个文件,这个文件指向了它的inode,如果source文件没了,那么软连接也无法访问到这个inode了

时间日期

  • date +'%Y-%m-%d %H:%M:%S, timestamps=%s'
  • date -d '1 hours ago' +'%Y-%m-%d %H:%M:%S, timestamps=%s'
  • date -s "2022-09-25 10:10:10"设置时间
  • cal,日历命令

用户管理

  • useradd 用户名,-d指定home目录
  • useradd -g 组名 用户名
  • passwd 用户名,修改用户的密码
  • id 用户名,查看用户信息,所有用户信息在/etc/passwdsu 用户切换用户,exit退出当前用户
  • whoami,查看当前用户,who am i查看当前会话是由哪个用户创建,使用su切换前的那个用户,who查看登录的所有用户
  • /etc/suders,可以配置哪些用户可以使用sudo临时获取root的权限(需要输入当前用户的密码),sudoers相当于root授权了哪些用户可以临时使用root的权限
  • userdel 用户名删除用户,userdel -r 用户名同时删除用户的home目录

用户组管理

  • /etc/group,查看所有的用户组信息,在wheel组的用户,在sudoers里面该组配置了具有管理员权限
  • groupadd 组名,添加组
  • usermod -g 组名 用户名,修改用户的组名
  • groupmod -n 新组名 旧组名,修改组名
  • groupdel 组名,删除组名

文件权限

  • 文件属性
    • 第0位表示类型,-表示文件,d表示目录,l表示连接,c表示字符设备,b表示块设备
    • 第1到第9位分别表示,文件所有者的权限,所在组的权限,其他用户的权限,如果要删除文件,需要该文件所在目录的w权限,目录中r表示可以查看,x表示可以进入到该目录
    • 权限后面的数字表示当前文件硬链接的数量,如果是目录,表示当前目录下的子目录的数量
  • chmod [ugoa][+-=][rwx] 文件/目录,ugoa分别表示所有者、所有者的组、其他用户、所有用户,+-=表示增加、减少、赋予相应权限,或者使用cmod [三个1-7的数字]-R可以递归目录下的所有文件和目录的权限
  • chown [选项] 用户 文件/目录,更改文件或目录的所有者
  • chgrp ,更改文件或目录的组,一个文件属于的组不一定是所属用户的组

搜索查找

  • find [路径,默认当前目录] -name '匹配模式',从指定目录向下递归遍历,将满足条件的文件显示在终端
  • find [path] -user 用户名,查找指定用户名的文件
  • find [path] -size +10M,查找大于10M的文件,ls -lh可以更清楚的显示文件大小
  • locate 名称,利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate无须遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须定时更新locate时刻
  • updatedb,更新locate数据库,在locate之前使用,查找更精确,默认每天更新
  • which 命令,查看命令在哪里定义的
  • whereis 命令,查看命令所在目录
  • grep [选项] 名称 文件,从文件中匹配名称,-n输出所在行号,一般与管道符|结合使用
  • wc 文件名,输入文件里面的行数、单词数、字节数,wc -l 文件输出行数

压缩解压

  • gzip 文件名,将文件压缩成.gz文件,只能压缩文件,压缩后会删除源文件
  • gunzip gz文件,将.gz文件解压缩
  • zip -r xxx.zip 目录,将目录压缩为一个zip包,源目录保留
  • unzip xxx.zip -d newDir,将zip解压到newDir
  • tar -cvzf xxx.tar.gz 目录,将目录打包并压缩,可以跟多个文件或目录,c表示创建,z表示使用gzip压缩,f表示指定压缩文件名称,v表示详细展示归档文件
  • tar -xvzf xxx.tar.gz -C newDir,将tar.gz解压到newDir目录内

磁盘查看和分区

  • du -sh *,查看当前目录下所有目录各占磁盘大小,disk usage,不能查看不同分区的大小
  • df -h,查看磁盘使用量,查看文件系统的磁盘空间占用情况
    • tmpfs,临时文件系统,基于内存的文件系统,/dev/shm表示所有进程都可以共享的内存,默认系统内存的一般
  • free -h,查看内存及交换分区内存大小
  • lsblk,查看块设备,磁盘分区情况,lsblk -f输出文件系统信息
  • mount 设备名 挂载点,将设备挂载到指定目录
  • umount 设备名或者挂载点,将设备卸载
  • /etc/fstab,设置开机自动挂载,第一列写uuid或者设备名也可以,最后的两个0分别表示故障时是否dump、开机检查fsck的优先级(0表示不检查)
  • fdisk -l,查看磁盘分区详情
  • fdisk 设备名,对磁盘进行分区,linux最多有4个主分区,如果超过4个可以设置扩展分区,扩展分区可以从5到16,创建分区后需要格式化才能使用,挂载后原来挂载点的数据就无法查看了
  • mkfs -t xfs 设备名,-t指定文件系统类型

进程管理

1号进程就是/usr/lib/systemd/systemd,centos7的初始进程

查看cpu占用和内存占用使用ps aux查看父进程id使用ps -ef

  • ps aux,process status,没有参数会输出当前终端运行的进程,a当前用户的终端进程,x所有用户的进程,u用户友好的显示风格,BSD风格,使用less分页查看ps aux | less
    • USER,哪个用户
    • PID,进程id
    • %CPU,占用cpu大小
    • %MEM,占用内存大小
    • VSZ,占用的虚拟内存大小,kB,有一定的算法,内存中有些页面不常用就会放到虚拟内存中
    • RSS,占用的实际物理内存, resident set size, the non-swapped physical memory that a task has used (in kiloBytes). (alias rssize, rsz)
    • TTY,表示使用的是哪个终端,?表示没有使用终端,tty1表示图形化终端,tt2-tty6是本地的字符界面终端,pts0-255表示虚拟终端
    • STAT,进程状态,R运行状态,S睡眠状态,T暂停状态,Z僵尸状态(可能父进程需要它的某些信息,当父进程退出的时候它就会退出了),s包含子进程,l多线程,+前台显示,<表示高优先级,N表示低优先级
    • START,进程启动时间
    • TIME,占用cpu的时间
    • CMD,启动该进程时的命令,对于sshd服务,如果用其他用户登录,会有两个进程,一个是xxx@pts/x,一个带[priv]是root用户的,当该用户运行root权限的命令时会使用该进程,其他命令则使用另外一个用户进程
  • ps -ef,unix风格,会列出父进程PPID
    • 0号父进程是内核进程
    • 1号进程是/usr/lib/systemd/systemd,它的父进程是0号进程
    • 2号进程kthreadd的父进程也是0号进程,是做线程调度的
    • 当前终端输入的命令的父进程是一个-bash,它的父进程则是pts/x终端的PID,pts/x终端的父进程是sshd服务的,sshd服务的父进程是1,是系统
  • kill 选项 进程号,通过进程号杀死进程,PID,processID
    • 如果杀死父进程,子进程会还存在,PPID会赋值为1
    • 如果进程在活跃状态,kill杀不掉可以使用kill -9
  • killall 进程名称,通过进程名称杀死进程,支持通配符,这在系统因负载过大而变得很慢时很有用
  • pstree,查看进程树,进程之间的父子关系,pstree -p显示PID
  • top,实时监控系统进程状态
    • 第一行top:系统当前时间,系统持续运行时间,当前有几个用户登录到系统(图形化界面也是),load average表示过去的1分钟、5分钟、15分钟整个系统的平均负载(一般认为小于0.7是比较小的)
    • 第二行Tasks:total表示系统中总进程数,running的数量,sleep的数量,stop的数量,僵尸进程数量
    • 第三行:cpu占用情况,
      • us表示用户进程占cpu的时间百分比(没有更改优先级的用户进程)
      • sy表示系统进程占用cpu的时间百分比(kernal进程)
      • ni表示通过nice调整进程优先级之后的进程占cpu的时间百分比
      • id表示空闲时间百分比
      • wa表示等待进程占用的时间百分比,等待IO操作
      • hi表示硬件中断请求占用的时间百分比
      • si表示软中断请求占用的时间百分比
      • st表示被偷的(虚拟化的)cpu占用时间百分比
    • 第四行KiB Mem:内存占用情况
      • total表示总共有多少,free表示有多少是空闲状态,used表示使用了多少,buff/cache表示有多少是放在缓存里面的
    • 第五行KiB Swap:交换内存(虚拟内存)占用情况
    • 下面显示的标题中分别表示:按f可以查看说明
      • PID(进程号)
      • USER(用户)
      • PR(任务优先级priority)
      • NI(用户指定的nice值,nice越大越容易被抢占)
      • VIRT(virtual image虚拟内存占用大小)
      • RES(resident,实际物理内存占用大小)
      • SHR(shared,当前进程共享的内存大小
      • 进程允许别的进程也用它的这个共享内存)
      • S(status,进程状态,ps命令里面有写)
      • %CPU(使用cpu占比)
      • %MEM(使用内存占比)
      • TIME+(已经占用的CPU总时间是多少,+表示精度)
      • COMMAND(生成当前进程的命令)
    • 使用
      • 当前默认是按照cpu的占比排序的,按照内存占比排序使用Shift + m,按照cpu占比排序Shift + p,安装PID从大到小Shift + n
      • 按上下键、翻页键可以进行滚动查看,退出按q
      • top -d 5,每5秒刷新一次
      • top -i,不显示空闲(idle,Sleep的,并不是所有的S都不显示,只是上次统计之后到当前为止没有占用的不显示,有可能占用了一下又不占用了)或僵尸进程
      • top -p PID,只查看某个进程的状态
      • top进去之后,如果想查看某个用户的,可以按u,输入用户名
      • 如果想kill某个进程,按k,输入PID,top有ps和kill的功能
        image
  • netstat,显示网络状态和端口占用信息,netstat -anp查看进程的网络信息,netstat -lnp查看端口号占用情况,一般使用前者就可以了,前者的信息包含后者,不在监听的也列了处理
    • a,表示显示所有监听和未监听的套接字,all
    • l,表示只列出监听状态的进程,listen
    • n,表示不显示别名,域名显示为ip地址,no
    • p,表示显示哪个进程在调用
    • 标题含义:
      • Proto,协议
      • Recv-Q,当前套接字已经接收到数据,但是还没有拷贝出的字节数
      • Send-Q,已经将套接字发出,但是还没有接收到确认的字节数
      • Local Address,本地地址,0.0.0.0表示监听本地所有ip地址的这个端口,127.0.0.1表示本地回环地址(主要用于测试)
      • Foreign Address,远程地址
      • State,LISTEN表示正在监听,ESTABLISHED表示已经建立连接了
      • PID/Program name,进程id及对应的程序名称
        image

cron系统定时任务

后台守护进程是crond,systemctl status crond

  • crontab -e,添加定时任务
  • crontab -l,列出定时任务
  • crontab -r,删除当前用户所有定时任务
  • 定时表达式:
    • * * * * *,表示分钟(0-59),小时(0-23),天(1-31),月(1-12),周几(0-7)
    • *,表示任何时间
    • ,,表示不连续的时间
    • -,表示连续的时间
    • */n,表示隔多久执行一次

软件包管理

  • rpm -qa,查询所有rpm包
  • rpm -ql 包名,查询安装位置
  • rpm -qi 包名,查询包信息
  • rpm -e 包名,删除rpm依赖,--nodeps,不检查依赖关系,如果检查的话当前包被别的软件依赖是不能卸载的
  • rpm -ivh 包全名,安装rpm,必须有rpm安装文件,--nodeps,不检查依赖关系,可能有依赖其他安装包
  • yum,能够从指定服务器自动下载rpm包,并且安装,自动处理依赖关系,是基于rpm的
    • yum -y install 包名,安装
    • yum remove 包名列表,删除安装包,与使用rpm删除一样
    • yum update,更新
    • yum check-update,检查是否有更新
    • yum list,列出所有软件包信息
    • yum clean 参数,清除yum过期的缓存,后面需要跟参数
    • yum deplist 包名列表,显示yum安装包的所有依赖关系
  • yum会自动查找最近的源进行下载,也可以使用wget下载一个国内的repo,替换/etc/yum.repos.d/Centos-Base.repo,替换前备份一下

Shell编程

shell是一个命令行解释器,接收应用程序/用户的命令,然后调用操作系统内核。还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。

查看操作系统支持的shell,cat /etc/shells,查看当前shell,echo $SHELL

Shell脚本入门

第一行一般使用#!/bin/bash指定解析器

执行脚本

  • 使用sh、bash命令执行,不需要脚本有可执行权限,脚本是作为命令的一个参数
  • 执行脚本本身,需要有可执行权限,使用绝对目录,或者使用相对目录,注意在当前目录下需要使用./,否则会解析脚本为一个命令(或者将脚本所在路径放在PATH里)
  • 使用source或.命令执行,表示使用当前shell执行,上面的两种执行方式会使用创建子shell执行脚本,不会影响当前shell的环境变量

变量

系统变量与用户变量:系统预定义的,和用户自己定义的
全局变量与局部变量:全局变量在shell及子shell都有效,局部变量表示只在当前shell有效

在当前shell执行bash,会进入子shell,使用ps -f可以查看当前shell的进程,会发现bash的父进程是-bash,exit退出当前shell

系统变量:

  • 常见系统变量:$HOME、$PWD、$SHELL、$USER、$PATH
  • 查看所有系统环境变量使用命令env或者printenvprintenv 变量名可以打印出变量值,如printenv HOME,也可以等价的使用echo $HOME
  • 查看包括系统环境变量及自定义的环境变量使用命令set

自定义变量:

  • 用户自定义变量:变量名=值,变量名使用字母、数字、下划线,不能数字开头,默认字符串类型,不能有空格,如果有空格需要使用引号括起来
  • 提升为全局变量使用export 变量名,此时子shell可以访问到,但是子shell对该变量的修改不会影响到父shell
  • 定义只读变量readonly xx=xx
  • 取消变量使用unset 变量名,只读变量不能使用unset,它是一个常量

注意:平常使用sh或./xx执行脚本是不会获取到当前shell定义的局部变量的,因为该执行方式会创建子shell执行,如果需要脚本访问,需要使用export提升为全局变量

特殊变量:

  • $n,n为数字,大于10使用花括号括起来,$0表示脚本名称,$1表示第一个参数,以此类推,双引号中的$xxx是占位符,会进行解析该命令,单引号中的就是字符串本身,不会解析
  • $#,获取脚本参数个数
  • $*、$@,获取所有脚本参数,前者将参数看成一个空格分割的整体字符串,后者将参数分割为数组
  • $?,最后一个命令的返回状态,正确执行返回0

运算符

  • expr 1 + 2,执行表达式,作为三个参数传递给命令expr,注意乘使用*,使用比较麻烦
  • 使用$((表达式))$[表达式]计算,或者使用let a+=1let a++
  • 替换命令执行的结果使用$(命令)或者使用两个反引号

条件判断

  • test $a = Helloecho $?,注意等号两边有空格,如果返回0表示true,返回1表示false,比较麻烦
  • 使用[ 条件表达式 ],注意表达式两边有空格,注意如果是字符串非空即为true
  • 整数比较使用:-eq等于,-ne不等于,-lt小于,-gt大于,-le小于等于,-ge大于等于
  • 字符比较使用:=!=
  • 文件权限判断:-r、-w、-x分别表示有读、写、可执行权限
  • 文件类型判断:-e文件存在,-f是一个文件,-d是一个目录
  • &&、||:逻辑与、逻辑或,&&表示前一条执行成功才执行后一条命令,||表示前一条执行失败才执行后一条命令,同时使用可以达到三元运算符的效果,a && b || c,如果a真执行b,如果a假执行c
  • -z xxx,xxx为空判断
  • 如果是多个表达式,在同一个[]也可以使用-a表示逻辑与,-o表示逻辑或,如[ a = a -a b = b ]等价于[ a = a ] && [ b = b]

流程控制

if判断

# else和elif都是可选的,也可以不使用[] 使用test一样的,也可以使用((条件表达式))
if [ 条件表达式 ];then  # 使用分号是因为有两个命令写在了同一行,也可以不使用分号,将then换行
  程序
elif [ 条件表达式 ]
then
  程序
else
  程序
fi

case语句

# case行尾必须为in,每一个模式匹配以右括号结束
# ;;相当于break
case $xxx in
值1)
  程序1
;;
值2)
  程序2
;;
*)
  上述条件都不满足情况下执行
;;
esac

for循环

# 在双小括号内可以使用各种数学运算符,if后面也可以使用双小括号,双小括号也可以做逻辑运算,如果是逻辑true计算结果为1,
for((初始值;循环控制条件;条件变化)) # for后没有空格也可以,小括号内没有空格也可以,可以使用<=,i++
do
  程序
done

# 遍历序列
for 变量 in 值1 值2 值3  # in后面可以跟{1..100}表示1到100的序列,这个100不能使用变量代替,否则就全部变成了一个字符串
do
  程序
done

# for para in $*或者$@是没有区别的,因为前者还是空格分割的字符串,这里会被for遍历到
# 如果使用for para in "$*"或"$@",那么就有区别了,前者就变成了一个字符串,后者还是被双引号解释后是一个数组

while循环

while [ 条件表达式 ]
do
  程序
done

读取控制台的输入

read -t 超时时间 -p 提示符 变量名
# 超时时间单位为秒
# 如下所示,将输入的内容赋值给name变量
read -t 10 -p 'please input:' name

系统函数

  • basename xxx,将xxx最后一个/及之前的内容剪切掉,一般用于获取文件名称
    • 如果指定后者会将后缀剪切掉,如basename xxx.sh .sh会得到xxx,basename xxx x会得到xx
  • dirname xxx,将最后一个/及之后的内容剪切掉,一般用于获取文件的父目录
    • 获取脚本所在的绝对目录可以使用$(cd ${dirname $0}; pwd)

自定义函数

functionName # 如果没有小括号,参数可以使用$1/$2等获取,与脚本参数相同,function关键字可以不写
{
  程序
}
# 或者
function fName()
{
  程序
  return 1; # 返回值可以是0-255,返回值只能通过$?获取,如果不加return将以最后一条命令的运行结果作为返回值,如果想要返回其他数据或者不在0-255的数据可以使用echo返回值,然后return,在调用函数时使用$(函数调用)来获取到echo的数据
}

正则表达式

  • ^abc,表示以abc开头的行
  • abc$,表示以abc结尾的行,^$表示匹配空行
  • r..t,.表示任意字符,r..t表示匹配任意rxxt的字符
  • *,不单独使用,与上一个字符连用,表示匹配0次或多次,.*表示任意字符出现任意多次
  • [],表示匹配某个范围内的一个字符
    • [1,2],表示匹配1或2
    • [0-9],表示匹配0-9的数字,[0-9]*表示匹配任意长度的数字字符串,这里表示前面的中括号内的字符都可以任意多次
    • [a-z],表示匹配a-z之间的字符,[a-z]*表示匹配任意长度的字母字符串,注意需要使用单引号''扩起来避免单独使用时有问题,比如echo hello | grep '[a-z]*',不要使用双引号,因为双引号会先解释
  • \,特殊字符的话使用转义字符,并使用单引号括起来
  • 还有其他扩展的正则表达式
  • grep -n xxx,可以显示行号
  • grep -E 正则表达式,这里可以使用扩展的正则表达式,比如{2}前面的字符只出现两次

文本处理工具

  • cut -d 分隔符 -f 取哪些列,剪切某一列数据,分隔符只能是单个字符(相当于每一个分隔符都会画一条竖线,每一行画一条横线,组成一张表,取第n列)
    • cut -d " " -f 1,取第一列,2-,取第二列及后面的所有列,-3,取第一列至第三列
    • 可以结合grep获取想要截取的内容,使用管道符,否则在后面跟文件名
  • awk -F "分隔符" '/pattern/{action}' 文件,将文件的每一行以指定分隔符切分,使用pattern进行匹配,留下含匹配内容的行,匹配后的内容执行action代码,(awk切分不会包含空的列,cut包含虚拟的列)
    • 分隔符参数-F可选,默认是空格分割,/pattern/也是可选,$1表示第一列,$n表示每一行的所有内容
    • cat a.txt | awk -F " " '/a/{print $1"---"}',匹配含有a的行,并打印第一列加---后缀
    • cat a.txt | awk -F " " '{print $1"---"}',也可以不使用正则匹配,所有行执行action命令
    • cat a.txt | awk -F " " '/a/BEGIN{print hi}{print $1"---"}END{print "endend"}',在执行action命令前后分别执行一些命令
    • cat /etc/passwd | awk -v i=2 -F ":" '{print $3+i}',使用-v指定变量
    • 内置变量:FILENAME文件名,NR行号,NF当前行分割了多少列

标签:表示,查看,Linux,用户,笔记,学习,命令,使用,进程
From: https://www.cnblogs.com/bingmous/p/16709469.html

相关文章

  • Linux驱动| Linux内核 RTC时间架构
    上一篇文章我们给大家讲解了基于瑞芯微rk3568平台芯片hym8563驱动的移植,本文给大家详细讲解Linux内核的时间子系统。《Linux驱动|rtc-hym8563移植笔记》一、Linux时间操......
  • 在Linux平台上安装JDK 17
    在Linux平台上安装JDK介绍Linux平台JDK的安装步骤及系统要求。本主题包括以下部分:​​在Linux平台上安装JDK的一般注意事项​​​​在Linux平台上安装JDK的系统要......
  • 大厂面试常问的计算机视觉、机器学习怎么学?详细指南来了!
    1956年,在达特茅斯会议上,一群计算机科学家聚集在一起,探讨着人工智能领域的未来,当时的AI也仅仅在酝酿中。到了2015年,不出所料,人工智能开始爆发能量,这主要是由于GPU开始广泛应......
  • 【机器学习】数据科学基础——机器学习基础实践(一)
    【机器学习】数据科学基础——机器学习基础实践(一)作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实......
  • 【机器学习】Python常见用法汇总
    【机器学习】Python常见用法汇总作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家委......
  • DenseCLIP Language-Guided Dense Prediction with Context-Aware Prompting论文阅读
    摘要作者首先回顾CLIP,说道使用图像-文本对进行大规模预训练得到的模型可以很容易迁移到下游任务。然后指出目前还没有人做过将从图像-文本对学到的知识应用于密集预测任务......
  • 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解
    这里写目录标题​​第一章位运算​​​​第二章递归​​​​第三章查找与排序​​​​......
  • 关于red hat linux的login和passwd都忘记解决方法(在学校机房)
    忘记账号的参考文档:linux系统忘记用户名和登录密码怎么办-简书(jianshu.com);忘记密码的参考文档:(88条消息)Linux忘记密码解决方法——RedHat_(YSY_YSY)的博客-CSDN博客......
  • Redis学习秘籍
    目录​​Redis​​​​1.NoSQL的引言​​​​2.为什么是NoSQL​​​​3.NoSQL的四大分类​​​​3.1键值(Key-Value)存储数据库​​​​3.2列存储数据库海量数据大数......
  • HttpSession对象 的学习
    HttpSession对象学习链接:https://www.bilibili.com/video/BV1BK4y1P7Li/?spm_id_from=333.999.0.01.session作用:表示一次会话或者是确认一个用户,并且在一次会话中,一个......