debian系系统编译CuraEngine引擎

摘要:CuraEngine是一个功能强大、快速、强劲的3D模型切片引擎.Cura就是采用了CuraEngine引擎的.
本文的操作环境为deepin 15.7,编译CuraEngine的版本为2.4

1.安装cmake

sudo apt install cmake

2.安装Protobuf >= 3.0.0

2.1 安装libtool

sudo apt install libtool

2.2 安装autoconf

sudo apt install autoconf

2.3 clone代码,–depth=1.clone最近一次提交的,可以减少clone时间

git clone https://github.com/protocolbuffers/protobuf.git --depth=1

2.4 进入到protobuf目录.执行

./autogen.sh

2.5

./configure

2.6

make 

2.7

sudo make install

3.安装libArcus

3.1 安装python3-dev

sudo apt install python3-dev

3.2 安装python3-sip-dev

sudo apt install python3-sip-dev

3.3 安装libprotobuf-dev

sudo apt install libprotobuf-dev

3.4 clone代码

git clone https://github.com/Ultimaker/libArcus.git --depth=1

3.5 进入到libArcus目录,执行

mkdir build && cd build
cmake ..

3.6

make

3.7

sudo make install

4.编译CuraEngine

4.1 clone代码.此处编译2.4版本,-b指定版本

git clone https://github.com/Ultimaker/CuraEngine.git -b 2.4 --depth=1

4.2

mkdir build && cd build

4.3

cmake ..

4.4

make

远程tomcat配置jconsole连接监测jvm参数

摘要:

  jconsole是Java 自带性能监控工具,监视和管理控制台 jconsole,它可以提供 Java 某个进程的内存、线程、类加载、
  jvm 概要以及 MBean 等的实时信息.
  Jvisualvm是jdk1.6 update 7 才有,是jconsole的升级工具,功能更强大,最大好处是支持插件安装。所以Jvisualvm远程
  JMX连接方式和jconsole远程连接方式一样

1.在tomcat的bin目录下catalina.sh文件首部增加以下配置(注意:不用换行)

CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms256m -Xmx256m -Djava.rmi.server.hostname=0.0.0.0 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10001 -Dcom.sun.management.jmxremote.rmi.port=10001 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=./conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=./conf/jmxremote.access"

其中-Xms256m -Xmx256m是配置jvm虚拟机参数的,最小堆内存和最大堆内存,推荐保持一致,如果不一致会增加gc回收次数,
对性能有严重影响.
-Djava.rmi.server.hostname:本机的ip地址,可设置为0.0.0.0
-Dcom.sun.management.jmxremote.port:监控的端口.不能和其他运行的端口相冲突
-Dcom.sun.management.jmxremote.authenticate:需要授权才能进行连接
-Dcom.sun.management.jmxremote.password.file:指定配置授权的密码文件存放位置,推荐放入到tomcat的conf目录下
-Dcom.sun.management.jmxremote.access.file:指定配置授权账户的权限的文件存放位置,推荐放入到tomcat的conf目录下

2.在tomcat的bin目录下startup.sh文件首部增加以下配置

JAVA_OPTS="-Djava.rmi.server.hostname=0.0.0.0"

3.启动本地的jconsole即可,输入远程ip和端口,username和password即可连接

注意:

1.配置授权的2个文件是在系统的%JAVA_HOME%/jre/lib/management目录下可以找到对应的模板.将其复制到tomcat的conf目录下,
并将jmxremote.password.template重命名为jmxremote.password
2.jmxremote.access用户权限分readonly和readwrite两种,在jmxremote.access尾部添加用户权限"admin  readwrite",
其中admin代表远程授权的用户名
3.在jmxremote.password尾部添加用户密码"admin 123456"其中admin代表用户名,123456代表对应的密码
4.对jmxremote.access和jmxremote.password文件进行授权,chmod 600  jmxremote.access和
chmod 600 jmxremote.password
5.针对为什么在startup.sh文件中增加对应的-Djava.rmi.server.hostname=0.0.0.0配置,主要是因为在不加配置的情况下,
用shutdown.sh关闭tomcat的时候会报该端口已经被占用,因为关闭tomcat时候,还会读取catalina.sh.所以推荐在startup.sh文件中配置
6.一般情况下远程服务器系统是开启防火墙的,所以还需要将10001端口配置为允许访问
7.如果配置一切无误,还是连接不上的话,请将0.0.0.0换成对应的IP地址.因为亲测在Ubuntu下0.0.0.0能连接成功,
但是在centos7下连接不成功

