学习资源来自:www.magedu.com
学习记录过程中难免出现错误,如有发现,还望大神们指出。
先导:
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
file:用来检查文件类型
示例:file /root
可执行二进制文件的存储格式:
Windows:PE
Linux:ELF
文件系统:
文件系统是内核的主要功能之一,用于管理本机某一个分区上的文件,一般文件系统对于磁盘来说是以
分区为单位进行交互的,在整个系统上,所有的文件系统都必须同属于整个系统级别的根目录下(root).
整个文件系统分为目录和文件,除了目录就是文件,所有的文件都存储在目录中,所有的文件都能通过目录
查找到。
rootfs:根文件系统。对于Linux系统而言,每一个文件都是根文件系统下的某一个路径,需要通过根文件系
统才能访问。
FHS:文件系统层级标准,规定Linux发行版应该创建一些目录用于存储特定的文件,所以无论redhat、suse
还是debian基本上都会有一些相同的目录,而且目录中的文件也都近似。
文件管理:
文件命名规则:
1、文件名长度不能超过255个字符;
2、不能使用“/”当文件名
其一、“/”是用来当根目录使用的,
其二、“/”在整个路径中作为路径分隔符
3、严格区分大小写
路径:
相对路径:相对于当前位置作为起始位置的文件查找路径。
绝对路径:由根目录开始的文件查找路径。
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
根目录结构:ls /(查看整个文件系统上根目录下的所有第一级子目录。)
/boot:存放系统启动相关文件,
如(initrd-redhat5)|(ramfs-redhat6)、vmlinuz
(这两个文件是操作系统启动时主要用到的内核以及暂时性的小型linux)
以及grub(bootloader)―― 引导加载器
/dev(device):设备文件 ―― linux重要思想:一切皆文件
一个设备需要有设备文件才能被linux所访问
设备文件类型:
块设备:可以实现随机访问的设备,按数据块为单位。
线性设备:实现线性访问,按字符为单位 ―― 鼠标,显示器
设备号:主设备号(major)和次设备号(minor)
/etc(etcetera):配置文件(系统上大多数程序的配置文件)存放的位置。
/home:存放用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:管理员的家目录(不建议使用root用户直接登录)
/lib:存放库文件(库不是可执行文件――没有执行入口,不能单独执行)
静态库:.a ―― 程序直接包含库文件,便于程序单个文件管理
动态库:.so(shared object)
(程序和库文件是独立的,多个程序可以使用同一个库文件,有利于减少内存的占用。)
/lib/modules:内核模块文件
/media:挂载点目录 ,移动设备,比如:U盘、光盘等。
/mnt(mount):挂载点目录 ,额外的临时文件,比如:第二块硬盘
挂载:把某个设备跟当前文件系统上的某个目录建立关联的过程
/misc(miscellaneous):杂项
/opt:可选目录,早期的第三方程序安装目录
/proc(与调优以及系统性能数据的监控有关):伪文件系统(存放内核的映射文件),大多数文件都是内核
中的可调参数或内核的工作统计数据。例如:网卡接收和发送了多少个数据包的统计数据。
/sys(调优――修改磁盘调度队列):伪文件系统(存放跟硬件设备相关的属性映射),通常用于实现硬件设备
的管理,尤其是像硬盘这样的存储设备。
伪文件系统:关机后目录是空的,开机后目录里就会有映射文件。
/tmp(temporary):临时文件系统,存放公共的、可以被其他用户查看到的临时文件,每隔一个月自动清理。
每个人都可以在里面创建文件,但每个人只能删除自己的文件,不能删除别人的文件。
/var:可变化的文件,例如:缓存、锁文件、日志文件、用户邮件的转存位置……
/var/tmp:临时文件系统
/bin(binary):可执行文件,所有的命令都在这个路径下――用户命令
/sbin:管理命令
/usr(universal shared read-only):全局的共享的只读文件,存放只读文件
/usr/bin
/usr/sbin
/usr/lib
/usr/local(并不是必须的):第三方软件的安装路径
/usr/local/bin
/usr/local/sbin
/usr/local/lib
目录管理:列出目录内容、显示目录、切换目录、创建目录、删除目录
ls:列出当前目录内容
cd:切换目录
pwd:显示当前目录
mkdir:创建空目录 /root/x/y/z ―― 创建的新目录是z
-p:自动补充缺失的父目录
-v(verbose):详细信息 ―― mkdir -pv /root/m/n/q
tree:查看目录树
示例:ls
mkdir x ―― 创建目录x
ls
mkdir x/y ―― 在目录x下创建目录y
mkdir x/y/z
tree x ―― 查看目录x的目录树
在同一目录下同时创建多个目录
mkdir -pv /mnt/test/x/m /mnt/test/y
||
mkdir -pv /mnt/test/{x/m,y} ―― 花括号展开(命令行展开)
在/mnt/test2/下创建目录a_b,a_c,d_b,d_c:
mkdir -pv /mnt/test2/{a_b,a_c,d_b,d_c}
||
mkdir -pv /mnt/test2/{a,d}_{b,b} ―― (a+d)(b+c)=ab+ac+db+dc
删除目录:rmdir (remove directory) ―― 只能删除空目录以及一脉相承的目录(-p)
示例:rmdir /mnt/test2 ―― 无法删除test2目录(test2不为空)
rmdir /mnt/test2/a_b ―― 删除成功(a_b为空)
rmdir -p /mnt/test2/a_c ―― a_c删了,test2未删除
tree x
rmdir -p /root/x/y/z ―― x,y,z都被删除(x,y,z一脉相承)
文件管理:创建、删除、查看、编辑……
文件创建和删除:―― 文件和目录不能重名,(Windows下创建文件自动附带后缀)
touch:创建文件
示例:touch a ―― 创建文件a
ls
file a
mkdir a ―― 失败(与文件a重名)
mkdir x
touch x.doc ―― 成功
man touch ―― touch是用来修改文件的时间戳的,在文件不存在的情况下自动创建该文件(默认)
man stat ―― stat显示文件或文件系统的状态信息
stat a
date
touch a
stat a ―― 时间戳全部改变
ls
touch -c c ―― 如果文件不存在,不创建文件
ls
改变文件时间戳:
-a 只改变访问时间
-m 只改变修改时间
touch -a a ―― 访问时间和改变时间改变,修改时间未改变
touch -m a ―― 最近一次的修改时间和改变时间改变,访问时间未改变
按指定时间修改:-t 年月日小时分钟.秒钟
touch -m -t 201212121212 a
stat a
创建文件,也可以使用文件编辑器 ―― nano
示例:
nano hello
This is a test file
根据提示保存文件 ―― ctrl+o回车
退出 ―― ctrl+x
ls -lh
file hello
删除文件:rm ―― 为了防止误删文件,管理员下,rm是rm -i 的别名
\rm ―― 取消交互式信息
-i:交互式,提示交互信息 ―― 提示是否真的要删除指定文件
-f:强制删除
-r:递归删除目录
rm -rf:强制递归删除目录,没有提示
管理员权限下绝对不能执行的命令!!:rm -rf / ――
(这条命令含义是删除根目录及根目录下的所有文件(执行结果为所有数据都没了!))
因此不到万不得已的时候,尽可能不使用管理员直接登录。
示例:
rm hello
y
ls -l ―― 文件hello被删除了
type rm ―― rm是rm -i 的别名
rm a
n
\rm a ―― 在命令前加\,表示不使用别名,使用命令自身的意思(只对有别名的命令有意义)
ls
\ls ―― 显示列表没有高亮显示不同文件类型的文件
type ls ―― ls 是 ls --color=tty 的别名
tree /mnt/test2
rm -rf /mnt/test2 ―― 强制递归删除目录test2
ls /mnt
文件的复制和移动:
文件的复制:
cp: copy,复制一个文件或多个文件到一个目录,管理员下是cp -i的别名。
cp file1 file2 file3:只有file3是目标
cp SRC DEST ―― 源文件SRC复制到目标文件DEST
-r:复制目录及目录中的文件(递归复制)
-i:交互式,提示交互信息
-f:强行复制
-p:复制文件时保留这个文件原有的属主、属组、权限、以及时间戳。
-a:保留文件原有的所有属性――归档复制,常用于备份
-L:复制链接里的文件
-P:复制链接自身
示例:
cp /etc/passwd /tmp/
(把passwd这个文件以同样的文件名复制到tmp目录下(目标是一个已经存在的目录))
cp /etc/passwd /tmp/test
1、如果test不存在,则将passwd复制到tmp上并重命名为test
2、如果test存在
1、test是文件:则提示是否覆盖
2、test是个目录:把passwd这个文件以同样的文件名复制到test目录下
cp /etc/passwd /etc/issue /etc/inittab /tmp/abc ―― 提示abc不是目录无法执行
(源有多个,则目标一定是目录(tmp下没有abc文件))
cp /etc/inittab /tmp/abc ―― 将inittab复制到tmp并重命名为abc。
(源只有一个,则目标可以不是目录(tmp下没有abc文件))
复制目录:
cp /etc/init.d/ /tmp/ ―― 失败(cp默认不能复制目录)
cp -r /etc/init.d/ /tmp/hello
1、hello不存在:将把init.d复制到tmp下并命名为hello
2、hello存在并是个目录:将把init.d复制到hello下并命名为init.d
3、hello存在并是个文件:确认覆盖后将创建成一个hello的链接文件(指向当前目录下的
链接文件),本例由于俩文件不在同一个目录下,因此得到的是一个无效链接文件。
su - student ―― 切换至student用户
cd /tmp
cp /etc/inittab /tmp/stu.inittab
ls /tmp
ls -l /tmp/stu.inittab
exit
cd /tmp
ls -l
cp stu.inittab root.inittab
ls -l
cp -p stu.inittab root.inittab.2 ―― 复制时保留属主、属组...
ls -l ―― 比较root.inittab和root.inittab.2的不同
cp /etc/rc /tmp ―― rc是一个链接
ls -l /tmp ―― 复制的是链接指向的文件
cp -L /etc/rc /tmp/rc.2 ―― 复制的是链接里的文件
ls -l /tmp
cp -P /etc/rc /tmp/rc.3 ―― 复制链接
ls -l /tmp
cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp/ ―― 复制三个文件到目录tmp下
文件的移动(剪切):
mv: move,可以直接操作文件和目录,管理员下是mv -i的别名。
mv SRC DEST 和copy一样只有最后一个是目标
mv -t DEST SRC ―― 命令的另一种书写方式
示例:
cp /tmp/root.inittab /var/tmp/abc
file /var/tmp/abc
mv /tmp/hello/ /var/tmp/abc ―― 失败,不能用目录去覆盖一个非目录文件
cd /var/tmp
pwd ―― 显示当前目录
ls
mv abc mn ―― 相对路径(源文件和目标文件的路径一致,那么mv操作就是重命令)
ls
cd /tmp
pwd
ls
mv hello hi
ls
另一个复制文件命令(不能复制目录):install
-d DIRECOTRY … :创建目录
SRC DEST:复制文件
-t DIRECTORY SRC…
-m:指定权限
示例:
install -d /tmp/{install.1,install.2} ―― 在tmp目录下创建两个目录
ls /tmp
install /etc/passwd /var/tmp/install.filed1 ―― 复制文件
ls /var/tmp
ls -l /var/tmp/ ―― 复制过来的文件具有执行权限
ls /etc/passwd -l ―― 源文件passwd并没有执行权限
file /etc/rc.d/
install /etc/rc.d/ /var/tmp ―― 失败(install不能复制目录)
ls /var/tmp