Linux文件和目录操作命令01
(print work directory)打印工作目录(显示当前所在路径) 后面可以接 -L 默认情况下接的也是-L(logical)的 此种情况显示的是逻辑路径(相当于win的一样) -P(physical)的话,就会把真实的物理路径全部显示出来
[ local]# pwd /usr/local [ local]# cd - 返回上一次所在路径 /root [ ~]# [ home]# pwd /home [ home]# echo $PWD /home [ ~]# ls -l /etc/init.d lrwxrwxrwx. 1 root root 11 6月 15 00:26 /etc/init.d -> rc.d/init.d 软连接文件 [ ~]# cd /etc/init.d [ init.d]# pwd 为啥pwd更够输出当前工作目录了 因为环境变量$PWD的原因 /etc/init.d [ init.d]# pwd -L 获取环境变量PWD对应的数值 即为echo $PWD /etc/init.d [ init.d]# pwd -P 显示链接对应源文件的目录路径 /etc/rc.d/init.d [ init.d]#
2.2 cd(5*****)
(change directory)改变目录路径 例子:cd /etc 后面的参数-L和-P的话,一个是逻辑的,一个是物理的
绝对路径:从/开始的路径 /root/test/a/b
相对路径:不从/开始的路径 test/a/b
cd ../.. 上上级目录
cd ../../.. 上上上级目录
cd / 直接到/目录下
cd - 上一次目录 其实 - 是因为有一个$OLDPWD这个环境变量
cd ~ 代表家目录 其实 因为有一个$HOME这个环境变量
cd .. 退回上一级目录 如果是一个点的话代表当前目录
比如[ oldboy]# pwd pwd命令从PWD这个变量中获取的 /oldboy [ oldboy]# cd /tmp/ [ tmp]# cd - cd将从环境变量OLDPWD对应值获取路径名 /oldboy [ oldboy]# env | grep -i oldpwd OLDPWD=/tmp OLDPWD=/tmp [ oldboy]# [ oldboy]# cd - /tmp [ tmp]# env | grep -i oldpwd 因为你在tmp目录下 所以你的环境变量OLDPWD=/oldboy 其中-i就是不区分大小写的 OLDPWD=/oldboy [ tmp]# [ ~]# cd /etc/sysconfig/ [ sysconfig]# cd 不加任何参数 从环境变量HOME获取路径 /root [ ~]# cd /etc/sysconfig/ [ sysconfig]# cd ~ 从环境变量HOME获取路径 /root
2.3 tree(4****)
tree 树的意思 以树的形式来显示一个目录结构 如果tree不接任何参数的话,会显示所有的tree的目录结构
tree -a 查看隐藏文件 .开头的文件都是隐藏文件
tree -d 代表只显示目录
tree -L 其中L代表level层级的意思 显示指定的层级
tree -i 不显示树枝 常与-f参数配合使用
tree -f 显示每个文件的全路径
tree -F 用以区分文件和目录的方法 以/结尾的为目录
可以用rpm -qa tree命令查看下tree是否安装 如果tree没有安装,可以使用yum install tree -y 安装tree软件包 LANG=en 调整字符集 为英文
[ /]# tree /liangli2/ /liangli2/ `-- liangli3 1 directory, 0 files [ key]# tree . |-- 1 |-- key1 | |-- 4 | `-- 5 |-- key2 | |-- 4 | `-- 5 `-- key3 |-- 4 `-- 5 10 directories, 0 files [ key]# tree -L 1 . |-- 1 |-- key1 |-- key2 `-- key3 4 directories, 0 files [ key]# tree -dL 1 . |-- 1 |-- key1 |-- key2 `-- key3 4 directories [ key]#
为每一个路径显示完整的路径 f full 完整
[ key]# tree -dLf 1 . |-- ./1 |-- ./key1 |-- ./key2 `-- ./key3 4 directories [ key]# [ sysconfig]# tree -L 1 -fi /boot/ indentation压痕 不要前面的树枝 /boot /boot/System.map-2.6.32-573.el6.x86_64 /boot/config-2.6.32-573.el6.x86_64 /boot/efi /boot/grub /boot/initramfs-2.6.32-573.el6.x86_64.img /boot/lost+found /boot/symvers-2.6.32-573.el6.x86_64.gz /boot/vmlinuz-2.6.32-573.el6.x86_64 3 directories, 5 files [ sysconfig]# [ key]# tree -F 区分文件和目录 文件后面都加上了/ . |-- 1/ |-- key1/ | |-- 4/ | `-- 5/ |-- key2/ | |-- 4/ | `-- 5/ `-- key3/ |-- 4/ `-- 5/ 10 directories, 0 files [ key]#
2.4 mkdir(5*****)
windows下的路径样式为c:\data\test 而Linux下的路径样式为/data/test,不同的是windows系统下还有D,E等盘,Linux下就只有/,它是所有目录的顶点 (make directorys)创建目录 例子:mkdir /data 在根/下创建data目录
-p 参数 如果目录存在 在创建目录话,接-p参数不会报错的 另一个作用就是 可以连续创建多级目录
-v 参数 就是可以看到创建目录的流程是怎么样的
或者cd /;mkdir data 切换到根下,然后创建data目录 其中;就是命令的分隔符
连续创建目录 mkdir -p /liangli/liangli1 创建2个目录 一个是liangli一个是liangli1 其中liangli1在liangli目录下
[ /]# mkdir -pv Tech/{1..3}/{4..6} mkdir: created directory `Tech/1‘ mkdir: created directory `Tech/1/4‘ mkdir: created directory `Tech/1/5‘ mkdir: created directory `Tech/1/6‘ mkdir: created directory `Tech/2‘ mkdir: created directory `Tech/2/4‘ mkdir: created directory `Tech/2/5‘ mkdir: created directory `Tech/2/6‘ mkdir: created directory `Tech/3‘ mkdir: created directory `Tech/3/4‘ mkdir: created directory `Tech/3/5‘ mkdir: created directory `Tech/3/6‘ [ /]# tree /tmp /tmp `-- Tech |-- 1 | |-- 4 | |-- 5 | `-- 6 |-- 2 | |-- 4 | |-- 5 | `-- 6 `-- 3 |-- 4 |-- 5 `-- 6 13 directories, 0 files [ /]# mkdir /Tech/dir{1..5} 连续5个dir1 dir2 dir3 dir4 dir5目录 [ /]# ls /Tech/ dir1 dir2 dir3 dir4 dir5 liangli.txt oldboy.txt
同时创建多个目录
[ tmp]# mkdir -p test/dir{1..5} oldboy/{a..g} [ tmp]# tree test oldboy/ test |-- dir1 |-- dir2 |-- dir3 |-- dir4 `-- dir5 oldboy/ |-- a |-- b |-- c |-- d |-- e |-- f `-- g 12 directories, 0 files [ tmp]#
克隆目录结构
[ ~]# tree -if liangli2018/ liangli2018 liangli2018/dir1 liangli2018/dir1/4 liangli2018/dir1/5 liangli2018/dir1/6 liangli2018/dir1/7 liangli2018/dir2 liangli2018/dir2/4 liangli2018/dir2/5 liangli2018/dir2/6 liangli2018/dir2/7 liangli2018/dir3 liangli2018/dir3/4 liangli2018/dir3/5 liangli2018/dir3/6 liangli2018/dir3/7 15 directories, 0 files [ ~]# tree -if liangli2018/ --noreport liangli2018 --noreport不显示最后一行统计信息 liangli2018 liangli2018/dir1 liangli2018/dir1/4 liangli2018/dir1/5 liangli2018/dir1/6 liangli2018/dir1/7 liangli2018/dir2 liangli2018/dir2/4 liangli2018/dir2/5 liangli2018/dir2/6 liangli2018/dir2/7 liangli2018/dir3 liangli2018/dir3/4 liangli2018/dir3/5 liangli2018/dir3/6 liangli2018/dir3/7 liangli2018 liangli2018/dir1 liangli2018/dir1/4 liangli2018/dir1/5 liangli2018/dir1/6 liangli2018/dir1/7 liangli2018/dir2 liangli2018/dir2/4 liangli2018/dir2/5 liangli2018/dir2/6 liangli2018/dir2/7 liangli2018/dir3 liangli2018/dir3/4 liangli2018/dir3/5 liangli2018/dir3/6 liangli2018/dir3/7 [ ~]# tree -if liangli2018/ --noreport liangli2018 >oldboy.txt [ ~]# cat oldboy.txt liangli2018 这个是必须存在的目录 liangli2018/dir1 liangli2018/dir1/4 liangli2018/dir1/5 liangli2018/dir1/6 liangli2018/dir1/7 liangli2018/dir2 liangli2018/dir2/4 liangli2018/dir2/5 liangli2018/dir2/6 liangli2018/dir2/7 liangli2018/dir3 liangli2018/dir3/4 liangli2018/dir3/5 liangli2018/dir3/6 liangli2018/dir3/7 liangli2018 liangli2018/dir1 liangli2018/dir1/4 liangli2018/dir1/5 liangli2018/dir1/6 liangli2018/dir1/7 liangli2018/dir2 liangli2018/dir2/4 liangli2018/dir2/5 liangli2018/dir2/6 liangli2018/dir2/7 liangli2018/dir3 liangli2018/dir3/4 liangli2018/dir3/5 liangli2018/dir3/6 liangli2018/dir3/7 [ ~]# cd /tmp [ tmp]# mkdir -p `cat /root/oldboy.txt` 首先执行``反引号里面的内容 然后在执行mkdir命令 [ tmp]# ll total 4 drwxr-xr-x 5 root root 4096 Sep 29 10:42 liangli2018 [ tmp]# tree . `-- liangli2018 |-- dir1 | |-- 4 | |-- 5 | |-- 6 | `-- 7 |-- dir2 | |-- 4 | |-- 5 | |-- 6 | `-- 7 `-- dir3 |-- 4 |-- 5 |-- 6 `-- 7 16 directories, 0 files [ tmp]#
2.5 touch(5*****)
创建文件或更新时间戳 查看ls /Tech可以看到自己创建的文件了,如果文件不存在,就建立新文件,如果存在,就改变文件的访问时间atime等时间戳
连续创建10000个文件 touch stu{1..10000}
-a 参数 只更改指定文件最后访问时间
-m 参数 只更改指定文件最后修改时间
-t 参数 设置文件的时间属性
-d 参数 设置指定文件的时间属性
-r 参数 指定文件的时间属性与模板文件file的时间属性相同
可以同时创建2个文件 touch a.txt b.txt 两个文件 也可以用touch {1..4}.txt
通过命令可以看到访问(-a) 修改(-m) 改变(-c)文件的时间状态
[ 1]# stat 1.txt File: `1.txt‘ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 784979 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-06-21 20:16:43.546093627 +0800 Modify: 2018-06-21 20:16:43.546093627 +0800 Change: 2018-06-21 20:16:43.546093627 +0800 [ 1]# [ 1]# touch -a 1.txt 的话,表示只改变访问和改变的时间戳,不改变修改的时间戳 其中Change时间不管任何情况都是会改变的 touch -m 1.txt 表示只改变修改和改变的时间戳 其中Change时间不管任何情况都是会改变的 [ liangli]# stat -c %a a.txt 644 [ liangli]# -c 使用指定的格式而不是默认的格式 %a 八进制权限 指定时间属性创建/修改文件(了解) [ tmp]# touch -d 20201001 1.txt d指定创建文件后文件修改时间 [ tmp]# ll -h 1.txt -rw-r--r-- 1 root root 11 Oct 1 2020 1.txt [ tmp]# ll -h 2.txt -rw-r--r-- 1 root root 0 Sep 29 10:57 2.txt 10:57 此时间指的是文件的修改时间 [ tmp]# touch -r 2.txt 1.txt r让其和其他文件时间属性保持一致 [ tmp]# ll -h 1.txt -rw-r--r-- 1 root root 11 Sep 29 10:57 1.txt [ tmp]# touch -t 201809291110.00 1.txt t设置文件格式 [ tmp]# ll -h --full-time 1.txt -rw-r--r-- 1 root root 11 2018-09-29 11:10:00.000000000 +0800 1.txt [ tmp]#
2.6 ls(5*****)
list(列表) 列表目录文件 例子:ls / 列 根/目录下目录和文件 ls -l 显示的时间为文件或目录的修改时间
-l long长格式(显示出来的时间为最后一次修改时间)
-d directorys查看目录
-a all -A 列出所有文件,包括隐藏文件,但是不包括.和..这两个是目录
-t 根据最后修改时间mtime排序,默认以文件名排序
-r 反转排序
-i 显示inode节点
-h 人类可读
--full-time 以完整的时间格式输出
-p 只在目录后面加上/
--time-style=long-iso 显示完整时间属性参数(年份)
-F 参数 区分文件和目录的方式(在结尾处加上类型指示符号 / @等)了解 加上“”代表可执行的普通文件
加上“/”表示目录
加上“=”表示套接字(sockets)
加上“|”表示FIFOs
加上“@”表示符号链接
[ oldboy]# touch oldboy.txt [ oldboy]# ls -lrt r是倒叙的意思 t按修改时间排序 total 20 -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz -rw-r--r-- 1 root root 0 Jun 26 21:53 wodi.gz -rw-r--r-- 1 root root 0 Jun 26 21:53 oldboy drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan -rw-r--r-- 1 root root 0 Jun 26 23:40 oldboy.txt [ oldboy]# [ ~]# date 查看系统时间 Wed Jun 27 20:28:45 CST 2018 [ ~]# ls -l --color=auto 显示颜色 [ oldboy]# alias alias cp=‘cp -i‘ alias l.=‘ls -d .* --color=auto‘ alias ll=‘ls -l --color=auto‘ alias ls=‘ls --color=auto‘ alias mv=‘mv -i‘ alias rm=‘rm -i‘ alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘ [ oldboy]# ls -l 目录会显示颜色的 total 20 drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz [ oldboy]# \ls -l 屏蔽掉别名 total 20 drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz [ oldboy]# [ oldboy]# \ls -l --color=auto 目录会显示颜色的 total 20 drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz [ oldboy]# [ oldboy]# cat 123.log key [ oldboy]# grep --color=auto key 123.log 我们也可以给过滤的内容加颜色 key [ oldboy]# [ oldboy]# grep --color=auto 3306 /etc/services 给3306这个端口加上颜色 mysql 3306/tcp # MySQL mysql 3306/udp # MySQL [ oldboy]# ls -a 可以显示隐藏的文件和不隐藏的文件 all [ test]# ls -a 显示全部的文件 . .. dir1 dir2 dir3 file1.txt file2.txt file3.txt
ls -l 将文件的属性和修改时间都可以显示出来
ll就相当于ls -l一样 系统自带的一个alias
[ test]# ls -l total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [ test]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [ test]# alias alias cp=‘cp -i‘ alias l.=‘ls -d .* --color=auto‘ alias ll=‘ls -l --color=auto‘ alias ls=‘ls --color=auto‘ alias mv=‘mv -i‘ alias rm=‘rm -i‘ alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘ [ test]#
-h human(人类) 的作用就是可以很直观的查看文件的大小
[ test]# ls -lh total 12K drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [root test]#
-d directory参数表示只显示目录
[ test]# ls -l | grep dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 [ test]# ll -d dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 [ test]#
-F classify 就是给目录后面加上/
[ test]# ls -F dir1/ dir2/ dir3/ file1.txt file2.txt file3.txt [ test]#
生产案例:查找最近更新的文件 ll -rt 等于ls -lrt
-r reverse 倒叙排序或者反向排序
-t 按修改时间排序 默认是以文件名排序
默认情况下 最新创建的文件和目录放在最前面
[ test]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [ test]# [ test]# ll -rt total 12 -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 [ test]#
-i 参数 查看inode节点
[ test]# ll -i total 12 915788 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 915789 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 915790 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 915785 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt 915786 -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt 915787 -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [ test]# [ tmp]# ll --time-style=long-iso --time-style=long-iso 参数使用 total 12 -rw-r--r-- 1 root root 21 2018-09-29 11:39 1.txt -rw-r--r-- 1 root root 0 2018-09-29 11:21 123.txt -rw-r--r-- 1 root root 0 2018-09-29 10:57 2.txt drwxr-xr-x 2 root root 4096 2018-09-29 11:19 key -rw-r--r-- 1 root root 0 2018-09-29 11:18 key.txt drwxr-xr-x 5 root root 4096 2018-09-29 10:42 liangli2018
2.7 cp(5*****)
不加参数的时候 只能拷贝文件
-a 相当于-dpr
-d 若源文件为链接文件(link file),则复制链接文件属性而非档案本身
-p 连同档案的属性一起复制过去,而非使用默认属性
-r 递归 用于复制目录
假如tmp目录下有一个test.txt文件 mnt目录下有一个test.txt文件,现在将tmp目录下的test.txt文件复制到mnt目录下 默认情况下 会进行相应的提示
输入命令 \cp /mnt/test.txt /tmp/ 不提示 别名的原因 \就是屏蔽别名
或者 /bin/cp /mnt/test.txt /tmp/ 补全cp命令的路径也是不提示的
因为cp mv rm属于危险的操作命令,有可能会对文件造成损坏,我们可以查看下系统现有的别名alias 可以输入命令unalias cp 直接删除cp的别名,也可以达到其效果 (不推荐使用)
[ test]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt [ test]# cp file3.txt file4.txt [ test]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt 时间属性改变了 [ test]# cp -a -a等于-pdr 作用,复制文件或目录过去的时候可以保证属性不变化 复制文件或目录保持源文件或源目录软连接不发生变化 [ test]# cp file3.txt file5.txt [ test]# ll total 12 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt [ test]# [ test]# alias cp -i 覆盖前会提示 alias cp=‘cp -i‘ [ test]# [ test]# cp -a file3.txt file5.txt cp: overwrite `file5.txt‘? [ test]# \cp -a file3.txt file5.txt 屏蔽别名 [ test]# [ test]# cp -a dir3 dir4 可以复制目录 [ test]# ll total 16 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir4 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt [ test]# A{B,C} 等价于 AB AC [ test]# cp -a dir{3,5} [ test]# ll total 20 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt [ test]# cp /etc/ssh/sshd_config {,.ori} 相当于 cp /etc/ssh/sshd_config cp /etc/ssh/sshd_config.ori 一样 [ test]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori} 备份网卡信息
2.8 mv(5*****)
移动文件和重命名 move 移动文件或目录 移动就是剪切的意思 例子:mv /Tech /liangli 把Tech移动到liangli目录下 也有改名的功能
mv 移动文件和重命名 move(rename)files
[ test]# mv file{4,6}.txt 改名的功能 [ test]# ll total 20 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3 drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt -rw-r--r-- 1 root root 0 Jun 28 12:17 file6.txt No such file or directory 没有那个文件或目录 [ test]# alias alias cp=‘cp -i‘ alias l.=‘ls -d .* --color=auto‘ alias ll=‘ls -l --color=auto‘ alias ls=‘ls --color=auto‘ alias mv=‘mv -i‘ mv 系统别名 -i参数 在覆盖前需要提示 alias rm=‘rm -i‘ alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘ [ test]# 多个文件的移动方式(必须得保证/dir1目录存在) [ test]# mv file1.txt file2.txt file3.txt file5.txt file6.txt dir1/t file6.txt dir1/ [ test]# ls dir1 dir2 dir3 dir4 dir5 [ test]# cd dir1/ [ dir1]# ls file1.txt file2.txt file3.txt file5.txt file6.txt [ test]# tree . |-- dir1 | |-- file1.txt | |-- file2.txt | |-- file3.txt | |-- file5.txt | `-- file6.txt |-- dir2 |-- dir3 |-- dir4 | `-- dir3 `-- dir5 6 directories, 5 files [ test]# [ test]# file dir1 使用file dir1 可以查看dir1是文件还是目录 dir1: directory [ test]# mv dir1 dir2 dir3 dir4 dir5 移动目录 把前n-1个目录移动到最后一个目录(必须得保证dir5目录存在) [ test]# tree . `-- dir5 |-- dir1 | |-- file1.txt | |-- file2.txt | |-- file3.txt | |-- file5.txt | `-- file6.txt |-- dir2 |-- dir3 `-- dir4 `-- dir3 6 directories, 5 files [ test]#
2.9 rm(5*****)
remove(移除)删除目录和文件 -f(force)强制,-r(递归,用于删除目录) 强调删除命令要慎用,非常危险,删除前一定要先备份一份 因为删除后不可恢复
正确删除文件的姿势
1,使用mv命令移动到/tmp(回收站)替代删除动作
2、通过cd命令到达目的目录
然后通过find -type f(d) -name ‘’ | xargs rm -f 或者 find -type f(d)-name “*.txt” -mtime +7 -exec rm {} \;
别名在你敲这条命令的时候生效的,通过一些管道符传送给它的是不会生效的
2.10 rmdir(1*)
用于删除空目录 当目录不为空时 命令不起作用
-p参数 递归删除空目录
[ ~]# [ ~]# mkdir -p oldboy/oldboy1/oldboy2 [ ~]# rmdir -p oldboy/oldboy1/oldboy2/ [ ~]#
2.11 ln(5*****)
link得缩写,可以创建硬链接与软连接
硬链接 ln 源文件 目标文件 (硬链接生成时普通文件-字符)
软链接 ln -s 源文件 目标文件 (目标文件不能事先存在)(生成的符号链接l类型)
硬链接:
是通过inode来进行链接的 在linux文件系统中,多个文件名指向同一个inode是正常且允许的 硬链接文件就相当于文件的另外一个入口 硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件 ,以防止 误删 源数据 注意:目录不能作为硬链接
[ ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [ ~]# ln /etc/hosts hard_link 创建硬链接 [ ~]# ll -ih /etc/hosts hard_link 654109 -rw-r--r--. 3 root root 158 1月 12 2010 /etc/hosts 654109 -rw-r--r--. 3 root root 158 1月 12 2010 hard_link [ ~]# rm -f /etc/hosts 删除 [ ~]# cat /etc/hosts cat: /etc/hosts: 没有那个文件或目录 [ ~]# cat hard_link 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [ ~]# ln hard_link /etc/hosts [ ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [ ~]# ll -ih /etc/hosts hard_link 654109 -rw-r--r--. 3 root root 158 1月 12 2010 /etc/hosts 654109 -rw-r--r--. 3 root root 158 1月 12 2010 hard_link [ ~]#
硬链接知识小结:
1、具有相同inode节点号的多个文件是互为硬链接文件
2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
3、只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
4、当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)
5、硬链接文件就是文件的另一个入口(相当于超市的前门,后门一样)
6、可以通过给文件设置硬链接文件,来防止重要文件被误删
7、通过执行命令 ln 源文件 硬链接文件 即可完成创建硬链接
8、硬链接文件是普通文件,因此可以用rm命令删除
9、对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0 (i_link)文件就被删除 i_link的查看方法(ls -l结果的第三列就是)
软连接 或者符号链接 相当于win的快捷方式 注意:目录可以创建软连接
ln -s 源文件 目标文件
软链接知识小结:
1、软链接类似win的快捷方式(可以通过readlink查看其指向)
2、软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体
3、删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径的内容了
4、失效的时候一般是白字红底闪烁提示
5、执行命令 ln -s 源文件 软链接文件 即可完成创建软链接(目标不能存在)
6、软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
7、软链接文件类型为(l),可以用rm命令
[ ~]# ln -s /etc/hosts soft_link [ ~]# ll -ih /etc/hosts hard_link soft_link 654109 -rw-r--r--. 3 root root 158 1月 12 2010 /etc/hosts 654109 -rw-r--r--. 3 root root 158 1月 12 2010 hard_link 915785 lrwxrwxrwx 1 root root 10 9月 29 13:34 soft_link -> /etc/hosts
全局结论:
删除源文件 对硬链接没有影响 但是会导致软链接文件失效,白字红底闪烁
删除源文件和硬链接文件 整个文件会真正的被删除
很多硬件设备中的快照功能 就是利用了硬链接的原理
[ liangli2018]# ll -ihd oldboy oldboy/. oldboy/test/.. drwxr-xr-x 3 root root 4.0K 9月 29 13:44 oldboy drwxr-xr-x 3 root root 4.0K 9月 29 13:44 oldboy/. drwxr-xr-x 3 root root 4.0K 9月 29 13:44 oldboy/test/..
目录的链接小结:
1、对于目录 不可以创建硬链接 但可以创建软链接(原因是目录可以跨文件系统的)
2、对于目录的软链接是生产场景运维中常用的技巧
3、目录的硬链接不能跨越文件系统(从硬链接原理可以理解 硬链接需要有相同的inode值)
4、每个目录下面都有一个硬链接 “.” 号和对应上级目录的硬链接“..”
5、再父目录里创建一个子目录,父目录的链接数增加1(每个子目录里都有..来指向父目录)但是再父目录里创建文件,父目录的链接数不会增加
2.12 readlink(2**)
查看符号链接文件的内容
[ ~]# readlink soft_link /etc/hosts