Linux自用笔记
Linux自用笔记
1.命令终端字段含义介绍
[root@localhost ~]#
解释:
- root:当前登录系统用户名(root超级管理员)
- localhost :当前主机名
- :当前用户所在目录( 为家目录) ,root超级管理员家目录:/root
- #: 当前用户身份是超级管理员
[student@localhost ~]$
- $:当前用户身份为普通用户,普通用户的家目录:/home/用户名同名
3.Linux系统基本概念
- 多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源
- 多任务的系统:允许同时执行多个任务
- 严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写
- 一切皆文件:硬件设备(内存、CPU、网卡、显示器、硬盘等等)都是以文件的形式存在的
- 不管是文件还是目录都是以倒挂的树形结构,存在于系统的“/”根目录下,根目录是Linux系统的起点
- 对于Linux系统而言,目录/文件没有扩展名一说,扩展名如:.sh(脚本文件) .conf(配置文件) .log(日志文件) .rpm(软件包).tar(压缩包)是易于用户方便识别
- 没有提示就是最好的提示(成功了)
- Linux系统没有回收站
4.显示行号
第一步,打开vim
vim ~/.vimrc
第二步,在该文件中加入一行,命令如下:
set nu # 显示行号
set nonu # 不显示行号
5.命令行编辑技巧
键盘上下键调出历史命令
Ctrl + c:废弃当前命令行中的命令,取消当前执行的命令,例如ping
Ctrl + l,clear:清屏
tab建自动补齐:可补齐命令、参数、文件路径、软件名
esc + . :将上一条命令参数变成当前命令的执行对象
Ctrl + a:将当前光标移动至行首
Ctrl + e:将当前光标移动至行尾
Ctrl + u 清空至行首
Ctrl + w 删除一个单词
exit,logout:退出系统
6.命令行一般命令格式
- 命令字 [-选项...] [参数...]
- 命令字:命令本身(功能)
- 选项:调整命令功能的
- 短选项:-l -a -d -h(单个字符),短选项可以合并使用:-lad -lh
- 长选项:--help(单词),长选项通常是不能合并使用的
- 参数:命令的执行对象,文件/目录/程序等
- []:可选的
- ...:可以同时有多个选项或参数
7.Linux系统辨别目录与文件的方法
蓝色表示目录(windows系统里的文件夹)
白色表示文件
浅蓝色表示链接文件(类似于windows系统的快捷方式)
绿色表示可执行文件(如脚本,命令程序文件)
红色表示压缩文件
黄色表示设备文件(硬盘、键盘、鼠标、网卡、CPU硬件设备都是以文件的形式存在的)
红色闪动文件——>表示链接文件不可用
8.ls 查看目录/文件命令
ls命令(英文全拼:list):用于查看目录下内容及目录和文件详细属性信息
命令格式:ls [-选项...] [参数...]
常用选项:
-a 显示目录下所有内容,包含隐藏的内容
-l 以长格式显示目录下的内容及详细属性
-h 人性化显示目录下内容大小(kB、MB、GB)
-d 仅显示目录本身而不显示目录下的内容
-i 查看inode号(系统任何的文件或目录都有一个唯一的编号)
-R:递归查看目录下所有内容(从头到尾)
注意(附加):递归是指将所有的目录从头到尾全部呈现出来。
9.Linux系统文件类型
- 文件:
d 目录:
l 链接文件
b 跨设备文件
c 字符设备文件
p 管道设备文件
s 套接字
10.Linux系统下的归属关系
在Linux系统下,文件给用户分成了三类
所有者:文件或目录的拥有者,拥有者的权限通常是最大的
所属组:文件或目录属于哪一个组,所属组的权限略微比所有者小
其他人:既不是文件或目录的所有者,也不属于文件或目录组内的成员,其他人的权限通常最小的权限
ls命令示例:
#显示当前所在目录下的所有内容
[root@localhost ~]# ls
#查看根目录下所有内容
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
#查看/etc目录下所有内容
[root@localhost ~]# ls /etc
#查看/bin目录下所有内容
[root@localhost ~]# ls /bin
#查看/dev目录下所有内容
[root@localhost ~]# ls /dev
#查看目录下所有目录和文件,包括隐藏的内容
[root@localhost ~]# ls -a
#以长格式显示目录下所有内容,包括详细的属性信息
[root@localhost ~]# ls -l
-rw-r--r--. 1 root root 0 10月 24 15:16 hello
#解释
-:文件类型
1:代表文件的引用次数
root:文件的所有者
root:文件的所属组
0:文件的大小,默认以字节为单位显示大小
10月 24 15:16:文件最近一次的修改时间
hello:文件名
#以长格式显示目录所有内容,以人性化的方式显示详细的属性信息
[root@localhost ~]# ls -l -h
#短选项合并使用
[root@localhost ~]# ls -lh
#以长格式显示目录所有内容,以人性化的方式显示详细的属性信息,包括隐藏的内容
[root@localhost ~]# ls -lha
#以长格式显示根目录下所有内容,包括详细的属性信息
[root@localhost ~]# ls -l /
lrwxrwxrwx. 1 root root 7 3月 13 17:15 bin -> usr/bin
#创建hello.txt文件
[root@localhost ~]# touch hello.txt
#查看文件的元数据信息
[root@localhost ~]# stat hello.txt
文件:"hello.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:33575020 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2021-03-14 16:38:14.349861770 +0800
最近更改:2021-03-14 16:38:14.349861770 +0800
最近改动:2021-03-14 16:38:14.349861770 +0800
创建时间:-
11.Linux基本权限的类别
r 读取 w 写入 x 执行 - 没有权限
权限顺序:rwx rwx rwx
[root@localhost ~]# ls -l
-rw-r--r--. 1 root root 1831 3月 13 17:45 initial-setup-ks.cfg
# 解释
-:文件类型
rw- r-- r--:所有者u、所属组g、其他人o的权限
u g o
r 读取权限,w写入权限,x执行权限,-没有任何权限
1:代表文件的引用次数,只针对与做了硬连接的文件才有效
root:文件的所有者
root:文件的所属组
1831:文件的大小,默认以字节为单位显示大小
3月 13 17:45:文件最近一次的修改时间
initial-setup-ks.cfg:文件名
#查看/root目录本身详细属性信息
[root@localhost ~]# ls -ld /root
dr-xr-x---. 14 root root 4096 3月 14 16:38 /root
#查看当前目录下所有内容的inode号
[root@localhost ~]# ls -i
33574979 anaconda-ks.cfg 33574984 initial-setup-ks.cfg 33575035 模板 33575036 图片 17470701 下载 17470702 音乐
33575020 hello.txt 51909391 公共 51909392 视频 3204374 文档 33575017 新建文件夹.zip 3204373 桌面
#查看hello.txt文件的inode号
[root@localhost ~]# ls -i hello.txt
33575020 hello.txt
#查看/etc/目录本身的inode号
[root@localhost ~]# ls -id /etc
16777281 /etc
12.绝对路径与相对路径
绝对路径:以 /(根) 为起点,到达你想去的目标目录称为绝对路径
相对路径:以当前路径为起点,到达你想去的目标目录
常用快捷操作:
- ~ 表示为家目录
- . 表示为当前目录
- .. 表示上一级目录
-可在两路径之间来回切换
13.pwd 打印当前所在目录
pwd(英文全拼:print work directory)打印当前所在的工作目录,执行pwd命令后,可显示当前所在的工作目录的绝对路径名称
命令格式:pwd [-选项]
[root@localhost ~]# cd /opt/a/b/c/d
#打印当前所在目录绝对路径
[root@localhost d]# pwd
/opt/a/b/c/d
#切换到用户家目录
[root@localhost d]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /opt/a/b/c/d
[root@localhost d]# pwd
/opt/a/b/c/d
[root@localhost d]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /bin
[root@localhost bin]# pwd
/bin
[root@localhost bin]# cd /boot
[root@localhost boot]# pwd
/boot
[root@localhost boot]# ls
[root@localhost boot]# cd /dev
[root@localhost dev]# pwd
/dev
[root@localhost dev]# ls
[root@localhost dev]# cd /etc
[root@localhost etc]# pwd
/etc
[root@localhost etc]# ls
[root@localhost etc]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
#“.”表示当前所在目录,对于cd命令而言作用不大
[root@localhost etc]# cd .
[root@localhost etc]# cd /opt/a/b/c/d
[root@localhost d]# pwd
/opt/a/b/c/d
#“..”切换到当前目录的上一级目录
[root@localhost d]# cd ..
[root@localhost c]# pwd
/opt/a/b/c
[root@localhost c]# cd ..
[root@localhost b]# pwd
/opt/a/b
[root@localhost b]# cd ..
[root@localhost a]# cd ..
[root@localhost opt]# pwd
/opt
[root@localhost opt]# cd ..
[root@localhost /]# cd ..
[root@localhost /]# cd
[root@localhost ~]# ls
[root@localhost ~]# cd /opt/a/b/c/d
[root@localhost d]# pwd
/opt/a/b/c/d
#"-"可在两个路径之间来回切换
[root@localhost d]# cd /etc/yum
[root@localhost yum]# cd -
/opt/a/b/c/d
[root@localhost d]# pwd
/opt/a/b/c/d
[root@localhost d]# cd -
/etc/ym
[root@localhost yum]# cd -
/opt/a/b/c/d
[root@localhost d]# cd -
/etc/yum
14.rmdir 删除空目录命令
rmdir(英文全拼:remove directory)删除空目录
命令格式:rmdir [-选项] 目录名
#rmdir只能删除空目录,如果目录下存在数据无法删除
[root@localhost ~]# rmdir /opt/a
rmdir: 删除 "/opt/a" 失败: 目录非空
[root@localhost ~]# ls -R /opt/a
/opt/a:
b
/opt/a/b:
c
/opt/a/b/c:
d
/opt/a/b/c/d:
[root@localhost ~]# rmdir /opt/a/b/c/d
[root@localhost ~]# ls -R /opt/a
/opt/a:
b
/opt/a/b:
c
/opt/a/b/c:
[root@localhost ~]# rmdir /opt/a/b/c
[root@localhost ~]# ls -R /opt/a/b
/opt/a/b:
[root@localhost ~]# rmdir /opt/a/b
[root@localhost ~]# ls -R /opt/a
/opt/a:
[root@localhost ~]# rmdir /opt/a
[root@localhost ~]# ls /opt
rh student xx
[root@localhost ~]# rmdir /opt/
rmdir: 删除 "/opt/" 失败: 目录非空
15.touch 创建文件命令
touch 命令用于创建新的空白文件
命令格式:touch [-选项] 文件名
#在当前路径创建空文件
[root@localhost ~]# touch hello
[root@localhost ~]# ls
#在当前路径同时创建多个文件
[root@localhost ~]# touch t1 t2 t3 t4
[root@localhost ~]# ls
#在指定路径同时创建多个文件
[root@localhost ~]# touch /opt/test1 /opt/test2 /opt/test3
[root@localhost ~]# ls /opt
rh student test1 test2 test3 xx
#如果存在同名目录时,无法创建
[root@localhost ~]# mkdir test
mkdir: 无法创建目录"test": 文件已存在
#如果存在同名文件时,touch命令没有提示,但原有文件不会被覆盖
[root@localhost ~]# touch t1
#对于目录而言,只有单个目录的时候,“/”可有可无
[root@localhost ~]# ls /opt/
rh student test1 test2 test3 xx
[root@localhost ~]# ls /opt
rh student test1 test2 test3 xx
#对于目录而言,查看目录下的内容时,必须要有“/”
[root@localhost ~]# ls /opt/xx
oo
#对于文件而言,后边绝对不能有“/”
[root@localhost ~]# ls /opt/test1
/opt/test1
[root@localhost ~]# ls /opt/test1/
ls: 无法访问/opt/test1/: 不是目录
16.cp 复制命令
cp(英文全拼:copy file)用于复制文件或目录,cp命令在复制时也可修改目录或文件名字
命令格式:cp [-选项] 源文件或目录 目标目录
常用选项:
-a: 通常在复制目录时使用,它保留链接,文件属性,并复制目录下所有的内容
-f: 覆盖已经存在的目标文件而不给出提示
-i:覆盖目标文件之前给出提示,若用户回复y则确认覆盖
-p: 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r: 复制目录下的所有子目录和文件
-d: 如果来源文件为连结档,就复制连结档属性
-l:创建链接文件而不复制
-a: 相当于-p,-d,-r三条命令一起的意思
-s: 复制为快捷方式
-u: 如果复制文件a比b新才复制
#复制当前目录文件到/opt目录(相对路径方式复制)
[root@localhost ~]# cp t1 /opt/
[root@localhost ~]# ls /opt
rh student t1 test1 test2 test3 xx
#复制文件到/opt目录(绝对路径方式复制)
[root@localhost ~]# cp /root/t2 /opt
[root@localhost ~]# ls /opt
rh student t1 t2 test1 test2 test3 xx
#同时复制多个文件
[root@localhost ~]# cp t3 t4 /opt/
[root@localhost ~]# ls /opt
#创建目录
[root@localhost ~]# mkdir abc
#使用-r对目录执行复制
[root@localhost ~]# cp -r abc /opt
[root@localhost ~]# ls /opt
#同时复制多个目录
[root@localhost ~]# mkdir abc1 abc2 abc3
[root@localhost ~]# cp -r abc1 abc2 abc3 /opt
[root@localhost ~]# ls /opt
#复制hello文件到/opt并改名为hello.txt
[root@localhost ~]# cp hello /opt/hello.txt
[root@localhost ~]# ls /opt
#复制xxxx目录到/opt并改名xxoo
[root@localhost ~]# mkdir xxxx
[root@localhost ~]# cp -r xxxx /opt/xxoo
[root@localhost ~]# ls /opt
#使用“.”配合cp命令执行复制
[root@localhost ~]# cd /etc/sysconfig/computer-network-scripts/
[root@localhost computer-network-scripts]# pwd
/etc/sysconfig/computer-network-scripts
[root@localhost computer-network-scripts]# cp /root/t1 .
[root@localhost computer-network-scripts]# ls
#操持属性不变复制文件
[root@localhost ~]# cp -p anaconda-ks.cfg /opt
cp:是否覆盖"/opt/anaconda-ks.cfg"? y
[root@localhost ~]# ls -l /opt/anaconda-ks.cfg
-rw-------. 1 root root 1800 3月 13 17:34 /opt/anaconda-ks.cfg
#对比以上两个文件的详细属性信息(最后一次修改时间)
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1800 3月 13 17:34 anaconda-ks.cfg
#这两个操作代表什么意思?
[root@localhost ~]# cp -r /opt/software/test/case2 /opt/software/test/case3 #拷贝并改名
[root@localhost ~]# cp -r /opt/software/test/case2 /opt/software/case3 #拷贝
17.mv 移动命令
- mv(英文全拼:move file)用于移动文件或目录到其他位置,也可用于修改目录或文件名
- 命令格式:mv [-选项] 源文件... 目标路径
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
#移动当前路径hello文件到/mnt目录
[root@localhost ~]# mv hello /mnt
[root@localhost ~]# ls /mnt
hello home oooo test
#同时移动多个文件
[root@localhost ~]# mv t1 t2 t3 t4 /mnt
[root@localhost ~]# ls /mnt
hello home oooo student1 t1 t2 t3 t4 test
#移动/opt目录下文件到/mnt
root@localhost ~]# mv /opt/test1 /opt/test2 /opt/test3 /mnt/
[root@localhost ~]# ls /mnt
hello home oooo student1 t1 t2 t3 t4 test test1 test2 test3
#移动目录
[root@localhost ~]# mv student1 /mnt
[root@localhost ~]# ls /mnt
hello home oooo student1 test
#移动文件并改名
[root@localhost ~]# mv hello.txt /media/hello
[root@localhost ~]# ls /media/
hello
#移动目录并改名
[root@localhost ~]# mv test /media/testxx
[root@localhost ~]# ls /media/
hello testxx
18.cat 查看文件内容命令
cat (英文全拼:concatenate)命令用于查看文本文件内容
命令格式:cat [选项] 文件名
常用选项
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
#查看文件内容
[root@localhost ~]# cat anaconda-ks.cfg
[root@localhost ~]# cat initial-setup-ks.cfg
[root@localhost ~]# cat /etc/hosts
#查看网卡文件内容,网卡配置文件
[root@localhost ~]# cat /etc/sysconfig/computer-network-scripts/ifcfg-ens32
...
NAME="ens32" //网卡名
UUID="16085f4c-f690-4058-b29e-d55c73387026"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.0.50" //网卡IP地址
PREFIX="24" //子网掩码
GATEWAY="192.168.0.254" //网关
DNS1="114.114.114.114" //DNS
#查看当前系统用户基本信息文件内容
[root@localhost ~]# cat /etc/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
#查看当前系统主机名配置文件内容
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
#查看当前系统版本信息文件内容
[root@localhost ~]# cat /etc/redhat-release
CentOS linux release 7.6.1810 (Core)
#查看当前系统开机自动挂载配置文件内容
[root@localhost ~]# cat /etc/fstab
#查看系统组基本信息文件内容
[root@localhost ~]# cat /etc/group
#使用“-n”以行号形式显示文件内容
[root@localhost ~]# cat -n /etc/passwd
[root@localhost ~]# cat -n /etc/hostname
[root@localhost ~]# cat -n /etc/fstab
[root@localhost ~]# cat -n /etc/group
[root@localhost ~]# cat -n /etc/services
19.less命令
less工具是对文件的输出进行分页显示的工具,常用于查看内容量较大的文件
命令格式:less [-选项] 文件
常用选项:
- -N #以行号形式显示文件内容
使用技巧:
- 键盘上下键逐行查看
- pgdn :向下翻一页(Fn + 下键)
- pgup :向上翻一页(Fn + 上键)
/字符串 :搜索指定字符串(n从上向下搜索,N从下向上搜索)
- G:直接跳转到文件最后一行
- gg:直接跳转到文件行首
- :1000 #精准的定位到某一行
- q :退出
[root@localhost ~]# less -N /etc/services
20.head与tail命令
head命令:用来显示文件开头部分内容,默认显示文件开头10行内容
命令格式:head [选项] 参数
常用选项:
- -n<行数> 指定显示的行数
[root@localhost ~]# head /etc/passwd
[root@localhost ~]# head /etc/fstab
[root@localhost ~]# head /etc/group
[root@localhost ~]# head /etc/hostname
[root@localhost ~]# head /etc/hosts
[root@localhost ~]# head /etc/sysconfig/computer-network-scripts/ifcfg-ens32
#查看存放DNS配置文件信息
[root@localhost ~]# head /etc/resolv.conf
#使用-n指定显示文件前多少行内容
[root@localhost ~]# head -n 5 /etc/passwd
[root@localhost ~]# head -n 6 /etc/passwd
[root@localhost ~]# head -n 15 /etc/passwd
[root@localhost ~]# head -n 20 /etc/passwd
tail命令:用来显示文件末尾部分内容,默认显示文件末尾10行内容
命令格式:tail [选项] 参数
常用选项:-n<行数> 指定显示的行数 -f 动态显示
[root@localhost ~]# tail /etc/passwd
#使用“-n”指定显示文件末尾多少行内容
[root@localhost ~]# tail -n 5 /etc/passwd
[root@localhost ~]# tail -n 5 /etc/sysconfig/computer-network-scripts/ifcfg-ens32
IPADDR="192.168.0.50"
PREFIX="24"
GATEWAY="192.168.0.254"
DNS1="114.114.114.114"
IPV6_PRIVACY="no"
#动态查看文件内容
[root@localhost ~]# touch t1
root@localhost ~]# tail -f t1
#另开一个终端向文件写入内容
[root@localhost ~]# echo 123 > t1
21.rm 删除命令
rm(英文全拼:remove)命令用于删除文件或者目录。
命令格式:rm [-选项…] 目录或文件…
常用选项
- -f 强制删除
- -r 删除目录
- ***** 特殊字符:系统常用符号,用来代表任意所有字符
[root@localhost ~]# ls /opt
abc abc1 abc2 abc3 anaconda-ks.cfg hello.txt home rh student t1 t2 t3 t4 xx xxoo
[root@localhost ~]# ls /mnt
hello home oooo student1 t1 t2 t3 t4 test test1 test2 test3
#删除指定目录下文件
[root@localhost ~]# rm /opt/anaconda-ks.cfg
rm:是否删除普通文件 "/opt/anaconda-ks.cfg"?y #默认需要确认(y|n)
#查看文件是否被成功删除
[root@localhost ~]# ls /opt
abc abc1 abc2 abc3 hello.txt home rh student t1 t2 t3 t4 xx xxoo
[root@localhost ~]# rm /opt/hello.txt
rm:是否删除普通空文件 "/opt/hello.txt"?y
#同时删除目录下指定文件
[root@localhost ~]# rm /opt/t1 /opt/t2 /opt/t3 /opt/t4
rm:是否删除普通空文件 "/opt/t1"?y
rm:是否删除普通空文件 "/opt/t2"?y
rm:是否删除普通空文件 "/opt/t3"?y
rm:是否删除普通空文件 "/opt/t4"?y
#查看文件是否被成功删除
[root@localhost ~]# ls /opt
abc abc1 abc2 abc3 home rh student xx xxoo
#使用“-f”强制删除文件(无需确认,直接删除)
[root@localhost ~]# rm -f /mnt/hello
[root@localhost ~]# ls /mnt
home oooo student1 t1 t2 t3 t4 test test1 test2 test3
#同时强制删除多个文件
[root@localhost ~]# rm -f /mnt/t1 /mnt/t2 /mnt/t3 /mnt/t4
[root@localhost ~]# ls /mnt
#删除目录
[root@localhost ~]# rm -r /opt/abc
rm:是否删除目录 "/opt/abc"?y
[root@localhost ~]# ls /opt
abc1 abc2 abc3 home rh student xx xxoo
#同时删除多个目录
[root@localhost ~]# rm -r /opt/abc1 /opt/abc2 /opt/abc3
rm:是否删除目录 "/opt/abc1"?y
rm:是否删除目录 "/opt/abc2"?y
rm:是否删除目录 "/opt/abc3"?y
[root@localhost ~]# ls /opt
home rh student xx xxoo
#同时强制删除多个目录
[root@localhost ~]# rm -rf /opt/home /opt/student /opt/xx /opt/xxoo
[root@localhost ~]# ls /opt
rh
#创建目录与文件
[root@localhost ~]# touch /opt/t1
[root@localhost ~]# mkdir /opt/test
[root@localhost ~]# ls /opt
rh t1 test
#rm命令在删除目录时,包含改目录及目录下所有数据全部删除
[root@localhost ~]# rm -rf /opt/
[root@localhost ~]# ls /
[root@localhost ~]# ls /mnt
home oooo student1 test test1 test2 test3
#使用“*”通配任意所有字符,删除/mnt目录下所有数据
[root@localhost ~]# rm -rf /mnt/*
[root@localhost ~]# ls /mnt
22.软连接与硬连接
- Linux中的链接文件类似于windows中的快捷方式
- 软连接特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
- 软连接命令格式:ln -s 源文件路径 目标路径
- 注意:创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径·
[root@localhost ~]# touch hello.soft
[root@localhost ~]# ls
#创建软连接(必须要绝对路径创建)
[root@localhost ~]# ln -s /root/hello.soft /opt
[root@localhost ~]# ls /opt
#查看连接文件详细属性
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft
#提示:链接文件的权限最终取决于源文件的权限
#普通用户验证
[lisi@localhost ~]$ ls /opt
hello.soft
[lisi@localhost ~]$ ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft
[lisi@localhost ~]$ cat /opt/hello.soft
cat: /opt/hello.soft: 权限不够
#提示:由于源文件存放于/root目录下,而普通用户对/root目录没有任何权限,所以普通用户无法查看
#删除源文件
[root@localhost ~]# rm -f /root/hello.soft
[root@localhost ~]# ls
#删除源文件后,软链接文件不可用
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft
#创建文件并创建软连接
[root@localhost ~]# touch hello.soft
[root@localhost ~]# ln -s /root/hello.soft /opt
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:39 /opt/hello.soft -> /root/hello.soft
#删除链接文件后,源文件仍然可用
[root@localhost ~]# rm -f /opt/hello.soft
[root@localhost ~]# ls
[root@localhost ~]# cat hello.soft
#对目录创建软连接
[root@localhost ~]# ln -s /root/test1 /opt/
[root@localhost ~]# ls -ld /opt/test1
lrwxrwxrwx. 1 root root 11 3月 21 14:44 /opt/test1 -> /root/test1
3创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径
[root@localhost ~]# ln -s hello.soft /opt
[root@localhost ~]# ls /opt
hello.soft test1
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 10 3月 21 14:47 /opt/hello.soft -> hello.soft
硬链接特点:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用
硬连接命令格式:ln 源文件路径 目标路径
#创建文件,并创建硬连接
[root@localhost ~]# touch hello.hard
[root@localhost ~]# ln /root/hello.hard /opt/
[root@localhost ~]# ls /opt
hello.hard hello.soft test1
#向硬连接的源文件写入内容
root@localhost ~]# echo 123 > /root/hello.hard
#查看源文件内容
[root@localhost ~]# cat /root/hello.hard
123
#查看链接文件内容,以同步更新
[root@localhost ~]# cat /opt/hello.hard
123
#向链接文件写入内容,查看源文件以同步更新
[root@localhost ~]# echo xx >> /opt/hello.hard
#擦看源文件,以同步更新
[root@localhost ~]# cat /root/hello.hard
123
xx
#硬连接文件的特点可以保持文件属性不发生改变
[root@localhost ~]# ls -l /root/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /root/hello.hard
[root@localhost ~]# ls -l /opt/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /opt/hello.hard
#并且硬连接文件的i节点号相同
[root@localhost ~]# ls -i /root/hello.hard
33711090 /root/hello.hard
[root@localhost ~]# ls -i /opt/hello.hard
33711090 /opt/hello.hard
#硬连接不允许对目录进行连接
root@localhost ~]# ln /root/test1 /opt
ln: "/root/test1": 不允许将硬链接指向目录
#硬连接源文件删除后,链接文件仍然可用
[root@localhost ~]# rm -f /root/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx
#向硬连接文件写入内容
[root@localhost ~]# echo abc >> /opt/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx
abc
#硬连接不允许跨分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom
[root@localhost ~]# ln /root/hello.soft /boot
ln: 无法创建硬链接"/boot/hello.soft" => "/root/hello.soft": 无效的跨设备连接
23.Linux命令的分类
内部命令:bash程序自带的基本管理命令
外部命令:有独立的外部可执行程序文件命令
type 用于区别内部命令与外部命令
which 用于查找可以执行程序文件位置
[root@localhost opt]# type ls
[root@localhost opt]# type cat
[root@localhost opt]# type hash
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# hash
命中 命令
1 /usr/bin/cat
1 /usr/bin/ls
[root@localhost opt]# hash -r
[root@localhost opt]#
[root@localhost opt]# hash
hash: 哈希表为空
[root@localhost opt]# ls
hello.hard hello.soft t1 test1 test.txt
[root@localhost opt]# hash
命中 命令
1 /usr/sbin/ls
- 总结:
- shell程序是用户和系统之间的接口,用于解释用户的命令
- 查找命令对应的程序文件所在位置:which 命令
- shell程序大多数存放在/etc/shells文件中
- 系统默认使用的shell为/bin/bash
- 查看当前使用的shell:echo $SHELL
- 区别内部命令与外部命令的方式:typt 命令
- shell程序查找可执行程序文件路径定义在$PATH环境变量中
- shell查找的外部命令路径结果会记录到缓存的hash表中
24.help 命令帮助手册
help命令用于查看shell内部命令的帮助信息,包括使用方法、选项等…
命令格式:help [选项] 命令
#获取内部命令帮助信息
[root@localhost etc]# help cd
#help无法获取外部命令的帮助信息
root@localhost etc]# help ls
bash: help: 没有与 `ls' 匹配的帮助主题。尝试 `help help' 或者 `man -k ls' 或者 `info ls'。
[root@localhost etc]# type help
help 是 shell 内嵌
#获取help命令本身的帮助信息
[root@localhost etc]# help help
[root@localhost etc]# type cat
cat 是 /usr/bin/cat
[root@localhost etc]# help cat
bash: help: 没有与 `cat' 匹配的帮助主题。尝试 `help help' 或者 `man -k cat' 或者 `info cat'。
#查看命令帮助手册(命令自带)
[root@localhost etc]# cat --help
[root@localhost etc]# ls --help
25.关机与重启
linux下常用的关机命令有:shutdown、halt、poweroff、init
- init 0 关机
- halt #立刻关机
shutdown –h now #立刻关机
- shutdown -h 10 #10分钟后自动关机
- poweroff #立刻关机 (记这个)
[root@localhost ~]# poweroff
- 重启命令:reboot shutdown
- reboot #立刻重启 (记这个)
- shutdown -r now #立刻重启
- shutdown -r 10 #过十分钟后重启
[root@localhost ~]# reboot
26.Linux系统目录介绍
/(根):系统所有数据都存放在根目录下
/bin:存放用户和管理员必备的可执行的二进制程序文件
/boot:存放Linux系统内核及引导系统程序所需要的文件目录
/dev:存放硬件设备的目录,如键盘、鼠标、硬盘、光盘等等 (记住)
/etc:存放服务的配置文件,用户信息文件 (记住)
/root:超级管理员的家目录
/home:系统普通用户的家目录(记住)
/lib:存放系统中的程序运行所需要的共享库及内核模块
/opt:额外安装的可选应用程序包所放置的位置
/srv:服务启动之后需要访问的数据目录
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/var:存放系统执行过程中经常变化的文件,如随时都在变化的日志文件就存放/var/log/下 (记住)
/mnt、/media :光盘和镜像等预设的挂载点(记住)
/proc:Linux伪文件系统,该目录下的数据存在于内存当中,不占用磁盘空间
/lib64 :存放函式库
/run :程序或服务启动后,存放PID的目录
/sys:存放被建立在内存中的虚拟文件系统
/usr:操作系统软件资源所放置的目录
- /usr/bin:与/bin目录相同,存放用户可以使用的命令程序
- /usr/lib:与/lib目录相同,存放系统中的程序运行所需要的共享库及内核模块
- /usr/etc:用于存放安装软件时使用的配置文件
- /usr/games:与游戏比较相关的数据放置处
- /usr/include:c/c++等程序语言的档头(header)与包含档(include)放置处
- /usr/lib64:与/lib64目录相同,存放函式库
- /usr/libexec:不经常被使用的执行程序或脚本会放置在此目录中
- /usr/local: 额外安装的软件存放目录 (记住)
- /usr/sbin:该目录与/sbin目录相同,存放用户可执行的二进制程序文件
- /usr/share: 放置只读架构的杂项数据文件
- /usr/src:一般软件源代码建议存放该目录下
27.查看内核信息
uname 命令用于显示系统内核信息
命令格式:uname [-选项...]
常用选项:
- -s :显示内核名称
- -r :显示内核版本
[root@localhost ~]# uname
linux
[root@localhost ~]# uname -rs
linux 3.10.0-957.el7.x86_64
#解释:
linux #内核名称
3 #主版本
10 #次版本
0 #修改版本
957 #补丁次数
el7 #Enterprise linux(企业版Linux)
x86_64 #CPU架构
#Linux内核官网
https://www.kernel.org/
28.查看CPU信息
/proc/cpuinfo文件用于存放系统CPU信息
lscpu 用于显示CPU架构信息
命令格式:lscpu [-选项]
#查看/proc/cpuinfo文件内容
[root@localhost ~]# cat /proc/cpuinfo
processor :#系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id : #CPU制造商
cpu family : #CPU产品系列代号
model : #CPU属于其系列中的哪一代的代号
model name: #CPU属于的名字及其编号、标称主频
stepping : #CPU属于制作更新版本
cpu MHz : #CPU的实际使用主频
cache size : #CPU二级缓存大小
physical id : #单个CPU的标号
siblings :#单个CPU逻辑物理核数
core id :#当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores : #该逻辑核所处CPU的物理核数
apicid :#用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu : #是否具有浮点运算单元(Floating Point Unit)
fpu_exception : #是否支持浮点计算异常
cpuid level : #执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp : #表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags : #当前CPU支持的功能
bogomips : #在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size : #每次刷新缓存的大小单位
cache_alignment : #缓存地址对齐单位
address sizes :#可访问地址空间位数
power management : #对能源管理的支持,有以下几个可选支持功能:
28.查看系统内存信息
/proc/meminfo文件用于存放系统内存信息
free 用于查看内存使用情况
命令格式:free [-选项]
常用选项:-h #以人类易读方式显示大小(KB,MB,GB)
#查看/proc/meminfo文件内容
[root@localhost ~]# cat /proc/meminfo
MemTotal: 995896 kB #所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree: 244196 kB #表示系统尚未使用的内存。
MemAvailable: 435080 kB #真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers: 2132 kB #用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached: 314632 kB #分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached: 0 kB #被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active: 295908 kB #经常使用的高速缓冲存储器页面文件大小
Inactive: 271552 kB #不经常使用的高速缓冲存储器文件大小
Active(anon): 251528 kB #活跃的匿名内存
Inactive(anon): 13044 kB #不活跃的匿名内存
Active(file): 44380 kB #活跃的文件使用内存
Inactive(file): 258508 kB #不活跃的文件使用内存
Unevictable: 0 kB #不能被释放的内存页
Mlocked: 0 kB #系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal: 0 kB #交换空间总内存
SwapFree: 0 kB #交换空间空闲内存
Dirty: 4 kB #等待被写回到磁盘的
Writeback: 0 kB #正在被写回的
AnonPages: 15100 kB #未映射页的内存/映射到用户空间的非文件页表大小
Mapped: 7160 kB #映射文件内存
Shmem: 100 kB #已经被分配的共享内存
Slab: 9236 kB #内核数据结构缓存
SReclaimable: 2316 kB #可收回slab内存
SUnreclaim: 6920 kB #不可收回slab内存
KernelStack: 2408 kB #内核消耗的内存
PageTables: 1268 kB #管理内存分页的索引表的大小
NFS_Unstable: 0 kB #不稳定页表的大小
Bounce: 0 kB #在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp: 0 kB #FUSE用于临时写回缓冲区的内存
CommitLimit: 22980 kB #系统实际可分配内存
Committed_AS: 536244 kB #系统当前已分配的内存
VmallocTotal: 892928 kB #预留的虚拟内存总量
VmallocUsed: 29064 kB #已经被使用的虚拟内存
VmallocChunk: 860156 kB #可分配的最大的逻辑连续的虚拟内存
使用ifconfig命令查看网卡信息
[root@lesson-101 case1]# ifconfig
br-63b937d578ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
inet6 fe80::42:8cff:fe41:4661 prefixlen 64 scopeid 0x20<link>
ether 02:42:8c:41:46:61 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 878 (878.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
br-7808eff78157: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.19.0.1 netmask 255.255.0.0 broadcast 172.19.255.255
inet6 fe80::42:80ff:fe0a:4f2b prefixlen 64 scopeid 0x20<link>
ether 02:42:80:0a:4f:2b txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 1102 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:98ff:fe97:242d prefixlen 64 scopeid 0x20<link>
ether 02:42:98:97:24:2d txqueuelen 0 (Ethernet)
RX packets 17449 bytes 1353898 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12079 bytes 2738799 (2.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.74.101 netmask 255.255.255.0 broadcast 192.168.74.255
inet6 fe80::280c:a2de:b188:8ad2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:86:3d txqueuelen 1000 (Ethernet)
RX packets 234710 bytes 24140481 (23.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 433436 bytes 134043699 (127.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 32 bytes 2592 (2.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 2592 (2.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth58b7ee3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::8815:b5ff:fe9d:6b57 prefixlen 64 scopeid 0x20<link>
ether 8a:15:b5:9d:6b:57 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 920 (920.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth5c1b15a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::446:f3ff:fe77:9696 prefixlen 64 scopeid 0x20<link>
ether 06:46:f3:77:96:96 txqueuelen 0 (Ethernet)
RX packets 11795 bytes 2710396 (2.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17529 bytes 1600763 (1.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth5d0949f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::307d:6eff:febe:4274 prefixlen 64 scopeid 0x20<link>
ether 32:7d:6e:be:42:74 txqueuelen 0 (Ethernet)
RX packets 17396 bytes 1591689 (1.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12014 bytes 2724843 (2.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth7a34000: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::5c66:46ff:fe4a:af6f prefixlen 64 scopeid 0x20<link>
ether 5e:66:46:4a:af:6f txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7 bytes 586 (586.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vethaa33c37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::64d4:51ff:fea0:bb7 prefixlen 64 scopeid 0x20<link>
ether 66:d4:51:a0:0b:b7 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 878 (878.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vethdcb0bc3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::70b0:b1ff:feff:2cc0 prefixlen 64 scopeid 0x20<link>
ether 72:b0:b1:ff:2c:c0 txqueuelen 0 (Ethernet)
RX packets 53 bytes 6495 (6.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 83 bytes 15356 (14.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vethfc861c1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::c817:bbff:fe9c:bc41 prefixlen 64 scopeid 0x20<link>
ether ca:17:bb:9c:bc:41 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 1102 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
29.查看网卡信息
- 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
- ifconfig 用于显示和设置网卡的参数
- 命令格式: ifconfig [网卡名]
[root@lesson-101 case1]# cat /etc/sysconfig/computer-network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="47fb2d04-5f3a-4c68-87d7-dcf09401edd1"
DEVICE="ens33"
ONBOOT="yes"
IPADDR='192.168.74.101'
NETMASK='255.255.255.0'
GATEWAY='192.168.74.2'
DNS1='114.114.114.114'
virbr0: 虚拟化的网络接口,通过软件技术虚拟出来的一个网卡,192.168.122.1,KVM虚拟化技术的时候
30.查看主机名及修改主机名
/etc/hostname文件用于存放主机名
hostname 命令用于显示和设置主机名
命令格式:hostname [新名称]
#查看主机名
[root@localhost ~]# hostname
localhost.localdomain
#查看主机名配置文件
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
#临时修改主机名(立刻生效,服务器重启以后失效)
[root@localhost ~]# hostname test
[root@localhost ~]# hostname
test
#exit/loguot登出系统
[root@localhost ~]# exit
[c:\~]$ ssh 192.168.0.50
[root@lesson101 ~]#
[root@lesson101 ~]# hostname fhsd.jhglshdjkghjkdfhgkjhgdsahgjklhdsfjghsdhgjlhsd
[root@lesson101 ~]# logout
[root@fhsd ~]# hostname sdhjghsdfjkhgkjdfshkgljhsdjfhgjksdhgjkhsdjgjkl
[root@fhsd ~]# exit
#命令行永久修改主机名(立刻生效,不需要重启系统)
[root@localhost ~]# hostnamectl set-hostname test
[root@localhost ~]# exit
31.vi/vim文本编辑器
Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性
vi/vim 共分为三种模式:命令模式、输入模式、底线命令模式(末行模式)
命令模式:刚刚启动 vi/vim,便进入了命令模式
输入模式:在命令模式下按 a/i/o 就进入了输入模式
ESC,退出输入模式,切换到命令模式
底线命令模式:在命令模式下按下:(英文冒号)就进入了底线命令模式
命令格式:vim 文件名
- 若目标文件不存在,则新创建文件并编辑
- 若目标文件以存在,则打开文件并编辑
命令模式:刚刚启动 vi/vim,便进入了命令模式
- i 切换到输入模式,在当前光标所在字符前插入
- a 切换到输入模式,在当前光标所在字符后插入
- o 切换到输入模式,在当前光标所在行下插入新行
- : 切换到底线命令模式,以在最底一行输入命令
- x 在命令模式下删除当前光标所在的单字符
- dd 删除一整行内容,配合数字可删除指定范围内的行
- C 删除当前光标及光标后所有内容并进入输入模式
- u 恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止
- $ 将光标移动至行尾
- 0(零) 将光标移动至行首
- gg 跳转至文件第一行
- G 跳转至文件最后一行
- yy 复制当前行,配合数字可以同时复制多行
- p 粘贴当前光标所在行下
- /关键字 搜索文件内关键字,n从上向下快速定位关键字,N从下向上快速定位关键字
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
- :w 保存
- :q 退出
- :wq 保存并退出
- :x 保存并退出
- ZZ 保存并退出
- :q! 强制退出不保存
- :wq! 强制保存并退出,适用于只读文件(没有写权限)
- :set nu 以行号形式显示文件内容
- :set nonu 取消行号显示
- :行号 快速跳转到指定行
- :%s 替换文件内容,g替换全文,默认只替换每一行匹配到的第一个关键字(数字s 指定替换的行)
- :nohl 取消高亮显示
32.修改网卡IP地址
- 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
- ifconfig #用于显示和设置网卡的参数
- systemctl restart network #重启网络
- ifup 网卡名 #启动该网卡设备
- ifdown 网卡名 #禁用该网卡设备
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="47fb2d04-5f3a-4c68-87d7-dcf09401edd1"
DEVICE="ens33"
ONBOOT="yes"
IPADDR='192.168.74.101'
NETMASK='255.255.255.0'
GATEWAY='192.168.74.2'
DNS1='114.114.114.114'
重启网络(IP地址发生改变,当前终端会断开)
systemctl restart computer-network
关闭网卡并激活网卡
ifdown ens33;ifup ens33
查看所有网卡信息
ip a
33.host命令
- host用于将一个域名解析到一个IP地址
[root@lesson101 ~]# host www.baidu.com
www.baidu.com has address 110.242.68.3
www.baidu.com has address 110.242.68.4
www.baidu.com is an alias for www.a.shifen.com.
www.baidu.com is an alias for www.a.shifen.com.
34.nslookup命令
nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题
[root@lesson101 ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: www.baidu.com
Address: 110.242.68.4
Name: www.baidu.com
Address: 110.242.68.3
35.alias别名管理
alias命令用于设置命令别名,用户可以使用alias自定义命令别名来简化命令的复杂度
.bashrc 文件存放命令别名
命令格式:aliasi [别名]=[命令] #注意事项:等号(=)前后不能有空格
unalias 别名 #取消别名
#定义别名
[root@lesson101 ~]# alias lsnet='ls /etc/sysconfig/computer-network-scripts/'
[root@lesson101 ~]# lsnet
[root@lesson101 ~]# alias myls='ls -ldh'
[root@lesson101 ~]# myls /opt
#查看当前系统可用命令别名
[root@lesson101 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias lsnet='ls /etc/sysconfig/computer-network-scripts/'
alias mv='mv -i'
alias myls='ls -ldh'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#两条命令效果相同
[root@lesson101 ~]# ls -l hello
-rw-r--r--. 1 root root 426 3月 28 15:00 hello
[root@lesson101 ~]# ll hello
-rw-r--r--. 1 root root 426 3月 28 15:00 hello
[root@lesson101 ~]# which ls
alias ls='ls --color=auto'
/usr/sbin/ls
[root@lesson101 ~]# /usr/sbin/ls
[root@lesson101 ~]# ls
#取消本次命令的别名功能“\”
[root@lesson101 ~]# \ls
#取消命令别名
[root@lesson101 ~]# unalias myls
[root@lesson101 ~]# myls
bash: myls: 未找到命令...
#定义别名不要跟系统命令发生冲突
[root@lesson101 ~]# alias ls=hostname
[root@lesson101 ~]# ls
test
#取消命令别名
[root@lesson101 ~]# unalias ls
[root@lesson101 ~]# alias
#重新定义别名
[root@lesson101 ~]# alias ls='ls --color=auto'
[root@lesson101 ~]# ls
36.history 管理历史
history命令用于显示历史记录和执行过的命令,登录shell时会读取~./bash_history历史文件中记录下的命令,当退出或登出shell时,会自动保存到历史命令文件,该命令单独使用时,仅显示历史命令
历史命令默认只能存储1000条,可以通过/etc/profile文件修改
命令格式:history [-选项] [参数]
常用选项:
- -a 追加本次新执行的命令至历史命令文件中
- -d 删除历史命令中指定的命令
- -c 清空历史命令列表
快捷操作:
!# 调用命令历史中第N条命令
!string 调用命令历史中以strind开头的命令
!! 重复执行上一条命令
#获取命令帮助
[root@lesson101 ~]# help history
#查看历史命令
[root@lesson101 ~]# history
#查看记录历史命令文件
[root@lesson101 ~]# cat .bash_history
#将历史命令同步至历史命令配置文件中
[root@lesson101 ~]# history -a
[root@lesson101 ~]# cat .bash_history
#删除历史命令中655条命令历史
[root@lesson101 ~]# history -d 655
[root@lesson101 ~]# history -d 637
#清空缓存中所有历史命令
[root@lesson101 ~]# history -c
[root@lesson101 ~]# history
1 history
#删除历史命令配置文件(该文件删除后系统会再次自动创建)
[root@lesson101 ~]# rm -rf .bash_history
#快速调用历史命令中第1条
[root@lesson101 ~]# !1
[root@lesson101 ~]# !3
#调用历史命令中以cat开头的命令(只调用最近使用的cat历史命令)
[root@lesson101 ~]# !cat
#重复执行上一条命令
[root@lesson101 ~]# !!
#历史命令默认只能记录1000条,可以通过/etc/profile文件修改
[root@lesson101 ~]# vim /etc/profile
...
46 HISTSIZE=100
37.date日期时间管理
date命令用于显示或设置系统日期与时间
命令格式:date [-选项] [+格式符] #查看系统日期时间
命令格式:date [-选项] #设置日期时间
常用选项:-s 设置日期时间
格式符:
+%Y 年份
+%B 月份
+%d 日
+%H 时
+%M 分
+%S 秒
+%F 年-月-日
+%X 时:分:秒
#显示系统日期与时间
[root@lesson101 ~]# date
2021年 03月 28日 星期日 17:08:34 CST
#只显示年分
[root@lesson101 ~]# date +%Y
2021
#只显示月份
[root@lesson101 ~]# date +%B
三月
#只显示几号
[root@lesson101 ~]# date +%d
28
#只显示小时
[root@lesson101 ~]# date +%H
17
#只显示分钟
[root@lesson101 ~]# date +%M
10
#只显示秒
[root@lesson101 ~]# date +%S
24
#显示年月日
[root@lesson101 ~]# date +%F
2021-03-28
#显示时分秒
[root@lesson101 ~]# date +%X
17时12分10秒
#显示年月日时分秒
[root@lesson101 ~]# date +%F%X
2021-03-2817时12分39秒
#可以自定义分隔符“-”
[root@lesson101 ~]# date +%F-%X
2021-03-28-17时13分38秒
[root@lesson101 ~]# date +%F:%X
2021-03-28:17时13分55秒
#修改系统年月日
[root@lesson101 ~]# date -s 2020-03-28
2020年 03月 28日 星期六 00:00:00 CST
#修改系统时分秒
[root@lesson101 ~]# date -s 17:16:00
2020年 03月 28日 星期六 17:16:00 CST
#修改年月日时分秒
[root@lesson101 ~]# date -s '2021-03-28 17:17:00'
2021年 03月 28日 星期日 17:17:00 CST
#解释:
''单引号:引用整体,屏蔽特殊符号的功能
""双引号:引用整体,不会屏蔽特殊符号的功能
#Linux的两种时钟
系统时钟:内核通过CPU的工作频率去计算的时间
硬件时钟:
#显示硬件时间
[root@lesson101 ~]# clock
2021年03月28日 星期日 17时23分42秒 -0.945549 秒
#显示并同步系统与硬件时钟
[root@lesson101 ~]# man hwclock
-s:把系统时间设置成与硬件时间相同
-w:把硬件时间设置成与系统时间相同
[root@lesson101 ~]# hwclock -w
[root@lesson101 ~]# date
2021年 03月 28日 星期日 17:27:18 CST
#cal显示日历
[root@lesson101 ~]# cal
三月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
#显示指定的全年月份
[root@lesson101 ~]# cal 2021
38.wc统计命令
wc 用于统计文件的字节数、行数,并将统计的结果输出到屏幕
命令格式:wc [-选项] 文件名
常用选项:
- -c #统计字节数
- -l #统计行数
[root@lesson101 ~]# wc /etc/passwd
20 28 886 /etc/passwd
行数 单词 字节 文件名
#统计文件字节数
[root@lesson101 ~]# wc -c /etc/passwd
886 /etc/passwd
#统计文件行数
[root@lesson101 ~]# wc -l /etc/passwd
20 /etc/passwd
[root@lesson101 ~]# wc -l /etc/fstab
11 /etc/fstab
39.管道符
管道符“|”:将命令的输出结果交给另外一条命令作为参数继续处理
[root@lesson101 ~]# head -10 /etc/passwd |tail -5
[root@lesson101 ~]# head -10 /etc/passwd |tail -5 |wc -l
5
root@lesson101 ~]# cat -n /etc/passwd |head -10|tail -5
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
[root@lesson101 ~]# ifconfig ens32 |head -2
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255
40.重定向操作
重定向操作:将前面命令的输出结果,写入到其他的文本文件中
重定向的表示符号
- > #重定向输出(覆盖)
- >> #重定向输出(追加)
- < #输入重定向(覆盖)
- << #输入重定向(追加)
- > 只收集正确的输出结果
- 2> 只收集错误的输出结果(覆盖)
- 2>> 只收集错误的输出结果(追加)
- &> 正确错误都收集(覆盖)
- &>> 正确错误都收集(追加)
#将命令的输出结果以覆盖的方式重定向到文件中,(>附带创建文件功能)
[root@lesson101 ~]# ifconfig ens32 |head -2 > /opt/ens32.bak
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255
[root@lesson101 ~]# cat /etc/hostname > /opt/ens32.bak
[root@lesson101 ~]# cat /opt/ens32.bak
test
[root@lesson101 ~]# free -h > /opt/free.bak
[root@lesson101 ~]# cat /opt/free.bak
total used free shared buff/cache available
Mem: 972M 414M 123M 15M 435M 336M
Swap: 2.0G 0B 2.0G
#将命令的输出结果以追加的方式重定向到文件中
[root@lesson101 ~]# cat /etc/hostname >> /opt/free.bak
[root@lesson101 ~]# cat /opt/free.bak
#“>”只收集正确的输出结果,不收集错误的输出结果
[root@lesson101 ~]# ls xxooooxx > /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录
#“2>”只收集错误的输出结果,不收集正确的输出结果
[root@lesson101 ~]# ls xxooooxx 2> /opt/xx.txt
[root@lesson101 ~]# cat /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录
#“2>”以覆盖的方式将输出结果重定向到文件中
[root@lesson101 ~]# cat /etc/abc 2> /opt/ens32.bak
[root@lesson101 ~]# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录
#“2>>”以追加的方式将输出结果重定向到文件中
[root@lesson101 ~]# ls /etc/abcd 2>> /opt/ens32.bak
[root@lesson101 ~]# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录
ls: 无法访问/etc/abcd: 没有那个文件或目录
#“&>”以覆盖的方式将正确输出与错误输出重定向到文件中
[root@lesson101 ~]# lscat &> /opt/abc.txt
[root@lesson101 ~]# cat /opt/abc.txt
[root@lesson101 ~]# ls /etc/passwd &> /opt/pass.bak
[root@lesson101 ~]# cat /opt/pass.bak
[root@lesson101 ~]# free -h &> /opt/pass.bak
[root@lesson101 ~]# cat /opt/pass.bak
#“&>”以追加的方式将正确输出与错误输出重定向到文件中
[root@lesson101 ~]# ifconfig ens32 | head -2 &>> /opt/pass.bak
[root@lesson101 ~]# cat /opt/pass.bak
#以覆盖方式将正确输出与错误输出重定向到不同文件中
[root@lesson101 ~]# ll -d /root/ bcd >a.txt 2>b.txt
[root@lesson101 ~]# cat a.txt
dr-xr-x---. 24 root root 4096 3月 28 18:07 /root/
[root@lesson101 ~]# cat b.txt
ls: 无法访问bcd: 没有那个文件或目录
41.echo命令与sleep命令
echo命令用于输出指定的字符串和变量
命令格式:echo [-选项] [参数]
[root@lesson101 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@lesson101 ~]# echo xxoo
xxoo
[root@lesson101 ~]# echo abc
abc
[root@lesson101 ~]# echo 男人好难
男人好难
[root@lesson101 ~]# echo 123
123
[root@lesson101 ~]# cat /etc/hostname
test
[root@lesson101 ~]# echo localhost > /etc/hostname
[root@lesson101 ~]# cat /etc/hostname
localhost
sleep命令可以用来将目前动作延迟一段时间
命令格式:sleep 时间
常用选项: s 秒 m 分钟 h 小时 d 日
[root@lesson101 ~]# sleep 3
42.
35.man 获取命令帮助手册
man 命令用于查看系统命令的帮助信息,包括使用方法、选项、使用例子等…,对比--help ,man 输出的信息更加详细
命令格式:man [-选项] 命令
常用快捷操作
向下键向下移一行
向上键向上移一行
[Page Down] 向下翻一页
[Page Up] 向上翻一页
/关键字 #搜索关键字,配合n(向下查询)、N(向上查询)
q 退出
[root@localhost etc]# man ls
[root@localhost etc]# man cat
[root@localhost etc]# man touch
[root@localhost etc]# man mkdir
[root@localhost etc]# info ls