1. 目录与路径

  • cd
    • cd 空格;cd ~: 回到当前用户根目录。
    • cd - ;cd ..:返回上一级
    • cd ~account:回到指定用户根目录。
  • ls -ld :列出目录本身的属性,而不是列出目录下的文件信息。
  • mkdir
    • 递归创建目录:mkdir -p test1/test2/test3
    • 创建目录时直接更新目录权限:mkdir -m 755 test1
  • rmdir: 删除空目录(无法删除包含内容的目录。
    • 递归删除空目录:rmdir -p test1/test2/test3(注意只有连续的空目录才可以用这个删除。
  • 路径变量:PATH

    • 注:运行可执行文件,即使该可执行文件在当前目录下,也需要用./xx的形式,如果直接写xx首先会去PATH下找xx,没有,就直接报错了,不会运行当前目录下的xx。
    • 除了./xx, 还可以写绝对路径,或者把这个目录加到PATH下。以运行xx程序
    • 不同角色PATH变量不同
    • 查看:echo $PATH
    • 添加:PATH=“$PATH”:/yourdirectory

      2. 文件与目录管理

  • ls

    • -d 列出目录本身的属性,而不是它包含的文件信息。
    • 一般:ls -al
  • cp
    • 复制文件的原始格式,而不是默认格式(复制的时候产生,比如创建时间拥有者,拥有组):-p
    • 设置提示(重名):-i,不设置,他直接就覆盖掉。
    • 复制目录及其他下面的东西:-r
    • 常用的复制所有东西并且保持原属性:-a
    • 可以把多个文件复制到一个目录下,cp t1 t2 directory1。最后一个必须是目录。
    • 替换比较新的文件:-u
    • 全部2.2 文件与目录管理 - 图1
  • rm
    • 删除文件直接用就行了,默认会提示要不要删除。或者你加上-i,进行提示。
    • 如果要删除包含内容的目录,那就要使用-r,递归删除
    • 全部2.2 文件与目录管理 - 图2
  • mv
    • 同样可以移动多个文件到一个目录下。
    • 如果你复制一个文件,可以指明存放的地方以及他的新名字。起到了重命名的效果。mv t1 t2
    • 全部2.2 文件与目录管理 - 图3
  • 对一个路径取得文件名或者目录名 basename dirname,目录的文件名就是它本身的名字,目录的目录就是他上的上一级全部2.2 文件与目录管理 - 图4

    3. 查看文件内容

  • 全部显示

    • cat 由第一行开始显示文件内容
      • cat -n file:输出行号,包括空白行
      • cat -A file:输出包含特殊字符
      • 全部2.2 文件与目录管理 - 图5
      • 注意:cat后必须跟上存在的文件,不然会失败。如果想要创建新文件,同时进行输入,需要用到数据重定向:cat > yourfile,键盘键入。
      • 对输入重定向可以从其他文件输入:cat > newfile < sourcefile
    • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
      • 第一行变成最后一行显示
    • nl 显示的时候,顺道输出行号!可以让行号变得多样化,可以控制
      • 默认是cat -b,不列出空行,基本直接用nl即可。python文件不知道为什么空行也会标出行号
      • 全部2.2 文件与目录管理 - 图6
  • 翻页显示
    • more 一页一页的显示文件内容
      • more file
      • 可以用的操作2.2 文件与目录管理 - 图7
    • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!是完全体了,还可以搜索字符串
      • man的page就是用less读取帮助文件的,因此用法一样
      • 全部2.2 文件与目录管理 - 图8
  • 数据截取
    • head 只看头几行
      • head -n N file:取出前面的N行,[start,N]
    • tail 只看尾巴几行
      • tail -n N file:取出第N行到末尾,[N,end]
      • tail -f file:如果file会被持续改动,那持续输出改动内容到屏幕。用于监视持续改动的文件
  • od 以二进位的方式读取文件内容!
    • 以8进位列出储存值与ASCII的对照表2.2 文件与目录管理 - 图9
    • 全部2.2 文件与目录管理 - 图10
  • 修改文件时间或建立新文件touch

    • 三个文件时间:内容时间mtime,状态时间ctime,访问时间atime2.2 文件与目录管理 - 图11
    • touch file :新建一个file文件
    • 全部2.2 文件与目录管理 - 图12

      4.文件目录默认权限和隐藏权限

  • 默认权限:目前使用者在创建文件或目录时候的权限默认值

    • 前置知识点:
      • 使用者创建文件时,默认权限为666:-rw-rw-rw-,也就是没有执行。
      • 使用者创建目录时,默认权限为777:drwxrwxrwx,全部
    • umask指的是该默认值需要减掉的权限(需要拿掉的权限),若umask是022,先由022得到——-w—w-,再减去,这种方法是符号法,不能使用单纯的数字相减如666-022:2.2 文件与目录管理 - 图13
    • 查看umask2.2 文件与目录管理 - 图14
    • 应用场景:团队专题制作,在一个共同目录下,如果umask是022,那么一个人新建的文件,同一群组的人只能读,不能改,虽然可以让拥有者改权限,但是那样不利于合作,因此可以利用umask=012,设置默认就是g=rw
  • 文件隐藏属性:用于系统安全,注意chattr命令只能在Ext2/Ext3的文件系统上面生效
    • chattr:改变隐藏属性
      • 主要用a和i: chattr +i attrtest
      • a :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root 才能配置这个属性。—》日志文件
      • i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法 写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性 —》系统文件
      • 全部2.2 文件与目录管理 - 图15
    • lsattr :显示文件隐藏属性
      • lsattr attrtest
      • 选项和ls差不多2.2 文件与目录管理 - 图16
  • 文件特殊权限: SUID, SGID, SBIT
    • SUID:针对文件(程序),运行时当前用户获取该文件owner的权限。
      • 位置:-rwsr-xr-x,在owner的权限中x的位置上2.2 文件与目录管理 - 图17
      • 应用:所有帐号的密码都记录在 /etc/shadow 这个文件里面,这个文件的权限为:『-r———— 1 root root』,只有root有权限修改,那普通用户要修改自己的密码怎么办?运行 /usr/bin/passwd,就可以使当前用户获得root(owner)的权限。
      • 概念:2.2 文件与目录管理 - 图18
      • 图例2.2 文件与目录管理 - 图19
    • SGID:针对文件或目录,运行文件当前用户获取该文件group的权限的支持,进入配置了SGID的目录时,使用者在此目录下的有效群组(effective group)将会变成该目录的群组(创建新文件时的群组=该目录的群组,相当于一种默认配置,不使用SGID时,新建文件的组是用户本身)
      • 位置:-rwx—s—x,g的x上
      • 概念:2.2 文件与目录管理 - 图20
      • 应用:多人专案开发,对于工作目录,需要设置SGID权限,这样默认创建的文件都是一个群组的,别人可以修改内容。
    • SBIT:针对目录,使用者在该目录下只能对自己创建的东西进行删除/更名/移动等动作,而无法删除他人的文件。
      • 位置:-rwxr-xr-t,o的x处。注意,这个显示的是t
      • 应用:在/tmp下,大家都可以rwx,但是配置了SBIT,你就不能删别人的东西了,只能搞自己的东西。
    • 配置方法:
      • 数字:2.2 文件与目录管理 - 图21
        • 如: chmod 4755 filename ,给filename配置SUID+755权限,会在u=x处显示s
        • S,T:当文件或目录本身没有x权限时,你给他SUID,SGID,SBIT都没用,因此显示S,T.2.2 文件与目录管理 - 图22
      • 符号:其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 罗。记得把x也写上,不写x时S、S、T不会生效2.2 文件与目录管理 - 图23
  • 观察文件类型:file

    • 像python的type一样。2.2 文件与目录管理 - 图24

      5.查找文件和命令

  • which (寻找『运行档』):去当前用户的PATH下依次寻找命令,获得命令文件的完整路径

    • which ifconfig
    • -a2.2 文件与目录管理 - 图25
  • whereis:看man提示是查找command的,不能查找文件
    • 全部2.2 文件与目录管理 - 图26
  • 搜索文件或目录
    • locate(需要先安装mlocate:yum install mlocate):搜索关键词,可能是文件,可能是目录2.2 文件与目录管理 - 图27
      • 数据库可能搜不到最新创建的文件,也有可能搜到已删除的文件,因为是间隔同步数据。
      • 升级数据库:updatedb
    • find磁盘搜索
      • 首先,find后跟路径,指在这个路径下搜索,/表示根路径下搜索,就是全盘搜索。可以跟多个路径
        • find /bin /sbin -name filename
      • 限定时间
        • mtime是内容修改时间,n是指n天前一天内被修改的文件,+n是指n天前被改动的文件,-n是指n天内被修改的文件
        • 图例2.2 文件与目录管理 - 图28
        • 全部2.2 文件与目录管理 - 图29
      • 限定使用者或群组
        • 全部2.2 文件与目录管理 - 图30
      • 限定文件名称、大小、类型、权限
        • filename支持搜索,如**find /etc -name ‘httpd‘*
        • size有大小,+size比size大的,-size比size小的
        • perm权限没有大小之分,只有包含不包含,-mode全部包含,+mode只要满足一个即可
        • 全部2.2 文件与目录管理 - 图31
      • 对结果进行额外操作
        • 搜索结果是路径的集合,如果需要把这些路径的具体信息列出来,可以考虑配合ls -l
        • find / -perm +7000 -exec ls -l {} \;2.2 文件与目录管理 - 图32
          • {} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
          • -exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 命令内的额外动作。 在本例中就是『 ls -l {} 』罗!
          • 因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜线来跳脱。
        • 没使用时:2.2 文件与目录管理 - 图33
        • 使用后:2.2 文件与目录管理 - 图34
        • 全部2.2 文件与目录管理 - 图35
      • 与操作-a:find /etc -size +50k -a -size -60k,文件大小在50k到60k之间的文件(不写-a也行的,直接空格,默认就是and
      • 或操作-o:find /etc -size +1500k -o -size 0,容量大於 1500K 以及容量等於 0 的文件
      • 反向选择!(非操作):find /etc -size +50k -a ! -user root,文件容量大於 50K 且文件所属人不是 root 的档名。!的意思是排除!后的筛选条件
    • 注意,没具体限制不要用find,很艹硬盘,可以用whereis或者locate