Tag Archives: Linux

学习 Linux-IBM developerWorks

学习 Linux,101: 创建和更改硬链接和符号链接
学习如何创建和管理到 Linux 系统上文件的硬链接和符号链接。可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是探究硬链接与软链接或符号链接之间的区别,以及链接文件(而不是复制文件)的最佳方法。
学习 Linux,101: 文件和目录管理
您或许听说过,Linux 中的所有资源都被视为文件,所以请选择正确的学习途径,掌握文件和目录管理的扎实基础知识:查找、列出、移动、复制和存档。利用本教程中的材料来学习 Linux Professional Institute LPIC-1:Linux 服务器专业认证考试 101,或者仅为了兴趣而学习。
学习 Linux,101: 控制文件系统的安装和卸载
学习安装您的 Linux 文件系统;配置和和使用可移动 USB、IEE 1394 或其他设备;正确访问软盘、CD、和 DVD。您可以使用本文中提供的资料来研究 Linux 系统管理认证的 LPI 101 考试,或者只学习关于访问 Linux 文件系统的信息。
学习 Linux,101: 管理共享库
学习如何为 Linux 中可执行程序选择共享库以及如何加载共享库。 您可以使用本文中的资料来学习,备考 Linux 系统管理员认证的 LPI 101 考试,当然也可以是出于爱好而学习。
学习 Linux,101: LPIC-1 路线图
使用这个路线图,查找可以帮助您学习和复习基本 Linux 任务的 IBM developerWorks 文章。并且,如果您正在准备面向 Linux 系统管理员的专业认证,那么这些文章可以帮助您准备 Linux Professional Institute Certification (LPIC) 考试 101 和考试 102。这个路线图是根据 101 和 102 考试的目标 43 组织的,您需要通过这两门考试来获得 LPI 级别 1 认证。
学习 Linux,101: Debian 包管理
学习如何在 Linux 系统上安装、升级和管理包。本文主要关注 Advanced Packaging Tool (APT),APT 是 Debian 以及从 Debian 衍生出的发行版(比如 Ubuntu)使用的包管理系统。可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是为了了解添加新软件并及时更新系统的最佳方法。
学习 Linux,101: 使用正则表达式搜索文本文件
了解如何使用正则表达式,如何使用它们在文件系统中查找所需内容。本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为一般的兴趣读物。
学习 Linux,101: 进程执行优先级
了解如何设置和更改进程优先级,以便应用程序获得它们需要的进程时间。本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为一般的兴趣读物。
学习 Linux,101: 自定义或编写简单脚本
学习如何使用标准的 shell 语法、循环和控制结构,以及成功或失败测试来自定义现有脚本或编写简单的新 bash 脚本。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 102 考试内容,或者仅为兴趣而学习。
学习 Linux,101: RPM 和 YUM 包管理
学习如何在 Linux 系统上安装、升级和管理包。本文主要关注由 Red Hat 开发的 Red Hat Package Manager (RPM),以及 Duke University 物理系最初为管理 Red Hat Linux 系统开发的 Yellowdog Updater Modified (YUM)。可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是为了了解添加新软件并及时更新系统的最佳方法。
学习 Linux,101: 引导系统
了解如何在引导进程中引导您的 Linux 系统。您可以使用本文中的材料准备 Linux 系统管理员认证 LPI 101 考试,或者只是了解一下该引导过程。
学习 Linux,101: 使用 vi 编辑文件
了解如何使用 vi 编辑器,这款编辑器在大部分 UNIX 和 Linux 系统中都存在。本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为一般的兴趣读物。
学习 Linux,101: 管理文件权限和所有权
学习在您的 Linux 文件系统上管理所有权和权限。了解访问模式,如 suid,sgid 和粘贴位,以及如何使用它们加强安全性。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是了解文件所有权、权限和安全性。
学习 Linux,101: 保持文件系统的完整性
学习如何检查 Linux 文件系统的完整性、监控磁盘可用空间并修复简单问题。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是检查您的文件系统,将其管理得井然有序,特别是在一次系统故障或断电之后。
学习 Linux,101: 创建分区和文件系统
学习如何在磁盘驱动器上创建分区,以及如何格式化分区以便将其用作 Linux 系统上的交换或数据空间。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是探究自己使用的分区和 Linux 文件系统。
学习 Linux,101: 文件和目录管理
您可能已经听说过 “Linux 中的每项内容都可以看作一个文件”,那么就让我们通过牢固地掌握文件和目录管理内容来开始我们的 Linux 学习吧 —— 寻找、列出、移动、复制和归档。您可以利用本文的内容来准备 Linux 系统管理员认证 LPI 101 考试,或者仅仅是从中获取乐趣。
学习 Linux,101: 管理磁盘配额
学习如何设置和检测 Linux 文件系统的磁盘配额,防止个人用户使用超过允许范围的空间,避免造成整个文件系统的意外拥堵。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是探究配额。
学习 Linux,101: 创建、监控和终止进程
了解 Linux 上的进程管理:如何在前台和后台之间切换进程,找出正在运行的程序,终止进程,以及在外出时让进程继续运行。本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为一般的兴趣读物。
学习 Linux,101: 管理磁盘配额
学习设置和检查 Linux 文件系统上的磁盘配额,预防用户使用超出允许量的空间,还要预防整个文件系统被意外填满。您可使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅了解配额。
学习 Linux,101: 硬盘布局
了解如何在 Linux 系统中设计磁盘的分区布局。您可以使用本文中的资料来学习,备考 Linux 系统管理员认证的 LPI 101 考试,当然也可以是出于爱好而学习。
学习 Linux,101: 维护文件系统的完整性
学习如何检查您的 Linux 文件系统的完整性,如何监视空闲空间,以及如何修复简单的问题。您可以使用本教程中的资料进行 Linux Professional Institute (LPI) 101 Linux 系统管理员认证考试备考,或者仅使用它们来检查您的文件系统,并让文件系统保持良好的工作秩序,尤其在系统崩溃或断电后。
学习 Linux,101: 创建分区和文件系统
学习如何在磁盘驱动器上创建分区,如何格式化它们以在 Linux 系统上用作交换或数据空间。您可以使用本教程中的资料来为 Linux Professional Institute LPIC-1:Linux 服务器专业认证考试 101 备考,或者仅为了自己的使用而了解分区和 Linux 文件系统。
学习 Linux,101: 流、管道和重定向
您是不是认为流和管道让 Linux 专家听起来像管道工?现在您就有机会了解流和管道以及如何重定向和分离流。您甚至还将了解如何将流转变成命令参数。您可以为准备 Linux 系统管理员认证考试 LPI 101 而学习本文,也可以仅仅是为了从中获得乐趣。
学习 Linux,101: 查找并放置文件系统
学习一个 Linux 系统上 Filesystem Hierarchy Standard (FHS) 下文件的正确位置,并学习如何查找重要文件和命令。您可以使用本文中的资料来准备 Linux 系统管理员认证的 LPI 101 考试,或者只是探究文件组织和管理。
学习 Linux,101: 引导管理器
了解如何为您的 Linux 系统选择和配置一个引导程序。您可以使用本文中的资料来学习,为参加 Linux 系统管理员认证的 LPI 101 考试而做准备,当然也可以是出于爱好而学习。
学习 Linux,101: 运行级别、引导目标、关闭和重新引导
学习关闭并重新引导 Linux系统,警告用户系统即将关闭,切换到限制更多或更少的运行级别。您可以使用本文中的资料学习 LPIC-1:Linux 服务器专业认证,或者单纯地学习关闭、重新引导和更改运行级别。这些资料对应于 LPI 2015 年 4 月 4.0 版目标。
学习 Linux,101: 自定义和使用 shell 环境
学习如何自定义 Linux shell 环境和编写简单的 bash 函数。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 102 考试内容,或者仅为兴趣而学习。
学习 Linux,101: Linux 命令行
GUI 很有用,但要释放 Linux 的真正威力,命令行是必不可少的。在本教程中,Ian Shields 将介绍 bash shell 的一些主要特性,重点介绍对 LPI 认证很重要的一些特性。学完本教程后,您将学会使用 echo 和 exit 等基本 Linux 命令,设置环境变量,以及收集系统信息。使用本教程中的资料学习 Linux Professional Institute LPIC-1:Linux 服务器专业认证考试 101,或者仅为兴趣而学习。
学习 Linux,101: 流、管道和重定向
如果您认为流和管道使 Linux 专家听起来像是水管工,那么您现在就有一个了解它们的机会,了解如何重定向和拆分它们。您甚至还可以了解如何将流转换为命令参数。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅为了兴趣而学习。
学习 Linux,101: 创建、监视和结束进程
学习 Linux 上的进程管理:如何在前台和后台之间切换进程,找到正在运行的进程,结束进程,在您某天离开后保持进程继续运行,并了解终端窗口中的多任务。您可以使用本教程中的资料学习 Linux Professional Institute LPIC-1:Linux 服务器专业认证考试 101,或者仅为了兴趣而学习。
学习 Linux,101: 控制文件系统的挂载和卸载
学习挂载 Linux 文件系统;配置和使用可移动 USB、IEE 1394 或其他设备;以及正确地访问软盘、CD 和 DVD。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅学习访问 Linux 文件系统。
学习 Linux,101: 管理文件权限和所有权
学习管理您的 Linux 文件系统上的文件所有权和权限。了解访问模式,比如 suid、sgid 和粘滞位 (sticky bit),以及如何使用它们提高安全性。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者只是了解文件所有权、权限和安全性。
学习 Linux,101: 查找和放置系统文件
了解在文件系统层级标准 (FHS) 下文件在 Linux 系统上的正确位置,了解如何找到重要的文件和命令。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者只是了解文件组织和管理。
学习 Linux,101: 使用基本 SQL 命令
学习如何使用基本 SQL 命令查询数据库和操作数据。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 102 考试内容,或者仅为兴趣而学习。
学习 Linux,101: 文本流和过滤器
文本处理操作远不止剪切和粘贴,尤其在未使用 GUI 时。在本教程中,Ian Shields 将介绍如何在 Linux 上使用来自 GNU textutils 包的过滤器处理文本。在学习本教程后,您就能像专家一样处理文本。您可以使用本教程中的资料学习针对 Linux Professional Institute LPIC-1:Linux 服务器专业认证的 101 考试内容,或者仅为兴趣而学习。
学习 Linux,101: LPIC-1 学习路线图
使用此路线图查找 IBM developerWorks 教程,这些教程可帮助您学习和复习基本的 Linux 任务。如果您想要通过 Linux 系统管理员专业认证,这些教程可帮助您了解 Linux Professional Institute 的 LPIC-1:Linux 服务器专业认证考试 101 和 102 的知识点。此路线图根据考试 101 和 102 中的 43 个目标而组织,通过 LPIC-1 认证需要掌握这些目标。
学习 Linux,101: Debian 包管理
学习如何在 Linux 系统上安装、升级和管理包。本教程主要关注 Advanced Packaging Tool(或 APT),APT 是 Debian 以及从 Debian 衍生出的发行版(比如 Ubuntu)使用的包管理系统。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者只是为了了解添加软件和保持系统最新的最佳方法而学习。
学习 Linux,101: 管理共享库
学习如何确定 Linux 可执行程序依赖于哪些共享库,以及如何加载它们。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅为兴趣而学习。
学习 Linux,101: 安装引导管理器
学习如何为您的 Linux 系统选择和配置引导管理器。 您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅为兴趣而学习。
学习 Linux,101: 引导系统
学习通过引导过程引导您的 Linux 系统。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPIC-1 101 考试内容,或者仅学习引导过程。这些资料对应于 2015 年 4 月 LPI V4.0 考试目标。
学习 Linux,101: 使用正则表达式搜索文本文件
学习如何使用正则表达式在文件系统上的文件中查找信息。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅为兴趣而学习。
学习 Linux,101: 管理用户和组帐户及相关系统文件
学习如何管理用户和组帐户及相关系统文件。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 102 考试内容,或者仅为了兴趣而学习。
学习 Linux,101: 创建和更改硬链接和符号链接
学习如何创建和管理您的 Linux 系统上的文件的硬链接和符号链接。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅了解硬链接与软或符号链接之间的差异,以及链接到文件而不是复制文件的最佳方式。
学习 Linux,101: 使用 vi 编辑文件
学习如何使用几乎每个 UNIX 和 Linux 系统上都有的 vi 编辑器。您可以使用本教程中的资料学习针对 Linux 系统管理员认证的 LPI 101 考试内容,或者仅为兴趣而学习。
学习 Linux,101: 文本流和过滤器
文本操作不仅仅是指复制和粘帖,在不使用 GUI 的情况下,这一点尤其明显。通过本文为 Linux Professional Institute Certification (LPIC) 101 考试做准备,或者仅仅是从中得到乐趣。在这篇文章中,Ian Shields 向您介绍了在 Linux 上使用 GNU 文本实用程序(textutils)包中的过滤器进行文本操作。在阅读完本文后,您将能够像专家一样熟练地操作文本。
学习 Linux,101: Linux 命令行
GUI 非常优秀,但是要释放 Linux 的真正威力,命令行是任何东西都无法取代的。在这篇文章中,Ian Shields 为您介绍了 bash shell 的一些主要特性,并重点介绍对 LPI 认证非常重要的特性。阅读完本文后,您将可以非常熟练地使用基本的 Linux 命令,比如 echo 和 exit、设置环境变量,以及收集系统信息。

