linux的哲学思想:一切皆文件:把几乎有多的资源都抽象为文件
由众多功能单一的程序组成,当完成复杂任务时组合单一的小程序:
每一个命令都避免和用户交互:易于以编程的方式完成自动化任务
使用纯文本文件保存程序的配置文件:
linux的文件系统和windows不同,linux的文件系统为单根文件系统所有文件都在其中!
(照片来自互联网)
文件系统结构
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序 sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
/var: variable data files
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
在linux中,由于使用了ext系列文件系统,使得linux系统对文件名的大小写敏感,以"."开头的文件为隐藏文件 ls命令可以查看当前目录下的文件当使用~]# ls / #显示/目录下的所有文件(当前目录为当前用户的家目录"~")
bin home lost+found mount raid srv usr #还有很多目录太占用篇幅不列举,下同
/]# ls -a
. .. .dbus lib mnt raid sys #"."开头的是隐藏文件"."为当前目录".."为上级目录
/]# ls -l
dr-xr-xr-x. 2 root root 4096 6月 7 19:10 bin # -l 参数用来显示文件或目录的详细信息
[d文件类型] [文件的权限] [硬连接数][文件属主] [文件数组] [文件大小] [上次修改文件的时间] [文件名]
ls命令过于简单不提了...
文件:文件分为元数据和数据两部分组成
元数据:指文件的属性信息.比如访问时间.修改时间.文件大小.属主数组等信息.并不包含文件内容,只是文件的标签
数据:存放数据内容
注意:元数据和数据并不在一起存放,当磁盘格式化时.有专门的空间存放文件的元数据(inode)和数据,待续.
文件命名规则:略... #PS:no zuo no die
linux文件类型:
-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socke
文件的三个时间:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
绝对和相对路径名:略
cd命令:更改当前工作目录[[email protected] /]# cd #返回当前用户的家目录
[[email protected] ~]# cd .. #返回上级目录
[[email protected] /]# cd ~ #返回当前用户的家目录
[[email protected] ~]# cd - #返回上一个目录
pwd命令:用于查看当前工作目录,同时$PWD也是一个shell的环境变量[[email protected] ~]# echo $PWD #查看变量值(调用echo查看shell的变量值)
/root
[[email protected] ~]# pwd #查看当前工作目录(命令)
/root
[[email protected] ~]# echo $OLDPWD #查看上一次的工作目录 同 "cd -"
/root
[[email protected] ~]# set #查看当前shell的所有变量和其他 PS:好尼玛长,以后再说.orz
touch命令:touch命令有两个功能,一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r使用指定文件的时间属性而非当前时间
-t 使用指定的日期时间,而非现在的时间。
例:[[email protected] ~]# touch f1 #创建touch空文件
[[email protected] ~]# ll f1 #查看touch文件的详细信息
-rw-r--r--. 1 root root 0 6月 12 20:02 touch #注意看修改时间
[[email protected] ~]# touch f1 #修改文件的时间标签为当前时间(默认操作),若果文件不存在则创建.
[[email protected] ~]# ll f1 #再看
-rw-r--r--. 1 root root 0 6月 12 20:04 touch #改了
[[email protected] ~]# rm touch #删除文件
rm:是否删除普通文件 "touch"?y
[[email protected] ~]# touch -c touch #正常情况下文件存在touch文件会修改时间,不存在则创建.此参数指明及时文件不存在也不创建.多用于脚本中
[[email protected] ~]# ll touch #ll为ls命令的别名 alias ll="ls -l --color" (MAC中 --color=-G)
ls: 无法访问touch: 没有那个文件或目录
[[email protected] ~]# ll f* #查看f看头的所有文件*为通配符,待续
-rw-r--r--. 1 root root 0 6月 12 20:20 f1 #两个文件的修改时间
-rw-r--r--. 1 root root 0 6月 12 20:24 f2
[[email protected] ~]# touch -r f1 f2 #按照f1的时间戳来修改f2的时间戳
[[email protected] ~]# ll f*
-rw-r--r--. 1 root root 0 6月 12 20:20 f1
-rw-r--r--. 1 root root 0 6月 12 20:20 f2
[[email protected] ~]# touch -t 201211142234.50 f1 #修改f1的时间戳为 ...
[[email protected] ~]# ll f1
-rw-r--r--. 1 root root 0 11月 14 2012 f1
cp命令:
用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
例
有时间机会在写!!!!!
2016年6月12日晚8.40 未完待续