文章目录
一、系统目录结构
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。
文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 … 来表示。
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
1、系统启动文件
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
/lib:存放基本代码库(比如c++库),其作用类似于Windows 里的DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6 内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
2、指令集合
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
/bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户)
/sbin, /usr/sbin 则是给 root 使用的指令。
3、外部文件管理
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
4、临时文件
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。
5、账户
/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/src:内核源代码默认的放置目录。
6、运行过程文件
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间。虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
7、扩展目录
/opt:默认是空的,我们安装额外软件可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)。
二、文件与目录操作
ls: 列出目录及文件名
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来
-d :仅列出目录本身,而不是列出目录内的文件数据
-l :长数据串列出,包含文件的属性与权限等等数据
cd:切换目录
cd [相对路径或绝对路径]
绝对路径:路径的写法由根目录 / 写起,例如:/usr/share/doc 。
相对路径:路径的写法不是由 / 写起,例如由/usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 。
pwd:显示目前的目录
选项与参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。
mkdir:创建一个新的目录
mkdir [-mp] 目录名称
选项与参数:
-m :直接配置文件的权限
-p :直接将所需要的目录(包含上一级目录)递归创建起来
rmdir:删除一个空的目录
rmdir [-p] 目录名称
cp: 复制文件或目录
cp [-adfilprsu] 来源 目标
cp ~/.bashrc /tmp/bashrc #将~/.bashrc 复制到/tmp 下,并命名为bashrc
常用选项与参数:
-a:相当于-pdr
-p:连同文件的属性一起复制过去,而非使用默认属性
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身
-r:递归持续复制,用于目录的复制行为
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行
rm: 删除文件或目录
rm [-fir] 文件或目录
选项与参数:
-f :force 的意思,忽略不存在的文件,不会出现警告信息
-i :互动模式,在删除前会询问使用者是否动作,建议添加
-r :递归删除。这是非常危险的选项,慎用!
mv: 移动文件与目录,或修改文件与目录的名称
cp ~/.bashrc bashrc # 复制.bashrc 文件,命名为bashrc
mkdir mvtest # 创建目录mvtest
mv bashrc mvtest # 将文件bashrc移动到目录mvtest中
mv mvtest mvtest2 # 重命名目录mvtest为mvtest2
scp: 远程复制文件和目录
scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令,是加密的
使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的
scp [可选参数] file_source file_target
常用选项与参数
-p:保留原文件的修改时间,访问时间和访问权限
-q: 不显示传输进度条
-r: 递归复制整个目录
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh
-P port:注意是大写的P, port是指定数据传输用到的端口号
#从本地复制到远程
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music # 文件名称不变
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 # 文件重命名
scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ # 复制文件夹
#从远程复制到本地,将从本地复制到远程的命令的后2个参数调换顺序即可
#如果远程服务器防火墙有为scp命令设置了指定的端口,需要使用 -P 参数来设置命令的端口号
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
rz/sz: 文件上传、下载
可以通过这两个命令来实现linux服务器和本地硬盘之间进行数据交换:
rz: 本地windows 上传文件到远端linux
sz: 远端linux 传输文件到本地windows
传输大文件时,可能会超时导致传输中断,常用参数 -bey 避免:
-b: 转化成二进制文件
-e: 强制转义字符
-y: 覆盖源文件
tar: 打包文件及解压缩
一般文件的打包与解压缩是同时进行的,常用gzip压缩,bzip2压缩
常用选项与参数
-c: 打包模式
-x: 解包模式
-f: 要处理的文件
-t或–list: 列出打包文件的内容
-v或–verbose: 显示指令执行过程
-j: 通过bzip2的支持进行压缩/解压缩
-z: 通过gzip的支持进行压缩/解压缩
-C dir: 指定压缩/解压缩的目录dir
# 用tar调用gzip将file1,file2,file3生成压缩包,并解压
tar -czvf file.tar.gz file{1,2,3} # 压缩
tar -xzvf file.tar.gz # 解压
# 用tar调用bzip2将file1,file2,file3生成压缩包,并解压
tar -cjvf file.tar.bz2 file{1,2,3} # 压缩
tar -xjvf file.tar.bz2 # 解压
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
三、文件与目录的属性及权限管理
属性查看
可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组
每个文件的属性由左边第一部分的 10 个字符来确定
第一个字符代表这个文件是目录、文件或链接文件等等。
d 是目录
- 是文件
l 表示为链接文档(link file)
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
chgrp:更改文件属组
chgrp [-R] 属组名 文件名
参数选项
-R:递归更改文件属组,在更改某个目录文件的属组时,加上-R的参数,该目录下的所有文件的属组都会更改。
chown:更改文件所属用户或文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
用数字代表权限的权重,r = 4 ,w = 2 , x = 1
每种身份各自的三个权限分数是需要累加的,例如当权限为: -rwxrwx— 分数则是 770 :
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
用数字变更权限的chmod 语法是:
chmod [-R] xyz 文件或目录 # xyz即数字类型的权限属性,权限最高为777
用符号变更权限:
u, g, o 来代表三种身份的权限user/group/others,a 代表all 全部权限
chmod u=rwx,g=rx,o=r 文件名 # 将文件权限设置为 -rwxr-xr--
chmod a-x 文件名 # 拿掉全部的可执行权限