1、目录与路径

  • 绝对路径:从根目录/写起,绝对路径正确度较好,不容易出错。
  • 写法示例:cd /user/share/fileName
  • 相对路径:相对于目前工作目录 的路径,在写程序管理系统环境时不要用相对路径,因为可能由于执行工作环境不同导致出错,但平时管理文件使用还是比较方便的。
  • 写法示例:在/user/share文件夹这里,要到share文件夹下面,cd ../share

    2、目录相关操作

    1)特殊目录

    . 此层目录
    .. 上一层目录
    -工作目录
    ~ 目前用户身份所在的主文件夹
    ~account account此用户的主文件夹(account为一个账号名称)
    注意:所有目录都会有下一层目录”.”和上一层目录”..”,Linux下根目录有上一层目录,是它自己。

2)常见的处理目录的命令

  • cd :切换目录(change directory) ```nginx cd [相对路径/绝对路径] cd ~user // 去user这个用户的主文件夹 cd ~ // 回到自己的主文件夹,如果是超级用户,则是回到根目录 cd // 不加任何路径也是回到自己的主文件夹 cd .. // 去上层目录 cd - // 回到刚才那个目录

// 提醒:Linux默认命令行模式(bash shell)具有文件补齐功能,可以 // 利用[Tab]键快速完整输入目录,避免按错键盘输错字。

  1. - **pwd:显示目前所在的目录(Print Working Directory)**
  2. ```nginx
  3. pwd // 单纯显示出当前工作目录
  4. pwd [-P] // 显示当前的路径,而不是使用连接路径
  • mkdir:新建新目录(make directory)

    1. mkdir [目录名] // 新建目录
    2. mkdir -p [目录名1/目录名2/目录名3] // p:递归创建多层目录,很方便
    3. mkdir -m 744 [目录名] // m:强制设置新目录权限,而不使用默认权限
  • rmdir:删除空目录(empty directory)

    1. rmdir [空目录名] // 删除空目录
    2. rmdir [-p] [目录名] // 递归,连同上一层空目录一起删除
    3. // 如果使用rmdir删除有内容的目录,会提示错误,rmdir只能删除空目录
    4. // 空目录:目录里不能存在其他目录和文件
    5. rm -r test // 删除test目录下所有的东西
  • $PATH:执行文件路径的变量

    1. echo $PATH // 显示目前路径,echo:显示、打印,$后面加变量

    3、文件与目录管理

    1)查看文件与目录

    1. ls // 查看该目录下的目录与文件
    2. ls -a // 全部的文件,联通和隐藏文件一起列出,隐藏文件为开头为.的文件
    3. ll // 列出长数据串,包含文件的属性与权限等数据
    4. ls -al --full-time ~ // 完整呈现文件修改时间
    5. ls -i // 列出i-node号码,Linux中与权限、属性有关的数据都放在i-node里面

    2)文件复制、删除与移动

  • cp:复制文件(copy)

    1. cp [源文件] [目标文件]; // 将源文件复制到目标文件夹中
    2. -a // 相当于-pdr,把文件所有特性(属性/权限)一起复制过去
    3. -i // 当目标文件已存在,覆盖前询问
    4. -p // 连文件属性一起复制过去(备份常用)
    5. -r // 递归复制,常用于目录的复制行为
    6. 示例:
    7. cp ~/.bashrc /tmp/bashrc // 将主文件夹下的.bashrc复制到tmp目录下,并改名为bashrc
  • rm:移除文件/目录(remove) ```nginx rm [文件名/目录名] rm -f // -f:强制移除,忽略不存在信息,不会出现警告 rm -f //强制删除该目录下所有文件,慎用,删除的数据非常难恢复 // 代表通配符,0~无穷多任意字符 rm -f bashr* // 删除文件名开头为bashr的所有文件 rm -r //递归删除,常用于目录删除,慎用!非常危险! rm -i // 主动询问,避免误删

  1. - **mv:移动文件或目录、更名**
  2. ```nginx
  3. mv [文件名] [目录] // 将某文件移动到某目录
  4. mv [目录名1] [目录名2] // 将目录名1改为目录名2
  5. rename // 更改大量文件的文件名,可以使用man rename查阅

3)文件内容查阅

  1. cat [文件名] // 由第一行开始显示文件内容,cat为concatenate连续的简写
  2. cat -n // 显示文件内容并打印行号
  3. tac // 从最后一行开始显示文件内容,和cat倒过来
  4. nl // 显示文件内容顺便输出行号
  5. more // 一页一页显示文件内容
  6. less // 和more类似,但更好,可以往前翻页
  7. head // 只看头几行
  8. tail // 只看结尾几行
  9. od // 以二进制方式读取文件内容

