- 树状目录结构
系统目录结构
目录 | 说明 |
/ | 根目录,万物起源。 |
/bin | 普通用户用的命令,包含系统启动和运行所必需的二进制程序。 |
/boot | 启动文件,包含Linux内核,最初的RMA磁盘映像 (系统启动时,由驱动程序所需),和启动加载程序。 |
/dev | 这是一个包含设备结点的特殊目录。“一切都是文件”, 也使用于设备。在这个目录里,内核维护着它支持的设备。 |
/etc | 这个目录包含所有系统层面的配置文件。它也包含一系列 的shell脚本,在系统启动时,这些脚本会运行每个系统服 务。这个目录中的任何文件应该都是可读的文本文件。 |
/home | 用户的家目录,在通常的配置环境下,系统会在/home下, 给每个用户分配一个目录。普通用户只能咋他们自己的目录 下创建文件,这个限制保护系统免受错误的用户活动破坏。 |
/lib | 存储核心系统程序所需的库文件,这些文件与Windows中的 动态链接库相似。 |
/sbin | 是root用户用的命令,该目录包含“系统”二进制文件, 它们是完成重大系统任务的程序,通常为超级用户保留。 |
/media | 媒介目录默认是空的,可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。 |
/mnt | 临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱 无法使用,要先挂载后使用。 |
/opt | 可选应用软件包。 |
/proc | 虚拟文件系统,将内核与进程状态归档为文本文件 (系统信息都存放这目录下)。例如:uptime、 network。 在Linux中,对应Procfs格式挂载。该目录下文件只能看不 能改(包括root)。 |
/root | 超级用户的家目录。 |
/var/run | 保存到下次引导前有效的关于系统的信息文件, 例如, /var/run/utmp 包含当前登录的用户的信息。 |
/srv | 存放一些服务启动之后需要提取站点的具体数据,由系统提供。 |
/sys | 存系统内核相关的文件。 |
/tmp | 临时文件(参见 /var/tmp),在系统重启时目录中文件不会 被保留。 |
/usr | 默认软件都会存于该目录下。用于存储只读用户数据的 第二层次;包含绝大多数的(多)用户工具和应用程序。 |
/var | 变量文件——在正常运行的系统中其内容不断变化的文件, 如日志,脱机文件和临时电子邮件文件。有时是一个单独的 分区。如果不单独分区,有可能会把整个分区充满。如果单 独分区,给大给小都不合适。 |
/var/log/ | 各种程序的Log文件,特别是login (/var/log/wtmp log所有 到系统的登录和注销) 和syslog (/var/log/messages 里存储 所有核心和系统程序信息. /var/log 里的文件经常不确定 地增长,应该定期清除。 |
蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;
白色表示其他文件;黄色是设备文件,包括block, char, fifo。
tree命令,可以以树状形式看目录的分布;需要安装:命令yum install -y tree,用法:tree+目标目录。
32位系统和64位系统,内存识别差异,32位最多只能识别4G不能再大了,64位系统硬件内存多大就识别多大。
1 Byte = 8 bit;
- ls命令
ls-列出目录内容,可以同时列出多个目录下的内容,ls -lt ,“l”选项以长格式输出,“t”选项按文件修改时间的先后来排序。加上长选项“-reverse”,则结果会以相反的顺序输出:ls -lt --reverse
选项 | 长选项 | 描述 |
-a | --all | 列出所有文件,甚至包括文件名以圆点开头的默认会被 隐藏的隐藏文件 |
-d | --directory | 通常,如果指定来目录名,ls命令会列出这个目录中的 内容,而不是目录本身。把这个选项与-l选项结合使用, 可以看到所指定目录的详细信息,而不是目录中的内容。 |
-l |
| 以长格式显示结果。 |
-r | --reverse | 以相反的顺序来显示结果,通常,ls命令的输出结果按 照字母升序排列。 |
-t |
| 按照修改时间来排序。 |
-i |
| 显示文件索引节点号(inode),一个索引节点代表一个文件。 |
-h | --human -readable | 当以长格式列出时,以人们可读的格式,而不是以字节 数来显示文件的大小。 |
长格式显示中包含的信息内涵:
-rw-r--r-x 1 root toot 32059 2018-05-08 13:29 oo-cd-cover.odf
字段 | 含义 |
-rw-r--r-x | 对于文件的访问权限,第一个字符指明文件类型, 在不同类型之间,开头的“-”说明是一个普通文件, “d”表明是一个目录。其后三个字符是文件所有者的 访问权限,再其后的三个字符是文件所属组中成员的 访问权限,最后三个字符是其他所有人的访问权限。 r读w写x执行。 |
1 | 文件的硬链接数目 |
root | 文件属主的用户名 |
root | 文件所属用户组的名字 |
32059 | 以字节数表示文件的大小 |
2018-05-08 13:29 | 上次修改文件的时间和日期 |
oo-cd-cover.odf | 文件名 |
- 文件类型
字段 | 含义 |
-rw-r--r-x drw-r--r-x lrw-r--r-x brw-r--r-x crw-r--r-x srw-r--r-x prw-r--r-x | 对于文件的访问权限,第一个字符指明文件类型, 在不同类型之间,开头的“-”说明是一个普通文件, “d”表明是一个目录,“l”软链接文件,“b”块设 备文件,“c”字符串设备文件,“p”管道文件, “s”通讯文件(socket)。 |
- alias命令
which显示一个可执行程序的路径
有时候在一个操作系统中,不只安装了可执行程序的一个版本。
然而在桌面系统中,这并不普遍,但在大型服务器中,却很平常。
为了确定所给定的执行程序的准确位置,使用which命令:
这个命令只对可执行程序有效,不包括内部命令和命令别名,
别名是真正的可执行程序的替代物。
命令:alias,可以查看所有有别名的可执行命令组合。
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长
的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令
引起来,防止特殊字符导致错误。
用法:alias+新命令=’原命令 -选项/参数’
取消别名:unalias+新命令
命令:echo $PATH,显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
凡是命令在以上目录中,执行就可以生效,不在目录,执行也不会生效。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的
alias命令存放到bash的初始化文件/etc/bashrc中。
- 相对和绝对路径
绝对路径开始于根目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。例如,你的系统中有一个目录,大多数系统程序都安装在这个目录下。这个目录的路径名是/usr/bin。它意味着从根目录(用开头的“/”表示)开始,有一个叫“usr”的目录包含了目录“bin”。
root@zyshanlinux-02 ~]# cd /usr/bin
[root@zyshanlinux-02 bin]# pwd
/usr/bin
[root@zyshanlinux-02 bin]#
绝对路径从根目录开始,直到它的目的地,而相对路径开始于工作目录。为了做到这个(用相对路径表示),我们在文件系统数中用一对特殊符号来表示相对位置。这对特殊符号是“.”(点)和“..”(点点)。
符号“.”指的是工作目录,“..”指的是工作目录的父目录。
[root@zyshanlinux-02 bin]# pwd
/usr/bin
[root@zyshanlinux-02 bin]# cd ..
[root@zyshanlinux-02 usr]# cd .
[root@zyshanlinux-02 usr]#
[root@zyshanlinux-02 usr]# cd ./bin
[root@zyshanlinux-02 bin]#
[root@zyshanlinux-02 bin]# cd ..
[root@zyshanlinux-02 usr]# cd bin
[root@zyshanlinux-02 bin]#
通过这2种方式来指定,一种是绝对路径(直接从根目录开始到目标工作目录的路径),另一种时相对路径(从工作目录开始的路径),在文件系统中用一对特殊符号“.”和“..”来表示相对位置,符号“.”指的是工作目录 cd ./bin,一般省略“./”,符号“..”指的是工作目录的父目录 cd ..。
- cd命令
cd命令用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
[root@zyshanlinux-02 ~]# cd /usr
[root@zyshanlinux-02 usr]# cd ~
[root@zyshanlinux-02 ~]# cd -
/usr
[root@zyshanlinux-02 usr]# cd -
/root
[root@zyshanlinux-02 ~]# cd !$
cd -
/usr
[root@zyshanlinux-02 usr]# cd ..
[root@zyshanlinux-02 /]#
- 创建和删除目录mkdir-rmdir
& 1.mkdir=make directory即是创建目录,只能按顺序有路径的前提下才能创建目录。mkdir -p可以创建一连串目录。mkdir -pv可视化创建。
& 2.rmdir=remove directory即是删除目录,只能是空目录才能删除。touch是用来创建空白文件的命令;rmdir -p只要一连串空目录都删掉。
mkdir
注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。
在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。
rmdir
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。
虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。
- rm命令
& 1.mkdir只能删除目录不能删除文件。rm=remove可以删除目录文件,rm -f强制删除所有文件目录不用询问,*通配符,! tree实现历史最近的tree命令。rm无法删除目录,rm -r 可以删除,rm -rf强制删除一连串目录文件,rm -rfv可视化强制删除一连串目录文件。rm -rfv删除一个不存在的目录,就无法显示是否成功,什么都没提示,如果把f取消就会显示不存在那个目录。
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
- 环境变量PATH
& 1.PATH环境变量,which可以查命令的路径包括有没有别名,真正用一个命令要用绝对路径,命令也是文件,新建命令必须通过环境变量PHTH=$PATH:/tmp/才能简写否则要用绝对路径,同一个服务器不同终端就会失效,必须变成永久的才能在不同终端中运行。
拷贝/usr/bin/ls命令到/tmp/重命名ls2;
就可以用/tmp/ls2这个命令,但ls2就用不了;
其实必须把ls2命令目录存放到环境变量才可以执行;
PATH=$PATH:/tmp/
可以看到已经在环境变量里面了,直接执行ls2现在可以了;
换一个终端,ls2又不行了,必须要永久保存才可以执行;
可以在/etc/profile这个文件中写入这个命令,因为这个文件是开机或打开终端就会加载这个命令的;
在/etc/profile这个文件中写入这个命令PATH=$PATH:/tmp/
再换一个终端,ls2还是可以用;
不想要这个命令,可以输入命令去掉环境变量;
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
这样就可以求掉环境变量里的/tmp/了,命令ls2也不生效了;
进入vi;
同时把/etc/profile这个文件中写入这个命令PATH=$PATH:/tmp/删除;
换个终端,环境变量已经回复原样了;
- cp命令
& 1.cp拷贝命令copy,!$上条命令最后一个命令参数,用which cp可以知道alias cp='cp -i',cp -i这个-i就是安全选项,要绕过这个安全选项可以输入目录命令/usr/bin/cp。cp -r目录时,目标目录已存在原目录拷贝的目录就在新目录下新建一个拷贝的目录,目标目录没有与拷贝目录相同的目录就在目标目录中创建该目录并命名。
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
- rm命令
& 1.mv命令move移动命令,移动到同一目录下就想当于重新命名,基本规则与cp命令类似。
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
- 文档查看cat-more-less-head-tail
& 1.cat查看文件内容的。tac倒叙查看文件内容。more多屏查看文件内容,空格往下看(ctrl+F往下看),ctrl+B往上看;wc可以查看文件的行数。>>追加重定向。less不退出多屏查看文件内容方便/顺序查找特定内容,?可以从后往前定位内容,Nn前后看,G直接定位到首行,g直接定位到末行。head查看文件的头十行,tail查看文件的尾十行,可以在中间加-n 数字看特定行数,看日志非常好用。
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。
more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。 more 名单中内置了若干快捷键,常用的有 H (获得帮助信息), Enter (向下翻滚一行),空格(向下滚动一屏), Q (退出命令)。
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。
head 命令用于显示文件的开头的内容。在默认情况下, head 命令显示文件的头 10 行内容。
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
tail 命令用于输入文件中的尾部内容。 tail 命令默认在屏幕上显示指定文件的末尾 10 行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“ - ”,则读取标准输入。
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
cat
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用 more 等命令分屏显示。为了控制滚屏,可以按 Ctrl+S 键,停止滚屏;按 Ctrl+Q 键可以恢复滚屏。按 Ctrl+C (中断)键可以终止该命令的执行,并且返回 Shell 提示符状态。
tail
注意:如果表示字节或行数的 N 值之前有一个” + ”号,则从文件开头的第 N 项开始显示,而不是显示文件的最后 N 项。 N 值后面可以有后缀: b 表示 512 , k 表示 1024 , m 表示 1 048576(1M) 。
- 文件和目录权限chmod
& 1.文件权限与所有者、所属组有关系的,权限分3段9位,第1段所有者的权限rwx读写执行,第2段所属组权限,第3段其他用户权限。3段权限前的1位是文件类型,3段权限后的1位点是由于selinux开启导致的,只要关闭selinux新创建的文件就没有3段后的1位带点的了。
& 2.可用数字代表权限,r=4 w=2 x=1,rwx=7 rw-=6 --x=1 rw-r--r--=644 rw-r-xr-x=655。
& 3.chmod ==change mode更改权限命令,chmod 744 2.txt例子,或者chmod u=rwx,g=r,o=r 2.txt,chmod a+x 2.txt,chmod a-x 2.txt,也可以单独u+x或者单独g+x或者单独o+x,chmod -R批量更改目录下全部的权限,没加-R就只能更改目录本身权限而已。
chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
- 更改所有者和所属组chown
& 1.chown==change owner,可以更改文件或目录的所有者也可以更改所有组,改所有者chown aming /tmp/yum.log改所有组chown user1:aming /tmp/yum.log=>chown :root /tmp/yum.log;chgrp==change group,更改所有组chgrp user1 /tmp/yum.log。
& 2.chown -R user1:aming /tmp/aming2 加-R批量修改目录中的所有者所有组。
& 3.公式chown -R username:group filename
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
只有文件主和超级用户才可以使用该命令。
- umash
& 1.umask是用来决定默认的文件目录权限的,怎样通过umask判断默认的文件目录的权限,就是通过9位权限位去减,当获知umask是0022时,文件就是666=(rw-rw-rw-) - (----w--w-) = rw-r--r--=644,目录就是777=(rwxrwxrwx) - (----w--w-)=rwxr-xr-x=755;当然了,不能用数字直接减,必须用9位权限去减。为什么呢?因为当umask是003时,用数字减就不对了,666-003=663,777-003=773错误的,应该是666=(rw-rw-rw-) - (-------wx) =rw-rw-r--=664≠663,777=(rwxrwxrwx) - (-------wx) =rwxrwxr--=774≠773。
umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
-p:输出的权限掩码可直接作为指令来执行;
-S:以符号方式输出权限掩码。
应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。