操作系统简介
操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
Linux简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。
Linux能做什么
Linux和我们常见的Windows一样,都是操作系统,但两者之间的区别是:
Windows:收费,不开源,主要用于日常办公、游戏、娱乐多一些
Linux:免费,开源,主要用于服务器领域,性能稳定,安全
开源软件:开放源码软件(open-source)是一个新名词,它被定义为描述其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受许可证的限制。
Linux发行版
Xshell使用,初始化,网卡介绍
将Xshell与虚拟机进行连接
首先在虚拟机上输入,ip a就可以看到两块网卡
[root@server1 `]# ip a
第一块网卡是环回接口,通常是用来做实验用的
第二块网卡是ens33,我们可以看到虚拟机的ip地址
连接
然后在Xshell中输入命令(后面是自己的IP地址), 完成连接
[C:\]$ ssh root@192.168.179.130
初始化配置
- 安装bash-completion(这是自动补齐的包)
[root@server1 ~]# yum install -y bash-completion
- 安装vim工具
[root@server1 ~]# yum install -y vim
- 修改主机名
[root@server1 ~]# hostnamectl set-hostname server1
- 查看修改后的主机名
[root@server1 ~]# hostname
- 关机
[root@server1 ~]# poweroff
记得关机之后拍快照
VMware的网卡模式
- NAT模式
- 仅主机模式
- 桥接模式
下面这篇博客里面详细说明了三种模式
正常情况下,一台机器需要上网的时候,没有特殊网络要求的时候,我们最好都选择NAT模式
初识Shell
概念:
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的而意图传达给内核(可以理解为用户与内核之间的翻译官角色)。
我们可以使用shell实现对Linux系统单的大部分管理,例如:
- 文件管理
- 用户管理
- 权限管理
- 磁盘管理
- 软件管理
- 网络管理
- …
使用shell的两种方式
使用命令 效率低 适合少量的工作
shell script 效率高 适合完成复杂,重复性工作
bash shell提示符
//打印helloworld
[root@server1 ~]# echo "helloworld"
//查看当前系统时间
[root@server1 ~]# date
//查看当前登录的用户
[root@server1 ~]# whoami
//添加用户
[root@server1 ~]# useradd zhangsan
//切换用户
[root@server1 zhangsan]# su - zhangsan
//修改用户密码
[root@server1 ~]# passwd aaron
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
shell语法
命令 选项 参数
//查看当前目录下有哪些文件
[root@server1 ~]# ls
//以长格式显示出文件信息, 短参数
[root@server1 ~]# ls -l
相当于
[root@server1 ~]# ll
//长参数 查看这个命令后面能够跟的所有参数
[root@server1 ~]# ls --help
//查看当前所在目录
[root@server1 ~]# pwd
命令:整条shell命令的主体
选项:会影响会微调命令的行为,通常以-或者–开头
参数:命令作用的对象(长参数、短参数)
ls常见选项
命令 | 作用 |
---|---|
-a | all,查看目录下的所有文件,包括隐藏文件 |
-l | 长列表显示 |
-h | human以人性化方式显示出来 |
-d | 只列出目录名,不列出其他内容 |
-t | 按修改时间排序 |
-S | 按文件的Size排序 |
-r | 逆序排列reverse |
-l | 显示文件的index号(索引号) |
bash基本特性
自动补全
//打开文件内容 按Tab键自动补全
[root@server1 ~]# cat anaconda-ks.cfg
//cat + 两次Tab键,列出所有文件
[root@server1 ~]# cat
快捷键
快捷键 | 作用 |
---|---|
Ctrl+C | 终止前台运行的程序 |
Ctrl+D | 退出 等价于exit |
Ctrl+L | 清屏 |
Ctrl+A | 光标移动到命令行的最前端 |
Ctrl+E | 光标移动到命令行的后端 |
Ctrl+U | 删除光标前所有字符 |
Ctrl+K | 删除光标后所有字符 |
Ctrl+R | 搜索历史命令,利用关键字 |
终止前台运行的程序:[root@server1 ~]# ping baidu.com 执行这个命令,程序就会一直在运行,想要打断正在运行的程序就用Ctrl+C
退出:退出登录
历史命令
//查看历史命令
[root@server1 ~]# history
history相关参数
-a:追加本次会话执行的命令命令历史列表至历史文件中
-d:删除历史中指定的命令
-c:清空历史命令
快捷操作:
!#:调用历史中第#条命令
!string:调用历史中最近一条以string开头的命令
!!:调用上一条命令
- 光标上下键
- !220
1.执行历史命令中地220条命令
-
!字符串
1.搜索历史命令中最近一个以xxxx字符开头的命令,例如!ping(从下往上寻找)
-
!$
1.引用上一个命令的最后一个参数,当上一个命令没有参数的时候,!$代表的是上一个命令本身
命令别名
将长命令另起别名
#查看网卡配置命令
[root@server1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
#建立别名(临时的,尽在当前shell生效)
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
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="410a4a30-b174-441b-8663-b76f1ab34e48"
DEVICE="ens33"
ONBOOT="yes"
#wl是别名
[root@server1 ~]# alias wl='cat /etc/sysconfig/network-scripts/ifcfg-ens33'
#查看别名
[root@server1 ~]# wl
#取消别名
[root@server1 ~]# unalias wl
#查看当前系统的别名
[root@server1 ~]# 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 mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#查看命令类型
[root@server1 ~]# type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /bin/ls
ls 是 /usr/bin/ls
[root@server1 ~]#
[root@server1 ~]# type cd
cd 是 shell 内嵌
永久别名
Linux获得帮助
- 命令–help
[root@server1 ~]# ls --help
[root@server1 ~]# date --help
- 除了–help之外,还有man手册(针对命令帮助,针对配置文件帮助,针对函数帮助)
- 中文man手册
[root@server1 ~]# yum -y install man-pages-zh-CN.noarch
[root@server1 ~]# echo "alias cman=man-pages-zh-CN''" >> .bashrc
[root@server1 ~]# source .bashrc
使用方法大家可以自行百度。。。。。。。。
Windows和Linux组织文件的区别
Windows:以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /
Linux目录结构FSH(FileSystem Hierarchy Standard)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tH4YasPz-1606744240262)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20201130204309262.png)]
路径 | 用处 |
---|---|
bin | 普通用户使用的额命令/bin/ls,/bin/date RHEL7淘汰 |
sbin | 管理员使用的命令/sbin/service RHEL7淘汰 |
dev | 设备文件/dev/sda,/dev/tty1,/dev/pts/1,/dev/zero,/dev/null,/dev/random |
root | root用户的HOME |
home | 存储普通用户家目录 |
proc | 虚拟的文件系统,反应出来的是内核,进程信息或实施状态 |
usr | 系统文件,相当于C:/Windows /usr/local 软件安装的目录,相当于C:\Program /usr/bin 普通用户使用的应用程序 /usr/sbin 管理员用户使用的应用程序 /usr/lib 库文件Glibc /usr/lib64 库文件Glibc |
boot | 存放系统启动相关的文件,例如kernel,grub(引导转载程序) |
etc | 各个软件的配置文件 |
lib | 库文件Glibc RHEL7淘汰 |
lib64 | 库文件Glibc RHEL7淘汰 |
tmp | 临时文件(全局可写,进程产生的临时文件) |
var | 存档的是一些变化文件,比如数据库,日志,邮件… |
media | 移动设备默认的挂载点 |
mnt | 手工设备默认的挂载点 |
net | automount进程挂载 |
[root@server1 /]# ll
总用量 20
lrwxrwxrwx. 1 root root 7 11月 29 20:46 bin -> usr/bin #这个bin相当于一个链接,快捷方式
dr-xr-xr-x. 5 root root 4096 11月 29 20:51 boot
drwxr-xr-x. 20 root root 3220 11月 30 17:57 dev
drwxr-xr-x. 74 root root 8192 11月 30 18:33 etc
drwxr-xr-x. 3 root root 22 11月 30 12:17 home
lrwxrwxrwx. 1 root root 7 11月 29 20:46 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 29 20:46 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 11月 5 2016 media
drwxr-xr-x. 2 root root 6 11月 5 2016 mnt
drwxr-xr-x. 2 root root 6 11月 5 2016 opt
dr-xr-xr-x. 157 root root 0 11月 30 17:57 proc
dr-xr-x---. 2 root root 135 11月 29 21:34 root
drwxr-xr-x. 23 root root 700 11月 30 20:31 run
lrwxrwxrwx. 1 root root 8 11月 29 20:46 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 11月 5 2016 srv
dr-xr-xr-x. 13 root root 0 11月 30 17:57 sys
drwxrwxrwt. 9 root root 4096 11月 30 18:45 tmp
drwxr-xr-x. 13 root root 155 11月 29 20:46 usr
drwxr-xr-x. 19 root root 267 11月 29 20:51 var
文件定位 路径
路径的作用:定位文件
你要在哪儿创建文件?
你要将文件复制到什么地方?
你要删除什么地方的什么文件?
- 绝对路径:从/开始的路径 /home/aaron/file1
- 相对路径:从当前路径开始的路径 a.txt ./a.txt …/a.txt
#定位到zhangsan目录下
[root@server1 ~]# cd /home/zhangsan/
#创建test1文件
[root@server1 zhangsan]# touch test1
#向文件里面添加内容
[root@server1 zhangsan]# echo "hello world" > test1
#使用绝对路径,先返回到根目录
[root@server1 zhangsan]# cd
[root@server1 ~]# pwd
/root
[root@server1 ~]# cat /home/zhangsan/test1
hello world
#使用相对路径,先进入到zhangsan文件夹
#cd - 返回上次目录
[root@server1 ~]# cd -
/home/zhangsan
[root@server1 zhangsan]#
[root@server1 zhangsan]# cat test1
hello world
#./代表当前目录
[root@server1 zhangsan]# cat ./test1
hello world
[root@server1 zhangsan]#
[root@server1 zhangsan]#
#../代表上一级目录
[root@server1 zhangsan]# cat ../zhangsan/test1
hello world
#直接回家
[root@server1 zhangsan]# cd ~
文件管理:创建/复制/移动/删除
创建
文件touch
[root@xwz ~]# touch file1.txt # 无则创建,有则修改时间
[root@xwz ~]# touch file3 file4
[root@xwz ~]# touch /home/file10.txt
[root@xwz ~]# touch /home/{maomao,gougou}
[root@xwz ~]# touch file{1..20}
[root@xwz ~]# touch file{a..c}
[root@xwz ~]# touch file{old,new} # {}集合,等价touch fileold filenew
目录 mkdir
[root@xwz ~]# mkdir dir1
[root@xwz ~]# mkdir /home/dir2 /home/dir3
[root@xwz ~]# mkdir /home/{dir4,dir5}
[root@xwz ~]# mkdir -v /home/{dir6,dir7} # 显示操作的消息
[root@xwz ~]# mkdir -v /home/dir8/111/22
[root@xwz ~]# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
[root@xwz ~]# mkdir -pv /home/{abc/{dir1,111},efg}
复制
[root@xwz ~]# mkdir /home/dir{1,2}
[root@xwz ~]# touch install.log
[root@xwz ~]# cp -v install.log /home/dir1
[root@xwz ~]# cp -v install.log /home/dir1/abc.txt
[root@xwz ~]# cp -rv /etc /home/dir1
[root@xwz ~]# cp -v install.log /home/dir88 # 没有/home/dir88
[root@xwz ~]# cp -v install.log /home/dir2
[root@xwz ~]# cp -v anaconda-ks.cfg !$
[root@xwz ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd
/etc/hostname /home/dir2
# 将多个文件复制到同一个目录
[root@xwz ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd
/etc/hostname .
[root@xwz ~]# type -a cp
cp 是 `cp -i' 的别名
cp 是 /usr/bin/cp
[root@xwz ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-ens33.bak
[root@xwz ~]# cp -rv /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfgens33.bak}
[root@xwz ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33{,-old}
移动
[root@xwz ~]# mv file1 /home/dir3 # 将file1移动到/home/dir3
[root@xwz ~]# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且
改名file20
[root@xwz ~]# mv file4 file5 # 将file4改名为file5
删除
[root@xwz ~]# cd /home
[root@xwz home]# rm -rf dir1
-r 递归
-f force强制
-v 详细过程
[root@xwz ~]# mkdir /home/dir10
[root@xwz ~]# touch /home/dir10/{file2,file3,.file4}
[root@xwz ~]# rm -rf /home/dir10/*
[root@xwz ~]# ls /home/dir10/ -a # 隐藏文件没有被删除
. .. .file4
[root@xwz ~]# rm -rf file*
[root@xwz ~]# rm -rf *.pdf
文件管理:查看文本文件的内容
文本文件
cat tac less more head tail tailf grep …
/bin/date
/etc/hostname
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/passwd
/etc/shadow
/etc/group
/etc/grub2.cfg
/etc/resolv.conf
/etc/profile # 设置系统环境变量
/etc/bashrc # 影响bash shell环境
/var/log/messages # 系统主日志文件
/var/log/secure # 跟安全相关的日志如ssh登录,本地登录......
cat
-n 显示行号
-A 包括控制字符(换行符/制表符)
linux$
windows^M$
less more head tail tailf
[root@xwz ~]# head /etc/passwd
[root@xwz ~]# head -2 /etc/passwd
[root@xwz ~]# tail /etc/passwd
[root@xwz ~]# tail -1 /etc/passwd
[root@xwz ~]# tail /var/log/messages
[root@xwz ~]# tail -20 /var/log/messages
[root@xwz ~]# tail -f /var/log/secure # 动态查看文件尾部,关注的文件名
[root@xwz ~]# tail -F /var/log/secure # 动态查看文件尾部,关注的索引编号
grep 针对文件内容进行过滤
[root@xwz ~]# grep 'root' /etc/passwd
[root@xwz ~]# grep '^root' /etc/passwd
[root@xwz ~]# grep 'bash$' /etc/passwd
[root@xwz ~]# grep 'failure' /var/log/secure