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. C# 文件打开对话框 图片fitter

    "All Image Files|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff|""Windows Bitmap(* ...

  2. c++获取当前进程所在位置

    char buffer[MAX_PATH]; GetModuleFileNameA(NULL, buffer, MAX_PATH ); string::size_type pos = string( ...

  3. VBA文件操作

    做这些东西主要是为了,实现,我们的最终目标. 查到 两个大表里面的变化数据. 所以 这次 ①实现了 文件操作的一部分内容. 包括,excel的打开.分四个步骤. 1.路径 2.打开工作博 3.操作 4 ...

  4. unity监听粒子播放结束

    需要在粒子上挂脚本 脚本添加代码 public void OnParticleSystemStopped() { Debug.Log("粒子停止"); } 这是个生命周期 粒子的 ...

  5. 数据库之DML

    1.表的有关操作: 1.1.表的创建格式: CREATE TABLE IF NOT EXISTS 表名(属性1 类型,属性2 类型,....,属性n 类型):# 标记部分表示可以省略 1.2.表的修改 ...

  6. Python基础语法之列表 元组

    1 列表 列表由一系列按照特定顺序的元素组成,其中的元素可以使不同的数据类型,用[ ]来表示列表,用逗号来分割列表中的元素. 1.1 列表操作之切片 a = [1, 2, 3, 4, 5, 6, 7, ...

  7. 用matplotlib对数据可视化

    下图是要用到的数据集,反映了从1984到2016年的失业率的变化 1.导入可视化模块import matlibplot.pyplot as plt, 函数plt.plot(x, y)确定折线图的点,x ...

  8. 【Qt开发】QT样式表单 qss的样式优化

    QT样式表单 QT的样式表单允许我们在对程序不做任何代码上的更改的情况下轻松改变应用程序的外观. 其思想来源于网页设计中的CSS,即可以将功能设计和美学设计分开. 它的语法和概念和HTML CSS也是 ...

  9. python+selenium下载文件——firefox

    修改Firefox的相关配置. 1.profile.set_preference('browser.download.folderList',2) 设置成0代表桌面,1代表下载到浏览器默认下载路径:2 ...

  10. Java第五周作业+总结

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...