Shell入门-02

1.重定向 标准输入(<) 标准输出 标准错误重回定向

程序 = 指令 + 数据

命令   变量

在程序中,数据如何输入?又如何输出?

数据输入:键盘 – 标准输入,但是并不是唯一输入方式

--stdin

不进入交互式界面,直接输入密码

echo “123456” | passwd –stdin “username”

例如:功能添加用户,useradd.sh user.txt文本文档1000个用户

./useradd.sh  <  user.txt

while line ; do

循环体 $line

done  <  /etc/passwd

数据输出:显示器 – 标准输出,但并不唯一输出方式

ls /etc/ > a.txt

fd文件标识符 0-9 ---- 相当于给文件分类;

被定义的标识符 0—标准输出  1—标准输入  2—标准错误(错误输入输出)

常见的重定向的符号:

1.标准输出

0>           --      覆盖重定向、非常的危险 重定向后数据将会丢失

set –C     关闭重定向功能,剪掉C的功能 C的功能就是去掉重定向

set +C      加上重定向

>|             强制重定向

>>           --      追加重定向 将数据内容追加到文件末尾  不覆盖

less more

cat a.txt | more/less

2.标准输入

1<             a < b  b的内容交给a

tr 替换  tr set [set2]    默认进入交互式界面手动输入替换内容

tr set [set2] < file.txt

tr abc ABC < /etc/passwd

|  |

单个字符

tr abc ABC < /etc/passwd > /etc/passwd

<<             cat 查看,将多行数据同时输入

cat >> a.txt <<EOF

>1

>2

>3

>EOF

3.错误输出

2>    2>>

扩展:不需要输出内容,只需要输出状态;

ls /etc/ > /dev/null 2> /dev/null

if [$? –eq 0];then

循环体

fi

&> &>> == 2&>1

ls /etc/ &> /dev/null

2.管道符 – tee

command1|command2|command3|… …

前一个命令的执行结果交给后一个命令来执行;

【linux思想:结合小功能实现大功能】

free –m

m  --- 单位

free –m|grep “^Mem” | cut –d’ ’ –f19

free –m|grep “^Mem” | awk ‘{print $3}’

s = ` free –m|grep “^Mem” | cut –d’ ’ –f19`

if [$s –gt 1000];then

告警

fi

tee命令

       一路输入,两路输出

       Tee /tmp/tee.out //如果没有文件会创建,如果默认文件有内容会覆盖

练习:

/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;

head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

将登录至当前系统上用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中;

who | tail -3 | cut –d’ ’ –f1 |  tr [[:lower:]] [[:upper:]]  |  tee /tmp/who.out

tail  查看文件尾部多少行(默认10行)

              -n tail –n 5 /etc/passwd = tail -5 /etc/passwd

-f 实时查看文件更新查看

Sleep  等待多长时间后再执行

              tail –f /vaar/log/message

head  查看文件头部多少行(默认10行)

              -n head –n 5 /etc/passwd = head -5 /etc/passwd

head -20 /etc/passwd | tail -10

3.文本处理工具---wc,cut,sort,uniq

wc

Word count 统计文本文件中的字符个数

行数14 字符个数72 文件大小711字节 文件大小

–c 文件大小

-l  看行数

-w 字符个数

cut

用来做文件分割

-d 指定分隔符(单个) (delimiter)

-f 指定多少列数 –f2输出第二列

-f1,3输出第一列到第三列

-f1-3

history | cut –d’ ’ –f3 /etc/passwd

--output-delimiter=’xx’

cut –d’ ’ –f1,3 /etc/passwd

cut –d’:’ –f1,3 –output-delimiter=’          ’ /etc/passwd

格式化输出

Cut的局限性:

**-d 指定分隔符不能同时指定多个**

**不能做高级的格式化输出**           需要熟练掌握awk

sort

排序命令,默认将第一个字符(数字、字母、特殊符号、空格)按照ASCII码值来进行排序

-n 按照数值大小排序 特殊字符和字母在数字前面

