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]键快速完整输入目录,避免按错键盘输错字。
- **pwd:显示目前所在的目录(Print Working Directory)**```nginxpwd // 单纯显示出当前工作目录pwd [-P] // 显示当前的路径,而不是使用连接路径
mkdir:新建新目录(make directory)
mkdir [目录名] // 新建目录mkdir -p [目录名1/目录名2/目录名3] // p:递归创建多层目录,很方便mkdir -m 744 [目录名] // m:强制设置新目录权限,而不使用默认权限
rmdir:删除空目录(empty directory)
rmdir [空目录名] // 删除空目录rmdir [-p] [目录名] // 递归,连同上一层空目录一起删除// 如果使用rmdir删除有内容的目录,会提示错误,rmdir只能删除空目录// 空目录:目录里不能存在其他目录和文件rm -r test // 删除test目录下所有的东西
$PATH:执行文件路径的变量
echo $PATH // 显示目前路径,echo:显示、打印,$后面加变量
3、文件与目录管理
1)查看文件与目录
ls // 查看该目录下的目录与文件ls -a // 全部的文件,联通和隐藏文件一起列出,隐藏文件为开头为.的文件ll // 列出长数据串,包含文件的属性与权限等数据ls -al --full-time ~ // 完整呈现文件修改时间ls -i // 列出i-node号码,Linux中与权限、属性有关的数据都放在i-node里面
2)文件复制、删除与移动
cp:复制文件(copy)
cp [源文件] [目标文件]; // 将源文件复制到目标文件夹中-a // 相当于-pdr,把文件所有特性(属性/权限)一起复制过去-i // 当目标文件已存在,覆盖前询问-p // 连文件属性一起复制过去(备份常用)-r // 递归复制,常用于目录的复制行为示例: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 // 主动询问,避免误删
- **mv:移动文件或目录、更名**```nginxmv [文件名] [目录] // 将某文件移动到某目录mv [目录名1] [目录名2] // 将目录名1改为目录名2rename // 更改大量文件的文件名,可以使用man rename查阅
3)文件内容查阅
cat [文件名] // 由第一行开始显示文件内容,cat为concatenate连续的简写cat -n // 显示文件内容并打印行号tac // 从最后一行开始显示文件内容,和cat倒过来nl // 显示文件内容顺便输出行号more // 一页一页显示文件内容less // 和more类似,但更好,可以往前翻页head // 只看头几行tail // 只看结尾几行od // 以二进制方式读取文件内容
4)修改文件时间 / 创建新文件
touch [文件名] // 建立新文件touch -a // 修改访问时间touch -t // 后面接要修改时间而不用当前时间,格式为[YYMMDDhhmm]touch -d "2 days ago" [文件名] //将文件日期修改为两天前touch -t 0709150202 [文件名] // 将文件日期修改为 2007/09/15 2:02
- mtime(modification time):文件内容数据更改时更新的时间。
- ctime(status time):文件状态改变(权限、属性更改)时更新的时间。
- atime(acess time):文件内容被取用时更新的时间,例如:cat读取文件内容时。
- 默认情况下,ls显示mtime,及该文件内容上次被更改的时间。
ls -l --time=atime [文件名] // 显示文件内容被取用更新时间ls -l --time=ctime [文件名] // 显示文件状态改变时更新的时间
5)文件默认权限:umask
注意:umask // 查看目前用户新建文件或目录的默认权限0022 // 和权限有关的是后面的三个数字umask -S // 以符号类型显示文件默认权限的参数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:设置文件隐藏属性
chattr [+-=][ai][文件/目录] // 设置文件/目录隐藏属性+:增加某个特殊参数,其他原本参数不变-:删除某个特殊参数,其他原本参数不变=:仅有后面接的参数a:设置a属性后,此文件只能增加数据,不能删除和修改数据,只有root能设置这个属性i:让文件不能被删除、改名,设置连接也无法写入或添加数据,对于系统安全有非常大的帮助,只有root能设置这个属性示例:chattr +i fileName // 该文件增加i属性chattr -i fileName // 该文件取消i属性
注意:
设置文件隐藏属性在系统安全上十分重要,只有lsattr可以查看文件的这些隐藏属性
- chattr命令只能在Ext2/Ext3文件系统上生效
lsattr:显示文件隐藏属性
lsattr [-adR] [文件/目录]-a:将隐藏属性也秀出来-d:如果接目录,只列出目录本身而不列目录内的文件名-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内的数据库记载,找出用户输入的关键字文件名。