Linux Shell 文本处理工具集锦

本文将介绍Linux下使用Shell处理文本时最常用的工具:

find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;

提供的例子和参数都是最常用和最为实用的;

我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;

如果有更为复杂的任务需求,还是考虑python吧;

find 文件查找

  • 查找txt和pdf文件
      find . ( -name "*.txt" -o -name "*.pdf" ) -print
  • 正则方式查找.txt和pdf
      find . -regex  ".*(.txt|.pdf)$"

    -iregex: 忽略大小写的正则

  • 否定参数查找所有非txt文本
       find . ! -name "*.txt" -print
  • 指定搜索深度打印出当前目录的文件(深度为1)
      find . -maxdepth 1 -type f

定制搜索

  • 按类型搜索:
      find . -type d -print  //只列出所有目录

    -type f 文件 / l 符号链接

  • 按时间搜索:-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)-mtime 修改时间 (内容被修改)-ctime 变化时间 (元数据或权限变化)最近7天被访问过的所有文件:
      find . -atime 7 -type f -print
  • 按大小搜索:w字 k M G寻找大于2k的文件
      find . -type f -size +2k

    按权限查找:

      find . -type f -perm 644 -print //找具有可执行权限的所有文件

    按用户查找:

      find . -type f -user weber -print// 找用户weber所拥有的文件

