重定向
输出重定向
**输出重定向:**将命令的执行结果导向到特定的文件或设备
1、 Linux中命令的执行结果默认输出到终端(屏幕);
2、 输出重定向分为:标准输出重定向、标准错误输出重定向;
标准输出重定向(Standard Output,stdout):输出命令/程序的执行结果
- 标准输出重定向符号分为以下两种:
> | >> |
---|---|
覆盖输出 (输出内容将原有内容进行覆盖) |
追加输出 (在原有内容的默认处添加) |
- 也可在输出符号前添加1(输出符)(如:1>或1>>)
- 若指定的文件不存在,则系统会自动创建该文件
例1:列出根目录下所有文档的详细信息并导入到当前目录的ls.txt文件
标准错误输出重定向(Standard Error Output,stderr):输出命令/程序的日志或错误信息
- 标准输出重定向符号分为以下两种:
2> | 2>> |
---|---|
覆盖输出 (输出内容将原有内容进行覆盖) |
追加输出 (在原有内容的默认处添加) |
- 输出符2不能省略(用于区分)
例2:查询/home下所有.bashrc文件,并将结果分别导向ls_stdout.txt和ls_stderr.txt文件;
stdout | stderr | |
---|---|---|
区别 | 执行成功后返回的信息 | 执行失败后返回的信息 |
1、 stdout和stderr不能使用对方输出符;
2、 特殊输出符(&>)可同时将stdout和stderr的信息导向指定文件(覆盖写);
例3:查询/home下所有.bashrc文件,并将结果导向到当前目录下的list文件
输入重定向
**输入重定向:**将指定文件或设备中数据作为终端的输入数据
1、 Linux中输入默认从键盘设备获取;
2、 输出重定向只有一种:标准输入重定向;
标准输入重定向(Standard Input,stdin):将文件/设备的数据作为输入数据
- 标准输入重定向符号分为以下两种:
< | <<结束符 |
---|---|
文件/设备的所有数据作为输入内容 | 文件/设备的所有或部分数据作为输入内容 (取决于文件/设备中的是否有结束符和结束符位置) |
例1:使用stdin发送mai给mwl用户
tee命令
tee命令:输出双向重定向(将数据分别输出到终端和文件/设备中)
指令格式:tee 选项 文件路径
选项 | 含义 |
---|---|
-a | 以追加形式输出 (默认以覆盖形式) |
-i | 忽略中断信号 |
例2:将PATH环境变量的值分别输出到终端和ls_path.txt文件;
echo命令
echo命令:输出指定字符串或变量的值
指令格式:echo “字符串”或${变量}
- 可省略变量左右的中括号(博主不建议省略)
例3:分别输出”Hello,World“和SHELL环境变量
[root@ddkk.com ~]# echo "Hello,World"
Hello,World
[root@ddkk.com ~]# echo "$
{SHELL}"
/bin/bash
管道
管道:组合命令
1、 管道符(竖线,回车键上):|;
2、 常用于:过滤处理、扩展命令扩能和;
3、 并不是所有命令都支持管道(部分命令不支持多个参数同时输入);
4、 本质:将第一个命令的输出作为第二个命令的输入(可无限其嵌套,依次类推);
例1:仅列出根目录含字符”y”的文档
[root@ddkk.com ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@ddkk.com ~]# ls / | grep y
sys
xargs命令
xargs命令(X Arguments):命令传递参数过滤器
指令格式:xargs 选项 命令
选项 | 含义 |
---|---|
-n | 一次性传递几个参数 |
-p | 执行每个命令前都询问是否执行 |
-e | 设置结束字符 |
-0 | 将特殊字符还原成普通字符 |
例2:通过id命令查询/etc/passwd文件中前3个用户
查看文档相关命令
cat
cat命令:输出文件内容到终端
指令格式:cat 选项 文件路径
选项 | 含义 |
---|---|
-n | 同时输出行号 (默认仅输出内容) |
-A | 同时输出不可打印字符 (行尾以“$”表示结束) |
例1:输出root用户家目录下的.bashrc文件
[root@ddkk.com ~]# cat -n /root/.bashrc
1 # .bashrc
2 3 # User specific aliases and functions
4 5alias rm='rm -i'
6alias cp='cp -i'
7alias mv='mv -i'
8 9 # Source global definitions
10 if [ -f /etc/bashrc ]; then
11 . /etc/bashrc
12 fi
head
head命令:输出指定文件的前N行内容
指令格式:head -N 文件路径
- 若不指定N,则默认显示前10行
例1:输出/etc/passwd文件的前5和10行内容
[root@ddkk.com ~]# head -5 /etc/passwd
root:\x:0:0:root:/root:/bin/bash
bin:\x:1:1:bin:/bin:/sbin/nologin
daemon:\x:2:2:daemon:/sbin:/sbin/nologin
adm:\x:3:4:adm:/var/adm:/sbin/nologin
lp:\x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@ddkk.com ~]# head /etc/passwd
root:\x:0:0:root:/root:/bin/bash
bin:\x:1:1:bin:/bin:/sbin/nologin
daemon:\x:2:2:daemon:/sbin:/sbin/nologin
adm:\x:3:4:adm:/var/adm:/sbin/nologin
lp:\x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:\x:5:0:sync:/sbin:/bin/sync
shutdown:\x:6:0:shutdown:/sbin:/sbin/shutdown
halt:\x:7:0:halt:/sbin:/sbin/halt
mail:\x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:\x:11:0:operator:/root:/sbin/nologin
tail
tail命令:输出指定文件的后N行内容
指令格式:tail -N 文件路径
- 若不指定N,则默认显示后10行
例1:输出/etc/passwd文件的后5和10行内容
[root@ddkk.com ~]# tail -5 /etc/passwd
gnome-initial-setup:\x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:\x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:\x:72:72:: /:/sbin/nologin
mwl:\x:1000:1000:mwl:/home/mwl:/bin/bash
test:\x:1001:1001::/home/test:/bin/bash
[root@ddkk.com ~]# tail /etc/passwd
rpcuser:\x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
setroubleshoot:\x:979:978::/var/lib/setroubleshoot:/sbin/nologin
flatpak:\x:978:977:User for flatpak system helper:/:/sbin/nologin
gdm:\x:42:42::/var/lib/gdm:/sbin/nologin
clevis:\x:977:976:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
gnome-initial-setup:\x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:\x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:\x:72:72:: /:/sbin/nologin
mwl:\x:1000:1000:mwl:/home/mwl:/bin/bash
test:\x:1001:1001::/home/test:/bin/bash
more
more命令:占用当前终端以分页输出文件内容
指令格式:more 文件路径
- 每次仅根据终端屏幕大小显示一页,可通过空格翻页查看
- 只能向后翻页,不可回滚(完全查看后,返回终端)
例1:通过more命令查看/etc/passwd文件
less
less命令:在more命令的基础上,添加可回滚功能
指令格式:less 文件路径
- 可通过辅助功能键(数字、空格和上下键)查看内容
- 按“q”可返回终端
例1:通过less命令查看/etc/passwd文件
wc
wc命令:统计文件信息并返回
指令格式:wc 选项 文件路径
选项 | 含义 |
---|---|
-l | 统计文件的行数 |
-w | 统计文件的单词数 (基于空格判断,对中文无实际意义) |
-c | 统计文件的字节数 |
- 若无选项,wc命令默认会统计行数、单词数和字节数
例1:通过wc命令统计/etc/passwd文件的信息
[root@ddkk.com ~]# wc /etc/passwd
47 106 2584 /etc/passwd
[root@ddkk.com ~]# wc -l /etc/passwd
47 /etc/passwd
[root@ddkk.com ~]# wc -w /etc/passwd
106 /etc/passwd
[root@ddkk.com ~]# wc -c /etc/passwd
2584 /etc/passwd
grep
grep命令:查找数据中含有关键词的行并返回
指令格式:grep 选项 关键词 文件路径
选项 | 含义 |
---|---|
-a | 以文本方式查找二进制文件中的数据 |
-c | 统计含有关键词的函数 |
-i | 忽略大小写 (默认大小区分) |
-n | 同时输出行号 |
-v | 输出不含有关键词的行 |
-P | 使其支持正则表达式(BRE) |
-E | 使其支持扩展正则表达式(ERE) |
- grep命令在匹配到关键词后,以行为单位输出数据
- egrep命令是grep命令的升级版,其支持POSIX扩展正则表达式
例1:检索/etc/passwd文件中shell解释器不是/sbin/nologin的用户
[root@ddkk.com ~]# grep -v /sbin/nologin /etc/passwd
root:\x:0:0:root:/root:/bin/bash
sync\x:5:0:sync:/sbin:/bin/sync
shutdown:\x:6:0:shutdown:/sbin:/sbin/shutdown
halt:\x:7:0:halt:/sbin:/sbin/halt
mwl:\x:1000:1000:mwl:/home/mwl:/bin/bash
test:\x:1001:1001::/home/test:/bin/bash
例2:检索系统进程中以“d”为开头的用户运行的进程
[root@ddkk.com ~]# ps aux | grep -E ^d
dbus 926 0.0 0.2 74016 8132 ? Ssl 14:52 0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
dnsmasq 1768 0.0 0.0 73320 2160 ? S 14:52 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
diff
diff命令:以行为单位对比两个文档的差异
指令格式:diff 选项 文档路径1 文档路径2
选项 | 含义 |
---|---|
-b | 忽略行中的空白差异 |
-B | 忽略空白行差异 |
-i | 忽略大小写差异 |
-c | 显示所有内容,并标记拥有差异内容的行 |
-r | 递归比较 (比较目录下的文件差异) |
例1:比较test1.txt和test2.txt文件内容的差异
iconv
iconv命令:语系编码转换
指令格式:iconv -f 原编码 -t 新编码 文档路径
选项 | 含义 |
---|---|
-f | 原本的编码格式 |
-t | 新编码的格式 |
-o | 指定转换后的结束输出 (默认输出到当前终端的屏幕) |
- 查看iconv支持的语系数据可用:iconv --list
- -f和-t所能指定的合法编码都在--list选项返回的结果中
例1:将test1.txt的编码格式转换为WINDOWS-1258,并输出
[root@ddkk.com ~]# iconv -f UTF-8 -t WINDOWS-1258 test1.txt
Mawenlong
1234
格式转换
由于Linux(Linux)和Windows(Dos)的文件的默认字符格式文件不同,在两个平台间传输文件时需适当的对文件就进行字符转换。
Dos格式转换为Linux格式:dos2unix 选项 文件路径 新文件路径
Linux格式转换为Dos格式:unix2dos 选项 文件路径 新文件路径
选项 | 含义 |
---|---|
-k | 保留该文件的mtime时间格式 |
-n | 保留源文件 (默认转换后将源文件删除) |