Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux (Un/De)在bash中压缩字符串?_Linux_Bash_Compression_Gzip - Fatal编程技术网

Linux (Un/De)在bash中压缩字符串?

Linux (Un/De)在bash中压缩字符串?,linux,bash,compression,gzip,Linux,Bash,Compression,Gzip,是否可以使用stdin/stdout在bash中压缩/解压缩字符串 我尝试过这个,但显然它不受支持 hey=$(回声“hello world”| gzip-cf) echo$hey#返回一个压缩字符串 echo$hey | gzip-cfd gzip:stdin是一个由多部分组成的gzip文件--不受支持 我不太熟悉linux,但我阅读了其他压缩实用程序手册页,找不到解决方案?当您这样做时: hey=$(echo "hello world" | gzip -cf) 变量hey中的字节数与/t

是否可以使用stdin/stdout在bash中压缩/解压缩字符串

我尝试过这个,但显然它不受支持

hey=$(回声“hello world”| gzip-cf)
echo$hey#返回一个压缩字符串
echo$hey | gzip-cfd
gzip:stdin是一个由多部分组成的gzip文件--不受支持
我不太熟悉linux,但我阅读了其他压缩实用程序手册页,找不到解决方案?

当您这样做时:

hey=$(echo "hello world" | gzip -cf)
变量
hey
中的字节数与
/tmp/myfile
中的字节数不同,这些字节是由以下人员创建的:

echo "hello world" | gzip -cf > /tmp/myfile
您会收到“gzip:stdin是一个多部分gzip文件--不受支持”错误,这仅仅是因为您破坏了无法解压缩的压缩数据


VAR=$(…)
构造是为处理文本而设计的。例如,这就是为什么要进行额外的尾部修剪。

如果33%的压缩率损失对您来说是可以接受的,那么您可以存储base64编码的压缩数据:

me$mybox$ FOO=$(echo "Hello world" | gzip | base64 -w0) # compressed, base64 encoded data
me$mybox$ echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
Hello world

它可以工作,但每3个(压缩)字节将存储在4个字节的文本中。

压缩时正确使用
base64
应该是
base64-w0
。否则,将向输出中添加换行符。