找到后的后续动作

  • 删除:删除当前目录下所有的swp文件:
      find . -type f -name "*.swp" -delete
  • 执行动作(强大的exec)
      find . -type f -user root -exec chown weber {} ; //将当前目录下的所有权变更为weber

    注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;

    eg:将找到的文件全都copy到另一个目录:

      find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD ;
  • 结合多个命令tips: 如果需要后续执行多个命令,可以将多个命令写成一个脚本。然后 -exec 调用时执行脚本即可;
      -exec ./commands.sh {} \;

-print的定界符

默认使用’n’作为文件的定界符;

-print0 使用”作为文件的定界符,这样就可以搜索包含空格的文件;

grep 文本搜索

grep match_patten file // 默认访问匹配行

  • 常用参数-o 只输出匹配的文本行 VS -v 只输出没有匹配的文本行-c 统计文件中包含文本的次数
      grep -c "text" filename

    -n 打印匹配的行号

    -i 搜索时忽略大小写

    -l 只打印文件名

  • 在多级目录中对文本递归搜索(程序员搜代码的最爱):
      grep "class" . -R -n
  • 匹配多个模式
      grep -e "class" -e "vitural" file
  • grep输出以作为结尾符的文件名:(-z)
      grep "test" file* -lZ| xargs -0 rm