-r 倒序排列

-f 忽略字符大小写

-k 已指定字段的第几段进行排序

-u uniq 排序去重复,重复的不显示

-t指定字段分隔符

uniq

连续且相同,才被视为重复

建议,先排序后去重

Uniq  –c 统计某些字符重复的次数

Sort filename | uniq –c

-d 重复的行

练习:

显示/etc/passwd的第六行到第十行,按照第三个字段进行数值大小排序,最后显示第一列

Shell入门02的更多相关文章

  1. Shell - 简明Shell入门02 - 变量(Variable)

    示例脚本及注释 #!/bin/bash v1=test-variable_123 # 全局变量 v2=12345 v3='This is a test!' # 赋值语句使用单引号或双引号可以包含空格 ...

  2. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  3. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  4. Shell - 简明Shell入门

    本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...

  5. Shell入门01

    Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...

  6. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

    [网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院  欧浩源 1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求.urllib是 ...

  7. CSS3基础入门02

    CSS3 基础入门02 边框相关属性 border-radius 通过这个属性我们可以设置边框圆角,即可以将四个角设置为统一的圆角,也可以单独的设置具体的某一个角的圆角. grammer: borde ...

  8. linux shell 入门

    本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...

  9. shell 入门学习

    目录 shell 入门学习 注释 执行与启动 变量 语法 调试 title: shell 入门学习 date: 2019/7/16 15:47:49 toc: true --- shell 入门学习 ...

随机推荐

  1. Hibernate一级缓冲

    Hibernate的一级缓冲 什么是缓冲 缓冲概念: 数据存在数据库中,数据库本身就是一个文件系统,使用流的方式操作文件,但是文件中有很多的内容,用流的操作得效率就低. 解决办法: 把数据存在内存中, ...

  2. Gradle之Gradle 的基本使用(一)

    [Android 修炼手册]Gradle 篇 -- Gradle 的基本使用 预备知识 基本的 android 开发知识 了解 Android Studio 基本使用 看完本文可以达到什么程度 掌握 ...

  3. Linux几个命令的升级替代品

    grep => ack, agack和ag是两个文本搜索工具,比自带的grep要好用得多.在指定目录下搜索文本时,它们不需要像grep那样指定各种命令行选项,输出结果也会包含文件名和行号,并且会 ...

  4. Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图

    三维绘图函数 三维绘制工具 函数view 实例:三维螺旋线 >> t=:pi/:*pi; plot3(sin(t),cos(t),t) grid %添加网格  plot3可以画出空间中的曲 ...

  5. Python基础语法之常量与变量

    一.变量的命名规则 只能以下划线,数字和字母组成,不可以是特殊字符: 不可以以数字开头: 关键字不可作为变量名: 变量名区分大小写: 要具有描述性: 二.常量 python中并没有关键字const,在 ...

  6. JAVA基础--JAVA 集合框架(泛型、file类)

    一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...

  7. 关于css清除浮动

    1.overflow:hidden 较简单,兼容于市面浏览器.负面效果不详.暂不推荐使用.2.定义clear类,并把clear类赋给浮动元素的父级元素. .clear{display:block;ov ...

  8. Luogu P2756 [网络流24题]飞行员配对方案问题_二分图匹配题解

    二分图模板题 我用的是匈牙利 其实最大流也可以做 #include<iostream> #include<cstdio> #include<cstdlib> #in ...

  9. linux中几个简单的系统命令(还有一些其他杂项命令)

    linux中几个简单的系统命令,其他命令接触到了在补充. 1.ps命令:(process status),提供对进程的一次性查看.以及执行ps命令时那个时刻的进程信息 格式:ps[参数] -e 此参数 ...

  10. <img> 标签的 src 属性

    src属性 加载的时候就会请求 1.servlet生成一个图片 2.你直接输入servlet的连接看一下,就是一个图片,和我们自己发布到服务器的一样. 3.页面加载时,会访问这个servelt连接,自 ...