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. flask-profiler, 监视端点调用并尝试进行某些分析的Flask 事件探查器

    源代码名称:flask-profiler 源代码网址:http://www.github.com/muatik/flask-profiler flask-profiler源代码文档 flask-pro ...

  2. 合理设置redis主从buffer 不错

    背景 某次抢购时,一个redis集群的某个分片,从实例响应时间陡增到几十秒,报警后运维将其中一个本应该下线的slave下掉,问题减轻但没有解决,又把另一个正常的slave下线掉,问题消失. maste ...

  3. CSS3—— 2D转换 3D转换 过渡 动画

    2D转换 对元素进行移动.缩放.转动.拉长或拉伸 ————>  ————>   移动 顺时针旋转 扩大/缩小 倾斜 2D变换合并  3D转换 绕x轴 绕y轴 过渡 从一种样式逐渐改变为另一 ...

  4. IDEA神器

    破解 路径:添加-javaagent:JetbrainsCrack-2.7-release-str.jar的路径 例-javaagent:D:\Program Files\JetBrains\Inte ...

  5. Linux运维的第三周总结

    01. 下列文件中, 包含了主机名到IP地址的映射关系的文件是()       A. /etc/HOSTNAME    B. /etc/hosts    C. /etc/resolv.conf    ...

  6. windows上利用dhcpsrv搭建DHCP服务器

    起因是一个很奇葩的需求:乙方要远程升级仪器,用TeamViewer远程控制并ssh到仪器,但仪器内部IP地址没有写死,靠DHCP服务器获取.那么就要在PC建立DHCP服务器,用网线连接仪器,然后才能看 ...

  7. RabbitMQ几种队列模式

  8. Rust学习笔记1

    这是一份不错的rust教程,目前包括4个block和4个project.全部完成后可以用rust实现一个简单的key-value存储引擎. 注意:Windows下rust貌似会遇到一些bug,强烈建议 ...

  9. webpack output的path publicPath

    path是用来定义入口文件保存的地址,而publicPath是定义非入口文件需要抽离保存的第三方文件的保存地址 vue-cli 中HtmlWebpackPlugin生成html,都会存在path路径上 ...

  10. js中的数组去掉空值

    //result 是有空值的数组//r是处理好的数组var r = result.filter(function (s) { return s && s.trim();});