xargs 命令行参数转换

xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。比如grep,比如find;

  • 将多行输出转化为单行输出cat file.txt| xargsn 是多行文本间的定界符
  • 将单行转化为多行输出cat single.txt | xargs -n 3-n:指定每行显示的字段数

xargs参数说明

-d 定义定界符 (默认为空格 多行的定界符为 n)

-n 指定输出为多行

-I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时

eg:

cat file.txt | xargs -I {} ./command.sh -p {} -1

-0:指定为输入定界符

eg:统计程序行数

find source_dir/ -type f -name "*.cpp" -print0 |xargs -0 wc -l

sort 排序

字段说明:

-n 按数字进行排序 VS -d 按字典序进行排序

-r 逆序排序

-k N 指定按第N列排序

eg:

sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符

uniq 消除重复行

  • 消除重复行
      sort unsort.txt | uniq
  • 统计各行在文件中出现的次数
      sort unsort.txt | uniq -c
  • 找出重复行
      sort unsort.txt | uniq -d

    可指定每行中需要比较的重复内容:-s 开始位置 -w 比较字符数

用tr进行转换

  • 通用用法
      echo 12345 | tr '0-9' '9876543210' //加解密转换,替换对应字符
      cat text| tr 't' ' '  //制表符转空格
  • tr删除字符
      cat file | tr -d '0-9' // 删除所有数字

    -c 求补集

      cat file | tr -c '0-9' //获取文件中所有数字
      cat file | tr -d -c '0-9 n'  //删除非数字数据
  • tr压缩字符tr -s 压缩文本中出现的重复字符;最常用于压缩多余的空格
      cat file | tr -s ' '
  • 字符类tr中可用各种字符类:alnum:字母和数字alpha:字母digit:数字

    space:空白字符

    lower:小写

    upper:大写

    cntrl:控制(非可打印)字符

    print:可打印字符

    使用方法:tr [:class:] [:class:]

      eg: tr '[:lower:]' '[:upper:]'

