目录的常用操作
. | 当前目录 |
---|---|
… | 上级目录 |
- | 上一个访问的目录 |
~ | 当前用户的家目录 |
常用指令:
- cd:切换目录
- pwd:显示当前目录
- mkdir:创建文件夹,如果是多级目录,需要加-p
- rmdir:删除目录,如果是多级目录,同样需要加-p
执行文件路径变量:$PATH
你应该已经发现了,很多命令在任何目录都可以执行。而安装很多软件,比如nginx等,需要有一个加入系统路径的操作,才可以在任何地方使用nginx命令,这是为什么呢。
可以输入echo $PATH 看一下:
[root@node4 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/default/bin:/usr/java/default/bin:/opt/zookeeper-3.4.6/bin:/opt/hadoop-2.6.5/bin:/opt/hadoop-2.6.5/sbin:/opt/nginx/sbin:/root/bin
PATH变量,注意大写,是由很多个路径组成的,其中由:分隔。
前面讲过,系统命令一般放在/bin目录或者/usr/bin,所以这样就能让系统命令在所有目录使用了。
而这些配置文件,都放在/etc/profile里面,例如
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH=$PATH:/opt/nginx/sbin
上面假的这些路径,就可以让这些软件在任何目录都可以访问了
文件和目录管理
无外乎就是增删改查。也就是修改属性,复制,删除,移动等。
查看文件:ls
ls命令可以说是最常执行的命令了吧,每当进入一个目录,就需要用ls看一下这里有哪些文件。
常用的命令有
- ls -al 这会显示隐藏文件
- ll 相当于ls -l,还会显示用户和修改时间等信息
复制cp
-
cp 复制文件或目录,如果不加-a或者-p,复制过后的文件,权限会发生改变
-
用法:
cp 源文件或目录 目标文件或目录
-
常用参数:
-a 相当于-dr —preserve=all
-p 连同权限、用户、时间等属性一起复制
-r 递归复制
-l 硬链接
-s 软链接,也就是快捷方式
-
复制时,需要考虑如下信息:
删除文件rm
-
用法:
rm 参数 文件名
-
常用参数
-f : 强制删除
-i: 删除前会询问,这是info的I
-r: 递归删除
-
特殊情况:因为-会被识别成参数,所以删除-开头的文件时,前面可以加上目录
rm ./-aa.txt
移动或重命名mv
-
用法
mv 参数 源文件 目标文件
-
常用参数
-f : 强制
-i: 执行前先询问
-u: 只有source比较新,才会执行
已知文件的完整路径,如何获得文件的文件名或路径呢:
# 返回文件名
basename 文件路径/文件名
# 返回文件路径
dirname 文件路径/文件名
查看文件
作用 | 常用参数 | |
---|---|---|
cat 文件名 | 打印文件内容 | -n 打印行号 |
tac | 反向查看 | |
more | 可以翻页查看 | |
less | 前后翻页查看 | |
od | 查看非文本文件 | |
file | 查看文件类型 |
数据截取
- head -n 数字 文件名 截取文件前n行 -f会刷新持续输出
- tail -n 数字 文件名 截取文件后n行
这两个命令常常一起使用,比如想输出一个文件的11到20行,并显示行号
cat -n /etc/my.conf head -n 20 | tai -n 10
创建或修改文件时间:touch
linux的文件有三个时间维度
- 修改时间 mtime modification time 表示文件的修改时间,在文件内容被修改时更新。ls命令默认显示该事件
- 状态时间 stime status time 当文件的状态,比如说权限被修改时更新
- 读取时间 atime access time 当文件被读取时更新
使用touch+文件名 的命令时,会同时更新这三个时间。
如果文件不存在,那就会创建一个新文件,时间是当前时间。
默认权限umask
当文件被创建时,默认的权限是什么呢?
这取决于umask,也就是用户在建立文件或目录时的默认值
# 会显示权限的数字代码
umask
# 显示完整权限文本
umask -S
目录的默认权限是777,文件的默认权限是666,这是因为文件默认没有x权限,也就是运行权限
umask命令,显示的是当前目录权限需要减去的权限,也就是说,在当前目录新建文件,实际的权限是该文件夹权限-umask
在linux中,除了前面讲过的9种权限,还有隐藏属性权限的存在,这个后续再说。
文件查找
常用的查找命令有以下这些:
-
查找系统指令,返回命令的具体路径
# -a 参数表示返回所有结果 which -a 命令名
-
whereis 在一些特定的目录中寻找文件,一般是一些默认的软件安装目录,所以该命令常常用来判断是否安装了某软件
# 查看mysql安装在哪里 whereis mysql
-
locate 按照关键字查找文件。locate的查找是从系统内置数据库中查找的,该数据库默认一天更新一次。可以使用updatedb立即更新
# 查找包含某关键字的所有文件 locate keyword # 常用参数 -i 忽略大小写 -r # 查询包含pwd的文件,仅列出5行结果 locate -l 5 pwd
功能最多的查找命令find
- 基本查找
find [path] [option] [action]
# 查找当前文件,24小时内修改过的文件
find / -mtime 0
# 在etc中,找比passwd文件新的文件
find /etc -newer /etc/passwd
- 按时间查找
# +4代表5天前文件
find /var -mtime +4
# -4代表4天内的文件
find /var -mtime -4
# 如果没有加减号,就表示4-5那一天内的文件
find /var -mtime 4
- 按用户查找
# 查找某用户的在指定目录的所有文件
find /home -user username
# 其他参数
-group 组名
-nouser 查找无所属的文件
- 按权限或关键字查找
# 查找包含keyword的文件,可以使用通配符
find / -name keyword
find / -name "*name"
# 其他参数
-size + 50k 查找比50kb大的文件
-perm mode 查找权限刚好是mode的文件
-perm -mode 查找权限包含了mode的文件
-perm /mode 查找包含任意mode的文件,就是or属性
- 查找后进行后续操作
find /var -mtime 4 -exec ls -l {} \