马哥linux第二周

Q1、描述Linux发行版的系统目录名称命名规则以及用途。

命名规则:
  • 文件名最长255个字节

  • 包括路径在内文件名称最长4095个字节

  • 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件

  • 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们

  • 标准Linux文件系统(如ext4),文件名称大小写敏感

目录 用途
/boot 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin 管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib 启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64 专用于x86_64系统上的辅助共享库文件存放位置
/etc 配置文件目录
/home/USERNAME 普通用户家目录
/root 管理员的家目录
/media 便携式移动设备挂载点
/mnt 临时文件系统挂载点
/dev 设备文件及特殊文件存储位置
/opt 第三方应用程序的安装位置
/srv 系统上运行的服务用到的数据
/tmp 临时文件存储位置
/usr 程序安装目录
/var 常态性变动文件的目录(例如:日志,缓存)
/proc 用于输出内核与进程信息相关的虚拟文件系统
/sys 用于输出当前系统上硬件设备相关信息虚拟文件系统

Q2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?

元数据信息包含:
  • File:文件名
  • Size:文件大小(单位:B)
  • Blocks:文件所占块个数
  • IO Block:每个数据块的大小(单位:B)
  • regular file:普通文件(此处显示文件的类型)
  • Device:
  • Inode:文件的Inode号,文件的索引节点号
  • Links:硬链接次数
  • Access:权限
  • Uid:(属主id/属主名)
  • Gid:(属组id/属组名)
  • Access:最近访问时间access time (atime)
  • Modify:数据改动时间modification time (mtime)
  • Change:元数据改动时间status time (ctime)
  • Creat/Birth:文件创建时间
查看文件的元数据的方法:
  • stat命令:Display file or file system status. 显示文件或文件系统状态

  • 使用语法:stat [OPTION]... FILE...

例如:

[root@Centos7 ~]# stat 1.txt 
File: ‘1.txt’
Size: 7             Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 209654136   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-01-18 14:28:11.167895259 +0800
Modify: 2020-01-18 14:28:03.013895556 +0800
Change: 2020-01-18 14:28:03.013895556 +0800
Birth: -
修改文件的时间戳的方法:
  • touch命令:Update the access and modification times of each FILE to the current time.更新每个文件的访问和修改时间为当前时间。
  • 使用语法: touch [OPTION]... FILE...
选项 功能
不跟任何选项时三个时间戳都会被更新为当前时间。
-c 指定的文件路径不存在时不予创建;
-a 仅修改access time;
-m 仅修改modify time;
-t 指定改为某一时刻的时间,时间参数格式 [[CC]YY]MMDDhhmm[.ss];

例如:

