今日内容概要
- 文件路径定位
- 系统文件管理:
- 创建/复制/移动/删除
- 查看文件内容
- 联网下载文件
- 文件或命令查找
- 字符处理命令
- 系统文件属性
- vim使用
- 用户操作
今日内容详细
文件路径定位
| 1. /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下 |
| /bin –> /usr/bin |
| /sbin –> /usr/sbin |
| lib -> usr/lib |
| lib64 -> usr/lib64 |
| |
| 2.路径非常重要,名字一样,单不一定是一个文件 |
| 3.相对路径与绝对路径 |
| 相对路径: 相对于当前文件,目录的路径 |
| 绝对路径:从根路径下开始找 |
| win:cd |
| linxu: / |
| 4. .和.. |
| 1. . 表示当前路径 |
| 2. .. 表示上一层 |
| ps:以后看到 . .. 都是用相对,看到 / 都是绝对 |
| ./ 相对 |
| ../ 相对 |
| |
| 5.cd操作 |
| 1.cd 切换目录,例: cd /etc |
| 2.cd - 切换回上一次所在的目录 |
| 3.cd ~ 切换回当前用户的家目录,注意:root和普通用户是否有所不同吗? |
| 4.cd . 代表当前目录,一般在拷贝、移动等情况下使用 cp /etc/hostname ./ |
| 5.cd .. 切换回当前目录的上级目录 |
系统文件管理:创建/复制/移动/删除
文件创建touch
| 1.touch file |
| 2.touch file2 file3 |
| 3.touch /home/od/file4 file5 |
| 4.touch file{a,b,c} |
| 5.touch file{1..10} |
| 6.touch file{a..z} |
| |
| ps:rm -rf fil* 把fil开头的全删除 |
创建目录mkdir
| 1.选项:-v 显示详细信息 -p 递归创建目录 |
| 1.mkdir dir1 |
| 2.mkdir /home/od/dir1 /home/od/dir2 |
| 3.mkdir -v /home/od/{dir3,dir4} |
| 4.mkdir -pv /home/od/dir5/dir6 |
| 5.mkdir -pv /home/{od/{diu,but},boy} |
以树状显示目录结构命令tree
| 1.下载:yum install -y tree |
| 2.tree 路径目录 |
| . |
| └── a |
| └── c |
| |
复制cp
| 1.选项: -v:详细显示命令执行的操作 -r: 递归处理目录与子目录 -p: 保留源文件或目录的属性 |
| 1. cp file /tmp/file_copy |
| 2. cp name /tmp/name |
| 3. cp file /tmp/ |
| 4. cp -p file /tmp/file_p |
| 5. cp -r /etc/ /tmp/ |
| 6. cp -rv /etc/hosts /etc/hostname /tmp |
| 7. cp -rv /etc/{hosts,hosts.bak} |
| 8. cp -rv /etc/hosts{,-org} |
移动mv
| 1.mv file file1 |
| 2.mv file1 /tmp/ |
| 3.mv /tmp/file1 ./ |
| 4.mv dir/ /tmp/ |
| |
| 5.touch file{1..3} |
| mv file1 file2 file3 /opt/ |
| |
| 6.mkdir dir{1..3} |
| mv dir1/ dir2/ dir3/ /opt |
删除rm
| 1.选项:-r: 递归 -f: 强制删除 -v: 详细过程 |
| 1.rm file.txt 删除文件, 默认rm存在alias别名,rm -i所以会提醒是否删除文件 |
| 2.rm -f file.txt 删除文件, 不提醒 |
| |
| |
| 3.rm -r dir/ 递归删除目录,会提示 |
| 4.rm -rf dir/ 强制删除目录,不提醒(慎用) |
| |
| |
| 2..rm删除示例 |
| mkdir /home/dir10 |
| touch /home/dir10/{file2,file3,.file4} |
| rm -f /home/dir10/ //不包括隐藏文件 |
| ls /home/dir10/ -a |
| . .. dir1 dir2 dir3 |
| |
| |
| 3.rm删除示例2 |
| touch file{1..10} |
| touch {1..10}.pdf |
| rm -rf *.pdf |
| rm -rf file* |
查看文件内容(cat less more head tail grep )
cat
| 1. |
| cp /etc/passwd ./pass |
| cat pass 正常查看文件方式 |
| cat -n pass -n显示文件有多少行 |
| cat -A pass 查看文件的特殊符号,比如文件中存在tab键 |
| tac pass 倒序查看文件 |
| |
| 2.追加内容 |
| cat >> 文件名 test2.txt nana.txt |
| 程序在往日志文件里写日志 |
grep过滤文件内容
| 1.grep "^root" pass 匹配以root开头的行 |
| 2.grep "bash$" pass 匹配以bash结尾的行 |
| 3.grep -i "ftp" pass 忽略大小写匹配 |
| 4.grep -Ei "sync$|ftp" pass 匹配文件中包含sync结尾或ftp字符串 |
| 5.grep -n -A 2 "Failed" /var/log/secure 匹配/var/log/secure文件中Failed字符串,并打印它的下2行 |
| 6.grep -n -B 2 "Failed" /var/log/secure |
| 7.grep -n -C 2 "Failed" /var/log/secure |
| ps:/etc/passwd 存放用户的文件 |
| |
| 8.上翻,下翻 |
| control+b:下翻 |
| control+f:上翻 |
| |
文件管理之:联网下载文件(wget、curl)、文件上传与下载(rz、sz)
wget、curl联网下载文件
| 1.wget |
| 1.yum install wget -y |
| 2..选项: -O: 指定下载地址 |
| wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
| |
| 2.crul:浏览网络上资源,-o保存到本地 |
| 1.选项: -o: 指定下载地址 |
| curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
| |
rzsz上传下载文件
| 1.win |
| yum install lrzsz -y |
| rz |
| sz /path/file |
| |
| 2.mac |
| mac电脑上传文件到虚拟机:scp /path/to/your/file username@192.168.0.100:/path/to/destination |
| 虚拟机下载文件到mac电脑上:scp username@192.168.0.100:/path/to/your/file /path/to/destination/on/your/mac |
文件管理之:文件或命令查找(locate、which、whereis、find)
文件查找
| 1.locate /etc/sh |
| 2.locate -i /etc/sh |
命令查找
| 1.which ls 查找ls命令的绝对路径 |
| 2.whereis ls //查找命令的路径、帮助手册、等 |
| 3.whereis -b ls //仅显示命令所在的路径,仅看二进制 |
| |
| 4.对于内核相关的一些命令,用which whereis 是无法查询到的,需要使用type采查询 |
| type -a ls |
| type -a for |
| 5.找文件 |
| find / -name nana.txt |
| -查找/etc目录下包含ifcfg-eth0名称的文件 find /etc -name "ifcfg-eth1" |
| - find /etc/ -name "ifcfg*" |
| -查找 ect目录下大于5m的文件:find /etc -size +5M |
| -查找dev目录下所有的目录:find /dev -type d |
| -查找当前路径下名字忽略大小写以file-开头的7天前的文件:find ./ -iname "file-*" -mtime +7 |
文件管理之:字符处理命令(wc)
www.cnblogs.com/liuqingzhen…
| 1.wc统计行号 |
| 选项:-l显示文件行数 -c显示文件字节 -w显示文件单词 |
| 2.wc -l /etc/fstab |
| 3.wc -l /etc/services |
| 4.ls |wc -l |
| 5.cat /etc/fstab | wc -l |
| |
| 2.扩展方法 |
| grep -n "." /etc/services | tail -1 |
| awk '{print NR $0}' /etc/services | tail -1 |
| cat -n /etc/services | tail -1 |
系统文件属性
| 1. |
| [root@nana ~] |
| -rwxr-xr-x. 1 root root 117656 Jun 30 2016 /bin/ls |
| srw-rw-rw-. 1 root root 0 Jan 20 10:35 /dev/log |
| brw-rw----. 1 root disk 8, 0 Jan 20 10:36 /dev/sda |
| crw--w----. 1 root tty 4, 1 Jan 20 10:36 /dev/tty1 |
| lrwxrwxrwx. 1 root root 22 Jan 13 11:31 /etc/grub2.cfg -> ../boot/grub2/grub.cfg |
| -rw-r--r--. 1 root root 199 Jan 20 11:03 /etc/hosts |
| prw-------. 1 root root 0 Jan 20 10:36 /run/dmeventd-client |
| drwxrwxrwt. 61 root root 8192 Jan 21 13:01 /tmp |
| |
| 2.说明 |
| -rw-r--r--. 1 root root 35 7月 27 10:33 lqz.txt |
| |
| 1. -rw-r--r--. 第一个- 表示文件类型,后面的rwx,表示权限 |
| 2. 1 硬链接次数 |
| 3. root 文件属于哪个用户 |
| 4. root 文件属于哪个组 |
| 5. 87811 文件大小 |
| 6. 7月 27 10:33 :最新修改的时间与日期 |
| 7. a.jpeg ⑨:文件或目录名称 |
| |
| 3.文件类型 |
| - 普通文件(文本, 二进制, 压缩, 图片, 日志等) |
| d 目录文件 |
| b 设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2 |
| c 设备文件(字符设备),终端 /dev/tty1, /dev/zero |
| s 套接字文件, 进程间通信(socket) |
| p 管道文件 |
| l 链接文件 |
系统链接文件:软连接,硬链接
文件分:文件名 、 inode信息:文件类型,大小,位置,时间 ,文件真正存储位置block
软连接--复制一份inode信息(win的快捷方式)
软链接文件会将inode指向源文件的block,当我们访问这个软链接文件时,其实访问的是源文件本身。那么当我们对一个文件创建多个软链接,其实就是多个inode指向同一个block。当我们删除软链接文件时,其实只是删除了一个inode指向,并不会对源文件源文件造成影响,但如果删除的是源文件则会造成所有软链接文件失效

