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. delphi assigned函数的用法

    if not Assigned(Modeless) then Assigned()什么意思! assigned 是用来判断某一指针(pointer)或过程引用是否为nil(空),如果为空则返回假(fa ...

  2. 安卓和IOS抓包工具

    安卓手机抓包软件:Packet Capture,抓包精灵…… 1.Packet Capture又名无root抓包(一款依托安卓系统自身VPN来达到免Root抓取数据包的应用程序) 功能特点: 捕获网络 ...

  3. Java回调机制的理解

    用一句话讲明回调机制就是,在A类里面拥有一个类B的对象,调用B类的某个方法并把自身引用传入,在B类的这个方法里面又通过传进来的A的引用来调用A类的某个方法(这个最后调用的A类的方法就叫做回调方法). ...

  4. 系统用户与用户组管|chfn、密码管理、身份切换、sudo

    2 系统用户与用户组管理 GID为GroupId,即组ID,用来标识用户组的唯一标识符 UID为UserId,即用户ID,用来标识每个用户的唯一标示符 /etc/passwd /etc/shadow ...

  5. angulart 常用

    angular: 使用 echarts npm install echarts --save // 安装declare const echarts: any; // 引入https://www.ech ...

  6. Java常用的日志框架

    1.Java常用日志框架对比 https://www.jianshu.com/p/bbbdcb30bba8 2.Log4j,Log4j2,Logback日志框架性能对比 https://bbs.hua ...

  7. [Web 前端] 023 js 的流程控制、循环和元素的获取、操作

    1. Javascript 流程控制 用于"基于不同条件执行不同的动作"的场合 1.1 if 语句 三种形式 // 第一种 if... // 第二种 if... else ... ...

  8. 【7.24校内交流赛】T1&T2

    T1: 一个脑洞很大的题,将输入的所有数异或起来输出就好了: (话说我为什么这么喜欢用异或啊) #include<bits/stdc++.h> using namespace std; i ...

  9. dfs(最佳路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=1242 Rescue Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  10. C语言数组名取地址。。。

    int main(){ int a[5] = { 1, 2, 3, 4, 5 }; printf("%08X ,%08X ,%08X ,%08X", a, &a, a + ...