新手必须掌握的Linux命令

1. 常用系统命令

1.echo命令

echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。

[hadoop@hadoopmaster ~]$ echo $JAVA_HOME
/usr/local/jdk
[hadoop@hadoopmaster ~]$ echo 'aaaa'
aaaa

2.date命令

date命令用于显示及设置系统的时间或日期,格式为 "date [选项 ][ +指定的格式 ] "。注意:有“+”不能省。

date命令中的参数以及作用:

参数 作用
%t 跳格[Tab键]
%H 小时(00~23)
%I 小时(00~12)
%M 分钟(00~59)
%S 秒(00~59)
%j 今年中的第几天

获取日期:

[hadoop@hadoopmaster ~]$ date
2019年 01月 25日 星期五 16:59:34 CST

格式化日期:

[hadoop@hadoopmaster ~]$ date "+%Y-%m-%d %H:%M:%S"
2019-01-25 16:59:51

重置系统日期:

[root@hadoopmaster hadoop]# date -s "2019-05-19 00:00:00"
2019年 05月 19日 星期日 00:00:00 CST

今天是今年中的第几天:

[root@hadoopmaster hadoop]# date "+%j"
139

3. ps命令

ps命令用于查看系统中的进程状态 。

ps命令的参数以及作用

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
[hadoop@hadoopmaster ~]$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19360   548 ?        Ss   May18   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    May18   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    May18   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    May18   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    May18   0:00 [stopper/0]
root         6  0.0  0.0      0     0 ?        S    May18   0:00 [watchdog/0]
root         7  0.0  0.0      0     0 ?        R    May18   0:26 [events/0]

上述输出信息每一列含义分别为:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程ID号 运算器占用率 内存占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数

一般使用该命令都会在其后使用管道,比如查找所有tomcat进程:

ps aux|grep tomcat

4. top命令

top命令用于动态地监视进程活动与系统负载等信息,其格式为top。

[hadoop@hadoopmaster ~]$ top
top - 00:22:20 up  8:04,  2 users,  load average: 0.16, 0.17, 0.15
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1012080k total,   896340k used,   115740k free,    11144k buffers
Swap:  2031612k total,  1442712k used,   588900k free,   144732k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                   
 2417 hadoop    20   0 3201m 408m 6936 S  0.7 41.4   5:31.06 java                                                       
 4617 hadoop    20   0 99.7m 1836  860 S  0.3  0.2   0:00.04 sshd                                                       
    1 root      20   0 19360  568  352 S  0.0  0.1   0:01.36 init                                                       
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                   
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.74 ksoftirqd/0                                                
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                  
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.09 watchdog/0                                                 
    7 root      20   0     0    0    0 S  0.0  0.0   0:27.28 events/0                                                   
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0                                                   
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0                                              
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef                                            
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup               

top命令相当于windows中的任务管理器。

第一行显示了系统运行时间,登录用户数,系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低 );

第二行中显示了在运行的总任务数,运行状态;

第三行显示了CPU的负载情况;

第四行显示了当前内存使用情况;

第五行显示了虚拟内存使用情况。

5. ifconfig 命令

ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备][参数]”。

[hadoop@hadoopmaster ~]$ ifconfig
docker0   Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
         inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
         inet6 addr: fe80::24:5ff:fee7:7513/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:3 errors:0 dropped:0 overruns:0 frame:0
         TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:216 (216.0 b)  TX bytes:468 (468.0 b)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:27:60:F6  
         inet addr:192.168.238.128  Bcast:192.168.238.255  Mask:255.255.255.0
         inet6 addr: fe80::20c:29ff:fe27:60f6/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:454233 errors:0 dropped:0 overruns:0 frame:0
         TX packets:118207 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:587460812 (560.2 MiB)  TX bytes:46314002 (44.1 MiB)

lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:544555 errors:0 dropped:0 overruns:0 frame:0
         TX packets:544555 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:134915880 (128.6 MiB)  TX bytes:134915880 (128.6 MiB)

6. free 命令

free用于显示当前系统中内存的使用量信息,格式为“free [-h]”。

[hadoop@hadoopmaster ~]$ free -h
            total       used       free     shared    buffers     cached
Mem:          988M       867M       120M        28K        11M       141M
-/+ buffers/cache:       714M       274M
Swap:         1.9G       1.4G       575M

7. history 查看当前用户最近的操作命令