cut 按列切分文本

  • 截取文件的第2列和第4列:
      cut -f2,4 filename
  • 去文件除第3列的所有列:
      cut -f3 --complement filename
  • -d 指定定界符:
      cat -f2 -d";" filename
  • cut 取的范围N- 第N个字段到结尾-M 第1个字段为MN-M N到M个字段
  • cut 取的单位-b 以字节为单位-c 以字符为单位-f 以字段为单位(使用定界符)
  • eg:
      cut -c1-5 file //打印第一到5个字符
      cut -c-2 file  //打印前2个字符

paste 按列拼接文本

将两个文本按列拼接到一起;

cat file1
1
2

cat file2
colin
book

paste file1 file2
1 colin
2 book

默认的定界符是制表符,可以用-d指明定界符

paste file1 file2 -d “,”

1,colin

2,book

wc 统计行和字符的工具

wc -l file // 统计行数

wc -w file // 统计单词数

wc -c file // 统计字符数

sed 文本替换利器

  • 首处替换
      seg 's/text/replace_text/' file   //替换每一行的第一处匹配的text
  • 全局替换
       seg 's/text/replace_text/g' file

    默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:

      seg -i 's/text/repalce_text/g' file
  • 移除空白行:
      sed '/^$/d' file
  • 变量转换已匹配的字符串通过标记&来引用.
    echo this is en example | seg 's/\w+/[&]/g'
    $>[this]  [is] [en] [example]
  • 子串匹配标记第一个匹配的括号内容使用标记 1 来引用
      sed 's/hello([0-9])/1/'
  • 双引号求值sed通常用单引号来引用;也可使用双引号,使用双引号后,双引号会对表达式求值:
      sed 's/$var/HLLOE/'

    当使用双引号时,我们可以在sed样式和替换字符串中指定变量;

    eg:
    p=patten
    r=replaced
    echo "line con a patten" | sed "s/$p/$r/g"
    $>line con a replaced
  • 其它示例字符串插入字符:将文本中每行内容(PEKSHA) 转换为 PEK/SHA
      sed 's/^.{3}/

