人生新篇章,Linux学习第二篇
一. 系统目录名称命名规则:
A.系统目录也是一种目录,所以首先它要符合一般目录的命名规则,而因为目录也是文件(Linux哲学思想:一切皆文件),所以也就是要符合文件的命名规则:
- 在同一路径下,两个文件不能同名
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 除了斜杠“/”和NUL,所有字符都有效。(但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们)
- 字母大小写敏感(这点与文件系统类型有关,例如标准Linux文件系统ext4,但如果用的是FAT32类型,那么字母大小写便不敏感)
B.如果是系统目录,还要符合官方Linux的标准库:LSB linux Standard Base。文件系统分层结构:FHS:(Filesystem Hierarchy Standard)
二.根目录下,系统目录的用途简述:
目录 描述
bin 基本命令二进制文件
boot 引导 boot loader 的静态文件
dev 设备文件
etc 主机专用的系统配置
lib 基本共享库和内核模块
media 可移动媒体的挂载点
mnt 临时挂载文件系统的挂载点
opt 附加应用程序软件包
run 进程运行过程中的相关数据
sbin 基本系统二进制文件
srv 提供该系统服务的数据
tmp 临时文件
usr 二级层次结构
var 可变数据
home 用户主目录(可选)
lib <qual> 另一种格式的基本共享库 (可选)
root root用户的主目录(可选)
2,描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
查看文件元数据
[ data]# stat wang.txt
File: ‘wang.txt’ 文件名
Size: 0 大小 Blocks: 0占用的磁盘块数 IO Block: 4096 磁盘块大小 regular empty file文件类型
Device: 803h/2051d所在设备 Inode: 67 文件节点编号 Links: 1硬链接次数
Access: (0644/-rw-r--r--)访问权限 Uid: ( 0/ root) 属哪个用户 Gid: ( 0/ root) 属哪个组
Access: 2020-03-01 20:55:49.464027136 +0800文件最近一次的访问时间
Modify: 2020-03-01 20:55:49.464027136 +0800文件的修改时间
Change: 2020-03-01 20:55:49.464027136 +0800文件的改变时间
Birth: -
修改文件时间戳方法
touch 命令的基本格式如下:touch [选项] 文件名
选项:
-a:只修改文件的访问时间;
-c:仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件。
-d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间。
-m:只修改文件的数据修改时间。
-t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm。
举例:
[ data]# touch -c wang.txt
[ data]# stat wang.txt
File: ‘wang.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-01 21:07:55.100052676 +0800
Modify: 2020-03-01 21:07:55.100052676 +0800
Change: 2020-03-01 21:07:55.100052676 +0800
Birth: -
[ data]#
3,总结软连接和硬连接区别,并用实例操作说明。
硬链接 软链接
本质 同一个文件多个名字 不同文件,软链接只是指向相应的文件,类似于windows中的快捷方式
能否跨磁盘分区 不能 能
能否链接目录 不能 能
相互关系 平等 ,相对独立 有主次之分
文件类型 与源文件相同 链接文件
链接数 被链接后增加链接数 被链接后不增加链接数
硬链接实例:
[ data]# ll -i
total 8
68 drwxr-xr-x 2 root root 6 Feb 29 16:05 d1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1.link
71 -rw-r--r-- 1 root root 2285 Feb 29 16:31 passed.old
72 -rw-r--r-- 1 root root 2304 Feb 29 18:33 passwd
67 -rw-r--r-- 1 root root 0 Mar 1 21:07 wang.txt
[ data]# ln wang.txt wang1.txt
[ data]# ll -i
total 8
68 drwxr-xr-x 2 root root 6 Feb 29 16:05 d1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1.link
71 -rw-r--r-- 1 root root 2285 Feb 29 16:31 passed.old
72 -rw-r--r-- 1 root root 2304 Feb 29 18:33 passwd
67 -rw-r--r-- 2 root root 0 Mar 1 21:07 wang1.txt
67 -rw-r--r-- 2 root root 0 Mar 1 21:07 wang.txt
[ data]# rm wang1.txt
rm: remove regular empty file ‘wang1.txt’? y
[ data]# ll i
ls: cannot access i: No such file or directory
[ data]# ll -i
total 8
68 drwxr-xr-x 2 root root 6 Feb 29 16:05 d1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1
69 -rw-r--r-- 2 root root 0 Feb 29 16:07 f1.link
71 -rw-r--r-- 1 root root 2285 Feb 29 16:31 passed.old
72 -rw-r--r-- 1 root root 2304 Feb 29 18:33 passwd
67 -rw-r--r-- 1 root root 0 Mar 1 21:07 wang.txt
[ data]#
软链接实例:
[ data]# ll -i
total 0
67 -rw-r--r-- 1 root root 0 Mar 1 21:07 wang.txt
[ data]# ln -s wang.txt wang.txt.link
[ data]# ll -i
total 0
67 -rw-r--r-- 1 root root 0 Mar 1 21:07 wang.txt
68 lrwxrwxrwx 1 root root 8 Mar 1 21:21 wang.txt.link -> wang.txt
[ data]# rm wang.txt
rm: remove regular empty file ‘wang.txt’? y
[ data]# ll -i
total 0
68 lrwxrwxrwx 1 root root 8 Mar 1 21:21 wang.txt.link -> wang.txt
[ data]# touch wang.txt
[ data]# ll -i
total 0
67 -rw-r--r-- 1 root root 0 Mar 1 21:22 wang.txt
68 lrwxrwxrwx 1 root root 8 Mar 1 21:21 wang.txt.link -> wang.txt
[ data]#
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
pwd 显示当前shell CWD的绝对路径
语法:
pwd(选项)
选项:
-P 显示真实物理路径
-L 显示链接路径(默认)
实例:
[ ~]# pwd
/root
[ ~]# cd /data
[ data]# pwd
/data
[ data]#
cd 改变目录
语法:
cd (选项) (参数)
选项:
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
实例:
[ ~]# cd /data
[ data]# pwd
/data
[ data]# cd /home
[ home]# cd ~
[ ~]# cd -
/home
[ home]# cd ..
[ /]# cd ../..
[ /]# cd !$
cd ../..
[ /]#
ls 列出当前目录的内容或指定目录
语法:
ls(选项)(参数)
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
实例:
[ /]# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[ /]# ls -a
. .. .autorelabel bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[ /]# ls -L
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[ /]# ls -l
total 24
lrwxrwxrwx. 1 root root 7 Feb 22 20:58 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Feb 24 21:41 boot
drwxr-xr-x. 2 root root 43 Mar 1 21:22 data
drwxr-xr-x 19 root root 3320 Mar 8 15:30 dev
drwxr-xr-x. 140 root root 8192 Mar 8 15:30 etc
drwxr-xr-x. 3 root root 19 Feb 22 21:12 home
lrwxrwxrwx. 1 root root 7 Feb 22 20:58 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Feb 22 20:58 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 3 root root 18 Feb 24 21:38 mnt
drwxr-xr-x. 3 root root 16 Feb 22 21:05 opt
dr-xr-xr-x 196 root root 0 Mar 8 15:30 proc
dr-xr-x---. 16 root root 4096 Mar 8 15:30 root
drwxr-xr-x 40 root root 1260 Mar 8 15:30 run
lrwxrwxrwx. 1 root root 8 Feb 22 20:58 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Mar 8 15:30 sys
drwxrwxrwt. 24 root root 4096 Mar 8 15:31 tmp
drwxr-xr-x. 13 root root 155 Feb 22 20:58 usr
drwxr-xr-x. 20 root root 282 Feb 22 21:22 var
[ data]# ls -R
.:
wangtest wang.txt wang.txt.link
./wangtest:
1 2
./wangtest/1:
./wangtest/2:
[ data]# ls -ld
drwxr-xr-x. 3 root root 59 Mar 8 15:36 .
[ data]# ls -1
wangtest
wang.txt
wang.txt.link
[ data]# ls -S
wangtest wang.txt.link wang.txt
[ data]# ls -t
wangtest wang.txt wang.txt.link
[ data]# ls -ut
wangtest wang.txt.link wang.txt
[ data]# ls -U
wang.txt.link wang.txt wangtest
[ data]# ls -X
wangtest wang.txt.link wang.txt
[ data]# stat 用于显示文件的状态信息。
语法:
stat(选项)(参数)
选项:
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
实例:
[ data]# stat wang.txt
File: ‘wang.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-01 21:22:31.105083509 +0800
Modify: 2020-03-01 21:22:31.105083509 +0800
Change: 2020-03-01 21:22:31.105083509 +0800
Birth: -
[ data]# stat -f wang.txt
File: "wang.txt"
ID: 80300000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 13100800 Free: 13092536 Available: 13092536
Inodes: Total: 26214400 Free: 26214392
[ data]# stat -t wang.txt
wang.txt 0 0 81a4 0 0 803 67 1 0 0 1583068951 1583068951 1583068951 0 4096
[ data]#
touch 创建空文件和刷新时间
语法:
touch [OPTION]... FILE...
选项:
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
实例:
[ data]# touch -t 03081544 wang.txt
[ data]# stat wang.txt
File: ‘wang.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-03-08 15:44:00.000000000 +0800
Modify: 2020-03-08 15:44:00.000000000 +0800
Change: 2020-03-08 15:49:20.931053407 +0800
Birth: -
[ data]#
cp 复制文件和目录
语法:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
实例:
[ wangtest]# ls
3
[ wangtest]# cd ..
[ data]# cp -if [1-3] wangtest
cp: overwrite ‘wangtest/3’? y
mv 移动和重命名文件
语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
选项:
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
实例:
[ data]# ls -a
. .. 10 2 3 4 9 t1 t2 wangtest wang.txt wang.txt.link
[r data]# ls -l
total 0
-rw-r--r-- 1 root root 0 Mar 8 16:10 10
-rw-r--r-- 1 root root 0 Mar 8 15:41 2
-rw-r--r-- 1 root root 0 Mar 8 16:03 3
-rw-r--r-- 1 root root 0 Mar 8 15:41 4
-rw-r--r-- 1 root root 0 Mar 8 16:10 9
drwxr-xr-x 2 root root 6 Mar 8 16:10 t1
drwxr-xr-x 2 root root 24 Mar 8 16:09 t2
drwxr-xr-x 3 root root 45 Mar 8 16:06 wangtest
-rw-r--r-- 1 root root 0 Mar 8 15:44 wang.txt
lrwxrwxrwx 1 root root 8 Mar 1 21:21 wang.txt.link -> wang.txt
[ data]# mv /data/t1/ /data/t2
[ data]# ls t2
7 8 t1
[ data]#
rm 删除
语法:
rm [OPTION]... FILE...
选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
实例:
[ t2]# rm -r t1
rm: remove directory ‘t1’? y
[ t2]# cd ..
[ data]# ls t2
7 8
[ data]# rm -rf t2
[ data]# ls
10 2 3 4 9 wangtest wang.txt wang.txt.link
[ data]#
5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
cp /etc/profile /tmp 复制/etc/profile至/tmp/目录
vim /tmp/profile / 用vim打开profile文件
扩展命令模式下输入
:%s/^\s*//g
完成后:
6、在vim中设置tab缩进为4个字符
vim打开用户家目录下.vimrc,如需改全局变量的话修改/etc/vimrc文件:
vim ~/.vimrc
加入如下字段:
set tabstop=4
然后:wq保存退出,再次vim编辑按tab键已经缩进为4个字符