1、linux简介
什么是Linux?
Linux,全程GNU/Linux是一种免费使用和自由传播的类UNIX操作系统。
Linux的发新版
-
slackware:
- suse
- sle
- opensuse
- suse
-
debian:
- ubuntu
- mint
-
redhat:
- rhel:redhat enterprise linux
- centos:兼容rhel的格式
- fedora:
-
archlinux
-
Gentoo
Linux的哲学思想
-
一切皆文件:
把几乎所有资源,包括硬件设备都组织为文件格式;
-
又众多单一目的的小程序;一个程序只实现一个功能,而且要做好
组合小程序完成复杂任务;
-
尽量避免跟用户交互:
目标:实现脚本编程,以自动完成某些功能
-
使用纯文本文件保存配置信息:
目标:一款使用文本编辑器既能完成系统配置工作
2、Linux安装
2.1、镜像下载
[阿里镜像网站]https://developer.aliyun.com/mirror/
我是用的是CentOs7
2.2、虚拟机内安装
都是常规操作可能之后会写(VMware)
问题:
-
安装完CentOs后没网:
解决办法:
-
进入目录
-
找到文件以ifcfg-ens开头的文件
-
使用命令
vi ifcfg-ens33
修改文件把最后一行改为yes
-
重启服务
service network restart
-
-
使用镜像安装Centos7后没有可视化界面
如何安装图形化界面 GUI:
- 安装X
yum groupinstall "X Window System"
- 安装图形界面软件,GNOME(GNOME Desktop)
yum groupinstall "GNOME Desktop"
- 输入startx进入GUI界面
- 安装X
3、Linux基本使用
3.1、终端
用户与主机交互,必然用到的设备:
-
物理终端:直接接入本机的显示器和键盘设备:console
- 设备文件路径:/dev/console
-
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端
-
Ctrl+Alt+F(2-6)
-
其中F1为图形化界面
-
图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境。
-
设备文件路径:/dev/tty#
-
-
模拟终端:图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面
- 设备文件路径:/dev/pts/#
查看当前的终端类型
命令
tty
- 虚拟终端 文件路径
/dev/tty/#
- 模拟终端 文件路径
/dev/pts/#
- 物理终端 文件路径
/dev/console
3.2、交互之接口
启动终端之后,在终端设备附加一个交互式应用程序
-
GUI:
X protocol; window manager;desktop
Desktop:
- GNOME
- KDE
- XFCE
-
CLI:
shell程序:
- sh(bourn)
- csh
- bash
- zsh
shell命令
-
查看当前shell
echo $SHELL
[root@192 /bin]# echo $SHELL /bin/bash
-
查看所有的shell
cat /etc/shells
[root@192 /bin]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh
命令提示符:prompt
- [root@192 ~]#
- [root@192 ~] -> PS1
- prompt:
- 管理员:#
- 普通用户:$
3.3、命令
3.3.1、输入命令
-
提醒shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。
-
在shell中可执行的命令有两种:
- 内建命令:由shell自带的,而且通过某命令形式提供
- 外部命令:在当前系统的某文件系统路径下由对应的可执行程序文件which,whereis
- 区别内部或外部命令:
查看命令位置
-
which
[root@192 ~]# which ls alias ls='ls --color=auto' /usr/bin/ls
-
whereis
[root@192 ~]# whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
查看命令是否是内建
type command
[root@192 ~]# type yum yum 是 /usr/bin/yum [root@192 ~]# type cd cd 是 shell 内嵌
3.3.2、运行命令
-
命令格式:
-
COMMAND [OPTIONS...] [ARGUMENTS...]
-
选项:用于启用或关闭命令的某个或某些功能;
-
短选项: -c ex: -l, -h
多个短选项课命令使用 ex:| -l -h | -lh
-
长选项:--word ex: --long, --human-readable
-
-
参数:命令的作用对象
向命令提供数据
注意:
- 多选项,以及多参数和命令之间都应该使用空白字符分隔
- 取消多命令执行:Ctrl+c
-
-
3.3.3、文件系统
文件的数据:
- 元数据:metadata (描述数据的属性)
- 数据:data (真实数据)
Linux的文件系统:
-
文件名严格区分大小写:file1 和 File1 不同
-
文件名可使用除/以外的任意字符,不建议使用特殊字符
- /: 根目录;路径分隔符
-
文件名长度最多不能超过255个字符
-
所有.开头的文件,均为隐藏文件
路径
-
相对路径:从根目录开始的路径
-
绝对路径:从当前位置开始的路径
-
当前位置的表示方式:
- ./:
./network-scripts/
- 不使用./:
cd network-scripts/
查看当前位置的命令
pwd
[root@192 sysconfig]# pwd /etc/sysconfig
- ./:
..
:表示上一级目录 -
总结:
Linux的命令有很多相同因为 LSB:Linux Standard Base
本节的所有目录:
ls,cd,type,tty,pwd,echo,which,whereis,cat
3.4、Linux命令帮助的获取
格式:COMMAND [OPTIONS] [ARGMENTS...]
-
内部命令:
help COMMAND
-
外部命令:
-
试一试,但不针对某个具体命令
-
COMMMAND --help
-
COMMAND -h
-
-
操作手册(manual)
man COMMAND
-
信息页
info COMMAND
-
程序自身的帮助文档
- README
- INSTALL
- ChangeLog
-
程序官方文档
-
发行版的官方文档
-
3.4.1、内部命令获取
-
hash
:shell搜寻到的外部命令的路径结果会缓存到kv键值对中。
[root@192 bin]# hash
命中 命令
1 /usr/bin/cat
1 /usr/bin/ls
# hash -d cat
# hash -r
-
history
:管理命令历史:
-
登录shell时,会读取命令历史文件中记录下的命令:位置
~/.bash_history
cat ~/.bash_history
-
登录进shell后新执行的命令会记录在缓存中
history
记录history
历史文件中只有登出才会将本次命令历史从缓存加入到历史文件中
-
手动添加本次命令
history -a
history 的常用命令:
-
history -a
-
history -d
删除指定行数的历史文件
history -d 149
-
history -c
清空命令历史
快捷操作
!#
: 调用历史中第 # 条命令
[root@192 ~]# history 1 history 2 cat ~/.bash_history 3 help history 4 ls 5 cd Documents/ 6 history 7 ls 8 cd Documents/ 9 ls 10 cd .. 11 ls 12 history [root@192 ~]# !4 ls anaconda-ks.cfg Documents Music Public Videos Desktop Downloads Pictures Templates
-
!string
: 调用最近一条以string开头的命令[root@192 ~]# history 1 history 2 cat ~/.bash_history 3 help history 4 ls 5 cd Documents/ 6 history 7 ls 8 cd Documents/ 9 ls 10 cd .. 11 ls 12 history [root@192 ~]# !cd cd ..
-
!!
: 调用上一条执行的命令
-
3.4.2、外部命令获取
外部命令都有一个可执行文件,位于文件系统某目录之下:
执行一个外部命令,shell程序就会在$PATH$
的环境变量中,搜索。
[root@192 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 用 : 分隔每一个路径
# 搜索循序是 自左至右的
-
COMMAND --help || COMMAND -h
-
man COMMAND
存放man文件的目录
/usr/share/man/
文件包含 man1 ... man9
-
man1 : 用户命令
命令手册里会记录是哪个级别的
-
man2 : 系统调用
-
man3 : C库调用
-
man4 : 设备文件及特殊文件
-
man5 : 配置文件格式
-
man6 : 游戏
-
man7 : 杂项
-
man8 : 管理类的命令
-
man9 : 内核
man的存放路径
man能找到帮助手册因为有自己的配置文件
/etc/man_db.conf
MANDATORY_MANPATH /usr/man MANDATORY_MANPATH /usr/share/man MANDATORY_MANPATH /usr/local/share/man
帮助手册
帮助手册中的段落说明 :
段落 说明 NAME 名字 简要说名 SYNOPSIS 命令的简要说明 DESCRIPTION 命令描述 OPTIONS 命令选项 EXAMPLES 例子 AUTHOR 作者 - SYNOPSIS:
- [] : 可选内容
- <> : 必选内容
- a|b : 二选一
- ... : 同一内容可出现多次
- man的小技巧:
- space | ^V | ^f | ^F 向尾部翻屏
- b 向头翻屏
- d 向翻下半屏
- u 向上翻半屏
- j 向下翻一行
- k 向上翻一行
- q 退出
- # 跳至第# 行
- 1G 头部
- G 尾部
- /keyword : 向尾部查找单词 n 往尾部找 N 往头部找
- /?keyword : 向头部查找单词 n往头部找, N往尾部找
-
-
info
info COMMAND
-
程序自身的帮助文档
/usr/share/doc
-
程序官方文档
-
发行版官方文档
-
注意
-
有些命令不止在一个章节中存在帮助手册:
可以使用命令
whatis COMMAND
查看所有的位置:[root@192 man1]# whatis read read (1) - bash built-in commands, see bash(1) read (1p) - read a line from standard input read (2) - read from a file descriptor read (3p) - read from a file
注:
-
默认会读取更小的帮助手册
-
想要查看指定的
man # COMMAND
-
-
小问题:
1、更换语言
-
语言环境:
- 英文:
en_US.UTF-8
- 中文:
zh_CN.UTF-8
- 英文:
-
查看目前的语言
echo $LANG
[root@192 bin]# echo $LANG zh_CN.UTF-8
-
修改目前的语言环境
-
临时修改
[root@192 bin]# LANG="en_US.UTF-8" [root@192 bin]# echo $LANG en_US.UTF-8
-
永久修改
语言文件存放在
/etc/locale.conf
修改文件为
LANG="en_US.UTF-8"
-
练习:
data 命令
- 显示今天周几
- 设定当前系统时间
- 显示是今天的日期 | 11/19/22
- 显示当前的时间 | 21:48:45
4、基础命令
4.1、date
4.1.1 显示时间
-
date [OPTION]... [+FORMAT]
-
FORMAT : 格式符号
[root@192 ~]# date +%a Fri [root@192 ~]# date +%A Friday [root@192 ~]# date +%D 10/01/21 [root@192 ~]# date +%F 2021-10-01 [root@192 ~]# date +%T 11:35:49 [root@192 ~]# date "+The time is %T" The time is 11:39:17
date "+The time is %T"
还可以拼接字符串
-
-
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] || 设置
date 1120110122.30
[MMDDhhmm[[CC]YY][.ss]] :
- MM : 月
- DD : 日
- hh : 小时
- mm : 分钟
- YY : 年(2位)
- CCYY : 年(4位)
- .ss : 秒钟
4.1.2、Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的计时
- 硬件时钟:硬件时钟是存储在主板上CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电
hwclock
: 显示硬件时钟
- -s 根据硬件时钟同步
- -w 根据系统时钟同步
cal
: 显示日历
4.2、目录相关的命令
4.2.1、主目录,家目录
- root :
/root
- 普通用户 :
/home/USERNAME
->/home/wwx
- ~ : 用户的家目录
4.2.2、cd
命令
-
cd | cd ~
: 回到当前用户的主目录 -
cd ~USERNAME
: 管理员可以使用cd ~USERNAME
直接进入普通用户家目录 -
cd -
: 在上一个目录和当前目录之间来回切换 -
.
: 当前目录 -
..
: 上一级目录相关的环境变量
$PWD
: 保存了当前目录路径$OLDPWD
: 上一次所在的目录路径 |cd -
的实现依据- `` :
4.2.3、ls
命令
显示指定路径下的文件列表:
-
ls [OPTION]... [FILE]...
-
-a : 显示所有文件包括隐藏文件
-
-l : 长格式
drwxr-xr-x. 2 root root 6 Nov 17 16:08 Music
-
最左侧第一列:文件类型
- - : 普通文件
- d : 目录
- l : 连接文件
- b : 跨设备
- c : 字符设备
- p : 管道
- s : 套接字
-
后9位 : 访问权限
-
数字 表示文件被硬链接的次数
-
root
: 文件的属主 owner -
root
: 文件的属组 group -
6
: 文件的大小(单位 字节) -
Nov 17 16:08
: 文件最后一次被修改的时间-
Linux文件修改分为三种
- 文件最近内容修改时间 |
mtime
- 文件最近权限和属性的修改时间 |
ctime
- 文件最近被访问时间 |
atime
- 文件最近内容修改时间 |
-
stat /PATH/TO/SOMEFILE
: 获取指定文件的元数据[root@192 ~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’ Size: 1259 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 33574980 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2022-11-17 12:58:00.296001547 +0800 Modify: 2022-11-17 12:58:00.298001547 +0800 Change: 2022-11-17 12:58:00.298001547 +0800 Birth: -
-
-
-
-h : 单位换算 | 通常跟 -l 一起使用
-
-d : 显示目录自身的相关属性 | 通常跟 -l 一起使用
-
-r : 以逆序方式排序
-
-R : 递归显示
-
4.2.4、文件内容查看命令cat
和 tac
命令
cat
正序显示tac
逆序显示
cat [OPTION]... [FILE]...
- -E : 显示行结束符 $
- -n : 对显示出的每一行进行编号
- -r : 以逆序方式排序
- -R : 递归显示
4.4.5、文件类型查看文件file
file /PATH/TO/SOMEFILE
[root@192 ~]# file /dev/sda
/dev/sda: block special
[root@192 ~]# file /etc/issue
/etc/issue: ASCII text
4.4.6、回显命令echo
-
常用OPTION
-
-n : 不会自动换行
-
-e : 允许使用转义符
-
\n : 换行
-
\t : 制表符
[root@192 ~]# echo -e "how\tare you" how are you
-
-
-
echo "VAR_NAME" : 变量会替换
-
echo 'VAE_NAME' : 变量不会替换
[root@192 ~]# echo "$LANG" en_US.UTF-8 [root@192 ~]# echo '$LANG' $LANG
4.4.7、显示命令路径which
which [OPTION] [COMMAND]
--skip-alias
: 禁止显示别名
5、系统管理类命令:
5.1、关机命令
- halt
- poweroff
- shutdown
- init 0
5.2、重启命令
- reboot
- shutdown
- init 6
5.3、跟用户登录相关命令
- who
- whoami
- w
总结:
符号 | 意义 |
---|---|
%H | 24小时 |
%I | 12小时 |
%M | 分 |
%S | 秒 |
%Y | 年 |
%y | 后两位年 |
%m | 月 |
%d | 天 |
总结
1、如何使用有一个新命令
-
使用
type
判断命令类型-
内嵌命令
-
外部命令
[root@192 ~]# type ls ls is aliased to `ls --color=auto' # 外部 [root@192 ~]# type cd cd is a shell builtin # 内嵌
-
-
命令具体内容查看
- 内嵌命令使用
help COMMAND
查看 - 外部命令使用
man COMMAND
查看
- 内嵌命令使用