tips:

1

linux 使用制定目录 java linux设置目录_文件名

2 linux 有命令补全和路径补全功能,极大的提高效率

3 在终端机模式当中,连续输入两次[tab]按键就能够知道使用者有多少命令可以下达

linux 使用制定目录 java linux设置目录_文件名_02

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_03

 

超级用户的家目录  /root

普通用户的家目录  /home/username

ls命令

linux 使用制定目录 java linux设置目录_数据_04

隐藏文件以  .  开头(文件名前面有个.)

-i 查看文件的i节点 每个文件在创建的时候,都会有一个代号,根据代号查找文件

linux 使用制定目录 java linux设置目录_根目录_05

linux 使用制定目录 java linux设置目录_数据_06

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_07

 第一位表示文件类型    .代表ACL权限  1 代表引用计数   文件大小  最后一次修改时间

linux 使用制定目录 java linux设置目录_根目录_08

linux 使用制定目录 java linux设置目录_根目录_09

目录、文件或链接文件等等』:

  • 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
  • 当为[ - ]则是正规文件,例如上表档名为『install.log』那一行;
  • 纯文本档(ASCII)
  • 二进制文件(binary)
  • 数据格式文件(data)
  • 若是[ l ]则表示为连结档(link file),类似于windows下的快捷方式;
  • 设备与装置文件(device)
  • 若是[ b ]则表示为装区块(block)设备档:置文件里面的可供储存的接口设备(可随机存取装置),通常都集中在/dev这个目录之下;
  • 若是[ c ]则表示为字符(character)设备文件:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 数据接口文件(sockets),通常被用在网络上的数据承接了,第一个属性为 [ s ], 最常在/var/run这个目录中看到这种文件类型
  • 数据输送文件(FIFO, pipe),FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p] 。  man fifo   、man socket查询

文件大小  带上h(human)参数   显示容易看懂的大小

linux 使用制定目录 java linux设置目录_文件名_10

例题:

如果我的目录为底下的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?

drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/

答:

  • 文件拥有者test1[rwx]可以在本目录中进行任何工作;
  • 而testgroup这个群组[r-x]的账号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
  • 至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!

mkdir

linux 使用制定目录 java linux设置目录_数据_11

 

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_12

cd

 

linux 使用制定目录 java linux设置目录_文件名_13

  

注意:cd后面有 空格

pwd

linux 使用制定目录 java linux设置目录_文件名_14

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_15

   

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_16

 

linux 使用制定目录 java linux设置目录_数据_17

  

linux 使用制定目录 java linux设置目录_根目录_18

 ln

创建链接就等同于windows中的创建快捷方式

linux 使用制定目录 java linux设置目录_数据_19

ln命令用来为文件创建连接,连接类型分为硬连接和符号连接(软链接)两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。
注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

ln -sf a b 建立软连接,b指向a

软链接,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间

硬链接,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,此文件跟原文件i节点相同(ls -i),存储空间完全一致

无论是软链接还是硬链接,文件都保持同步变化
如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。

linux 使用制定目录 java linux设置目录_数据_20

 linux下命令“ll”是“ls -l"的别名。别名相当于windows里的快捷方式。
所以"ll"和“ls -l”的功能是相同的。
所以"ll"和"ls"的区别其实是“ls”和"ls -l"的区别。
”ls“是显示当前目录下文件,”ls -l“是显示当前目录下文件详细信息。

 

linux 使用制定目录 java linux设置目录_数据_21

 不推荐创建硬链接(跟原文件区别很小)

原文件删除,硬链接还可以使用

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_22

 

 原文件删除,软链接不再能使用

 注意:创建软链接  原文件一定要写绝对路径  否则不能正确执行

 命令与文件的搜寻

http://cn.linux.vbird.org/linux_basic/0220filemanager_5.php

locate

linux 使用制定目录 java linux设置目录_根目录_23

           

linux 使用制定目录 java linux设置目录_文件名_24

 在根目录和tmp目录下创建同文件名的文件,使用locate只会搜索到root下的该文件,查看updatedb.conf 文件内容,发现tmp目录被过滤

