.

  • Linux 系统目录概况
    • 目录的含义解释:
      • /根目录的内容:
      • /usr的内容
      • /var 的内容:
  • Linux文件基本属性
    • 查看文件的属性及文件所属的用户和组,常常使用ls -l 或者ll
    • Linux 文件属主和属组
      • 文件默认权限:umask
  • Linux 文件与目录管理
    • cd命令使用(进入目录)
    • ls 命令使用(列表)
    • pwd命令使用(显示路径)
    • mkdir命令使用(创建目录)
    • rmdir命令使用(删除目录)
    • rm命令使用(删除文件)
    • cp命令使用(复制)
    • mv命令使用(移动或更名)
    • diff 和 patch 命令的使用
  • linux文件内容查询提取
    • cat命令使用(小文件内容连续显示)
    • tac命令使用 (反向列示)
    • nl命令使用 (添加行号列印)
    • more命令使用 (一页一页翻动)
    • less (一页一页翻动)
    • head和tail
    • touch命令使用(创建空文件和修订)
  • linux文件和命令的搜寻
    • which命令使用(命令档名的搜寻)
    • whereis,locate,find(文件档名的搜寻)
  • linux的权限与命令
  • linux常见压缩打包命令
    • **gzip, zcat**
    • **bzip2, bzcat**
    • 打包命令:tar

Linux 系统目录概况

 在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。

目录的含义解释:

在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 . .来表示。

. :代表当前的目录,也可以使用 ./ 来表示;
. . :代表上一层目录,也可以 . ./ 来代表。

FHS(Filesystem Hierarchy Standard)规范每个特定的目录下应该要放置什么样子的数据,针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
/ (root, 根目录):与开机系统有关;
/usr (unix software resource):与软件安装/执行有关;
/var (variable):与系统运作过程有关。


/根目录的内容:

如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件

树状目录结构:

系统启动必须:

/boot:存放开机启动Linux 时使用的内核文件,包括Linux核心文件以及开机选单与开机所需配置文件,包括连接文件以及镜像文件等等。 Linux kernel常用的档名为:vmlinuz,如果使用的是grub这个开机管理程序, 则还会存在/boot/grub/这个目录
/etc:系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、 各种服务的启始档等等。更改目录下的文件可能会导致系统不能启动。这个目录下的各文件是可以让一般使用者查阅的, 但只有root能修改。比较重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等
/lib:存放基本代码库library(比如c++库),/lib放置的则是在开机时会用到的函式库, 以及在/bin或/sbin底下的指令会呼叫的函式库而已。其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

/bin:binaries(二进制文件) 存放着最常用的程序和指令,bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下的指令可以被root与一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
/sbin:super binaries(超级用户的二进制文件)只有系统管理员能使用的程序和指令。非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他用户最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(system binary), 则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等

外部文件管理:

/dev : 任何装置与接口设备都是以文件的型态存在于这个目录当中的。 你只要透过存取这个目录底下的某个文件,就等于存取某个装置啰~ 比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:早时候,这个目录的用途与/media相同,只是有了/media之后,这个目录就用来临时挂载别的文件的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

临时文件:

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有/var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:temporary(临时)这个目录是用来存放一些临时文件, 这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录

账户:

/root:系统管理员的用户主目录即家目录。当进入单人维护模式而仅挂载根目录时, 该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。
/home:用户的主目录,这个目录下都是以用户的账号命名的,如上图中的 alice、bob 和 eve。其中~:代表目前这个用户的家目录,而~bob:则代表bob 的家目录

运行过程中要用:

/var:variable(变量)存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

/opt:给第三方协力软件放置的目录,默认是空的,我们安装额外软件可以放在这个里面。
/srv:srv可以视为『service』的缩写,存放服务启动后需要提取的数据(不用服务器就是空),是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如WWW, FTP等等

因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分割槽!


/usr的内容

依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static), 是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下。usr是Unix Software Resource的缩写, 也就是『Unix操作系统软件资源』所放置的目录,而不是用户的数据。如果你知道如何透过网络进行分割槽的挂载(例如NFS服务器),那么/usr确实可以分享给局域网络内的其他主机来使用

一般来说,/usr的次目录建议有底下这些:

/usr/X11R6/  为X Window System重要数据所放置的目录,之所以取名为X11R6是因为最后的X版本为第11版,且该版的第6次释出之意。
/usr/bin/   绝大部分的用户可使用指令都放在这里!请注意到他与/bin的不同之处。(是否与开机过程有关)
/usr/include/   c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档喔!
/usr/lib/   包含各应用软件的函式库、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。 某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作, 那就会被摆放到这个目录下啦。要注意的是,如果你使用的是X86_64的Linux系统, 那可能会有/usr/lib64/目录产生喔!
/usr/local/ 系统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版, 此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦! 你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录喔!
/usr/sbin/  非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon)啰!
/usr/share/ 放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件嘛!在此目录下常见的还有这些次目录:
/usr/share/man:联机帮助文件
/usr/share/doc:软件杂项的文件说明
/usr/share/zoneinfo:与时区有关的时区文件
/usr/src/   内核源代码默认的放置目录,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。