硬连接--只是复制了一份文件名
若一个inode号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名,如下图hard link 就是 file 的一个别名,他们有共同的 inode。

软连接实战
| 1.文件软链接示例 |
| touch /root/file |
| ln -s /root/file /tmp/file_bak |
| ll /tmp/file_bak root下file链接到/tmp下并重命名为file_bak |
| lrwxrwxrwx. 1 root root 10 7月 26 22:55 /tmp/file_bak -> /root/file |
| |
| |
| 2.目录软链接示例 |
| mkdir /soft/nginx1.1 -p |
| ln -s /soft/nginx1.1/ /soft/nginx |
| ll /soft/nginx 查看链接指向 |
| lrwxrwxrwx. 1 root root 15 7月 26 22:57 nginx1.1 -> /soft/nginx1.1/ |
| |
| 3.redis源码安装 redis.7.11---->做个软连接 redis--- |
| redis.7.11 /bin |
| redis.6.11 /bin |
| redis 指向7.11--->redis/bin/xx |
| |
| 4.软链接使用场景 |
| 1.软件升级 |
| 2.企业代码发布 |
| 3.不方便目录移动 |
硬链接实践
| 1.文件硬链接示例 |
| ln /root/file /tmp/file_hard |
| ll /tmp/file_hard |
| -rw-r--r--. 2 root root 0 7月 26 22:55 /tmp/file_hard |
| ps:目录不能创建硬链接,硬链接文件可以用rm命令删除 |
硬链接与软链接区别
| 1.ln命令创建硬链接,ln -s命令创建软链接。 |
| 2.目录不能创建硬链接,并且硬链接不可以跨越分区系统。 |
| 3.目录软链接特别常用,并且软链接支持跨越分区系统。 |
| 4.硬链接文件与源文件的inode相同,软链接文件与源文件inode不同。 |
| 5.删除软链接文件,对源文件及硬链接文件无任何影响。 |
| 6.删除文件的硬链接文件,对源文件及链接文件无任何影响。 |
| 7.删除链接文件的源文件,对硬链接无影响,会导致软链接失效。 |
| 8.删除源文件及其硬链接文件,整个文件会被真正的删除。 |
vim使用(使用频率非常高)
www.cnblogs.com/liuqingzhen…

