0421Linux基础
1、描述Linux发行版的系统目录名称命名规则以及用途
/boot:引导文件存放目录 内核文件vmlinuz 以及引导加载器(Bootload,grub)
/bin:提供给所有用户使用的基本命令,不能独立分区,开机就会用到的程序
/sbin:提供给管理类的命令,不能独立分区,开机就会用到的程序
/lib:存放一些OS依赖的基本共享库文件以及内核模块(modules)
/lib64:专门为x86_64系统辅助共享库文件存放位置
/root:管理员家目录
/home/username:普通用户下的家目录
/etc:配置文件目录 都是一些文本文件。
/mnt:临时移动设备
/media:便携式移动设备挂载点
/dev:设备文件及特殊文件存放字符
b:block 块设备 c:charactor 字符设备
/tmp:临时存放文件目录
/usr:全局共享只读文件
/usr/bin:保证系统能拥有完整功能提供的应用程序
/usr/sbin:保证系统能拥有完整功能提供的管理类命令
/usr/lib:共享库存放位置
/usr/lib64:x86_64辅助共享库位置
/usr/include:c程序头文件存放目录
/usr/share:用于存放帮助文档等等
/usr/local:用于安置应用程序位置,替代早期/opt
/usr/local/bin:
/usr/local/sbin:
/var:存储可变数据
/var/cache:应用程序缓存数据目录
/var/lib:应用程序状态信息数据
/var/log:日志目录
/var/lock:锁文件
/var/run:运行中的进程上的数据。一般是存储进程中的pid文件。与/run是同1个文件
/var/spool:应用程序数据池
/var/tmp:系统2次重启直接的临时数据存放目录
/var/mail:各个用户的邮件存放目录
/proc: 用于输出内核与进程信息相关的虚拟文件系统;
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
/selinux:系统安全加固目录。
/lost+found:ext系列的文件系统格式化后产生的文件
2、描述文件的元数据信息有哪些,分别表示什么含义、如何查看?如何修改文件的时间戳信息?
文件的元数据信息有:
1.文件名
2.文件类型 -:普通文件 d:目录文件 l:符号链接文件 p:管道文件 s:s套接字文件 b:块设备文件 c:字符设备文件
3.文件的权限 权限分别有r:可读 w:可写 x:可执行
4.文件的属主、文件属组、Other这三种来设置权限。
5.文件的属组
6.other
7.文件的大小size
8.文件最后一次被修改的时间
9.文件的inode
使用ll -ih 就可以查看上述信息
[root@centos7 ~]#ll -ih anaconda-ks.cfg
201560977 -rw------- 1 root root 2.1K Apr 26 12:23 anaconda-ks.cfg
10.文件的三个时间戳
文件访问时间 Acces time 文件修改时间:Modify time(数据发生变化)文件改变时间:Chage time(元数据变化)
[root@centos7 ~]#stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 2105 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 201560977 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-26 12:23:05.731890053 +0800
Modify: 2020-04-26 12:23:05.731890053 +0800
Change: 2020-04-26 12:23:05.733890053 +0800
[root@centos7 ~]#touch -a -t 201904261200.00 anaconda-ks.cfg
[root@centos7 ~]#stat anaconda-ks.cfg | grep "Access: 2"
Access: 2019-04-26 12:00:00.000000000 +0800
[root@centos7 ~]#vim anaconda-ks.cfg
[root@centos7 ~]#stat anaconda-ks.cfg | grep "Modify: 2"
Modify: 2020-04-26 12:27:57.927873173 +0800
mtime刷新了,atime和ctime也同时刷新了时间戳。
[root@centos7 ~]#chmod 400 anaconda-ks.cfg
[root@centos7 ~]#stat anaconda-ks.cfg | grep "Change: 2"
Change: 2020-04-26 12:31:16.735861687 +0800
3、总结软连接和硬链接区别,并用实例操作说明
硬链接
不同文件名指向同1个inode号,每次被硬链接1次 都输都会加1。inode号相同,磁盘就占据1份数据。
优点:通过2个或多个文件名都可以访问同1个文件。节约磁盘空间。
缺点:硬链接不能跨分区,不能针对文件夹创建硬链接,会造成死循环。
[root@centos7 tmp]#ln f2 f2.link 创建硬链接, inode号相同。
[root@centos7 tmp]#ll -i f2 f2.link
135993258 -rw-r--r-- 2 root root 0 Apr 27 09:16 f2
135993258 -rw-r--r-- 2 root root 0 Apr 27 09:16 f2.link
[root@centos7 tmp]#ln f2 /boot/f2.link #无法跨分区创建
ln: failed to create hard link ‘/boot/f2.link’ => ‘f2’: Invalid cross-device link
软链接(符号链接)
软链接是指向1个文件的符号链接 相当于window中的快捷方式。
优点:节约空间,可以跨分区创建,可以对目录和文件创建。
软链接的原始文件一定要写相对于软链接的路径
[root@centos7 tmp]#ln -s f3 f3.link
[root@centos7 tmp]#ll -ih f3 f3.link
135993259 -rw-r--r-- 1 root root 37 Apr 27 10:43 f3
135993272 lrwxrwxrwx 1 root root 2 Apr 27 10:42 f3.link -> f3
#针对kk1创建软链接到/boot/kk33.link 软链接的原始路径一定是相对于软软链接的路径
[root@centos7 boot]#ln -sv ../root/data/tmp/1/kk1 kk33.link
‘kk33.link’ -> ‘../root/data/tmp/1/kk1’
[root@centos7 boot]#ll kk33.link
lrwxrwxrwx 1 root root 22 Apr 27 12:04 kk33.link -> ../root/data/tmp/1/kk1
区别
1.硬链接是多个名字同1个文件,软链接是不同文件
2.硬链接不能针对目录创建,软链接可以。
3.硬链接不能跨分区创建,软链接可以
4.硬链接inode号相同,软链接inode号不相同
5.硬链接的inode号引用计数会增加或减少,软链接不会
6.软链接是存放的是另外1个文件的路径,大小是指向路径的字符长度
7.文件类型不一样,硬链接是原文件,软链接是符号链接
8.软链接的原始文件一定要写相对于软链接的路径。而不是相对于当前的工作目录。硬链接则没有限制
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关实例演示。
文件管理类命令有:touch cp mv ls stat tree mkdir cd rm rmdir
touch 选项 参数 #-a 选项 atime和ctime都会刷新至当前时间
[root@centos7 ~]#stat anaconda-ks.cfg
Access: 2020-04-27 08:53:22.431963812 +0800
Modify: 2020-04-26 12:29:57.650866256 +0800
Change: 2020-04-27 08:53:22.431963812 +0800
[root@centos7 ~]#touch -a anaconda-ks.cfg
[root@centos7 ~]#stat anaconda-ks.cfg #atime和ctime都刷新至当前时间。
Access: 2020-04-27 08:55:39.901955870 +0800
Modify: 2020-04-26 12:29:57.650866256 +0800
Change: 2020-04-27 08:55:39.901955870 +0800
[root@centos7 ~]#touch -a -t 201904260856.00 anaconda-ks.cfg #加选项-t 修改atime
[root@centos7 ~]#stat anaconda-ks.cfg
Access: 2019-04-26 08:56:00.000000000 +0800
Modify: 2020-04-26 12:29:57.650866256 +0800
Change: 2020-04-27 08:57:42.648948779 +0800
[root@centos7 ~]#touch -m anaconda-ks.cfg mtime和ctime都会刷新当前时间
[root@centos7 ~]#stat anaconda-ks.cfg
Access: 2019-04-26 08:56:00.000000000 +0800
Modify: 2020-04-27 09:01:11.186936731 +0800
Change: 2020-04-27 09:01:11.186936731 +0800
[root@centos7 ~]#touch -mt 201804261111.00 anaconda-ks.cfg #修改mtime
[root@centos7 ~]#stat anaconda-ks.cfg
Access: 2019-04-26 08:56:00.000000000 +0800
Modify: 2018-04-26 11:11:00.000000000 +0800
Change: 2020-04-27 09:03:58.020927093 +0800
[root@centos7 ~]#touch -c anaconda-ks.cfg #文件存在则不创建,并刷新三个时间戳
[root@centos7 ~]#stat anaconda-ks.cfg
Access: 2020-04-27 09:04:48.626924170 +0800
Modify: 2020-04-27 09:04:48.626924170 +0800
Change: 2020-04-27 09:04:48.626924170 +0800
[root@centos7 ~]#chmod 755 anaconda-ks.cfg
[root@centos7 ~]#stat anaconda-ks.cfg #文件元数据信息发生改变会刷新时间戳。
Access: 2020-04-27 09:07:12.338915867 +0800
Modify: 2017-09-09 09:09:00.000000000 +0800
Change: 2020-04-27 09:12:54.810896082 +0800
cp 选项 参数
源是单个文件,目标是文件夹,且不存在同名的文件。则在文件夹中新建同名文件并填充内容。
[root@centos7 tmp]#cp f1 1/ #拷贝至目标文件夹不改名
[root@centos7 tmp]#ll 1/
-rw-r--r-- 1 root root 0 Apr 27 09:17 f1
源是单个文件,目标是文件夹,且不存在同名的文件,文件并重命名。 #拷贝并重命名
[root@centos7 tmp]#cp f1 1/123
[root@centos7 tmp]#ll 1/
-rw-r--r-- 1 root root 0 Apr 27 09:24 123
源是三个文件,目标是文件夹,且存在同名的文件或者指定目标为文件。则在拷贝的文件会把文件夹中的同名的文件或者指定的文件直接覆盖
[root@centos7 tmp]#cp f1 1/ #root默认是cp -i 会提示 慎用
cp: overwrite ‘1/f1’? y
源是多个文件,目标只能是目录。目标目录没有同名的文件,拷贝至目标文件夹不改名,同名文件会被内容覆盖。
[root@centos7 tmp]#cp f1 f2 f3 3/
[root@centos7 tmp]#ls 3/
f1 f2 f3
源是目录,要加选项-r 目标只能是目录。
[root@centos7 tmp]#cp -r 1/ 2/ 拷贝目录1 至目录2
[root@centos7 tmp]#cp -r 1/ 3/123 拷贝目录1 至目录3,并把目录1 改名为123
[root@centos7 tmp]#cp -r 4/ 1/ 如果拷贝过程存在同名的文件会自动覆盖。普通用户没有-i的选项。
cp: overwrite ‘1/4/f1’? y
cp: overwrite ‘1/4/f2’? y
cp: overwrite ‘1/4/f3’? y
cp: overwrite ‘1/4/123’? y
cp 选项 参数
cp -i :交互式询问是否要覆盖 管理员默认使用别名加了-i 选项
cp -r :拷贝目录的时候必须加-r或者-R
cp -a :归档备份,完成备份。保留全部属性信息。
cp -f :force 强制
cp -p : 等于 --preserv=mode ownership time stamp
mode: 权限 ownership: 属主属组 timestamp:links attr context all
cp -v :显示详细信息
cp -b :覆盖前先备份。
mv 移动
mv 选项 参数
源是文件,目录是文件夹,目录中没有同名的文件,把文件直接剪切过去,也可以重新指定文件名。
[root@centos7 tmp]#mv z2 1/ #把文件z2 拷贝至目录1
[root@centos7 tmp]#ll 1/z2
-rw-r--r-- 1 root root 0 Apr 27 09:46 1/z2
源是文件,目录是文件夹,目录中有同名的文件或指定文件,拷贝文件会把目录文件进行覆盖
[root@centos7 tmp]#mv z9 1/123
mv: overwrite ‘1/123’? y
root@centos7 tmp]#mv z1 z9 移动文件至当前目录,目标文件不存在,则是对目标文件进行重命名。
[root@centos7 tmp]#ls
1 2 3 4 f1 f2 f3 z2 z3 z9
选项
-f:强制
-i:交互式询问
-b:目标存在,覆盖前先备份。
[root@centos7 tmp]#mv -b z3 1/123
mv: overwrite ‘1/123’? y
[root@centos7 tmp]#cd 1/
[root@centos7 1]#ls
123 123~ 4 f1 f2 f3 z2
[root@centos7 1]#cat 123~ #123~就是原本123文件的备份
i am kankan
[root@centos7 1]#cat 123
hello
ls:列出当前文件夹所有内容
ls 选项 参数
ls -a:显示当前目录所有内容,包括隐藏文件。 隐藏文件以.开头
ls -A:显示当前目录所有内容,包括隐藏文件,不包含.和..
ls -l:长格式显示当前目录,包括文件内容一些属性信息
ls -d:显示文件夹目录自身信息一般配合-l一起使用 ls -ld
[root@centos7 ~]#ls -ld data/
drwxr-xr-x. 3 root root 40 Apr 27 09:16 data/
ls -h:显示人类易读的文件大小
ls -i:显示inode号
ls -r:逆序显示
ls -R:递归显示所有文件夹的内容。一网打尽。
ls -t:根据mtime时间排序
ll -ult 根据atime 时间进行排序
rm 选项 参数
-r:删除目录加-r
-f:强制
-i:交互式
[root@centos7 1]#ls
123 123~ 4 f1 f2 f3 z2
[root@centos7 1]#rm -rf 4/*
cd 选项 参数
cd 切换目录
cd - :当前目录和上一次目录来回切换
stat 选项 参数
查看文件的元数据。
[root@centos7 ~]#stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 2104 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 201560977 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-27 09:07:12.338915867 +0800
Modify: 2017-09-09 09:09:00.000000000 +0800
Change: 2020-04-27 09:12:54.810896082 +0800
Birth: -
[root@centos7 ~]#stat -c %a anaconda-ks.cfg #取文件的权限
755
[root@centos7 ~]#stat -c %F anaconda-ks.cfg #取文件的类型
regular file
[root@centos7 ~]#stat -c %i anaconda-ks.cfg #取文件的inode
201560977
[root@centos7 ~]#stat -c %n anaconda-ks.cfg #取文件的inode
anaconda-ks.cfg
[root@centos7 ~]#stat -c %U anaconda-ks.cfg #取文件的属主
root
[root@centos7 ~]#stat -c %G anaconda-ks.cfg #取文件的属组
root
[root@centos7 ~]#stat -c %m anaconda-ks.cfg #取文件的挂载点 mount point
/
tree 选项 参数
tree -C :文件内容着色显示
tree -L :指定层级显示
tree -d :只显示目录
[root@centos7 /]#tree -C -L 1 -d /
[root@centos7 tmp]#tree -C -L 1
.
├── 1
├── 1.link -> 1
├── 2
├── 3
├── 4
├── f2
├── f2.link
├── f3
mkdir 选项 参数
-p:逐级创建目录,目录存在也不会报错
-v:显示过程
-m:指定目录的权限
[root@centos7 tmp]#mkdir -pv b/2/4/6
mkdir: created directory ‘b’
mkdir: created directory ‘b/2’
mkdir: created directory ‘b/2/4’
mkdir: created directory ‘b/2/4/6’
[root@centos7 tmp]#mkdir -m 755 jack
[root@centos7 tmp]#ll -ld jack/
drwxr-xr-x 2 root root 6 Apr 27 12:42 jack/
rmdir 选项 参数
-p:逐级删除空目录,指到目录不空为止
-v:显示过程
-f:强制
[root@centos7 6]#rmdir -p /root/data/tmp/4/1/2/3/4/5/6/
rename #批量修改文件名
[root@centos7 tmp]#rename .log .log.bak *
[root@centos7 tmp]#ls
f1.log.bak f2.log.bak f3.log.bak f4.log.bak f5.log.bak f6.log.bak f7.log.bak f8.log.bak f9.log.bak
[root@centos7 tmp]#rename .log.bak .log *
[root@centos7 tmp]#ls
f1.log f2.log f3.log f4.log f5.log f6.log f7.log f8.log f9.log
5、复制/etc/profile至/tmp/目录 用查找替换命令删除/tmp/profile文件中的行首的空白字符
[root@centos7 ~]#cp /etc/profile /tmp/
:%s/^[[:space:]]\+/d
6、vim中设置tab缩进为4个字符
[root@centos7 ~]#vim .vimrc
set ts=4
[root@centos7 ~]#bash .vimrc