执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile文件中的HISTSIZE变量值。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令 。

[hadoop@hadoopmaster ~]$ history|more
   15  les mapred-site.xml
   16  less mapred-site.xml
   17  less hdfs-site.xml 
   18  cd ..
   19  cd .
   20  cd ..
   21  cd zookeeper
   22  cd bin
   23  zkServer.sh stop
   24  zkServer.sh status
   25  zkServer.sh start
   26  zkServer.sh status
   27  jps
   28  ls

2. 常用工作目录切换命令

1. cd 命令

cd ~ 切换到当前用户家目录

cd / 切换到根目录

cd … 切换到上一级目录

cd 目录名 切换到某个目录中

2. pwd 命令

显示当前所处的操作路径。

[hadoop@hadoopmaster ~]$ pwd
/home/hadoop

3. ls

ls命令用于显示目录中的文件。

ls -a 可以查看当前目录中全部文件,包括隐藏的。

ls -la 可以查看所有文件的属性,大小信息。

3. 文本编辑查看相关命令

1. vim 命令

vim命令十分强大,不是几句话能概括完的,这里仅介绍基本使用方式。

编辑文件:vim fileName。当文件存在的时候,进入编辑模式,文件不存在会新建一个空文件。

进入文件之后,使用i进入编辑模式,然后就可以编辑文件了。

编辑完成之后,保存,退出,先按:,然后输入wq表示保存并退出。

2. cat 命令

cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项][文件]”。

cat -n fileName ,-n 可用于显示行号。

[hadoop@hadoopmaster doc]$ cat -n  LICENSE.md 
     1  Scala is licensed under the [BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause).
     2
     3  ## Scala License
     4
     5  Copyright (c) 2002-2018 EPFL
     6
     7  Copyright (c) 2011-2018 Lightbend, Inc.
     8
     9  All rights reserved.
    10
    11  Redistribution and use in source and binary forms, with or without modification,
    12  are permitted provided that the following conditions are met:

more 命令

more命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。

tail 命令

tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项][文件]”。

tail -f 文件名 可以持续刷新最新的文件;

tail -n 行数 文件名 可以只看最后的n行;

wc命令

wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。

wc的参数以及作用

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数

cut 命令

cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。

-f 用来设置需要查看的列,f1 表示第一列,f2第二列。

-d 设置间隔符号,即用什么符号来拆分列。

比如说,有如下文本:

[hadoop@hadoopmaster doc]$ less /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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
hadoop:x:500:500::/home/hadoop:/bin/bash
mysql:x:501:502::/home/mysql:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin

我们想提取第一列的用户名:

[hadoop@hadoopmaster doc]$ cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
ftp
nobody
dbus
vcsa
saslauth
postfix
sshd
hadoop
mysql
ntp

4. 文件目录管理

cp 复制

cp命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。

cp命令的参数及其作用:

参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)

mkdir 创建目录

mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”。

除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录。

[hadoop@hadoopmaster doc]$ mkdir folder
[hadoop@hadoopmaster doc]$ mkdir -p foler/1/2

touch

touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项][文件]”。

对touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)上面。

touch命令的参数及其作用

参数 作用
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime
[hadoop@hadoopmaster ~]$ touch -d '2019-05-22 8:23:12' file.txt 
[hadoop@hadoopmaster ~]$ ls -l file.txt
-rw-rw-r--. 1 hadoop hadoop 0 5月  22 2019 file.txt

mv 命令

mv命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。

剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名 。

[hadoop@hadoopmaster ~]$ ls
anaconda-ks.cfg  calllog  derby.log  file.txt
[hadoop@hadoopmaster ~]$ rm anaconda-ks.cfg 
[hadoop@hadoopmaster ~]$ ls
calllog  derby.log  file.txt
[hadoop@hadoopmaster ~]$ mv file.txt file.bak
[hadoop@hadoopmaster ~]$ ls
calllog  derby.log  file.bak

file命令

file命令用于查看文件的类型,格式为“file 文件名”。

在Linux系统中,由于文本、目录、设备等所有这些一切都统称为文件,而我们又不能单凭后缀就知道具体的文件类型,这时就需要使用file命令来查看文件类型了。

[hadoop@hadoopmaster local]$ file sbin
sbin: directory
[hadoop@hadoopmaster local]$ file user.txt 
user.txt: UTF-8 Unicode text

