首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多行linux命令转换为一行命令

如何将多行linux命令转换为一行命令
EN

Stack Overflow用户
提问于 2011-10-31 15:06:48
回答 4查看 465关注 0票数 2

谁能解释一下如何在linux命令中使用">“和"|”,并将这三行代码转换成一行代码?

代码语言:javascript
复制
mysqldump --user=*** --password=*** $db --single-transaction -R > ${db}-$(date +%m-%d-%y).sql
tar -cf ${db}-$(date +%m-%d-%y).sql.tar ${db}-$(date +%m-%d-%y).sql
gzip ${db}-$(date +%m-%d-%y).sql.tar
rm ${db}-$(date +%m-%d-%y).sql (after conversion I guess this line will be useless)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-31 15:13:12

GNU tar程序本身可以完成通常由gzip完成的压缩。您可以使用-z标志来启用此功能。因此,可以将targzip组合成:

代码语言:javascript
复制
tar -zcf ${db}-$(date +%m-%d-%y).sql.tar.gz ${db}-$(date +%m-%d-%y).sql

tar从标准输入中读取以进行归档并不是一项简单的任务,但在这种情况下,我会质疑它的必要性。

tar的目的是能够将大量文件打包到单个归档文件中,但是,由于它只是您正在处理的一个文件(来自mysqldump的输出流),您不需要将其tar起来,您只需将其直接传输到gzip本身:

代码语言:javascript
复制
mysqldump blah blah | gzip > ${db}-$(date +%m-%d-%y).sql.gz

这是因为如果您不给gzip提供任何文件名,它会将标准输入压缩为标准输出。

这消除了在压缩过程中对任何(可能非常大的)临时文件的需要。

票数 2
EN

Stack Overflow用户

发布于 2011-10-31 15:23:36

您可以使用下一个脚本:

代码语言:javascript
复制
#!/bin/sh
USER="***"
PASS="***"
DB="***"

mysqldump --user=$USER --password=$PASS $DB --single-transaction -R | gzip > ${DB}-$(date +%m-%d-%y).sql.gz

你可以在这里了解更多关于"|“- http://en.wikipedia.org/wiki/Pipeline_(Unix的信息。我可以说,这种结构将mysqldump命令的输出移动到gzip命令的标准输入,所以这就像是通过管道将一个命令的输出与另一个命令的输入连接起来。

票数 2
EN

Stack Overflow用户

发布于 2011-10-31 15:44:43

我不明白使用tar的意义:您只有一个文件,为了进行压缩,您可以调用gzip expl显式。Tar用于将多个文件归档/打包为一个文件。

您的cammandline应该是( dump命令是短的,但我猜您会得到它):

代码语言:javascript
复制
mysqldump .... | gzip > filename.sql.gz
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7950794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档