linux系统之间远程连接和传输文件

>摘要: 

1.Windows与Windows系统之间可以开启远程桌面连接实现远程控制和传输文件,也可以搭建ftp服务器然后通过ftp客户端
(例如:fileZilla)来实现.
2.从Windows到Linux,可以使用xshell等工具来实现远程连接.然后使用winscp等工具实现文件传输.当然在Linux上
搭建ftp服务器,然后用ftp客户端连接也可
3.从Linux(桌面版,server版一般没必要)到Windows.可以使用remmina工具来远程连接Windows进行连接操作.
文件拷贝推荐在Windows上搭建ftpserver(fileZilla-server),然后使用fileZilla client连接传输文件.

 注:fileZilla跨平台的.占用资源少,操作方便.简直神器~

4.另外一种方式就是不分双方的操作系统.只要在对应的机器上安装对应的一些工具,比如teamviewer等.也可实现远程连接
和文件传输.
5.Linux到Linux之间通常是桌面端到server端的操作,有时候为了方便或者为了减少服务器资源占用,server端不需要安装
额外的一些工具等,这时推荐使用Linux下的ssh和scp命令进行操作(大力推荐~)

1.ssh命令

简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露.SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH(linux一般自带),它是自由软件,应用非常广泛.注:ssh协议默认端口一般是22

ssh -V 查看当前安装的ssh版本

1.1 连接到远程主机方式1

ssh [email protected] username是登录远程主机的用户名,serverAddress远程主机地址

1.2 连接到远程主机方式2

ssh serverAddress -l username -p 22 serverAddress远程主机地址,可以是一个域名地址或者ip地址,
username是登录远程主机的用户名, -p 指定远程服务端ssh协议开放的端口.

2.scp命令

scp用于实现在Linux server端和Linux客户端实现文件传输

2.1 上传文件到服务器端,注:是文件,不是文件夹

scp ./test.js [email protected]:/var/www/ #将本地当前目录下的test.js文件上传到192.168.1.106的
/var/www/目录下.root登录远程及其的用户名.

2.2 上传文件夹(目录)到服务器端

scp -r ./test/ [email protected]:/var/www/ #将本地当前目录下的test目录上传到192.168.1.106的/var/www/目录下.
-r参数代表上传目录

2.3 从服务器上下载文件

scp [email protected]:/var/www/test.js /home/ #将服务器/var/www/目录下的test.js文件下载到本地的home目录下

2.4 从服务器下载整个目录

scp -r [email protected]:/var/www/test/ /home/ #将服务器上的/var/www/test/目录下载到本地的home目录下
-r参数代表目录

MySQL新版本设置root密码和重置root密码

> 摘要:最近在虚拟机上安装Ubuntu18.04版本,然后安装MySQL-server.安装MySQL-server过程中不再像之前会提示
输入root账户的密码.所以需要进行对root账户设置密码,

>操作环境:
    OS:Ubuntu 18.04
    MySQL版本:5.7及更高

1.前置条件

需要系统的root账户或者使用sudo 命令

2.使用mysql_secure_installation进行对密码设置

如果是第一次安装完MySQL后,可以使用:

sudo mysql_secure_installation  对root账户进行设置密码操作

3.使用skip-grant-tables对root账户进行重置密码的操作

3.1 停止当前正在运行的mysql服务

    sudo service mysql stop

3.2 创建/var/run/mysqld目录,因为MySQL进程在启动和运行的时候都需要访问该soket文件

    sudo mkdir -p /var/run/mysqld
    sudo chown mysql:mysql /var/run/mysqld

3.3 使用skip-grant-tables启动服务程序

    sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

    jobs 然后确认下服务是否启动成功

3.4 使用root无密码登录,进行修改设置密码操作

    mysql -u root root无密码登录

    FLUSH PRIVILEGES; 刷新一遍授权信息

    USE mysql; 切换到mysql库(安装好后自带的)

    UPDATE user SET authentication_string=PASSWORD("123456") WHERE User='root'; 设置密码字段的新密码,
    authentication_string是新版本存储密码的字段名,旧版本的是password.

    UPDATE user SET plugin="mysql_native_password" WHERE User='root';

    FLUSH PRIVILEGES;

    quit;

