Shell:Day02.笔记
2024-09-07 10:44:05
重定向和管道符:
1、重定向
程序 = 指令 + 数据
命令 变量
1、重定向
程序 = 指令 + 数据
命令 变量
在程序中,数据如何输入?有如何输出?
数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;
--stdin
echo "123456"|passwd --stdin"username"
例如:功能添加用户 useradd.sh user.txt文本文档1000个用户
./useradd.sh a
./useradd.sh b
...
./useradd.sh < user.txt
数据输入:键盘 -- 标准输入,但是并不是唯一输入方式;
--stdin
echo "123456"|passwd --stdin"username"
例如:功能添加用户 useradd.sh user.txt文本文档1000个用户
./useradd.sh a
./useradd.sh b
...
./useradd.sh < user.txt
while line;do
循环体 $line
done < /etc/passwd
数据输出:显示器 -- 标准输出,但是并不是唯一输出方式
ls /etc/ > a.txt
fd文件标识符 0-9 -- 相当于给文件分类;
0 1 2
0 -- 标准输出
1 -- 标准输入
2 -- 错误输入输出
循环体 $line
done < /etc/passwd
数据输出:显示器 -- 标准输出,但是并不是唯一输出方式
ls /etc/ > a.txt
fd文件标识符 0-9 -- 相当于给文件分类;
0 1 2
0 -- 标准输出
1 -- 标准输入
2 -- 错误输入输出
常见重定向符号
1、标准输出
> 覆盖重定向、非常危险
set -C 关闭覆盖重定向功能
>| 强制重定向
>> 追加重定向
1、标准输出
> 覆盖重定向、非常危险
set -C 关闭覆盖重定向功能
>| 强制重定向
>> 追加重定向
2.标准输入
<
tr 替换文件内容
tr set1[set2] < file.txt
tr abc ABC /etc/passwd
tr abc ABC /etc/passwd > /etc/passwd
将passwd文件中的a、b、c替换成A、B、C
<<
多行数据同时输入
cat >>a.txt<<EOF
>11
>2
>3
>EOF
3.错误输出
2> 2>>
/dev/null 黑洞文件(删除)
/dev/zero
ls /etc/ > /dev/null 2> /dev/null——
&> &>> == 2&>1 |=
ls /etc/ &> /dev/null<————
<
tr 替换文件内容
tr set1[set2] < file.txt
tr abc ABC /etc/passwd
tr abc ABC /etc/passwd > /etc/passwd
将passwd文件中的a、b、c替换成A、B、C
<<
多行数据同时输入
cat >>a.txt<<EOF
>11
>2
>3
>EOF
3.错误输出
2> 2>>
/dev/null 黑洞文件(删除)
/dev/zero
ls /etc/ > /dev/null 2> /dev/null——
&> &>> == 2&>1 |=
ls /etc/ &> /dev/null<————
扩展:不需要输出内容,只需要输出状态;
ls /etc/ > /dev/null
if[$?(命令执行状态) -eq 0];then
循环体
fi
ls > /dev/null 2>dev/null
ls /etc/ > /dev/null
if[$?(命令执行状态) -eq 0];then
循环体
fi
ls > /dev/null 2>dev/null
2.管道-tee
command1|command2|command3|...
前一个命令的执行结果交给后一个命令来执行;
【Linux思想:结合小功能实现大功能】
free -m|grep "^Mem"|cut -d'' -f19
free -m|grep "^Mem"|awk '{print $3}'
tee[option]...屏幕上输出一次,然后保存一次(一路输入,两路输出)
tee /tmp/tee.out //如果没有文件,会创建,默认如果文件存在有内容,会覆盖
command1|command2|command3|...
前一个命令的执行结果交给后一个命令来执行;
【Linux思想:结合小功能实现大功能】
free -m|grep "^Mem"|cut -d'' -f19
free -m|grep "^Mem"|awk '{print $3}'
tee[option]...屏幕上输出一次,然后保存一次(一路输入,两路输出)
tee /tmp/tee.out //如果没有文件,会创建,默认如果文件存在有内容,会覆盖
练习:
1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中
head -5 /etc/passwd | tr [a-z][A-Z] > /tmp/passwd.out
2.将登录至当前系统上的用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中
who | tail -3 | cut -d'' -f1 | tr [[:lower:]] [[:upper:]] | tree /tmp/who.out
tail——查看文件尾部多少行(默认为10行)
-n tail -(n)5 /etc/passwd
-f 实时查看文件更新内容
tial -f /var/log/message
sleep 等待多长时间后再向下执行
head——查看文件头部多少行(默认10行)
-n # 前#行,简写-#
取10-20行:head -20 /etc/passwd | tail -10
文本处理工具-wc,cut,sort,uniq
1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中
head -5 /etc/passwd | tr [a-z][A-Z] > /tmp/passwd.out
2.将登录至当前系统上的用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中
who | tail -3 | cut -d'' -f1 | tr [[:lower:]] [[:upper:]] | tree /tmp/who.out
tail——查看文件尾部多少行(默认为10行)
-n tail -(n)5 /etc/passwd
-f 实时查看文件更新内容
tial -f /var/log/message
sleep 等待多长时间后再向下执行
head——查看文件头部多少行(默认10行)
-n # 前#行,简写-#
取10-20行:head -20 /etc/passwd | tail -10
文本处理工具-wc,cut,sort,uniq
最新文章
- ie 8 下post提交提交了两次
- 【云计算】docker三剑客如何支持分布式部署?
- vim和tmux主题颜色不一致问题
- Intellij Idea 15 旗舰版 破解
- 详尽介绍FireFox about:config
- Oracle:使用过程中的问题集锦
- 小菜学习MVC4-WebApi
- Intent组件
- HiveQL与SQL区别
- boost::asio async_write也不能保证一次发完所有数据 二
- jQuery图片切换插件jquery.cycle.js
- java导出word
- Matlab绘图基础——绘制等高线图
- Fiddler手机抓包设置
- LeetCode算法题-Binary Tree Level Order Traversal II(Java实现)
- Docker系列08:容器监控
- Python3学习之路~6.6 类的继承
- spring boot实现异步调用
- 图片保持比例,padding的妙用
- java多线程 -- Condition 控制线程通信
热门文章
- CTR学习笔记&;代码实现1-深度学习的前奏LR->;FFM
- LeetCode 136、137、260(只出现一次的数,异或性质及应用)
- jupyternotebook安装
- 5G 将带给程序员哪些新机会呢?
- react build本地相对目录 ";homepage";: ";.";, package.json
- C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
- tensorflow一些API的基本理解
- 奇思妙想-java实现另类的pipeline模式
- JavaScript每日学习日记(2)
- 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析