5. 搜索相关命令

find

find命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。

这是一个很重要的命令哈,Linux中一切皆文件,当你想找任何文件而不知道他在哪里的时候,find都可以派上用场。

因为find的用法非常多,这里只介绍常用的用法,具体的请参看man。

1.根据文件名模糊匹配:

[hadoop@hadoopmaster local]$ find user.txt -ls
797522    4 -rw-rw-r--   1 hadoop   hadoop        599 1月  9 22:24 user.txt

find不指定查找路径的时候,默认是在当前路径下查找文件的。

指定查找路径:

[hadoop@hadoopmaster /]$ find /usr/local/ -name 'scala-library.jar'
/usr/local/scala/lib/scala-library.jar

2.根据属主,属组查找

 -user username:查找属主是xx的文件
 -group group:查找属组的xx文件
 -uid useruid:查找uid号的文件
 -gid groupid:查找gid号的文件
 -nouser:查找没有属主的文件,即文件存在但是 user已被删除
 -nogroup:查找没有属组的文件
[hadoop@hadoopmaster local]$ find -user root -ls
784923    4 drwxrwxr-x  26 root     root         4096 1月 25 10:19 .
784955    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./src
784931    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./sbin
784928    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./lib
784929    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./lib64
784925    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./etc
784927    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./include
784926    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./games
784930    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./libexec
784924    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./bin
784932    4 drwxrwxr-x   5 root     root         4096 9月  2  2018 ./share
784934    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/info
784935    4 drwxrwxr-x  21 root     root         4096 9月  2  2018 ./share/man
784953    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man9x
784941    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man3x
784944    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man5
784937    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man1x
784936    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man1
784938    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man2
784947    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man6x
784940    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/man3
784954    4 drwxrwxr-x   2 root     root         4096 9月 23  2011 ./share/man/mann

3.根据文件类型查找

-type f:普通文件
-type d:目录文件
-type l:符号链接文件
-type s:套接字文件
-type b:块设备文件
-type c:字符设备文件
-type p:管道文件
[hadoop@hadoopmaster local]$ find -type d -ls|more
784923    4 drwxrwxr-x  26 root     root         4096 1月 25 10:19 .
796766    4 drwxrwxr-x   7 hadoop   hadoop       4096 10月  8  2018 ./flume
796874    4 drwxr-xr-x   2 hadoop   hadoop       4096 10月  9  2018 ./flume/conf
796889    4 drwxr-xr-x  10 hadoop   hadoop       4096 9月 15  2017 ./flume/docs
796905    4 drwxr-xr-x   2 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/js
796903    4 drwxr-xr-x   3 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/images
796904    4 drwxr-xr-x   2 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/images/logos
796891    4 drwxr-xr-x   2 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/_images
796894    4 drwxr-xr-x   4 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/apidocs
796895    4 drwxr-xr-x   3 hadoop   hadoop       4096 9月 15  2017 ./flume/docs/apidocs/com
796896    4 drwxr-xr-x   3 hadoop   hadoop       4096 9月 15  2017 ./flume/docs/apidocs/com/cloudera
796897    4 drwxr-xr-x   3 hadoop   hadoop       4096 9月 15  2017 ./flume/docs/apidocs/com/cloudera/flume
796898    4 drwxr-xr-x   3 hadoop   hadoop       4096 9月 15  2017 ./flume/docs/apidocs/com/cloudera/flume/handlers
796899    4 drwxr-xr-x   3 hadoop   hadoop       4096 10月  8  2018 ./flume/docs/apidocs/com/cloudera/flume/handlers/thr
ift

处理动作:

-print:打印到屏幕
-ls:查找到的文件 进行 ls
-delete:删除查找到的文件
-ok command {}; 对查找的文件执行由command指定的命令,交互式
-exec command {};同上,非交互式
{}:代表前面find找到的 文件名称本身
例如:
find ./ -type f -exec cp {} {}.bak ; 将查找到的文件都复制出一个.bak文件

grep

grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项][文件]”。grep命令的参数及其作用如表2-15所示。

grep命令的参数及其作用:

参数 作用
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行。

grep命令最直接的用法就是:grep 关键字 文件名。日常开发中使用频率比较高。

6. 打包与压缩命令

Linux 上的压缩包文件格式,除了 Windows 最常见的*.zip、*.rar、*.7z 后缀的压缩文件,还有* .gz、.xz、.bz2、.tar、.tar.gz、*.tar.xz、*tar.bz2。