awk 数据流处理工具

  • awk脚本结构awk ‘ BEGIN{ statements } statements2 END{ statements } ‘
  • 工作方式1.执行begin中语句块;2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;3.执行end语句块;

print 打印当前行

  • 使用不带参数的print时,会打印当前行;
      echo -e "line1nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
  • print 以逗号分割时,参数以空格定界;
    echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; 
    print var1, var2 , var3; }'
    $>v1 V2 v3
  • 使用-拼接符的方式(””作为拼接符);
    echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; 
    print var1"-"var2"-"var3; }'
    $>v1-V2-v3

特殊变量: NR NF $0 $1 $2

NR:表示记录数量,在执行过程中对应当前行号;

NF:表示字段数量,在执行过程总对应当前行的字段数;

$0:这个变量包含执行过程中当前行的文本内容;

$1:第一个字段的文本内容;

$2:第二个字段的文本内容;

echo -e "line1 f2 f3n line2 n line 3" | awk '{print NR":"$0"-"$1"-"$2}'
  • 打印每一行的第二和第三个字段:
      awk '{print $2, $3}' file
  • 统计文件的行数:
      awk ' END {print NR}' file
  • 累加每一行的第一个字段:
      echo -e "1n 2n 3n 4n" | awk 'BEGIN{num = 0 ;
      print "begin";} {sum += $1;} END {print "=="; print sum }'

传递外部变量

var=1000
echo | awk '{print vara}' vara=$var #  输入来自stdin
awk '{print vara}' vara=$var file # 输入来自文件

用样式对awk处理的行进行过滤

awk ‘NR awk ‘NR==1,NR==4 {print}’ file #行号等于1和4的打印出来

awk ‘/linux/’ #包含linux文本的行(可以用正则表达式来指定,超级强大)

awk ‘!/linux/’ #不包含linux文本的行

设置定界符

使用-F来设置定界符(默认为空格)

awk -F: ‘{print $NF}’ /etc/passwd

读取命令输出

使用getline,将外部shell命令的输出读入到变量cmdout中;

echo | awk '{"grep root /etc/passwd" | getline cmdout; print cmdout }'

在awk中使用循环