/var 的内容:

var就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。
常见的次目录有:

/var/cache/  应用程序本身运作过程中会产生的一些暂存档;
/var/lib/   程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 举例来说,MySQL的数据库放置到/var/lib/mysql/而rpm的数据库则放到/var/lib/rpm去!
/var/lock/  某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 举例来说,刻录机正在刻录一块光盘,你想一下,会不会有两个人同时在使用一个刻录机烧片? 如果两个人同时刻录,那片子写入的是谁的数据?所以当第一个人在刻录时该刻录机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用啰。
/var/log/   重要到不行!这是登录文件放置的目录!里面比较重要的文件如/var/log/messages, /var/log/wtmp(记录登入者的信息)等。
/var/mail/  放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中! 通常这两个目录是互为链接文件啦!
/var/run/   某些程序或者是服务启动后,会将他们的PID放置在这个目录下喔! 至于PID的意义我们会在后续章节提到的。
/var/spool/ 这个目录通常放置一些队列数据,所谓的『队列』就是排队等待其他程序使用的数据啦! 这些数据被使用后通常都会被删除。举例来说,系统收到新信会放置到/var/spool/mail/中, 但使用者收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中, 等到被送出后就被删除。如果是工作排程数据(crontab),就会被放置到/var/spool/cron/目录中

注意点
/bin是系统的一些指令,普通用户和超级用户都能使用。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等
/sbin一般是指系统管理指令,超级用户才能使用。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等
/usr/bin是后期安装的一些普通用户可以使用的软件运行指令。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等
/usr/sbin 放置一些超级用户才能使用的软件运行指令。例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等

Linux文件基本属性

查看文件的属性及文件所属的用户和组,常常使用ls -l 或者ll
[root@www /]# ls -l
总用量 20
drwxr-xr-x 7 intelcamera intelcamera 4096 11月 18 14:49 9950
-rw-r--r-- 1 intelcamera intelcamera 8980  9月 16 20:09 examples.desktop

其中的第一个字符代表这个文件是目录、文件或链接文件等等。

当为 d 则是目录;
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符里以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)【4】、 w 代表可写(write)【2】、 x 代表可执行(execute)【1】。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已

Linux 文件属主和属组

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

通常使用以下命令来修改文件或目录的所属用户与权限:
· chgrp (change group) : 修改文件属组。
· chown (change ownerp) : 修改所属用户与组。
· chmod (change mode) : 修改用户的权限。

chgrp [-R] 属组名 文件名chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名chmod [-R] xyz 文件或目录

参数选项 -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
例子1:进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

例子2:将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

例子3:将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc                //查看权限
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc                //修改权限
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

例子4:将文件权限设置为 -rwxr-xr–

[root@www ~]# ls -al test1                  // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
[root@www ~]# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
[root@www ~]# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
文件默认权限:umask

当创建一个新的文件或目录时,它都有默认权限。而默认权限与umask有关。
umask 就是指定 『目前使用者在创建文件或目录时候的权限默认值』

[root@www ~]# umask                             //输入命令得知默认权限
0022             <==与一般权限有关的是后面三个数字,第一个是特殊权限
[root@www ~]# umask -S
u=rwx,g=rx,o=rx
//查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限

在默认权限的属性上,目录与文件是不一样的。默认的情况下:

若使用者创建为『文件』则默认『没有可运行( x )权限』,即只有 rw 这两个项目 ,默认权限如下:
-rw-rw-rw-      ( 666)
若使用者创建为『目录』,则由於 x 与是否可以进入此目录有关,因此默认为所有权限均开放,,默认权限如下:
drwxrwxrwx      (777)

umask 的分数指的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 ,也就是说,当要拿掉能写的权限,就是输入 2 ,而如果要拿掉能读的权限,也就是 4 ,那么要拿掉读与写的权限,也就是 6 ,而要拿掉运行与写入的权限,也就是 3 分。

例1:umask权限为002时

[root@www ~]# umask
0022
[root@www ~]# touch test1
[root@www ~]# mkdir test2
[root@www ~]# ll
-rw-r--r-- 1 root root     0 Sep 27 00:25 test1
drwxr-xr-x 2 root root  4096 Sep 27 00:25 test2

配置 umask ,直接在 umask 后面输入 对应的三个数字

[root@www ~]# umask 002
[root@www ~]# touch test3
[root@www ~]# mkdir test4
[root@www ~]# ll
-rw-rw-r-- 1 root root     0 Sep 27 00:36 test3
drwxrwxr-x 2 root root  4096 Sep 27 00:36 test4

Linux 文件与目录管理

绝对路径与相对路径

  • 绝对路径:路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。