4)修改文件时间 / 创建新文件

  1. touch [文件名] // 建立新文件
  2. touch -a // 修改访问时间
  3. touch -t // 后面接要修改时间而不用当前时间,格式为[YYMMDDhhmm]
  4. touch -d "2 days ago" [文件名] //将文件日期修改为两天前
  5. touch -t 0709150202 [文件名] // 将文件日期修改为 2007/09/15 2:02
  • mtime(modification time):文件内容数据更改时更新的时间。
  • ctime(status time):文件状态改变(权限、属性更改)时更新的时间。
  • atime(acess time):文件内容被取用时更新的时间,例如:cat读取文件内容时。
  • 默认情况下,ls显示mtime,及该文件内容上次被更改的时间。
    1. ls -l --time=atime [文件名] // 显示文件内容被取用更新时间
    2. ls -l --time=ctime [文件名] // 显示文件状态改变时更新的时间

    5)文件默认权限:umask

    1. umask // 查看目前用户新建文件或目录的默认权限
    2. 0022 // 和权限有关的是后面的三个数字
    3. umask -S // 以符号类型显示文件默认权限的参数
    4. u=rwx,g=rx,o=rx
    注意:
    1、用户新建文件默认无可执行权限,因为文件主要用来存放数据,最大为666,即-rw-rw-rw-
    2、用户新建目录时最大权限为777,因为x与能否进入目录有关,即drwxrwxrwx
    3、umask的值为能拿掉的分数,022时,user没有被拿掉权限,而group和others被拿掉了w的权限。

6)设置&显示文件隐藏属性(chattr、lsattr)

  • chattr:设置文件隐藏属性

    1. chattr [+-=][ai][文件/目录] // 设置文件/目录隐藏属性
    2. +:增加某个特殊参数,其他原本参数不变
    3. -:删除某个特殊参数,其他原本参数不变
    4. =:仅有后面接的参数
    5. a:设置a属性后,此文件只能增加数据,不能删除和修改数据,只有root能设置这个属性
    6. i:让文件不能被删除、改名,设置连接也无法写入或添加数据,对于系统安全有非常大的帮助,只有root能设置这个属性
    7. 示例:
    8. chattr +i fileName // 该文件增加i属性
    9. chattr -i fileName // 该文件取消i属性

    注意:

  • 设置文件隐藏属性在系统安全上十分重要,只有lsattr可以查看文件的这些隐藏属性

  • chattr命令只能在Ext2/Ext3文件系统上生效


  • lsattr:显示文件隐藏属性

    1. lsattr [-adR] [文件/目录]
    2. -a:将隐藏属性也秀出来
    3. -d:如果接目录,只列出目录本身而不列目录内的文件名
    4. -R:连同子目录数据也列出

    7)命令与文件查询

  • 脚本文件名查询(whereis和locate) ```nginx whereis [-bmsu] [文件/目录名] // 寻找特定文件 -b:只找二进制格式文件 -m:只找在说明文件manual路径下的文件 -s:只找source源文件 -u:查找不在以上三个选项中的特殊文件 注意:whereis和locate利用数据库查找数据,非常快,find时很强大的查找命令,直接查找硬盘,会很慢,费时间

locate [-ir] keyword //查找文件 -i:忽略大小写差异 -r:后面可以接正则表达式显示方式

find [PATH] [option] [action] 和时间有关的参数:-atime,-ctime,-mtime -mtime n:n为数字,在n天之前的一天之内改过的文件 -mtime +n:列出在n天以前被更改过的文件名 -mtime -n:列出在n天之内含n天被改过的文件名 -newer file:file为一个存在的文件,列出比file还要新的文件名 示例: find / -mtime 0 // 从现在开始到24小时前被改过的文件都列出来,0代表目前的时间 find /etc -newer /etc/passwd // 列出etc下比passwd新的文件 -newer在分辨俩文件新旧关系之间很有用

find/var -mtime -4 //列出4天内被改动过的文件名 find/var -mtime 4 //列出4天前的那一天被改动过的文件名 +4代表大于等于5天前的文件名 ``` 说明:locate更方便,直接在命令后面输入文件部分名称即可查找。
-因为locate是在数据库查找数据,新建文件后马上查找可能查不到,需要更新数据库才可以,数据库默认每天执行一次,CentOS 5.X是每天更新数据库一次。(PS:CentOS 5.X??这是啥?明天有空就查查,今天太晚了…..)

更新locate数据库很简单,输入”updatedb”即可。
updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内文件名,并更新/var/lib/mlocate内的数据库文件。
locate:依据var/lib/mlocate内的数据库记载,找出用户输入的关键字文件名。