for(i=0;ifor(i in array){print array[i];}

eg:

以逆序的形式打印行:(tac命令的实现)

seq 9| 
awk '{lifo[NR] = $0; lno=NR} 
END{ for(;lno>-1;lno--){print lifo[lno];}
} '

awk实现head、tail命令

  • head:
       awk 'NR<=10{print}' filename
  • tail:
      awk '{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){ \
      print buffer[i %10]} } ' filename

打印指定列

  • awk方式实现:
      ls -lrt | awk '{print $6}'
  • cut方式实现
      ls -lrt | cut -f6

打印指定文本区域

  • 确定行号
      seq 100| awk 'NR==4,NR==6{print}'
  • 确定文本打印处于start_pattern 和end_pattern之间的文本;
      awk '/start_pattern/, /end_pattern/' filename

    eg:

    seq 100 | awk '/13/,/15/'
    cat /etc/passwd| awk '/mai.*mail/,/news.*news/'

awk常用内建函数

index(string,search_string):返回search_string在string中出现的位置

sub(regex,replacement_str,string):将正则匹配到的第一处内容替换为replacement_str;

match(regex,string):检查正则表达式是否能够匹配字符串;

length(string):返回字符串长度

echo | awk '{"grep root /etc/passwd" | getline cmdout; print length(cmdout) }'

printf 类似c语言中的printf,对输出进行格式化

eg:

seq 10 | awk '{printf "->%4sn", $1}'

迭代文件中的行、单词和字符

1. 迭代文件中的每一行

  • while 循环法
    while read line;
    do
    echo $line;
    done < file.txt
    改成子shell:
    cat file.txt | (while read line;do echo $line;done)
  • awk法:cat file.txt| awk ‘{print}’

2.迭代一行中的每一个单词

for word in $line;
do 
echo $word;
done

3. 迭代每一个字符

${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片)

${#word}:返回变量word的长度

for((i=0;i<${#word};i++))
do
echo ${word:i:1);
done
from:http://www.cnblogs.com/me115/p/3427319.html

Linux 常用命令

su

cd /usr/share/apache-tomcat-8.0.9/webapps/

ls

mkdir src

rm -rf  file1

cp -rp folder1 folder2

递归拷贝folder1下的文件到folder2
cp folder1/*  ./folder2 -R

mv  folder1 folder2

clear

exit

history

history > /var/history

tail -f  access_log

pwd

diff sshd_config sshd_config.orig

 

 

ps  -ef|grep java

netstat -an | grep 80

kill -9 14665

pkill java

telnet 127.0.0.1 80

ifconfig

 

vi server.xml

whereis ntpd

whereis systemd

which mysql

mysql -u u -p p

find | grep trans

find ./ -name mysql

grep httpd.conf

grep -ri dbdriver *

cat catalina.out

ps auxww|grep aegis

cat log.20151216.log | grep “2015/12/16 23” | less

grep -r proxy *

less mod_auth_mysql_3.0.0_patch_apache2.4.diff

cat BUILD

tar xvzf mod_auth_mysql-3.0.0.tar.gz

screen

java -jar w.jar &

 

patch < mod_auth_mysql_3.0.0_patch_apache2.4.diff

patch -p1 < mod_auth_mysql_3.0.0_patch_apache2.4.diff

rpm search apxs

yum search apxs

yum install httpd-devel

apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c

yum search mysql | grep devel

yum install apr-util-mysql

locate apr_dbd_mysql

rpm -qf /usr/lib64/apr-util-1/apr_dbd_mysql.so

 

man tcpdump

sudo  tcpdump -ni eth1 -w dump.dat port 80

sudo tcpdump -ni eth0 -w dump.pcap port 80 or port 443

sudo tcpdump -ni eth0 -w dump.pcap port 80 and host {host}

 

md5sum COMODORSADomainValidationSecureServerCA.crt

sha1sum COMODORSADomainValidationSecureServerCA.crt

 

 

 

How to install Tomcat on CentOS

How to Install Tomcat 8 on CentOS 7.0 (Multiple Instances)

https://www.howtoforge.com/how-to-install-tomcat-on-centos-7

Install Oracle Java JDK 8 On CentOS 7

yum install java-1.8.0-openjdk.x86_64

# java -version

# cd /usr/share
# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.9/bin/apache-tomcat-8.0.9.tar.gz
# tar zxvf apache-tomcat-8.0.9.tar.gz

# groupadd tomcat
# useradd -g tomcat -s /bin/bash -d /usr/share/apache-tomcat-8.0.9 tomcat
# chown -Rf tomcat.tomcat /usr/share/apache-tomcat-8.0.9/

# su – tomcat

$ cd bin
$ ./startup.sh

start the service: sh startup.sh or ./startup.sh

stop the service sh :shutdown.sh or ./shutdown.sh

netstat -an | grep 8080

ps -ef  | grep tomcat

kill

tomcat修改默认端口:

<connector port=”80“protocol=”HTTP/1.1″connectionTimeout=”20000”      redirectPort=”8443″/>

tomcat设置IP地址或者域名访问

<Host name=”www.mydomain.com”  appBase=”webapps”     unpackWARs=”true”/>

SSL免费证书申请:

腾讯云 SSL证书管理

tomcat 配置SSl:

conf/server.xml中

<Connector
protocol=”org.apache.coyote.http11.Http11NioProtocol”
port=”443″ maxThreads=”200″
scheme=”https” secure=”true” SSLEnabled=”true”
keystoreFile=”conf/xxx.jks” keystorePass=”password”
clientAuth=”false” sslProtocol=”TLS”/>