3.5 重启MySQL服务

    sudo pkill mysqld  停掉之前启动的服务

    jobs 查看是否正确停止服务

    sudo service mysql start 启动MySQL服务

3.6 使用root账户和刚设置的密码进行登录操作

    mysql -u root --password=123456  使用root和密码登录

atom配置vue前端开发环境

摘要:
  使用atom配置前端vue开发环境

1.安装好atom后,安装常用的几个插件

prettier-atom : 格式化代码插件

atom-axios : vue-axios提示插件

autoclose-html : 自定补全闭合html标签插件

file-icons : 文件图标,便利区分不同类型的文件

autocomplete-paths : 自动提示补全文件路径插件

language-vue : atom支持vue的插件

language-vue-component : 高亮显示vue组件插件

vue2-autocomplete : vue2.0+提示插件

linter-eslint : eslint规则校验插件

px2rem-plus : px转rem插件

minimap : 在编辑器右边出现预览源代码(类似sublime text3右侧预览导航效果)的插件

下面是支持markdown的插件:

markdown-toc : 对markdown文档生成目录的插件

markdown-table-editor : markdown文档表格编辑插件

2.安装好对应的插件后,大部分情况能够使用,但是vue项目需要支持eslint校验的话,需要对linter-eslint设置下面的 Lint-HTML-Files进行勾选

3.默认的prettier格式化的规则是不符合eslint的,比如会对每行尾部增加分号,单引号变变为双引号,需要修改其配置为下:

vscode配置前端vue开发环境

摘要:
  使用vscode配置前端vue开发环境

1.安装好vscode后,安装常用的几个插件

Auto Close Tag : 自动闭合标签插件

Beautify : 格式化js,json,css,sass,html等文件

ESLint : 使用eslint规范对代码进行处理

file-icons : 文件图标,便利区分不同类型的文件

Monokai Theme : 一款类似sublime text主流的主题设置,使界面美观,享受美好的编码心情

Path Intellisense : 自动提示文件路径插件

Prettier : 因为vscode默认的格式化是不能通过eslint校验规范的,需要改为此插件

Vetur : vscode的vue工具插件

px2rem : 将像素值转为rem插件

下面是markdown相关的插件

Markdown-TOC : 对markdown文档生成目录的插件

2.安装好上述插件后,对其进行配置设置

在文件->首选项->设置->用户设置里面写入以下配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
"workbench.startupEditor": "newUntitledFile",
"window.title": "${dirty}${activeEditorLong}${separator}${rootName}${separator}${appName}",
"extensions.ignoreRecommendations": false,
"workbench.iconTheme": "file-icons",
"workbench.colorTheme": "Monokai",
"vetur.format.defaultFormatter.js": "vscode-typescript",
"extensions.autoUpdate": false,
"update.channel": "none",
"eslint.autoFixOnSave": false,
"files.autoSave": "off",
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "vue",
"autoFix": true
},
{
"language": "html",
"autoFix": true
},
"vue"
],
"eslint.options": {
"plugins": [
"html"
]
},
"editor.tabSize": 2,
"prettier.eslintIntegration": true,
"vetur.format.defaultFormatter": {
"html": "prettier",
"css": "prettier",
"postcss": "prettier",
"scss": "prettier",
"less": "prettier",
"js": "prettier",
"ts": "prettier",
"stylus": "stylus-supremacy"
}
}

java实现图片的灰度化处理

摘要:24位彩色图与8位灰度图

在一个24位彩色图像中,每个像素由三个字节表示,通常表示为RGB。
通常,许多24位彩色图像存储为32位图像,每个像素多余的字节存储为一个alpha值,表现有特殊影响的信息
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,
因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255.
这样就得到一幅图片的灰度图

常见的几种灰度化的方法:

分量法:使用RGB三个分量中的一个作为灰度图的灰度值。
最值法:使用RGB三个分量中最大值或最小值作为灰度图的灰度值。
均值法:使用RGB三个分量的平均值作为灰度图的灰度值。
加权法:由于人眼颜色敏感度不同,按下一定的权值对RGB三分量进行加权平均能得到较合理的灰度图像。
一般情况按照:Y = 0.30R + 0.59G + 0.11B.加权法实际上是取一幅图片的亮度值
人眼对绿色的敏感最高,对蓝色敏感最低 )作为灰度值来计算,用到了YUV模型

