新手必须掌握的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
初学总会对不同的格式要使用哪种命令搞混,这里有一个总结:
- *.tar 用 tar -xvf 解压
- *.gz 用 gzip -d或者gunzip 解压
- .tar.gz和.tgz 用 tar -xzf 解压
- *.bz2 用 bzip2 -d或者用bunzip2 解压
- *.tar.bz2用tar -xjf 解压
- *.Z 用 uncompress 解压
- *.tar.Z 用tar -xZf 解压
- *.rar 用 unrar e解压
- *.zip 用 unzip 解压