数据库的创建默认是在每天运行一次 (每个 distribution 都不同,CentOS 5.x 是每天升级数据库一次!

  • updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;
  • locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字档名。

whereis  搜寻文件

linux 使用制定目录 java linux设置目录_数据_25

 [root @redhat ~]# whereis passwd  
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz  
将和passwd文件相关的文件都查找出来  

[root @redhat ~]# whereis -b passwd  
passwd: /usr/bin/passwd /etc/passwd  
只将二进制文件查找出来  

和locate一样,whereis 也是在数据库中搜索

 which  搜寻命令

例如:  
[root @redhat ~]# which passwd  
/usr/bin/passwd  

 注意:which 是根据用户配置的PATH值里面的路径去寻找,如果要找的文件的路径没有配置在PATH里面,就会找不到

查看PATH : echo $PATH

[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

find

find 直接在硬盘里面搜索文件,耗时,whereis 和 locate找不着再用find找

linux 使用制定目录 java linux设置目录_数据_26

linux 使用制定目录 java linux设置目录_数据_27

                 图 find 相关的时间参数意义

图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。由图我们可以清楚的知道:

  • +4代表大於等於5天前的档名:ex> find /var -mtime +4
  • -4代表小於等於4天内的文件档名:ex> find /var -mtime -4
  • 4则是代表4-5那一天的文件档名:ex> find /var -mtime 4

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_28

 

linux 使用制定目录 java linux设置目录_根目录_29

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_30

SUID 是 4 分,SGID 2 分,总共为 6 分,可用 +6000 来处理这个权限!

 什么是SUID SGID SBIT?

linux 使用制定目录 java linux设置目录_数据_31

 

 

linux 使用制定目录 java linux设置目录_数据_32

  • {} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
  • -exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 命令内的额外动作。 在本例中就是『 ls -l {} 』罗!
  • 因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜线来跳脱。

find 还可以利用万用字节来找寻档名!举例来说:想要找出 /etc 底下档名包含 httpd 的文件, 那么你就可以这样做:

[root@www ~]# find /etc -name '*httpd*'

grep 

linux 使用制定目录 java linux设置目录_根目录_33

  

 

linux 使用制定目录 java linux设置目录_文件名_34

 改变文件属性与权限

chgrp  改变所属群组

注意:要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!

添加分组  sudo  groupadd grpname

查看分组  cat  /etc/group 

删除分组  groupdel  grpname

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_35

chown  改变文件拥有者

 

linux 使用制定目录 java linux设置目录_文件名_36

改变权限, chmod

 数字类型改变文件权限

 

linux 使用制定目录 java linux设置目录_根目录_37

 符号类型改变文件权限

 

linux 使用制定目录 java linux设置目录_linux 使用制定目录 java_38

 如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限, 那么我就可以使用:

权限对文件的意义

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (execute):该文件具有可以被系统执行的权限。

Windows底下一个文件是否具有执行的能力是藉由『 扩展名 』来判断的, 例如:.exe, .bat, .com 等等,但是在Linux底下,我们的文件是否能被执行,则是藉由是否具有『x』这个权限来决定的!跟档名是没有绝对的关系的!

至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!对于文件的rwx来说, 主要都是针对『文件的内容』而言,与文件档名的存在与否没有关系

权限对目录的意义

  • r (read contents in directory):

    表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据(详细的信息却还是读不到的)。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!
  • w (modify contents of directory):

    这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
  • 建立新的文件与目录;
  • 删除已经存在的文件与目录(不论该文件的权限为何!)
  • 将已存在的文件或目录进行更名;
  • 搬移该目录内的文件、目录位置。
  • 总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!
  • x (access directory):

    目录只是记录文件名而已,不能拿来执行,目录的x代表的是用户能否进入该目录成为工作目录(切换到该目录)的用途! 

要注意:要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!

例题:

假设有个账号名称为dmtsai,他的家目录在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。 若在此目录下有个名为the_root.data的文件,该文件的权限如下:

-rwx------ 1 root  root  4365 Sep 19 23:20  the_root.data

答:

如上所示,由于dmtsai对此文件来说是『others』的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容就是了。

但是由于这个文件在他的家目录下, 他在此目录下具有rwx的完整权限,因此对于the_root.data这个『档名』来说,他是能够『删除』的! 结论就是,dmtsai这个用户能够删除the_root.data这个文件!

linux的文件扩展名

基本上,Linux的文件是没有所谓的『扩展名』的,只是让你了解该文件可能的用途而已, 真正的执行与否仍然需要权限的规范才行!

例如你在网络上下载一个可执行文件,但是偏偏在你的 Linux系统中就是无法执行!那么就是可能文件的属性被改变了!

不要怀疑,从网络上传送到你的 Linux系统中,文件的属性与权限确实是会被改变的喔!

Linux文件名的限制:

由于Linux在文字接口下的一些指令操作关系,一般来说,你在设定Linux底下的文件名时, 最好可以避免一些特殊字符比较好!例如底下这些:

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因为这些符号在文字接口下,是有特殊意义的!另外,文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』喔!同时,由于指令下达当中,常常会使用到 -option 之类的选项, 所以你最好也避免将文件档名的开头以 - 或 + 来命名啊!

文件目录

  • .  :代表当前的目录,也可以使用 ./ 来表示;
  • .. :代表上一层目录,也可以 ../ 来代表。


可分享的(shareable)

不可分享的(unshareable)

不变的(static)

/usr (软件放置处)

/etc (配置文件)


/opt (第三方协力软件)

/boot (开机与核心档)

可变动的(variable)

/var/mail (使用者邮件信箱)

/var/run (程序相关)


/var/spool/news (新闻组)

/var/lock (程序相关)

上表中的目录就是一些代表性的目录,该目录底下所放置的数据在底下会谈到,这里先略过不谈。 我们要了解的是,什么是那四个类型?

  • 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
  • 不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
  • 不变的:有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
  • 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:

  • / (root, 根目录):与开机系统有关;
  • /usr (unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运作过程有关。
  • 根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?有底下这些:
  • /etc:配置文件
  • /bin:重要执行档
  • /dev:所需要的装置文件
  • /lib:执行档所需的函式库与核心所需的模块
  • /sbin:重要的系统执行文件

/usr 的意义与内容:

依据FHS(Filesystem Hierarchy Standard)的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static),/usr不是user的缩写,是Unix Software Resource的缩写, 也就是『Unix操作系统软件资源』所放置的目录,而不是用户的数据。因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的『C:\Windows\ + C:\Program files\』这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。

FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据。

/var 的意义与内容:

/var是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。

基本硬盘分割的模式

  • 最简单的分割方法:
    这个在上面第二节已经谈过了,就是仅分割出根目录与内存置换空间( / & swap )即可。 然后再预留一些剩余的磁碟以供后续的练习之用。不过,这当然是不保险的分割方法(所以鸟哥常常说这是『懒人分割法』)! 因为如果任何一个小细节坏掉(例如坏轨的产生),你的根目录将可能整个的损毁~挽救方面较困难!
  • 稍微麻烦一点的方式:
    较麻烦一点的分割方式就是先分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起, 那当这些读写较频繁的磁盘分区槽有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易啊! 在默认的CentOS环境中,底下的目录是比较符合容量大且(或)读写频繁的目录罗:
  • /
  • /usr
  • /home
  • /var
  • Swap

通常我会希望我的邮件主机大一些,因此我的/var通常会给个数GB的大小, 如此一来就可以不担心会有邮件空间不足的情况了!另外,由於我开放SAMBA服务, 因此提供每个研究室内人员的数据备份空间,所以罗,/home所开放的空间也很大!至於/usr/的容量, 大概只要给2-5GB即可!凡此种种均与您当初预计的主机服务有关! 因此,请特别注意您的服务项目!然后才来进行硬盘的规划。