Linux文件与目录管理
目录与路径
相对路径与绝对路径
- 绝对路径:一定由根目录
/
写起,例如:/home/jiangwei
、/etc/docker
- 相对路径:相对于当前路径,一般有
./
,../
等,例如:./a/b/c
,../docker/config
注意:绝对路径的写法虽然长了点,但是一定不会出问题,相对路径虽然短点,但是可能存在问题。
目录的相关操作
切换目录的指令是cd
。比较特殊的目录:
1 | # 当前目录 |
cd
cd
表示切换目录,后面跟相对路径或绝对路径
1 | # 切换到当前用户的家目录 |
pwd
显示当前所在的目录
1 | jiang_wei@master01:~/code/etcd$ pwd |
目录浏览
ls
查看目录的相关信息
1 | # 查看当前目录 |
文件的操作
创建
文件
touch
:创建一个文件
1 | # 创建一个普通文件 |
文件夹
mkdir
:创建一个新的目录
1 | # 建立新的目录 |
另外:还可以加-m
选项来为目录文件直接设定权限,不需要看预设权限umask
的脸色。
复制
cp
:拷贝
1 | # 拷贝文件,*代表所有,但是只能拷贝文件 |
移动、重命名
1 | [root@jw-etcd01 ~]# mkdir -p a/b/c/d |
删除
文件
rm -rf /home/test.go
文件夹
rmdir
:只能删除一个空的目录。对于该目录下有文件内容的删除不了。rm -rf /a/b/c
:r表示递归删除,f表示强制且不提示
取文件路径
1 | # 获取路径最后的档名 |
文件内容查看
cat
cat
:直接从头开始查看文件内容
1 | # 查看所有内容 |
tac
与cat
相反,从后面向前输出。
1 | [root@jw-etcd01 ~]# tac 2.py |
nl
nl
:显示行号
1 | # 默认去除本身的空行,其实是加了参数 -bt |
more
当文件内容过多时,可以使用more
命令。一页一页看。执行命令之后,可以按space
键向下翻页,按Enter
向下翻一行。:f
显示当前内容的行数,最后按q
或者b
退出。
less
more
命令只能往下翻着看,而less
则比它更灵活。可以自由上下。其余退出和操作和more
类似。
head
顾名思义,头的意思,代表取出前面几行。
默认显示前10行,加参数-n100
or -n 100
表示取出前面100行。n
可省略。
如果不知道文件一共有多少行,只想显示最后100行前面的内容,可以在数字前加负号,比如:head -n -100 1.py
。
tail
顾名思义,尾巴的意思,代表取出后面几行。
默认显示后10行,用法和head
一样。
如果不知道文件一共有多少行。只想显示前面100行后面的数据,可以把数字前面加号,比如:tail -n +100 1.py
。
另外,它还有个特别的功能,就是滚动输出,常用语日志查看。tail -f /log/nginx.log
。按ctrl + c
退出。
文件搜寻
which
脚本文件的搜寻。在终端的输入的一些命令。比如ls、python、etcdctl、ping、ifocnfig
等。可以通过which
查出它们的路径。
1 | [root@jw-etcd01 ~]# which python |
whereis
只找系统中某些特定目录底下的文件而已。
它主要针对一些/bin/sbin
下的执行文件、/usr/share/man
下的man page
文件,速度很快。就是有些目录是找不到的。可以加-l
查看到底查询了多少目录。
1 | [root@jw-etcd01 ~]# whereis python |
find
最强大的就是它了,但是它是直接查询硬盘的数据,速度不理想。
最标准的用法就是find / -name python
,从根目录开始查,耗时。
还有一些筛选,就是/
换成只查找指定目录下的数据。
搜索关键词也支持正则匹配,比如*.py
指定筛选查找大小的文件。
1 | [root@jw-etcd01 ~]# find /root -name "*.py" |