一.Linux系统中的目录结构
1.根目录 (/)
根目录与开机/还原/系统修复等动作有关。目录不要放在非常大的分区, 因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。
因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 说白了,就是根目录和Windows的C盘一个样。
一下介绍根目录下的子目录
2.bin目录(二进制)
/bin主要用于存放普通用户可以使用的命令。
该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
3.boot目录(引导)
主要用于存放Linux启动所需的文件,包括内核,引导文件等。
该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。
4.dev目录(设备)
/dev: 设备文件目录,存放设备文件。访问该目录下某个文件,相当于访问某个设备存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件,包括字符设备和块设备等,常用的是挂载光驱mount /dev/cdrom/mnt。
5.etc目录
/etc: 存放系统和服务的配置文件。该目录存放系统的大部分配置文件和子目录(例如系统用户密码,网络接口,防火墙和系统服务的配置文件等)。不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11(X Window系统有关)、/etc/sysconfig(与网络有关)、/etc/xinetd.d若要修改其中文件,要遵循先备份后修改的原则。该目录下的文件由系统管理员来使用,普通用户通常仅能只读。
6.home目录
/home: 该目录用于存放普通用户的家目录,用来存放用户的个人文件,系统文件和应用程序的初始化文件等。家目录是用户登录系统后的起始目录。
新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录,~test表示用户test的宿主目录。建议单独分区。
7.lib目录
/lib:用于存放系统及相关软件的依赖的库文件。
系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,该目录下存放了各种编程语言库。典型的linux系统包含了C、C++和FORTRAN语言的库文件。/lib目录下的库映像文件可以用来启动系统并执行一些命令,目录/lib/modules包含了可加载的内核模块,/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。
8.lost+fount目录
/lost+fount:如果系统出现意外或掉电关机,文件系统会损失一些文件或产生一些文件碎片。当系统重新启动时会修复这些文件,并将这些文件放入次目录以便管理员恢复。多数情况下系统会自动修复这些碎片文件,该目录只存在于分区挂载目录中。
9.media,mnt目录
/media:用来挂载一些可移动媒体,例如光驱,U盘。
/mnt主要用来临时挂载一些磁盘设备,为某些设备提供默认挂载点.如floppy,cdrom。这样当挂载了一个设备如光驱时,就可以通过访问目录/mnt/cdrom下的文件来访问相应的光驱上的文件了。
10.opt目录
/opt: 给主机额外安装软件所摆放的目录,也可以将需要编译安装的软件放于此目录。如:如果想要自行安装某软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。
11.proc目录(process)
/proc: 系统运行时将相关的暂存信息放在此目录。此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
12、root目录(根)
/root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
13.sbin目录
存放一些系统管理命令。一般情况下普通用户不能执行这些命令。
/sbin,/usr/sbin,/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。
与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
14.srv目录(serve服务)
/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
15.usr目录
存放一些应用程序,帮助和文档,有时也存放一些配置文件和程序等。
/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容。建议单独分区,设置较大的磁盘空间。
16.var目录
放置系统执行过程中经常变化的文件,例如日志文件,数据库文件,和web服务器程序文件等。
随时更改的日志文件 /var/log。/var/log/message: 所有的登录文件存放目录。/var/spool/mail: 邮件存放的目录。 /var/run: 程序或服务启动后。建议单独分区,设置较大的磁盘空间。
17.tmp目录(temporary 临时)
存放系统或进程在运行时产生的临时文件,用户也可以在此存放自己的临时文件。
tmp目录保存的临时文件对所有用户可见,因此此目录的文件可能回泄露并造成一些安全问题。
该目录下的所有文件会被定时删除,且任何人都可以访问,重要数据不可放置在此目录下。10天内未访问,未更改的文件讲自动被删除。以避免临时文件占满整个磁盘。/var/tmp,30内未访问,未更改的文件讲自动被删除。
注意:
在没有确认修改文件内容安全之前,不要随意修改目录proc中的任何文件,否则会造成系统崩溃。
/etc,该目录下的文件由系统管理员来使用,普通用户通常仅能只读。
/tmp,保存的临时文件对所有用户可见,且所有文件会被定时删除,因此重要数据不可放置在此目录下。
二.Linux基本命令
1.切换工作目录命令cd
Linux cd命令用于切换当前工作目录至 dirName(目录参数)。
其中 dirName 表示法可为绝对路径(以/开头的)或相对路径(以“ .”或者“../”开头的)。若目录名称省略,则变换至使用者的 home 目录。
另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
#查看当前路径
lkw@lkw-PC:~$ pwd
/home/lkw
#查看上级目录
lkw@lkw-PC:~$ cd ../
lkw@lkw-PC:/home$ pwd
/home
lkw@lkw-PC:/home$ cd /var/log
lkw@lkw-PC:/var/log$
#快速返回家目录
lkw@lkw-PC:/var/log$ cd ~
lkw@lkw-PC:~$ pwd
/home/lkw
#cd参数为空,也是返回家目录,与~相同
lkw@lkw-PC:~$ cd /var/log
lkw@lkw-PC:/var/log$ cd
lkw@lkw-PC:~$ pwd
/home/lkw
目录文件有r x 权限时,可以cd进入一个目录并可以通过ls命令查清该目录文件包含有什么文件。
目录文件有r无x权限时,可以cd不进入一个目录
目录文件有x无r权限时,可以cd进入一个目录但不可以通过ls命令查清该目录文件包含有什么文件。
2.查看当前路径命令pwd
3.查看文件列表命令ls
Linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录),还可以查看文件的详细信息,例如查看文件的权限,大小,所有者等。
参数:
- -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
- -r 将文件以相反次序显示(原定依英文字母次序)
- -t 将文件依建立时间之先后次序列出
- -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
- -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
- -R 若目录下有文件,则以下之文件亦皆依序列出
#查看当前目录下的文件列表
lkw@lkw-PC:~$ ls
1 bf2.c Desktop FF.c phi rw sy33 sy4 Templates 新建文本.txt
3 bf.c Documents FF.cpp phi.c rw.c sy333 sy44 Videos
3.c bff.c Downloads gd phiq screen shot sy333.c sy44.c wf
bf cc eclipse-workspace gd.c phiq.c sy2 sy33.c sy4.c wf.c
bf2 Code FF Music Pictures sy2.c sy3.c synopsis?:q wfz.c
#文件详细信息
lkw@lkw-PC:~$ ls -l
总用量 384
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rwxr-xr-x 1 lkw lkw 8784 4月 4 2018 3
-rw-r--r-- 1 lkw lkw 1508 4月 4 2018 3.c
-rwxr-xr-x 1 lkw lkw 18064 5月 10 17:06 bf
-rwxr-xr-x 1 lkw lkw 18064 5月 10 17:08 bf2
-rw-r--r-- 1 lkw lkw 10960 5月 10 17:08 bf2.c
-rw-r--r-- 1 lkw lkw 11178 5月 10 16:45 bf.c
-rw-r--r-- 1 lkw lkw 11219 5月 10 16:23 bff.c
-rw-r--r-- 1 lkw lkw 0 3月 29 2018 cc
drwxr-xr-x 4 lkw lkw 4096 4月 4 2018 Code
drwxr-xr-x 3 lkw lkw 4096 5月 24 17:00 Desktop
drwxr-xr-x 4 lkw lkw 4096 3月 20 2018 Documents
drwxr-xr-x 2 lkw lkw 4096 4月 4 2018 Downloads
drwxr-xr-x 5 lkw lkw 4096 3月 28 2018 eclipse-workspace
-rwxr-xr-x 1 lkw lkw 13144 5月 10 17:06 FF
-rw-r--r-- 1 lkw lkw 6186 5月 3 17:27 FF.c
-rw-r--r-- 1 lkw lkw 0 5月 3 16:51 FF.cpp
-rwxr-xr-x 1 lkw lkw 9192 4月 9 2018 gd
-rw-r--r-- 1 lkw lkw 1187 4月 9 2018 gd.c
.....
- 第一个字段第一个字符描述文件类型。“ - ” 代表普通文件,” d “代表一个目录,” l “链接文件,” b “块设备文件,”c“字符设备文件,” p “管道文件。
- 文件的连接数
- 文件的属主
- 文件的属组
- 文件的大小(默认单位为字节)
- 文件创建的时间
- 文件及目录名
绿色表示可执行文件,蓝色表示目录;
#参数为目录,查看目录中所有文件
kw@lkw-PC:~$ ls -l /usr
总用量 84
drwxr-xr-x 2 root root 40960 4月 4 2018 bin
drwxr-xr-x 2 root root 4096 3月 17 2018 games
drwxr-xr-x 55 root root 4096 3月 20 2018 include
drwxr-xr-x 116 root root 4096 3月 28 2018 lib
drwxrwsr-x 10 root staff 4096 3月 10 2018 local
drwxr-xr-x 2 root root 12288 3月 20 2018 sbin
drwxr-xr-x 234 root root 12288 4月 4 2018 share
drwxr-xr-x 6 root root 4096 3月 10 2018 src
#参数为目录,用d查看目录
lkw@lkw-PC:~$ ls -ld /usr
drwxr-xr-x 10 root root 4096 3月 10 2018 /usr
#隐藏文件都以点号”.“开头,默认情况下ls不显示隐藏文件,用a显示查看
lkw@lkw-PC:~$ ls -al
总用量 1028
drwxr-xr-x 32 lkw lkw 4096 10月 16 21:06 .
drwxr-xr-x 4 root root 4096 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swo
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swp
-rw-r--r-- 1 lkw lkw 12288 10月 12 21:01 .1.swp
-rw-r--r-- 1 lkw lkw 12288 3月 18 2018 .2.c.swp
......
#以k字节
lkw@lkw-PC:~$ ls -lak
总用量 1164
drwxr-xr-x 32 lkw lkw 4096 10月 16 21:06 .
drwxr-xr-x 4 root root 4096 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12288 3月 18 2018 .1.c.swo
#以h查看文件大小,k
lkw@lkw-PC:~$ ls -lah
总用量 1.2M
drwxr-xr-x 32 lkw lkw 4.0K 10月 16 21:06 .
drwxr-xr-x 4 root root 4.0K 3月 10 2018 ..
-rw-r--r-- 1 lkw lkw 120 10月 12 20:28 1
-rw------- 1 lkw lkw 12K 3月 18 2018 .1.c.swo
-rw------- 1 lkw lkw 12K 3月 18 2018 .1.c.swp
-rw-r--r-- 1 lkw lkw 12K 10月 12 21:01 .1.swp
-rw-r--r-- 1 lkw lkw 12K 3月 18 2018 .2.c.swp
-rwxr-xr-x 1 lkw lkw 8.6K 4月 4 2018 3
4.文件链接命令ln
Linux文件系统中,有所谓的链接(link)可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接即一个快捷方式。硬链接,是目标文件的副本。无论目标文件存在多少个副本,这些副本都使用同一块存储区域,其中一个副本内容变化则所有副本和目标文件内容都改变。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,是目标文件的副本。无论目标文件存在多少个副本,这些副本都使用同一块存储区域。其中一个副本内容变化则所有副本和目标文件内容都改变。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
命令参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
(1)创建硬链接
默认为硬链接
- -S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
- -V "-V<备份方式>"或"--version-control=<备份方式>"
- --help 显示帮助信息
- --version 显示版本信息
#不使用任何选项时ln会创建一个硬链接文件
#将/home/lkw/1 创建一个硬链接,并命名未lkww
lkw@lkw-PC:~$ ln /home/lkw/1 lkww
#查看建立的硬链接文件
lkw@lkw-PC:~$ ls -l lkww
-rw-r--r-- 2 lkw lkw 120 10月 12 20:28 lkww
(2)创建软链接
创建软链接,需使用s选项
#使用s创建软链接文件
lkw@lkw-PC:~$ ln -s /home/lkw/1 lla
#查看建立的软链接文件,将显示链接的源文件信息
lkw@lkw-PC:~$ ls -l lla
lrwxrwxrwx 1 lkw lkw 11 10月 17 17:17 lla -> /home/lkw/1
链接文件显示为红色,并且以 l 开头。
三.文件操作命令
1.文件命名规则
(1)文件命名规则
遵守以下规则:
- 除了/外,所有的字符都可以;
- 有些字符最好不用,如空格符,制表符,退格符和字符:? @ # $ & () \ | ; ‘’ “ ” <> 等;
- 避免使用+ -或.作为普通文件名的第一个字符(在Linux下以 . 开头的文件是属于隐藏文件);
- 另外和Windows文件命名不一样的是,在Linux下文件名大小写敏感。
(2)文件扩展名
虽然Linux系统下无扩展名的概念,但某些特殊的程序要求文件必须要有正确的扩展名才可使用。例如,gcc编译器要求源码文件必须 .c 结尾。 .conf表示配置文件。 .sh表示一段shell程序。 .log表示日志文件
(3)特殊字符和隐藏文件
. 开头的文件都属于隐藏文件。不建议使用
2.创建文件命令touch
touch命令,若文件不存在,用于创建一个空文件。若存在,用来修改文件或者目录的创建时间,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
#创建一个文件ab
lkw@lkw-PC:~$ touch ab
查询ab信息
lkw@lkw-PC:~$ ls -l ab
-rw-r--r-- 1 lkw lkw 0 10月 17 17:42 ab
#创建文件时,使用选项d指定时间
lkw@lkw-PC:~$ touch -d "8/10/16 18:32" ed
#查询ed文件
lkw@lkw-PC:~$ ls -l ed
-rw-r--r-- 1 lkw lkw 0 8月 10 2016 ed
3.创建目录命令mkdir( directory)
mkdir命令用于建立目录。
#创建一个目录
lkw@lkw-PC:~$ mkdir test
#显示目录 -ld
lkw@lkw-PC:~$ ls -ld test
drwxr-xr-x 2 lkw lkw 4096 10月 17 17:51 test
#多级目录,-p(目录不存在),若存在不加-p
lkw@lkw-PC:~$ mkdir -p a/b/c/d/e
#进入目录
lkw@lkw-PC:~$ cd a/b/c/d/e
#显示当前目录
lkw@lkw-PC:~/a/b/c/d/e$ pwd
/home/lkw/a/b/c/d/e
4.移动,重命名文件命令mv
mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
参数说明:
- -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
- -f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
#创建文件a
lkw@lkw-PC:~$ touch a
#把文件a移到test目录下
lkw@lkw-PC:~$ mv a test/
lkw@lkw-PC:~$ ls -l test
总用量 0
-rw-r--r-- 1 lkw lkw 0 10月 17 18:00 a
#创建文件b c d
lkw@lkw-PC:~$ touch b c d
#批量移植
lkw@lkw-PC:~$ mv b c d test/
lkw@lkw-PC:~$ ls -l test
总用量 0
-rw-r--r-- 1 lkw lkw 0 10月 17 18:00 a
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 b
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 c
-rw-r--r-- 1 lkw lkw 0 10月 17 18:01 d
#重命名文件或目录
lkw@lkw-PC:~$ mv test test1
lkw@lkw-PC:~$ ls
1 bf2 Desktop FF.c phi rw.c sy333.c sy4.c wf
3 bf2.c Documents FF.cpp phi.c screen shot sy33.c synopsis?:q wf.c
3.c bf.c Downloads gd phiq sy2 sy3.c task wfz.c
aa bff.c eclipse-workspace gd.c phiq.c sy2.c sy4 Templates 新建文本.txt
ab cc ed lla Pictures sy33 sy44 test1
bf Code FF Music rw sy333 sy44.c Videos
5.复制文件命令cp(copy)
cp命令主要用于复制文件或目录。
参数说明:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
#创建目录
lkw@lkw-PC:~$ mkdir file
lkw@lkw-PC:~$ mkdir test
#复制目录。使用R递归复制目录及目录中的文件
lkw@lkw-PC:~$ cp -R test file/
#用p复制时保留权限
lkw@lkw-PC:~$ cp -p a b
lkw@lkw-PC:~$ ls -l a b
-rw-r--r-- 1 lkw lkw 0 10月 17 20:36 a
-rw-r--r-- 1 lkw lkw 0 10月 17 20:36 b
6.删除文件命令rm
7.删除空目录命令rmdir
#创建b文件夹
lkw@lkw-PC:~$ mkdir b
lkw@lkw-PC:~$ ls -l
总用量 28
-rw-r--r-- 1 lkw lkw 0 10月 17 21:02 a
drwxr-xr-x 2 lkw lkw 4096 10月 17 21:03 b
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Desktop
drwxr-xr-x 3 lkw lkw 4096 10月 17 20:55 Documents
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Downloads
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Music
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Pictures
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Videos
#删除空文件夹b
lkw@lkw-PC:~$ rmdir b
lkw@lkw-PC:~$ ls -l
总用量 24
-rw-r--r-- 1 lkw lkw 0 10月 17 21:02 a
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Desktop
drwxr-xr-x 3 lkw lkw 4096 10月 17 20:55 Documents
drwxr-xr-x 2 lkw lkw 4096 10月 17 20:54 Downloads
#p创建一个路径上的目录
lkw@lkw-PC:~$ mkdir -p b/c/d
lkw@lkw-PC:~$ ls -l b
总用量 4
drwxr-xr-x 3 lkw lkw 4096 10月 17 21:04 c
#-p删除一个路径上的目录
lkw@lkw-PC:~$ rmdir -p b/c/d
lkw@lkw-PC:~$ ls -l b
ls: 无法访问'b': 没有那个文件或目录
8.查看文件类型命令file