| 1.什么是VIM? |
| vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档) |
| 最小化安装只有vi |
| vim,需要额外安装,比vi更强大一些 |
| |
| 2.为什么要使用VIM? |
| 因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。 |
| 也就是说如果没有vi/vim,我们很多工作都无法完成。PS: vim是学习linux最重要的命令之一 |
| |
| 3.VI与VIM有什么区别? |
| vi和vim都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其他编辑功能几乎无差,所以使用vi还是vim取决个人习惯。(相当于windows系统下的文本编辑软件“记事本”与”notepad++”的区别) |
| PS:因为前期最小化安装CentOS系统,所以默认情况下没有vim命令,但可以使用yum install vim -y安装 |
| |
| 4.如何使用VIM编辑器? |
| 在使用VIM之前,我们需要先介绍下VIM的三种模式: 普通模式、编辑模式、命令模式,每种模式分别支持多种不同的快捷键,要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。 |
| |
| 5.安装:yum install vim -y |
| 6.vim 操作文件,有三种模式:普通模式,编辑模式,命令模式 |
| 1.vim 文件名刚进来----》普通模式--》只能复制,粘贴,翻页,剪切 |
| 2.进入到编辑模式(按esc退回到普通模式):从普通模式进入:i,a,o,I,A,O-->就可以写内容了 |
| 3.命令模式:之鞥呢从普通模式进入 |
| |
| |
普通模式
| 1.命令光标跳转 |
| G |
| gg |
| Ngg |
| $ |
| ^或者0 |
| |
| 2.文件内容较多 |
| ctrl+f |
| ctrl+b |
| |
| |
| 3.复制与粘贴 |
| yy |
| 5yy |
| |
| p(小写) |
| P(大写) |
| |
| |
| 4.删除、剪贴、撤销 |
| dd |
| 4dd |
| dG |
| D |
| x |
| X |
| dd & p |
| u |
| |
| |
| 5.替换 |
| r |
| R |
编辑模式(从普通模式进入到编辑模式)
命令模式,主要用于搜索, 保存, 退出文件。
| 1.文件保存与退出 |
| :w 保存当前状态 |
| :w! 强制保存当前状态 |
| :q 退出当前文档(文档必须保存才能退出) |
| :q! 强制退出文档不会修改当前内容 |
| :wq 先保存,在退出 |
| :wq! 强制保存并退出 |
| :x 先保存,在退出 |
| ZZ 保存退出, shfit+zz |
| :number 跳转至对应的行号 |
| :set nu 显示行号 |
| :set nonu 不显示行号 |
| |
| 2.文件内容查找 |
| /string |
| n |
| N |
| |
| |
| 3.文件内容替换 |
| :1,5s |
| :1,5s |
| :%s |
| :%s |
| |
| |
| 4.文件内容另存 |
| :w /root/test.txt |
| |
| |
| 5.文件内容读入 |
| :r /etc/hosts |
| :5r /etc/hosts |
用户操作
用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房子,能够正常入驻),Linux系统则允许同一时刻多个用户同时登陆,登陆后相互之间操作并不影响。
| 1.Linux下的用户有什么用或者说我们为什么要创建用户? |
| 1.系统上的每一个进程(运行的程序),都需要一个特定的用户运行 |
| 2.通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。 |
查看用户
| 1.查看当前登录的用户信息:id |
| [root@localhost nana] |
| uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 |
| """ |
| uid:用户id,系统只能识别uid,不能识别名字,人看名字 |
| gid:组id |
| uid=0(root) gid=0(root) groups=0(root) |
| """ |
| 2. |
| [root@bgx ~] |
| uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy) |
每一个进程都会由一个用户身份运行
ps aux 可以查看
| [root@nana ~] |
| root 33782 0.0 0.0 0 0 ? R 02:46 0:00 [kworker/u256:0] |
| root 35637 0.0 0.0 0 0 ? R 05:11 0:03 [kworker/0:2] |
用户存存放位置
Linux系统会将用户的信息存放在/etc/passwd,记录了用户的信息,但没有密码信息,密码被存放在/etc/shadow中。也就是说这两个文件非常的重要,不要轻易删除与修改。
1./etc/passwd 配置文件解释如下图,或者man 5 passwd

2./etc/shadow 配置文件解释如下图,或者man 5 shadow (ps使用change修改密码过期时间示例)

4.最后我们需要了解下系统对用户的一个约定?(约定娶你,就真的会娶吗?)
用户UID |
系统中约定的含义 |
0 |
超级管理员,最高权限,有着极强的破坏能力 |
1~200 |
系统用户,用来运行系统自带的进程,默认已创建 |
201~999 |
系统用户,用来运行用户安装的程序,所以此类用户无需登录系统 |
1000+ |
普通用户,正常可以登陆系统的用户,权限比较小,能执行的任务有限 |
PS:在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户
用户相关命令
1.增加用户
使用useradd命令,注意: adduser命令软链接指向useradd命令
| useradd justin |
| adduser |
| passwd justin |