java编码实现图片灰度化

1.强制设置灰度化的方法(效果相对就差)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 图片灰化(效果不行,不建议。据说:搜索“Java实现灰度化”,十有八九都是一种方法)
*
* @param bufferedImage 待处理图片
* @return
* @throws Exception
*/
public static BufferedImage grayImage(BufferedImage bufferedImage) throws Exception {

int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();

BufferedImage grayBufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
for (int x = 0; x < width; x++) {
for(int y = 0 ; y < height; y++) {
grayBufferedImage.setRGB(x, y, bufferedImage.getRGB(x, j));
}
}
}

2.加权法灰度化(效果较好)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* 图片灰化(参考:http://www.codeceo.com/article/java-image-gray.html)
*
* @param bufferedImage 待处理图片
* @return
* @throws Exception
*/
public static BufferedImage grayImage(BufferedImage bufferedImage) throws
Exception {
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
BufferedImage grayBufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
// 计算灰度值
final int color = bufferedImage.getRGB(x, y);
final int r = (color >> 16) & 0xff;
final int g = (color >> 8) & 0xff;
final int b = color & 0xff;
int gray = (int) (0.3 * r + 0.59 * g + 0.11 * b);
int newPixel = colorToRGB(255, gray, gray, gray);
grayBufferedImage.setRGB(x, y, newPixel);
}
}
return grayBufferedImage;
}

/**
* 颜色分量转换为RGB值
*
* @param alpha
* @param red
* @param green
* @param blue
* @return
*/
private static int colorToRGB(int alpha, int red, int green, int blue) {
int newPixel = 0;
newPixel += alpha;
newPixel = newPixel << 8;
newPixel += red;
newPixel = newPixel << 8;
newPixel += green;
newPixel = newPixel << 8;
newPixel += blue;
return newPixel;
}

MySQL设置用户远程登录

摘要:在Linux(debian)下,通过apt install mysql-server后,输入root账户密码后,
默认是不允许远程登录的.可以用过以下几种方式来设置允许能够远程登录

1.改mysql库下的user表的数据

mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

2.通过授权的方式,这种方式可以对不同的用户设置不同的访问权限

#例如: 在MySQL服务器主机上执行,允许root使用123456从任何主机连接到mysql服务器

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES; # 刷新权限,使配置生效

#例如:允许用户test从ip为120.77.163.89的主机连接到mysql服务器,并使用123456作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'test'@’120.77.163.89’ IDENTIFIED BY '654321' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES; # 刷新权限,使配置生效

Shell基础

摘要:
  Shell是一个命令行解释器,它为用户提供了一个向Linux内核
  发送请求以便运行程序的界面系统级程序.用户可以用Shell来启动,挂起,
  停止甚至是编写一些程序.
  Shell还是一个功能相当强大的编程语言.易编写,意调试,灵活性较强.
  Shell是解释执行的语言,在Shell中可以直接调用Linux系统命令.

1.脚本的执行方式

1. echo 输出命令
    echo [选项] [输出内容]
    选项:
      -e : 支持反斜杠控制的字符转换

2. 编写第一个脚本
  vim hello.sh
  #!/bin/bash
  # this is hello program!
  echo "hello"

3. 脚本执行
  1.赋予执行权限  
    chmod 755 ./hello.sh
    ./hello.sh
  2.通过bash调用执行脚本
    bash ./hello.sh
  3.使用sh命令执行
    sh ./hello.sh

2.Bash的基本功能

1. 命令的别名,很多泛指为Linux下的命令,其实本质是属于Bash
  `alias` 查看系统中所有的命令的别名
2. 设置命令别名
  alias 别名= '原命令'
  alias ll='ls -l'  #给ls -l 设置别名ll

  以上设置别名的方式只是当次有效,系统重启后无效.要设置别名永久有效,
  可以写入环境变量中
  vim ~/.bashrc
  alias ll='ls -l'
  保存,执行source ~/.bashrc即可

3. 删除别名
  unalias 别名
  unalias ll
  unalias是删除临时别名的,永久生效的别名需要删除环境变量中的配置

4. 命令的生效顺序
  第一顺位执行用绝对路径或者相对路径的命令
  第二顺位执行别名
  第三顺位执行Bash的内部命令
  第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

  注:因为别名的执行顺序是高于$PATH下的命令的,
  所以一般情况下请勿将别名设为与其他原始命令相同的命令.

