Shell入门02
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的更多相关文章
- Shell - 简明Shell入门02 - 变量(Variable)
示例脚本及注释 #!/bin/bash v1=test-variable_123 # 全局变量 v2=12345 v3='This is a test!' # 赋值语句使用单引号或双引号可以包含空格 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- Shell - 简明Shell入门
本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...
- Shell入门01
Shell入门 1.基于硬件的虚拟化 2.基于平台的虚拟化 3.基于服务的虚拟化 4.基于库的虚拟化 5.基于操作系统的虚拟化 管理员使用Shell程序与操作系统进行交互,之前学习的shell脚本都是 ...
- 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用
[网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院 欧浩源 1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求.urllib是 ...
- CSS3基础入门02
CSS3 基础入门02 边框相关属性 border-radius 通过这个属性我们可以设置边框圆角,即可以将四个角设置为统一的圆角,也可以单独的设置具体的某一个角的圆角. grammer: borde ...
- linux shell 入门
本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...
- shell 入门学习
目录 shell 入门学习 注释 执行与启动 变量 语法 调试 title: shell 入门学习 date: 2019/7/16 15:47:49 toc: true --- shell 入门学习 ...
随机推荐
- cocos2dx基础篇(9) 滑块控件CCControlSlider
[3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)CCControlEvent 改为强枚举 Control::EventType (4)CCControlEvent ...
- 将python 2.6 升级到 2.7,及pip安装
由于CentOS6.5 自带python版本为2.6.6,实际中使用的大多为2.7.x版本.于是手动升级. 查看python的版本 #python -VPython 2.6.6 1.下载Python- ...
- 【转】centos7安装
转自:https://blog.csdn.net/qq_42570879/article/details/82853708 1.CentOS下载CentOS是免费版,推荐在官网上直接下载,网址:htt ...
- CentOS 7安装Python 2.6(与已有版本共存)
1. 安装需要用到的包 yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget 2. 下载 Python 2.6.8 版本 w ...
- 了不起的NodeJS命令行工具
一个命令行工具实例 这个实例包含了处理进程中的stdin和stdout相关的api,以及文件系统有关的api,使用回调和事件机制来实现并发,主要锻炼基于非阻塞事件的I/O编程中的流控制. // 声明模 ...
- NOIP赛前集训备忘录(含每日总结)(日更?。。。)
NOIP赛前集训备忘录(含每日考试总结) 标签: 有用的东西~(≧▽≦)/~啦啦啦 阅读体验:https://zybuluo.com/Junlier/note/1279194 考试每日总结(这个东西是 ...
- Node.js连接RabbitMQ,断线重连,动态绑定routing key
RabbitMQ官方提供的教程https://www.rabbitmq.com/tuto...,是基于回调的. 下面将给出基于Promise式的写法.并且实现动态的队列绑定 初始化配置 const a ...
- unsolved question's solution
因为很懒,没有时间,只会口胡等等原因,所以有些题目就不打code了 $luogu:$ P1973 [NOI2011]Noi嘉年华: 时间离散化,预处理一个区间$[l,r]$内的最多活动个数$in[l] ...
- asp.net Excel导入和导出
1.Excel数据导入到数据库中: //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表: p ...
- 公用flex类
开发过程中,很多布局,用antd的栅格还是不灵活,flex弹性布局会更好用 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 注意 ...