cd命令使用(进入目录)

例子1:进入系统根目录 cd /

[root@localhost ~]# cd /

例子2:返回上层目录 cd … 或者 cd … //;返回上上一层cd …/…//

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ..
[root@localhost opt]# cd ..//
[root@localhost /]# pwd
/
[root@localhost /]# cd /opt/soft
[root@localhost soft]# cd ../.. //
[root@localhost /]# pwd
/

跳转到指定目录,从根目录开始,目录名称前加 / ,当前目录内的子目录直接写名称即可
例3:使用 cd 命令进入当前用户主目录 cd 或者cd ~

[root@localhost soft]# cd
[root@localhost soft]# cd ~

例4:返回进入此目录之前所在的目录 cd -

[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd -
/root
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd -
/opt/soft
[root@localhost soft]#
ls 命令使用(列表)

除了一般的ls、ls -l 、 ls -a用法外,再记录一个列出文件的绝对路径,命令:ls | sed “s#^#pwd/#”

#使用ls 先列出文件,然后通过sed 命令定义:为标签

[root@localhost opt]# ls | sed "s:^:`pwd`/:"
/opt/log
/opt/script
/opt/soft
文件颜色含义:
绿色--->代表可执行文件
红色--->代表压缩文件
深蓝色–->代表目录
浅蓝色--->代表链接文件
灰色--->代表其它的一些文件

ls 的三个主要的变动时间:
modification time (mtime):

当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限

status time (ctime):

当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间

access time (atime):

当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config , 就会升级该文件的 atime
[root@www ~]# ls -l /etc/man.config                     //【默认mtime】
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config                //文件内容被修改
[root@www ~]# ls -l --time=atime /etc/man.config
-rw-r--r-- 1 root root 4617 Sep 25 17:54 /etc/man.config                //文件被使用
[root@www ~]# ls -l --time=ctime /etc/man.config
-rw-r--r-- 1 root root 4617 Sep  4 18:03 /etc/man.config                //文件权限属性被修改
pwd命令使用(显示路径)

例子1:单纯显示出目前的工作目录:

[root@www ~]# pwd
/root

例子2:实例显示出实际的工作目录,而非连结档本身的目录名而已。

[root@www ~]# cd /var/mail      //  注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail         //  列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail   //    加上 -P :显示出确实的路径,而非使用连结 (link) 路径
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
因为 /var/mail 是连结档,连结到 /var/spool/mail 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir命令使用(创建目录)

例子1:创建目录

[root@www ~]# cd /tmp
[root@www tmp]# mkdir test     // 创建一名为 test 的新目录
[root@www tmp]# mkdir -p test1/test2/test3/test4    //加了 -p,才能够创建多层目录

例子2:创建权限为 rwx–x--x 的目录

[root@www tmp]# mkdir -m 711 test2      //-m :直接配置文件的权限
[root@www tmp]# ls -l
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

例子3:创建新目录都显示信息

[root@localhost test]# mkdir -v test4
mkdir: 已创建目录 “test4”
[root@localhost test]# mkdir -vp test5/test5-1
mkdir: 已创建目录 “test5”
mkdir: 已创建目录 “test5/test5-1”

例子4:一个命令创建项目的目录结构

[root@localhost test]# mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
mkdir: 已创建目录 “scf”
mkdir: 已创建目录 “scf/lib”
mkdir: 已创建目录 “scf/bin”
mkdir: 已创建目录 “scf/doc”
mkdir: 已创建目录 “scf/doc/info”
mkdir: 已创建目录 “scf/doc/product”
mkdir: 已创建目录 “scf/logs”
mkdir: 已创建目录 “scf/logs/info”
mkdir: 已创建目录 “scf/logs/product”
mkdir: 已创建目录 “scf/service”
mkdir: 已创建目录 “scf/service/deploy”
mkdir: 已创建目录 “scf/service/deploy/info”
mkdir: 已创建目录 “scf/service/deploy/product”
[root@localhost test]# tree scf/
scf/
|-- bin
|-- doc
|   |-- info
|   `-- product
|-- lib
|-- logs
|   |-- info
|   `-- product
`-- service`-- deploy|-- info`-- product
12 directories, 0 files
[root@localhost test]#
rmdir命令使用(删除目录)

例子1:删除 runoob 目录

[root@www tmp]# rmdir runoob/

例子2:删除多层空目录

[root@www tmp]# rmdir -p test1/test2/test3          //使用 -p 参数
rm命令使用(删除文件)

例子1:删除文件file,系统会先询问是否删除

root@localhost test1]# rm my.log    //不使用参数
rm:是否删除 一般文件 “my.log”? y //输入y后就会删除文件,不想删除则数入n
root@localhost test1]#

例子2:强行删除file,系统不再提示

[root@localhost test1]# rm -f log1.log      //使用 -f参数

例子3:删除任何.log文件;删除前逐一询问确认

[root@localhost test1]# ll
-rw-r--r-- 1 root root 11 10-26 14:45 log1.log
-rw-r--r-- 1 root root 24 10-26 14:45 log2.log
[root@localhost test1]# rm -i *.log            //使用 -i参数
rm:是否删除 一般文件 “log1.log”? y           //依次询问
rm:是否删除 一般文件 “log2.log”? y

例子4:将 test1子目录及子目录中所有档案删除

[root@localhost test]# ll
总计 2
drwxr-xr-x 2 root root 4096 10-26 14:51 test1
[root@localhost test]# rm -r test1         //使用参数 -r,若使用-rf 则删除时不会询问
rm:是否进入目录 “test1”? y                 //依次询问
rm:是否删除 一般文件 “test1/log3.log”? y
rm:是否删除 目录 “test1”? y
cp命令使用(复制)
-a, -archive :相当于同时指定 -dpR这三个选项,用于复刻整个目录。包括目录中的子目录等都递归的复制,而且还会保持文件的访问模式,所有者,时间等属性与原文件一致(常用)-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);-r:递归持续复制,用於目录的复制行为;(常用)

例子1:复制单个文件到目标目录

[root@localhost test]# cp log.log test5     //cp + 源  + 目的地
cp:是否覆盖“test5/log.log”? y                //如果目标文件存在,会询问是否覆盖,不存在时就直接覆盖
[root@localhost test]# ll
-rw-r--r-- 1 root root    0 10-28 14:48 log.log
drwxr-xr-x 2 root root 4096 10-28 14:53 test5
[root@localhost test]# cd test5
[root@localhost test5]# ll
-rw-r--r-- 1 root root 0 10-28 14:53 log.log

例子2:复制整个目录

>>>>目标目录存在时:
[root@localhost test]# cp -a test3 test5
[root@localhost test]# ll
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
[root@localhost test]# cd test5/
[root@localhost test5]# ll
-rw-r--r-- 1 root root    0 10-28 14:48 log.log
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
>>>>目标目录不存在是:
[root@localhost test]# cp -a test3 test4
[root@localhost test]# ll
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
mv命令使用(移动或更名)
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!-u :若目标文件已经存在,且 source 比较新,才会升级 (update)

例子1:移动文件到某个目录下

[root@www tmp]# mv  file.txt   mvtest

例子2:更改名称

[root@www tmp]# mv mvtest mvtest2//目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
diff 和 patch 命令的使用

Linux diff命令用于比较文件的差异。
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

格式:diff [option] oldfile newfile
-r 对目录进行递归处理
-u 输出统一格式,虽说统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位
-N 补丁中包含整个新文件
-a 补丁中包含二进制文件

Linux patch命令用于修补文件。
patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。

格式:patch [参数][原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]
-e或--ed  把修补数据解译成ed指令可用的叙述文件。
-p<剥离层级>或--strip=<剥离层级>  设置欲剥离几层路径名称。
-R或--reverse  假设修补数据是由新旧文件交换位置而产生。

例子:使用diff生成patch并用patch进行修改
假设当前目录结构如下:(一般都是复制原来的进行修改以便生成diff或patch)

demo
| -- old
|    -- a
|        -- b
|           -- foo.txt (里面内容为oldline)
|-- new
|   -- a
|       -- b
|           -- foo.txt (里面内容为newline)

在old和new两个目录都在当前目录下,下面就可以使用diff命令了,不要使用绝对路径,而应该使用相对路径

rad076@xx:~/xx #   diff -Naur old new > foo.patch     //若在意字符集、时差,前面可加上LC_ALL=C TZ=UTC0环境变量

其中-Naur参数属于固定用法,大多数时候,在使用diff命令时搭配这个参数就可以

rad076@xx:~/xx # cat foo.patch              //大概浏览一下补丁文件,如下所示
diff -Naur old/a/b/foo.txt new/a/b/foo.txt
--- old/a/b/foo.txt     2009-12-07 20:40:07.000000000 +0800
+++ new/a/b/foo.txt     2009-12-07 20:41:51.000000000 +0800
@@ -1,2 +1,2 @@
-old_line_1
-old_line_2
+new_line_1
+new_line_2
/*一般来说,减号后面是源文件,加号后面修改的新内容*/

此时的文件目录结构大概如下所示:

demo
|-- old
|   `-- a
|       `-- b
|           `-- foo.txt
|-- new
|   `-- a
|       `-- b
|           `-- foo.txt
-- foo.patch            //多了一个patch,注意跟old,new并列

下面使用patch来应用补丁,要注意的是当前目录是demo,试试命令:

rad076@xx:~/xx # patch -p0 < foo.patch
patching file old/a/b/foo.txt

这里唯一需要说明的是p0的含义,因为在foo.patch补丁文件里的路径信息是这样的:
— old/a/b/foo.txt
p表示跳过几级目录,因为是在demo目录下使用的patch命令,old目录就在demo目录下,所以不必跳过任何目录,而应该使用old/a/b/foo.txt完整路径,所以此时使用的是p0。

此时如果你再次使用patch命令,系统会问你是否想还原,输入y 还原:

rad076@xx:~/xx # patch -p0 < foo.patch
patching file old/a/b/foo.txt
Reversed (or previously applied) patch detected!  Assume -R? [n] y

我们通过改变一下当前路径,继续了解下对patch的p参数:

rad076@xx:~/xx # cd old
//此时就应该是p1,而不是p0了,引用foo.patch文件的路径也要相对变一下,因为当前目录已经是old了:
rad076@xx:~/xx # patch -p1 < ../foo.patch
patching file a/b/foo.txt//因为此时我们是在old下使用patch命令,和a子目录平级,而补丁文件foo.patch里的路径声明是:
--- old/a/b/foo.txt
也就是说第一个斜线左边的old/部分已经没用了,这就是p1的含义!
//继续往深度变换路径,依次测试使用p2,p3参数:
rad076@xx:~/xx # cd a
rad076@xx:~/xx # patch -p2 < ../../foo.patch
patching file b/foo.txtrad076@xx:~/xx # cd b
rad076@xx:~/xx # patch -p3 < ../../../foo.patch         //在本例中,p3已经是最深目录了,此时可以省略 -p3
patching file foo.txt

linux文件内容查询提取

cat命令使用(小文件内容连续显示)

cat 是 Concatenate (连续)的简写, 主要的功能是将一个文件的内容连续的印出在萤幕上面,一般用 -n

-A  :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E  :将结尾的断行字节 $ 显示出来;
-n  :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T  :将 [tab] 按键以 ^I 显示出来;
-v  :列出一些看不出来的特殊字符

例1:将 /etc/xinetd.conf 的内容完整的显示出来(包含特殊字节)

[root@www ~]# cat -A /etc/xinetd.conf       //使用了[tab]键后会以 ^I 表示,断行字节则是以 $ 表示,
#$
....(中间省略)....
$
defaults$
{$
....(中间省略)....
^Ilog_type^I= SYSLOG daemon info $
^Ilog_on_failure^I= HOST$
^Ilog_on_success^I= PID HOST DURATION EXIT$
....(中间省略)....
includedir /etc/xinetd.d$$
tac命令使用 (反向列示)

例1:将etc目录下的issue

[root@www ~]# tac /etc/issueKernel \r on an \m
CentOS release 5.3 (Final)#是由最后一行先显示喔!//cat 是由『第一行到最后一行连续显示在萤幕上』,而 tac 则是『 由最后一行到第一行反向在萤幕上显示出来 』
nl命令使用 (添加行号列印)
[root@www ~]# nl [-bnw] 文件
-b  :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
-n  :列出行号表示的方法,主要有三种:-n ln :行号在萤幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w  :行号栏位的占用的位数。

例1:用 nl 列出 /etc/issue 的内容

[root@www ~]# nl /etc/issue1  CentOS release 5.3 (Final)2  Kernel \r on an \m                       # 注意看,这个文件其实有三行,第三行为空白(没有任何字节),[root@www ~]# nl -b a /etc/issue1  CentOS release 5.3 (Final)2  Kernel \r on an \m3                                                            # 加上参数 -b 显示空白行[root@www ~]# nl -b a -n rz /etc/issue
000001  CentOS release 5.3 (Final)
000002  Kernel \r on an \m
000003                                                  # 自动在自己栏位的地方补上 0 了,默认栏位是六位数[root@www ~]# nl -b a -n rz -w 3 /etc/issue
001     CentOS release 5.3 (Final)
002     Kernel \r on an \m
003                                                             # 默认栏位变成仅有 3 位数
more命令使用 (一页一页翻动)
[root@www ~]# more /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d
....(中间省略)....
--More--(28%)  <== 重点在这一行,你的光标也会在这里等待你的命令

如果 more 后面接的文件内容行数大於萤幕输出的行数时,页面的最后一行会显示出目前显示的百分比, 而且还可以在最后一行输入一些有用的命令:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

举例来说,我们使用『 more /etc/man.config 』来观察该文件, 若想要在文件内搜寻 MANPATH 这个字串时,可以这样做:

[root@www ~]# more /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中间省略)..../MANPATH   <== 输入了 / 之后,光标就会自动跑到最底下一行等待输入

输入了 / 之后,光标就会跑到最底下一行,并且等待你的输入, 你输入了字串并按下回车之后, more 就会开始向下搜寻该字串,而重复搜寻同一个字串, 可以直接按下 n 。退出时就按下 q 即可离开 more。

less (一页一页翻动)
[root@www ~]# less /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中间省略)....:   <== 这里可以等待你输入命令!

在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。基本上,可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;

head和tail
touch命令使用(创建空文件和修订)
-a  :仅修订 access time;
-c  :仅修改文件的时间,若该文件不存在则不创建新文件;
-d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m  :仅修改 mtime ;
-t  :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

例1:新建一个空的文件并观察时间

[root@www ~]# cd /tmp
[root@www tmp]# touch testtouch
[root@www tmp]# ls -l testtouch
-rw-r--r-- 1 root root 0 Sep 25 21:09 testtouch
# 注意到,这个文件的大小是 0 !在默认情况下,如果 touch 后面有接文件, 则该文件的三个时间 (atime/ctime/mtime) 都会升级为目前的时间
# 若该文件不存在,则会主动的创建一个新的空的文件喔!例如上面这个例子

例2:将 ~/.bashrc 复制成为 bashrc,假设复制完全的属性,检查其日期

[root@www tmp]# cp -a ~/.bashrc bashrc
[root@www tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Jan  6  2007 bashrc  <==这是 mtime
-rw-r--r-- 1 root root 176 Sep 25 21:11 bashrc  <==这是 atime
-rw-r--r-- 1 root root 176 Sep 25 21:12 bashrc  <==这是 ctime
//这里的『ll』被等于『ls -l』,至於分号『 ; 』则代表连续命令的下达。在一行命令当中写入多重命令后, 这些命令可以『依序』运行。

观看运行的结果当中,我们可以发现数据的内容与属性是被复制过来的,因此文件内容时间(mtime)与原本文件相同。 但是由於这个文件是刚刚被创建的,因此ctime和atime就是当前时间了! 那如果你想要变更这个文件的时间呢?可以这样做:

例3:修改案例二的 bashrc 文件,将日期调整为两天前

[root@www tmp]# touch -d "2 days ago" bashrc
[root@www tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Sep 23 21:23 bashrc
-rw-r--r-- 1 root root 176 Sep 23 21:23 bashrc
-rw-r--r-- 1 root root 176 Sep 25 21:23 bashrc              //ctime 并没有跟著改变

例4:将上个范例的 bashrc 日期改为 2007/09/15 2:02

[root@www tmp]# touch -t 0709150202 bashrc
[root@www tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Sep 15  2007 bashrc
-rw-r--r-- 1 root root 176 Sep 15  2007 bashrc
-rw-r--r-- 1 root root 176 Sep 25 21:25 bashrc              //ctime 并没有跟著改变

透过 touch 这个命令,我们可以轻易的修订文件的日期与时间。并且也可以创建一个空的文件

linux文件和命令的搜寻

which命令使用(命令档名的搜寻)

which 根据『PATH』这个环境变量所规范的路径,去搜寻『运行命令』。 所以,重点是找出『运行档』,且 which 后面接的是『完整档名』

[root@www ~]# which [-a] command
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

例1:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名

[root@www ~]# which ifconfig
/sbin/ifconfig            <==用 root 可以找到正确的运行档名喔!
[root@www ~]# su - vbird   <==切换身份成为 vbird 去
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/vbird/bin)         //  一般身份帐号找不到
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!
# 因此,不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的 PATH 中,找不到也是理所当然的

例2:用 which 去找出 which 的档名为何?

[root@www ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot '/usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!

例3:请找出 cd 这个命令的完整档名

[root@www ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

因为cd这个命令是根据『PATH』这个环境变量所规范的路径,去搜寻『运行档』的档名。 cd 是『bash 内建的命令』 ,which 默认是找 PATH 内所规范的目录。

whereis,locate,find(文件档名的搜寻)

在 Linux 底下也有相当优异的搜寻命令呦!通常 find因为速度慢而不常用。通常我们都是先使用 whereis 或者是 locate 来检查,因为 whereis 与 locate 是利用数据库来搜寻数据,而且并没有实际的搜寻硬盘, 比较快。如果真的找不到了,才以 find 来搜寻

whereis (寻找特定文件)
[root@www ~]# whereis [-bmsu] 文件或目录名
-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

例1:请用不同的身份找出 ifconfig 这个档名

[root@www ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~]# su - vbird        <==切换身份成为 vbird
[vbird@www ~]$ whereis ifconfig <==找到同样的结果喔!
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
# 注意看,明明 which 一般使用者找不到的 ifconfig 却可以让 whereis 找到!
# 这是因为系统真的有 ifconfig 这个『文件』,但是使用者的 PATH 并没有加入 /sbin

例2:只找出跟 passwd 有关的『说明文件』档名(man page)

[root@www ~]# whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
 whereis 可以加入选项来找寻相关的数据, 例如如果你是要找可运行档( binary )那么加上 -b 就可以啦! 如果不加任何选项的话,那么会将所有的数据列出来
locate
[root@www ~]# locate [-ir] keyword
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

例1:找出系统中所有与 passwd 相关的档名

[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....
locate 的使用是直接在后面输入『文件的部分名称』后,就能够得到结果。 举上面的例子来说,我输入 locate passwd ,那么在完整档名 (包含路径名称) 当中,只要有 passwd 在其中, 就会被显示出来的

因为 Linux 系统会将系统内的所有文件都记录在一个数据库文件里面,而数据库的创建默认是在每天运行一次。有时你还会发现使用这两个运行档时,会找到已经被杀掉的文件! 而且也找不到最新的刚刚创建的文件。因为你可能是在数据库升级之前搜寻该文件,那么whereis,locate 会告诉你『找不到!』
手动升级 locate 数据库的方法非常简单,直接输入『 updatedb 』。 updatedb 命令会去读取 /etc/updatedb.conf 这个配置档的配置,然后再去硬盘里面进行搜寻档名的动作, 最后就升级整个数据库。

updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件.
find 的简单使用(其它暂且不理会)
// 找出档名为 passwd 这个文件
[root@www ~]# find / -name passwd# 利用这个 -name 可以搜寻所有含有 xxx 的文件

linux的权限与命令

一、让使用者能进入某目录成为『可工作目录』的基本权限为何:

可使用的命令:例如 cd 等变换工作目录的命令;
目录所需权限:使用者对这个目录至少需要具有 x 的权限
额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。

二、使用者在某个目录内读取一个文件的基本权限为何?

可使用的命令:例如本章谈到的 cat, more, less等等
目录所需权限:使用者对这个目录至少需要具有 x 权限;
文件所需权限:使用者对文件至少需要具有 r 的权限才行!

三、让使用者可以修改一个文件的基本权限为何?

可使用的命令:例如 nano 或 vi 编辑器等;
目录所需权限:使用者在该文件所在的目录至少要有 x 权限;
文件所需权限:使用者对该文件至少要有 r, w 权限

四、让一个使用者可以创建一个文件的基本权限为何?

目录所需权限:使用者在该目录要具有 w,x 的权限

五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何?

目录所需权限:使用者在该目录至少要有 x 的权限;
文件所需权限:使用者在该文件至少需要有 x 的权限

linux常见压缩打包命令

列出几个常见的压缩文件扩展名吧:
*.Z compress 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩

gzip, zcat

gzip 可以说是应用度最广的压缩命令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至於 gzip 所创建的压缩档为 *.gz 的档名。cat 可以读取纯文字档,那个 zcat 则可以读取纯文字档被压缩后的压缩档

[root@www ~]# gzip [-cdtv#] 档名
[root@www ~]# zcat 档名.gz
选项与参数:
-c  :将压缩的数据输出到萤幕上,可透过数据流重导向来处理;
-d  :解压缩的参数;
-t  :可以用来检验一个压缩档的一致性~看看文件有无错误;
-v  :可以显示出原文件/压缩文件的压缩比等资讯;
-#  :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6例1:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩
[root@www ~]# cd /tmp
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# gzip -v man.config
man.config:      56.1% -- replaced with man.config.gz
[root@www tmp]# ll /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config
-rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z
-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz  <==gzip压缩比较佳# 当你使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的档名, 原始文件就不再存在了。例2:由於 man.config 是文字档,请将范例一的压缩档的内容读出来!
[root@www tmp]# zcat man.config.gz
# 由於 man.config 这个原本的文件是是文字档,因此我们可以尝试使用 zcat  去读取!
# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容例3:将例1的文件解压缩
[root@www tmp]# gzip -d man.config.gz
# 与 gzip 相反, gzip -d 会将原本的 .gz 删除,产生原本的 man.config 文件。
bzip2, bzcat

bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的,bzip2 的用法几乎与 gzip 相同!

[root@www ~]# bzip2 [-cdkzv#] 档名
[root@www ~]# bzcat 档名.bz2
选项与参数:
-c  :将压缩的过程产生的数据输出到萤幕上!
-d  :解压缩的参数
-k  :保留原始文件,而不会删除原始的文件喔!
-z  :压缩的参数
-v  :可以显示出原文件/压缩文件的压缩比等资讯;
-#  :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!例1:将刚刚的 /tmp/man.config 以 bzip2 压缩
[root@www tmp]# bzip2 -z man.config
# 此时 man.config 会变成 man.config.bz2 !例2:将例1的文件内容读出来
[root@www tmp]# bzcat man.config.bz2
# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!例3:将例1的文件解压缩
[root@www tmp]# bzip2 -d man.config.bz2
打包命令:tar

最简单的使用 tar 就只要记忆底下的方式即可:

[root@www ~]#tar -jcv -f filename.tar.bz2  要被压缩的文件或目录名称     # 压 缩
[root@www ~]#tar -jtv -f filename.tar.bz2                            # 查 询
[root@www ~]#tar -jxv -f filename.tar.bz2 -C  欲解压缩的目录            # 解压缩
选项与参数:
-c  :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t  :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x  :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。
-j  :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-z  :透过 gzip  的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-v  :在压缩/解压缩的过程中,将正在处理的档名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗!
-C 目录    :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
那个 filename.tar.bz2 是我们自己取的档名,tar 并不会主动的产生创建的档名
『 -f filename 』尽量与其他选项独立出来,会比较不容易发生问题

参考:鸟哥的linux私房菜

参考:廖雪峰的学习网站

https://www.cnblogs.com/zzb-Dream-90Time/p/7693860.html

https://www.liaoxuefeng.com/

linux 学习 文件与目录相关推荐

  1. Linux学习——Linux常用文件和目录管理命令(超详细)

    Linux常用文件和目录管理命令 JunLeon--go big or go home 前言: Linux系统文件和目录管理是必须学会的命令,在Linux系统目录中/tmp目录是用来存放临时文件的目录 ...

  2. linux我ll查不到usr,Linux学习-文件查寻

    Linux学习---文件查找 grep, egrep, fgrep  :文本查找 文件查找 locate 全系统查找,非实时,模糊匹配.查找时根据全系统文件数据库进行的. 系统在每天的计划任务时间生成 ...

  3. Linux学习——文件权限及文件查找

    Linux学习--文件权限及文件查找 实验内容 实验目的 实验指导 (未完待续) 实验内容 练习Linux文件权限和文件查找命令. 实验目的 了解文件与目录的默认权限与隐藏权限 掌握如何改变文件属性与 ...

  4. Linux的文件和目录管理

    目录 Linux的文件和目录管理 增加文件目录 删除文件目录 查看文件目录 显示文件内容 拷贝移动文件目录 文件目录权限 修改文件目录文件 编写文件 系统结构 查找文件 更多源代码请参考我的[ Git ...

  5. Linux学习教程 | 全文目录

    本教程最大的特点是通俗易懂,并且非常详细,花费 7 天时间即可快速了解 Linux. 第一章 Linux简介 1.1 操作系统是什么,操作系统概述 1.2 Linux是什么,有哪些特点? 1.3 Li ...

  6. linux目录为root所有文件,linux获取文件所有目录/文件夹的例子linux操作系统 -电脑资料...

    下面我给大家整理了两种比较实用的方法,如我们可以使用dirname来获取文件路径或者使用shell命令来获取路径,希望例子对大家有帮助, 方式一:使用" dirname" 去获得( ...

  7. linux rm命令参数及用法详解---linux删除文件或目录命令

    http://www.linuxso.com/command/rm.html linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个 ...

  8. SQL Server on Linux的文件和目录结构

    问题引入 "鸟儿啊,我记得你写过一篇<SQLServer On Linux Package List on CentOS>的文章,从这篇文章,我们很清楚的知道了SQL Serve ...

  9. linux查看文件和目录大小(du)

    From: http://www.2cto.com/os/201210/160665.html linux查看文件和目录大小(du) 起因 工作中或者日常使用ubuntu时候,经常会遇到查看当前系统容 ...

最新文章

  1. hooks 使用dva_Taro3 中使用dva
  2. thinkphp5调用shell脚本_thinkphp5.x全版本任意代码执行getshell
  3. python编程求导数_用python怎么计算导数最简单?
  4. php 批量删除挂马文件夹,万能删除服务器被挂马后删不掉的文件夹
  5. php过滤微信特殊字符方案--》2017新版
  6. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_02.SpringMVC框架的介绍
  7. 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
  8. 安卓系统和安卓服务器地址,给安卓应用配置服务器地址
  9. 【Swift】图片裁剪
  10. Zookeeper的Paxos分布式一致性算法-类比
  11. Java游戏吉他英雄_《吉他英雄》全系列十作美版下载
  12. 蓝桥杯 图形排版
  13. jzy3D安装到弃坑
  14. 大学软件工程总结,总结到位
  15. ios 全屏返回手势
  16. 大数据 MapReduce使用
  17. 计算机组成原理:2. 计算机的发展及应用
  18. 初次来到博客园进行交流学习还请大家多指教!
  19. 按需视觉识别:愿景和初步方案
  20. rc时间常数定义_时间常数τ(tao)=RC和周期T有什么关系?

热门文章

  1. 华农oj Problem J: 幻化【贪心/抽屉原理】
  2. 天地劫服务器维护,天地劫 开服第一天,必坑注意事项
  3. C# 值类型和引用类型的区别
  4. Linux 几种典型的网络共享方式
  5. hdmi接口有什么用_【科普】你的电脑为什么没有HDMI接口?
  6. 史上最强干货来袭!Spring容器如何解决循环依赖的原理,真香
  7. QPrinter设置页面边距setPageMargins不生效问题
  8. MySQL tips
  9. 歌词时间php,熊梓崴《时间》歌词-时间Mp3歌词下载_爱歌词网
  10. PS文字特效:设计蓝色质感光滑的塑料水晶字