3.Shell编程之Bash变量

Shell中,所有变量默认都是字符串类型

  1. 用户自定义变量 变量名=变量值(等号2边不能有空格)

    用户自己定义的变量,变量名和值可随意更改

    name=”zhangsan”

    echo $name #显示name的值

    1.1 变量叠加

    name=”$name”isaname

    1.2 删除变量(释放变量的内存地址) unset 变量名

  2. 环境变量

    环境变量是全局变量,用户可更改值,不能更改名称

  3. 位置参数变量

    $n :n为数字,$0代表命令本身.$1-$9代表第1-第9个参数,10以上的参数需要用大括号包含,如${10}

    例:vim sum.sh

    `#!/bin/bash

    num1=$1

    num2=$2

    sum=$(($num1+$num2))

    #变量sum的和是num1+num2

    echo $sum`

    执行;./sum.sh 10 20 #./sum.sh是$0,10是$1,20是$2

    结果:30

    $ : 这个变量代表命令行中中所有的参数,$ 把所有的参数看成一个整体

    [email protected] : 这个变量也代表命令行中所有的参数,不过[email protected] 是把每个参数区分对待

    @# : 这个变量代表命令行中所有参数的个数

    例:vim /demo.sh

    `#!/bin/bash

    echo “参数是: $* “

    echo “参数也是: [email protected]

    echo “参数个数是: $#”`

    执行;./demo.sh 11 22 33

    结果:参数是: 11 22 33 参数也是: 11 22 33 参数个数是: 3

    $* 和 [email protected] 区别

    vim ./demo.sh

    #!/bin/bash

    `for i in “$*”

    #$* 把所有的参数看成一个整体,所以执行循环1次

    do

    echo “参数是: $i”

    done

    for y in “[email protected]

    #[email protected] 是把每个参数区分对待,所有有几个参数就循环几次

    do

    echo “参数是: $y”

    done
    `

  4. 预定义变量

    $? : 最后依次执行的命令的返回结果,如果返回是0,代表上一个命令执行成功,如果返回是非0,代表上一个命令执行失败

    $$ : 返回当前进程的PID号

    $! : 后台运行的最后一个进程的进程号(PID)

  5. 接收键盘输入:read 命令

    read [选项] [变量名]

    选项

    -p “提示信息”:在等待read输入时,输出提示信息

    -t 秒数: read命令会一直等待用户输入,输入次选项可以指定用户等待时间

    -n 字符数: read命令只接受指定的字符数,就会执行

    -s : 隐藏输入的数据,适用于输入密码等情况

4.Shell编程之运算符

1. declare命令

  declare声明变量类型

  declare [+/-] [选项] 变量名

    选项:用-给变量设定类型属性,用+取消变量的类型属性

  常见选项类型

    -a 将变量声明为数组类型

    -i 将变量声明为整形

    -x 将变量声明为环境变量

    -r 将变量声明为只读变量(设置为只读属性后,不能对变量进行删除,修改,取消属性的操作)

    -p 查看显示指定变量的被声明的类型

2. 数值运算的方法

  方法1:

  [[email protected]~]# aa=11

  [[email protected]~]# bb=22

  [[email protected]~]# declare -i cc=$aa+$bb

  方法2:

    expr或者let数值运算工具

    [[email protected]~]# aa=11

    [[email protected]~]# bb=22

    [[email protected]~]# dd=$(expr $aa + $bb)

    #dd的值是aa和bb的和,注意:"+"号两侧必须有空格

  方法3:

    "$(())"或"$[运算式]"

    [[email protected]~]# aa=11

    [[email protected]~]# bb=22

    [[email protected]~]# cc=$(($aa + $bb))

    [[email protected]~]# gg=$[$aa + $bb]

3. 变量测试(只是针对Shell,其他常用不适用.一般不常用,对脚本进行优化的时候才使用)

5.Shell编程之环境变量配置文件

`/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

~/.bashrc

~/.bash_profile`

/etc目录下的是系统环境变量文件,~目录下的是当前用户的环境变量配置文件

6.Shell编程之正则表达式

正则表达式主要是用于描述字符排列和匹配模式d额一种语法规则,
主要用于字符串的模式分割,匹配,查找及替换操作

1.正则表达式与通配符

