#15 Linux 常用压缩命令 CheatSheet

2017-03-22

rar

rar a xxx.rar files...
rar e xxx.rar ./

rar a -p123456 xxx.rar files...
rar e -p123456 xxx.rar ./

rar a -v20m xxx.rar files...

tar

常用的参数说明(grep "^ \-[a-zA-Z0-9]" <(tar --help) | sort):

  • vf 分别表示输出详细信息、指定压缩包名称
  • x 解压
  • c 压缩
  • t 列出压缩包里面的文件列表
  • 压缩文件类型(Linux 下最常用的两种):
  • z:gz
  • j:bz2
# To extract an uncompressed archive:
tar -xvf /path/to/foo.tar

# To create an uncompressed archive:
tar -cvf /path/to/foo.tar /path/to/foo/

# To extract a .gz archive:
tar -xzvf /path/to/foo.tgz

# To create a .gz archive:
tar -czvf /path/to/foo.tgz /path/to/foo/

# To list the content of an .gz archive:
tar -ztvf /path/to/foo.tgz

# To extract a .bz2 archive:
tar -xjvf /path/to/foo.tgz

# To create a .bz2 archive:
tar -cjvf /path/to/foo.tgz /path/to/foo/

# To list the content of an .bz2 archive:
tar -jtvf /path/to/foo.tgz

# To create a .gz archive and exclude all jpg,gif,... from the tgz
tar czvf /path/to/foo.tgz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} /path/to/foo/

# To use parallel (multi-threaded) implementation of compression algorithms:
tar -z ... -> tar -Ipigz ...
tar -j ... -> tar -Ipbzip2 ...
tar -J ... -> tar -Ipixz ...

zip

# Create zip file
zip archive.zip file1 directory/

# To list, test and extract zip archives, see unzip
cheat unzip

# Extract archive
unzip archive.zip

# Windows 下创建的压缩包放到 Ubuntu 下解压可能会有编码问题
unzip archive.zip -O gbk

# Test integrity of archive
unzip -tq archive.zip

# List files and directories in a file
unzip -l archive.zip

7z

sudo apt install p7zip-full
dpkg -L p7zip-full p7zip | grep bin/
# /usr/bin/7z
# /usr/bin/7za
# /usr/bin/7zr
# /usr/bin/p7zip

文档中说是支持 7z,xz,tar,gz,zip,bz2,iso,rpm,deb 等等等等格式,不过没用过。

# 压缩
7z a  xxxx.7z files...
# 解压
7z e  xxxx.7z
# 查看文件列表
7z l  xxxx.7z

参考

  1. man
  2. --help
  3. cheat / tldr

#14 使用 git-daemon

2017-03-15

有时需要临时分享一个仓库给朋友,我们可以用 SSH 协议:

git clone ssh://markjour@192.168.64.234/home/markjour/Projects/Mine/lego

其实 git-daemon 是一个更好的方法。

#13 不加 sudo 执行 Docker 命令

2017-01-13

因为公司组织培训 Docker,为了更好参与课程,我提前一周开始预习 Docker 技术。

安装 Docker 之后,首次执行 docker info 时接到错误信息:“Cannot connect to the Docker daemon. Is the docker daemon running on this host?”。
当时,我再三确认了 Docker 服务运行状态,确实没有任何问题,傻眼了。
之后,加上 sudo 试试才运行正确。

#12 Visual C++

2016-11-07

VC6

Microsoft Visual C(简称Visual C、MSVC、VC或VC)是微软公司的C开发工具,具有集成开发环境,可提供编辑C语言,C以及C/CLI等编程语言。

MS 的 C/C++ 开发工具,继承了他们家的 Win32API,MFC,.NET 等编程框架。

最早是 MSC (Microsoft C);
后来添加 C 支持,改名叫 MS C/C;
再后来,GUI 编程兴起,改名 Visual C,简称 MSVC;
再后来,.NET 框架出来了,改名 Visual C
.NET (Visual C .NET 2002);
再后来,05 年,又给改回去了 (Visual C
2005);
现在最新版本已经到了 Visual C++ 2015。

版本历史

Version Time Notes
MSC 1.0 1983
MSC 7.0 1989
MS C/C++ 7.0 1992 c++, mfc
VC++ 1.0 1993 16bit 版本
VC++ 1.52C 1993 16bit 最后版本
VC++ 1.0 1993 32bit 版本, 重置了版本号
VC++ 2.0 Win95 发布
VC++ 4.0 1995
VC++ 5.0 1997
VC++ 6.0 1998
Visual C++ .NET 2002 2002 7.0
Visual C++ .NET 2003 2003 7.1
Visual C++ 2005 2005 8.0, 开始支持 64bit
Visual C++ 2008 2007 9.0
Visual C++ 2010 2010 10.0
Visual C++ 2012 2012 11.0
Visual C++ 2013 2013 12.0
Visual C++ 2015 2015 14.0
Visual C++ 2017 2017 14.10
Visual C++ 2019 2019 14.20

PS: 大学学 C++ 的时候就是用的 VC6。

VC2015

  • C99
    2013 才开始支持,到 2015,基本上实现了 C99。
    PS: C11 就不要想了。
  • C14
    微软在 C
    领域还是很有发言权的。

.NET

Managed C++

Managed Extensions for C, C托管扩展

微软对 C 做了一个语法拓展(属性和关键字),便于将 C 编译成 .NET 平台中间代码。

非托管代码(没有改写)可以与托管代码进行很好的互操作。

但是由于引入了大量新的代码,代码整体可读性降低了。

C++/CLI

经过多年工程实践,微软为 Managed C 进行了大量改进。然后可能是标准化(ECMA-372)的缘故,新版本改名叫 C/CLI。
VC2005 开始使用 C/CLI 代替 Managed C

根据文档(如何将 C++/CLI 项目移植到 .NET Core)来看,C++/CLI 项目就算移植到 .NET Core 也只能运行于 Windows。原因不明。

参考资料与拓展阅读