Linux复习笔记


Linux的体系结构

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种能再简化的操作
  • 公用库函数:系统调用的组合拳
  • Shell:命令解释器,可编程

在Linux中使用man命令能查询到系统调用的接口,man 2 syscalls。其中2表示系统调用,3表示公共库函数。

常用命令

find

语法:find path [options] params

作用:在指定目录下查找文件

-name表示通过名称查找文件,其支持通配符

-iname表示忽略大小写

grep

语法:grep [options] pattern file

全称:Global Regular Expression Print

作用:查找文件里符合条件的字符串

|管道操作符

可将指令连接起来,前一个指令的输出作为后一个指令的输入

使用管道主要的要点:

  • 只处理前一个命令正确输出,不处理错误输出
  • 右边的命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • sed,awk,grep,cat,head,top,less,more,wc,join,sort,split等

awk

语法awk [options] 'cmd' file

作用:一次读取一行文件,按输入分隔符进行切片,切成多个组成部分。将切片直接保存在内建的变量中,$1,$2...($0表示行的全部)。支持对单个切片的判断,支持循环判断,默认分隔符为空格。

例如:awk '{print $1,$4}' netstat.txtawk '($1=="tcp" && $2==1)||NR==1 {print $0}' netstat.txtawk -F "," '{print $2}' test.txtgrep 'patial\[true\]' a.info | grep -o 'engine\[[0-9a-z]*\]' | awk '{engineaar[$1]++END{for(i in enginearr) print i "\t" enginearr[i]}'

sed

语法:sed [options] 'sed command' filename

全称:stream editor,流编辑器

适合用于对文本的行内容进行处理

例如:sed -i 's/^Str/String/' a.txt默认不加-i则只是将替换后的内容打印出来,并不修改文件

sed -i 's/Jack/me/g a.txtsed命令默认只处理一行中第一个符合条件的字符,只有在其后加上g才能将一行中所有符合的字符进行替换

sed -i '/^ *$/d' a.txt表示删除多余的空行

nohup

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

nohup Command [ Arg … ] [ & ]

参数说明:

  • Command:要执行的命令。

  • Arg:一些参数,可以指定输出文件。

  • &:让命令在后台执行,终端退出后命令仍旧执行。

如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:ps -aux | grep "<执行脚本名称>"

参数说明:

  • a : 显示所有程序
  • u : 以用户为主的格式来显示
  • x : 显示所有程序,不区分终端机

2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

  • 0 – stdin (standard input,标准输入)
  • 1 – stdout (standard output,标准输出)
  • 2 – stderr (standard error,标准错误输出)

查看文件夹之间的不同文件

直接使用过diff可能会导致差异文件过多,导致的不可查。可以使用vimdiff <(cd 文件夹1; find . | sort) <(cd 文件夹2; find . | sort)

多行输入到文件

cat >>demo <<EOF

这行命令的执行方式是从尾到首再到中间。即<<EOF表示标准输入来自命令行的分隔符之间的内容,这里的分隔符被设置为EOF,这个可以人为给定。再将获取的输入传给cat命令,相当于是多行版本的echo,最后>>将内容写入至中间的demo文件。

Shell编写


文章作者: 不二
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不二 !
  目录