通配符:
  *:匹配任意内容
  ?:匹配任意一个内容
  []:匹配括号中的一个字符.

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.
grep,awk,sed等命令可以支持正则表达式.

通配符用来匹配符合条件的文件名,通配符是完全匹配.
ls,find,cp这些命令不支持正则表达式,所以只能使用shell的通配符匹配.

基础正则表达式:

元字符 作用
* 前一个字符匹配0次或者任意多次
. 匹配除了换行符以外的任意一个字符
^ 匹配行首.例如:^hello匹配以hello开头的行
$ 匹配行尾.例如:hello$匹配以hello结尾的行
[] 匹配中括号中指定的任意一个字符,只匹配一个字符
[^] 匹配除中括号中的字符以外的任意一个字符,例:[^0-9]表示匹配任意一位非数字字符
\ 转义符,用于将特殊符号的含义取消
\{n\} 表示其前面的字符恰好出现n次.例:[0-9]\{4\}匹配4位数字
\{n,\} 表示其前面出现的字符不小于n次,例:[0-9]\{2,\}表示2位及以上的数字
\{n,m\} 表示其前面出现的字符至少出现n次,最多出现m次,例:[a-z]\{2,4\}匹配2到4位的小写字母

Linux常用压缩解压缩

摘要:
  Linux下常用的压缩格式有:.zip .gz .bz2 .tar.gz .tar.bz2

1 .zip格式压缩

压缩文件 zip 压缩文件名 源文件

zip test.zip ./test.txt #将当前目录的test.txt文档压缩为test.zip

压缩目录 zip -r 压缩文件名 源目录

zip test1.zip ./test1 #将当前目录的test1目录压缩为test1.zip

2 .zip格式解压缩

解压文件 unzip 压缩文件

zip ./test1.zip #解压缩当前目录的test1.zip文件

3 .gz格式压缩

压缩为.gz文件,源文件消失 gzip 源文件

压缩为.gz文件,源文件保留 gzip -c 源文件 > 压缩文件

压缩目录下的所有子文件,但是不能压缩目录 gzip -r 目录

4 .gz格式解压缩

解压缩.gz文件 gzip -d 压缩文件

解压缩.gz文件 gunzip 压缩文件

5 .bz2格式压缩

压缩为.bz2格式,不保留源文件 bzip2 源文件

压缩为.bz2格式,保留源文件 bzip2 -k 源文件

注:bzip2不能压缩目录

6 .bz2格式解压缩

解压缩.bz2文件,-k保留压缩文件 bzip2 -d 压缩文件

解压缩.bz2文件,-k保留压缩文件 bunzip2 压缩文件

7 .tar.gz格式压缩(先打包为tar,再压缩为.gz文件)

tar打包命令 tar -cvf 打包文件名 源文件

选项: -c 打包; -v 现实过程; -f 指定打包后的文件名

tar -cvf test.tar ./test 将当前目录下test目录打包为tar文件

gzip test.tar 生成test.tar.gz文件

bzip2 test.tar 生成test.tar.bz2文件

上述过程繁琐,可以直接用 tar -zcvf 压缩包名.tar.gz 源文件

8 .tar.gz格式解压缩(先用gzip解压文件,然后解打包)

解打包命令 tar -xvf 打包文件名

选项: -x 解打包

tar -vxf test.tar 解包text.tar文件

上述过程繁琐,可以直接用 tar -zxvf 压缩包名.tar.gz,
解压到指定目录可用-C选项指定目录 tar -zxvf 压缩包名.tar.gz -C /tmp/

9 .tar.bz2格式压缩(先打包为tar,再压缩为.bz2文件)

tar打包命令 tar -cvf 打包文件名 源文件

选项: -c 打包; -v 现实过程; -f 指定打包后的文件名

tar -cvf test.tar ./test 将当前目录下test目录打包为tar文件

bzip2 test.tar 生成test.tar.bz2文件

上述过程繁琐,可以直接用 tar -jcvf 压缩包名.tar.bz2 源文件

10 .tar.bz2格式解压缩(先用bzip2解压文件,然后解打包)

解打包命令 tar -xvf 打包文件名

选项: -x 解打包

tar -vxf test.tar 解包text.tar文件

上述过程繁琐,可以直接用 tar -jxvf 压缩包名.tar.bz2,
解压到指定目录可用-C选项指定目录 tar -jxvf 压缩包名.tar.bz2 -C /tmp/