文件后缀名 说明
*.zip zip 程序打包压缩的文件
*.rar rar 程序压缩的文件
*.7z 7zip 程序压缩的文件
*.tar tar 程序打包,未压缩的文件
*.gz gzip 程序 (GNU zip) 压缩的文件
*.xz xz 程序压缩的文件
*.bz2 tar 打包,gzip 程序压缩的文件
*.tar.gz tar打包,gzip程序压缩的文件
*.tar.xz tar打包,xz程序压缩的文件
*.tar.bz2 tar打包,bzip2程序压缩的文件
*.tar.7z tar打包,7z程序压缩的文件

归结起来可以用三个命令来操作:zip,rar,tar。

6.1 使用zip命令

1.使用zip打包:

将 zookeeper目录打包成一个文件,-r 表示递归打包包含子目录的全部内容,-q 表示安静模式,-o 表示输出文件,其后紧跟打包输出文件名:

# 使用 du 命令查看打包后文件的大小
# 使用 file 命令查看文件大小和类型
[hadoop@hadoopmaster local]$ zip -r -q -o zook.zip zookeeper
[hadoop@hadoopmaster local]$ du -h zook.zip 
39M     zook.zip
[hadoop@hadoopmaster local]$ file zook.zip 
zook.zip: Zip archive data, at least v1.0 to extract

2.设置压缩级别为9和1(9最大,1最小),重新打包:

[hadoop@hadoopmaster local]$ zip -r -9 -q -o zook.zip zookeeper

3.创建加密zip包

使用-e参数可以创建加密压缩包。

[hadoop@hadoopmaster local]$ zip -r -q -o -e zook.zip zookeeper
Enter password: 
Verify password: 

注意: 关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改 shell 中的变量有不同类型,可参与运算,有作用域限定 。

使用 -l 参数将 LF 转换为 CR+LF:

[hadoop@hadoopmaster local]$ zip -r -l -o zook.zip zookeeper

4.使用 unzip 命令解压缩 zip 文件

使用安静模式将文件解压到当前目录
[root@hadoopmaster local]# unzip -q zook.zip 
使用安静模式将文件解压到指定目录
[root@hadoopmaster local]# unzip -q zook.zip -d ss
不想解压,只想查看压缩包内容
unzip -l zook.zip
6.2 使用rar命令

打rar包:

#使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建
[hadoop@hadoopmaster local]$ rar a zook.rar zookeeper

#从指定rar包中删除某个文件
[hadoop@hadoopmaster local]$ rar d zook.rar a.txt

解压rar包:

#全路径解压
[hadoop@hadoopmaster local]$ unrar x zook.rar

#指定路径解压
[hadoop@hadoopmaster local]$ unrar e zook.rar tmp/
6.3 tar打包命令

在 Linux 上面更常用的是 tar 工具,tar 原本只是一个打包工具,只是同时还是实现了对 7z,gzip,xz,bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,所以我们也无需再单独去学习其他几个工具,tar 的解压和压缩都是同一个命令,只需参数不同,使用比较方便。

tar 常用命令参数:

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

1.创建一个tar包,将目录打包成.gz 格式

#将tmp目录打包成.gz文件
#参数的含义是:创建一个压缩包,格式为gzip,显示创建过程,使用自定义的文件名
[hadoop@hadoopmaster local]$ tar -czvf mytmp.tar.gz tmp
tmp/
tmp/user.txt

2.解压

[hadoop@hadoopmaster local]$ tar -zxvf mytmp.tar.gz

3.解压到指定目录

[hadoop@hadoopmaster local]$ tar -zxvf mytmp.tar.gz -C mytmp1

初学总会对不同的格式要使用哪种命令搞混,这里有一个总结:

  1. *.tar 用 tar -xvf 解压
  2. *.gz 用 gzip -d或者gunzip 解压
  3. .tar.gz和.tgz 用 tar -xzf 解压
  4. *.bz2 用 bzip2 -d或者用bunzip2 解压
  5. *.tar.bz2用tar -xjf 解压
  6. *.Z 用 uncompress 解压
  7. *.tar.Z 用tar -xZf 解压
  8. *.rar 用 unrar e解压
  9. *.zip 用 unzip 解压
原文地址:https://www.cnblogs.com/rickiyang/p/11074166.html