[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 142827497   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-27 13:43:54.361013402 +0800
Modify: 2020-02-24 21:18:07.044026549 +0800
Change: 2020-02-24 21:18:07.045026549 +0800
Birth: -
[root@Centos7 ~]# touch -m -t 202002242118.07 /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 142827497   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-27 13:43:54.361013402 +0800
Modify: 2020-02-24 21:18:07.000000000 +0800
Change: 2020-02-27 14:01:14.393045505 +0800
Birth: -
[root@Centos7 ~]# touch -a -t 202002242118.07 /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 142827497   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-24 21:18:07.000000000 +0800
Modify: 2020-02-24 21:18:07.000000000 +0800
Change: 2020-02-27 14:02:11.582047369 +0800
Birth: -
[root@Centos7 ~]# touch /etc/passwd
[root@Centos7 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2421          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 142827497   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-27 14:04:32.717051970 +0800
Modify: 2020-02-27 14:04:32.717051970 +0800
Change: 2020-02-27 14:04:32.717051970 +0800
Birth: -
Q3、总结软连接和硬连接区别,并用实例操作说明。
硬链接 软链接
创建硬链接会增加额外的记录项以引用文件 软链接不会额外增加记录项
每个目录引用相同的inode号 不增加或减少目标文件inode的引用计数
对应于同一文件系统上一个物理文件软链接 一个符号链接指向另一个文件
创建时链接数递增 链接数不会增加
不能跨越驱动器或分区 可以跨分区
不能对目录创建硬链接 可以对目录创建软链接
删除源文件不影响硬链接 删除源文件软链接失效
语法:

ln [OPTION]... TARGET LINK_NAME
[OPTION]
-s 软连接

例如:

#硬链接
[root@Centos7 ~]# ln /etc/passwd passwd
[root@Centos7 ~]# ls -lh passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd
-rw-r--r-- 2 root root 2.4K Feb 27 14:07 /etc/passwd
-rw-r--r-- 2 root root 2.4K Feb 27 14:07 passwd         #创建硬链接后引用计数为2
[root@Centos7 ~]# rm -rf /etc/passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd
ls: cannot access /etc/passwd: No such file or directory
-rw-r--r-- 1 0 root 2.4K Feb 27 14:07 passwd        #删除源文件后引用计数为1,并且UID显示为0

#删除源文件后可以正常打开查看硬链接文件
[root@Centos7 ~]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

#把文件拷贝回去
[root@Centos7 ~]# cp -p passwd /etc/passwd
[root@Centos7 ~]# ls -lh passwd 
-rw-r--r-- 1 root root 2.4K Feb 27 14:07 passwd     #引用计数为1,UID号恢复正常

#软链接
[root@Centos7 ~]# ln -s /etc/passwd passwd2
[root@Centos7 ~]# ls -lh /etc/passwd passwd2
-rw-r--r-- 1 root root 2.4K Feb 27 14:07 /etc/passwd
lrwxrwxrwx 1 root root   11 Feb 28 13:51 passwd2 -> /etc/passwd
[root@Centos7 ~]# rm -rf /etc/passwd
[root@Centos7 ~]# ls -lh /etc/passwd passwd2
ls: cannot access /etc/passwd: No such file or directory        
lrwxrwxrwx 1 0 root 11 Feb 28 13:51 passwd2 -> /etc/passwd

#源文件被删,提示打开错误
[root@Centos7 ~]# head passwd2
head: cannot open ‘passwd2’ for reading: No such file or directory      

Q4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

pwd 显示当前shell CWD的绝对路径
[root@Centos7 ~]$ pwd
/root
cd 改变目录
[root@Centos7 ~]$ cd /home/LiangJC/     #切换到/home/LiangJC
[root@Centos7 LiangJC]$cd -             #切换到上次目录
/root
[root@Centos7 ~]$ cd ..                 #切换到父目录
[root@Centos7 /]$ cd                    #切换到家目录
[root@Centos7 ~]$
ls 列出当前目录的内容或指定目录

语法:ls [OPTION]... [FILE]...

选项 功能
-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-d 目录
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序

例如:

[root@Centos7 ~]$ ls                                        #列出当前目录的内容
anaconda-ks.cfg  initial-setup-ks.cfg  mysqld
[root@Centos7 ~]$ ls -a                                 #列出当前目录的所有内容
.   anaconda-ks.cfg  .bash_logout   .bashrc  .config  .dbus                 mysqld   .viminfo
..  .bash_history    .bash_profile  .cache   .cshrc   initial-setup-ks.cfg  .tcshrc  .Xauthority
[root@Centos7 ~]$ ls -l                                 #显示详细信息
total 12
-rw-------. 1 root root 1681 Jan 28 13:43 anaconda-ks.cfg
-rw-r--r--. 1 root root 1729 Jan 28 14:09 initial-setup-ks.cfg
-rw-r--r--  1 root root 1010 Dec  6 20:49 mysqld
[root@Centos7 ~]$ ls -R                                 #列出目下所有子文件夹及文件
.:
anaconda-ks.cfg  initial-setup-ks.cfg  mysqld  test

./test:
a  b

./test/a:
d  e  f

./test/a/d:
file1.txt

./test/a/e:

./test/a/f:

./test/b:
d  e  f

./test/b/d:

./test/b/e:

./test/b/f:

[root@Centos7 ~]$ ls -ld /root                  #仅显示目录
dr-xr-x---. 6 root root 266 Feb 28 20:42 /root
stat 显示文件或文件系统状态

语法:stat [OPTION]... FILE...

-L 跟踪链接
-f 文件系统查看
-c FORMAT 指定格式显示
-t 简洁显示

例如:

[root@Centos7 ~]$ stat /etc/rc.local                #仅查看软连接文件
File: ‘/etc/rc.local’ -> ‘rc.d/rc.local’
Size: 13            Blocks: 0          IO Block: 4096   symbolic link
Device: 802h/2050d  Inode: 134778920   Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-28 20:24:39.451655502 +0800
Modify: 2020-01-28 13:33:18.980844226 +0800
Change: 2020-01-28 13:33:18.980844226 +0800
Birth: -
[root@Centos7 ~]$ stat -L /etc/rc.local                 #查看软连接指向的文件
File: ‘/etc/rc.local’
Size: 473           Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 68160925    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-31 07:31:52.000000000 +0800
Modify: 2018-10-31 07:31:52.000000000 +0800
Change: 2020-01-28 13:33:18.980844226 +0800
Birth: -
[root@Centos7 ~]$ stat -f /                         #查看文件系统
File: "/"
    ID: 80200000000 Namelen: 255     Type: xfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 26201600   Free: 25046649   Available: 25046649
Inodes: Total: 52428800   Free: 52297201
[root@Centos7 ~]$ stat -f /data
File: "/data"
    ID: 80300000000 Namelen: 255     Type: xfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 13100800   Free: 13092552   Available: 13092552
Inodes: Total: 26214400   Free: 26214397
[root@Centos7 ~]$ stat -f -t /data                  #简洁显示
/data 80300000000 255 58465342 4096 4096 13100800 13092552 13092552 26214400 26214397
[root@Centos7 ~]$ stat -c "%a %A %b %B %C %g %G %u %U" /etc/passwd
644 -rw-r--r-- 8 512 system_u:object_r:passwd_file_t:s0 0 root 0 root
cp 复制文件和目录

语法:cp [OPTION]... SOURCE... DIRECTORY

选项 功能
-i 覆盖前提示
-n 不覆盖
-r,-R 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all
-d 不复制原文件,只复制链接名
-p 保留属性(mode,ownership,timestamps)
--preserv[=ATTR_LIST] mode权限,ownership所有权,timestamps时间戳,links链接,xattr额外属性,context安全上下文,all(全部)
-f 强制
-u 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为 filename~
--backup=numbered 目标存在,覆盖前先备份加数字后缀

例如:

#普通复制,时间改变了
[root@Centos7 ~]$ cp /etc/passwd .
[root@Centos7 ~]$ ls -lh /etc/passwd passwd
-rw-r--r--. 1 root root 2.3K Jan 28 13:42 /etc/passwd
-rw-r--r--  1 root root 2.3K Feb 29 14:03 passwd
#保留属性复制
[root@Centos7 ~]$ cp -p /etc/passwd passwd2
[root@Centos7 ~]$ ls -lh /etc/passwd passwd2
-rw-r--r--. 1 root root 2.3K Jan 28 13:42 /etc/passwd
-rw-r--r--  1 root root 2.3K Jan 28 13:42 passwd2
#保留属性且文件存在时先备份源文件
[root@Centos7 ~]$ touch /etc/passwd
[root@Centos7 ~]$ cp -bp /etc/passwd passwd2
cp: overwrite ‘passwd2’? y
[root@Centos7 ~]$ ls -lh passwd*
-rw-r--r-- 1 root root 2.3K Feb 29 14:03 passwd
-rw-r--r-- 1 root root 2.3K Feb 29 14:07 passwd2
-rw-r--r-- 1 root root 2.3K Jan 28 13:42 passwd2~
#复制目录保留原属性
[root@Centos7 ~]$ cp -pr /etc etc_bak
[root@Centos7 ~]$ ls -ld /etc etc_bak
drwxr-xr-x. 143 root root 8192 Feb 29 13:43 /etc
drwxr-xr-x  143 root root 8192 Feb 29 13:43 etc_bak
mv 移动和重命名文件
选项 功能
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份

例如:

#重命名
[root@Centos7 ~]$ mv passwd2 file
#移动文件
[root@Centos7 ~]$ mkdir test
#移动文件夹
[root@Centos7 ~]$ mv test/ /tmp/
[root@Centos7 ~]$ ls -ld /tmp/test
drwxr-xr-x 2 root root 18 Feb 29 14:13 /tmp/test
rm 删除

rm [OPTION]... FILE...

选项 功能
-i 交互式
-f 强制
-r 递归,文件夹用

例如:

#删除文件
[root@Centos7 ~]$ rm passwd
rm: remove regular file ‘passwd’? y
#删除文件不提示
[root@Centos7 ~]$ rm -f passwd2~ 
#删除目录不提示
[root@Centos7 ~]$ rm -rf /tmp/test/
tree 显示目录树
选项 功能
-d 只显示目录
-L level 指定显示的层级数目
-P pattern 只显示由指定pattern匹配到的路径

例如:

#显示boot目录结构
[root@Centos7 ~]$ tree -d /boot
/boot
├── efi
│   └── EFI
│       ├── BOOT
│       └── centos
│           └── fw
├── grub
└── grub2
    ├── fonts
    ├── i386-pc
    └── locale

10 directories
#显示var一级目录结构
[root@Centos7 ~]$ tree -d -L 1 /var
/var
├── account
├── adm
├── cache
├── crash
├── db
├── empty
├── games
├── gopher
├── kerberos
├── lib
├── local
├── lock -> ../run/lock
├── log
├── mail -> spool/mail
├── nis
├── opt
├── preserve
├── run -> ../run
├── spool
├── target
├── tmp
└── yp

22 directories

mkdir 创建目录

选项 功能
-p 存在于不报错,且可自动创建所需的各目录
-v 显示详细信息
-m mode 创建目录时直接指定权限

例如:

#创建子目录并显示
[root@Centos7 ~]$ mkdir -pv test/a/b/c
mkdir: created directory ‘test’
mkdir: created directory ‘test/a’
mkdir: created directory ‘test/a/b’
mkdir: created directory ‘test/a/b/c’
#创建权限为555的文件夹
[root@Centos7 ~]$ mkdir -m 555 test2
[root@Centos7 ~]$ ls -ld test2/
dr-xr-xr-x 2 root root 6 Feb 29 14:43 test2/

Q5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符

cp /etc/profile /tmp/
vim /tmp/profile
:%s#^ \+##
:wq

Q6、在vim中设置tab缩进为4个字符

方法1:在vim的命令模式输入以下命令:
vim
:set tabstop=4 
:wq
方法2:编辑~/.vimrc文件,添加set tabstop=4 :
vim ~/.vimrc
set tabstop=4
:wq

你可能感兴趣的:(马哥linux第二周)