0
点赞
收藏
分享

微信扫一扫

2.1 Linux 基础命令

caoxingyu 2023-09-11 阅读 55

1.1)终端类型

who显示当前系统上已登录的用户信息。

[ 会列出登录系统的用户以及他们的登录终端登录时间来源等信息]

who

PTS/1是一个伪终端设备名称,用于表示用户登录的虚拟终端

远程登录工具(如 伪终端设备

2.1 Linux 基础命令_Linux


TTY1表示物理终端设备名称,通常用于表示计算机上的本地控制台终端

这是指连接到计算机本身的物理屏幕和键盘,允许用户直接在计算机上进行操作,而不是通过远程登录

2.1 Linux 基础命令_Linux_02


1. 查看当前所在终端

[ 可识别 当前终端类型 ]

tty

pts/1    # 虚拟终端

2.1 Linux 基础命令_Linux_03


tty

tty1    # 物理终端

2.1 Linux 基础命令_Linux_04


w 命令 与 who 命令的区别

w命令适合查看有关用户活动和系统资源的详细信息。

who 命令则更适合查看简要的登录信息

w

2.1 Linux 基础命令_Linux_05


1.2)Bash Shell

Bash CentOS Ubuntu 默认使用。

Shell 提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。


1. 显示 当前使用

echo $SHELL

2.1 Linux 基础命令_Linux_06


2. 显示当前系统使用的 所有 SHELL

cat /etc/shells

2.1 Linux 基础命令_Linux_07


3. 修改主机名

[ 所谓的 临时修改其实就是将修改数据写入在内存因此重启后就失效了... ]

[ 所谓的永久修改其实就是将修改数据写入在硬盘   即使重启也不会失效... ]

`临时` 生效    [ 重启即失效 ]

hostname NAME


`持久` 生效

[ 仅支持 CentOS7 和 Ubuntu18.04 以上版本]

"立即生效" [ 会自行将主机名信息写入至 /etc/hostname ]

hostnamectl set-hostname blog.wuhanjiayou.cn


"验证" 自行修改后的配置文件

cat /etc/hostname

2.1 Linux 基础命令_Linux_08


[ 当然也可以直接修改 /etc/hostname ]

"但这个非立即生效, 需重启系统生效"  `因此, 建议 CentOS7 以上版本使用hostnamectl`

vim /etc/hostname



注意:

[ 主机名不要瞎配置  可能会导致某些服务起不来 ]

主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合。

有些软件对主机名有特殊要求

2.1 Linux 基础命令_Linux_09


1.3)命令提示符 Prompt

登录默认的系统命令提示符毫无没有个性,无法明显辨别生产和测试环境,而导致误操作。

可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误。

[ CentOS 默认提示符 ]

[root@blog ~]#


1. 输出命令提示符 格式

echo $PS1

2.1 Linux 基础命令_Linux_10


2. 修改提示符格式 范例

[ CentOS 7  Bash ]

配置

PS1="\[\e[1;41;33m\][\u@\h \W]\\$\[\e[0m\]"

PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\\[\e[0m\]\\$ "

2.1 Linux 基础命令_Linux_11


[ CentOS 7  Tcsh ]

set _green="%{\033[38;5;120m%}"

set _cyan="%{\033[38;5;123m%}"

set _white="%{\033[0m%}"

set prompt="${_green}%n@%m${_white}:${_cyan}%~${_white}%# "

2.1 Linux 基础命令_Linux_12


3. 提示符格式说明

\e 控制符\033

\u 当前用户

\h 主机名简称

\H 主机名

\w 当前工作目录

\W 当前工作目录基名

\t 24小时时间格式

\T 12小时时间格式

! 命令历史数

#开机后命令历史数


4. 永久生效配置

[ /etc `全局`配置 ]

vim /etc/profile.d/Prompt.sh

PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\\[\e[0m\]\\$ "


su - wangj

可以发现我们的 WangJ 普通用户 Prompt 命令提示符也被修改...

2.1 Linux 基础命令_Linux_13



[ ~/.bashrc `用户`配置 ]

vim ~/.bashrc

PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\\[\e[0m\]\\$ "


source ~/.bashrc

2.1 Linux 基础命令_Linux_14



1.4)执行命令

输入命令后回车,提请 Shell 程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来。


1. 查看 Bash `文件大小`

[17:32:14 root@www ~]# ll -h /bin/bash

-rwxr-xr-x. 1 root root 942K Apr  1  2020 /bin/bash

2.1 Linux 基础命令_Linux_15


2. Shell 中可执行的 `两类命令`

内部命令而且通过某命令形式提供,用户登录后自动加载并常驻内存中。

外部命令在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除。


3. 查看系统中 所有内部命令

enable

2.1 Linux 基础命令_Linux_16


区别指定的命令是内部命令外部命令

[ Shell Builtin内部命令

type hostname

2.1 Linux 基础命令_Linux_17


1. 内部命令 与 外部命令 的区别

[ 1. 内部命令 都集成在 /bin/bash

[ 2. 而外部命令 是一个独立的文件 ]


2. 外部命令是如何执行的

[ 为何输入 pwd他即会执行/usr/bin/pwd ]


3. echo $PATH

$PATH是一个环境变量,用于指定系统在哪些目录中搜索可执行文件

这些目录中存放着一些常用的命令,使得用户可以在终端中直接输入命令名称而不需要提供完整的路径

[17:43:46 root@www ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.1 Linux 基础命令_Linux_18

2.1 Linux 基础命令_Linux_19


[ 重点!! ]

因此我们想让某个bin 文件输入其xxx即可自动执行

即需要将该  写入到的搜索范围当中

[ 举例 生产环境 ]

echo $PATH

2.1 Linux 基础命令_Linux_20


which verdi

2.1 Linux 基础命令_Linux_21


1.5)Hash缓存表

系统终端 初始外部命令执行时,默认会从,找到后会将这条命令的路径记录到hash 表 中。

当再次使用该命令时,Shell 解释器会首先查看 hash 表,存在将执行,如不存在,将会去利用

hash

2.1 Linux 基础命令_Linux_22


hash 命令常见用法

hash 显示 hash 缓存

hash -l 显示 hash 缓存,可作为输入使用

hash -p path name 将命令全路径path起别名为name

hash -t name 打印缓存中 name 的路径

hash -d name 清除 name 缓存

hash -r清除缓存


总结:`命令的执行过程`

Alias别名

内部 命令Shell Builtin

Hash 缓存表

外部命令$PATH 路径

command not found

2.1 Linux 基础命令_Linux_23


1.6)命令 别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行

[ 显示当前 Shell 进程所有可用的命令别名 ]

alias

2.1 Linux 基础命令_Linux_24


示例

[ 设置别名

# 注意:

# 先验证 sethost `是否已经是系统命令`

sethost


# 设置别名

alias sethost='hostnamectl set-hostname'


# 使用别名置主机名

sethost blog.wuhanjiayou.cn

2.1 Linux 基础命令_Linux_25


1.6.1)示例 2 [ 省略 ]

[ 扫描新加的磁盘 ]

echo '- - -' > /sys/class/scsi_host/host0/scan

echo '- - -' > /sys/class/scsi_host/host1/scan

echo '- - -' > /sys/class/scsi_host/host2/scan


[ 1. 虚拟机 新增硬盘 ]

2.1 Linux 基础命令_Linux_26


[ 2. 使用 lsblk无法查看到新增硬盘 ]

2.1 Linux 基础命令_Linux_27


[ 3. 执行 扫描硬盘命令

echo '- - -' > /sys/class/scsi_host/host0/scan

echo '- - -' > /sys/class/scsi_host/host1/scan

echo '- - -' > /sys/class/scsi_host/host2/scan


# 再次查看

lsblk


1.6.2)持久保存别名

1. `用户`配置:~/.bashrc

2. `全局`配置:/etc/bashrc

2.1 Linux 基础命令_Linux_28


# 生效配置文件

source ~/.bashrc


1.6.3)使用 Type命令

[ 我们可以通过 type命令 轻松得知命令类别 "1.内部命令  2.外部命令  3.别名" ]


[ Linux 命令执行优先级 ]

alias别名

内部 命令 /bin/bash

Hash 缓存表

外部 命令 $PATH 路径

命令没找到 Command not Found

2.1 Linux 基础命令_Linux_29


type sethost

which sethost

2.1 Linux 基础命令_Linux_30


1.7)命令格式

命令

COMMAND

选项

短格式UNIX 风格例如  -h

长格式GNU 风格例如  --help

BSD 格式一个字母例如  a

参数

命令的作用对象比如:文件名

# 命令  -选项  参数

COMMAND [OPTIONS...] [ARGUMENTS...]


# 例如

ll -a

ll -h .bashrc

2.1 Linux 基础命令_Linux_31


小扩展:

多个选项以及多参数和命令之间使用空白字符 分隔

取消和结束命令执行:Ctrl + CCtrl + D

多个命令可以用  ";"  符号分开

一个命令可以用\ 分成多行个脚本中编写的多

2.1 Linux 基础命令_Linux_32


1.8)常用命令

1.8.1)查看

lscpu

2.1 Linux 基础命令_Linux_33


1.8.2)查看内存大小

free

free -h

2.1 Linux 基础命令_Linux_34


1.8.3)查看硬盘和分区情况

lsblk

lsblk -f

2.1 Linux 基础命令_Linux_35


1.8.4)查看系统版本信息

# 系统架构

arch


# 内核版本

uname -r


# 操作系统行版本

cat /etc/redhat-release

2.1 Linux 基础命令_Linux_36


/etc/os-release 用于存储关于操作系统发行版的信息。

它通常包含一些与操作系统版本、名称、ID、版本号等有关的元数据。

cat /etc/os-release

2.1 Linux 基础命令_Linux_37


1.8.5)日期与时间

[ Linux 的两种时钟 ]

系统时钟:

硬件时钟:主板

# 系统时间

date


# 硬件时间

clock

2.1 Linux 基础命令_Linux_38


示范

clock -s    以硬件时钟为准 "校正系统时钟"

clock -w    以系统时钟为准 "校正硬件时钟"


实战

# 将系统时间设置为 19:30

date -s 19:30


# 将当前的系统时间写入硬件时钟

clock -w


# 验证硬件时钟

clock



时区

timedatectl list-timezones | grep -i shangh

timedatectl set-timezone Asia/Shanghai

timedatectl status

2.1 Linux 基础命令_Linux_39


用于系统时区设置 的符号链接。

它的目标路径是../usr/share/zoneinfo/Asia/Hong_Kong,意味着系统的时区被设置为亚洲/香港

ll /etc/localtime



1.8.6)关机与重启

# 关机

init 0

poweroff


# 重启

reboot


1.8.7)用户登录信息查看命令

whoami: 显示当前登录有效用户


who: 系统当前所有的登录会话


w: 系统当前所有的登录会话及所做的操作


1.8.8)motd 登录界面

rz motd

mv motd /etc

2.1 Linux 基础命令_Linux_40


参考链接:

https://www.bootschool.net/ascii-art

https://www.bootschool.net/chinese-to-ascii

2.1 Linux 基础命令_Linux_41

vim /etc/motd

2.1 Linux 基础命令_Linux_42


1.8.9)会话管理[ 省略 ]

命令行的典型使用方式是,打开一个终端Terminal,以下简称"终端")在里面输入命令。

用户与计算机的这种临时交互,称为一次 "会话"(Session)

会话的一个重要特点是:终端与其中启动的进程是连在一起的。

打开终端,会话开始;关闭终端,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

一个典型的例子就是,SSH 登录远程计算机,打开一个 远程终端执行命令。

这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。

因为上一次了,里面的进程也随之消失了。

为了解决这个问题,会话与终端可以窗口关闭时,会话并不终止而是继续运行,等到以后需要的时候,再让会话

终端复用器软件就是会话与终端的 "解绑" 工具,将它们彻底分离。

(1)它允许在单个终端中,同时访问多个会话。这对于同时运行多个命令行程序很有用。

(2) 它可以让新终端 "接入"已经存在的会话。

(3)它允许每个会话有多个连接终端,因此可以多人实时共享会话。

(4)它还支持窗口任意的垂直和水平拆分。


类似的终端复用器还有ScreenTmux

Screen

yum install screen -y


# 运行

screnn

# 执行命令

ping baidu.com




2. Tmux

yum install -y tmux


# 运行

tmux



1.8.10)Echo

在终端中,ANSI 定义了用于屏幕显示的其格式如下:

#

"\033[字符背景颜色;字体颜色m字符串\033[0m"


#

echo -e "\E[1;31mwangjun\E[0m"

echo -e "\E[1;32mwangjun\E[0m"

echo -e "\E[1;33mwangjun\E[0m"

echo -e "\E[1;34mwangjun\E[0m"

echo -e "\E[1;35mwangjun\E[0m"

echo -e "\E[1;36mwangjun\E[0m"

echo -e "\E[1;37mwangjun\E[0m"

2.1 Linux 基础命令_Linux_43


俄罗斯方块

2.1 Linux 基础命令_Linux_44


2.1)命令补全

[ Tab 键 可以实现命令及路径等补全,提高输入效率,避免出错

命令的子命令补全,需要安装 bash-completion

[ tab 键补全,如果系统是最小安装需要安装相应包 ]

yum install -y bash-completion


exit


// 验证

yum provides


2.2)命令行历史

当执行命令后,系统默认会在内存记录执行过的命令

当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history

登录会读取命令历史文件中记录下的命令加载到内存


[ 命令历史相关环境变量 ]

HISTSIZE:                            命令历史记录的条数

HISTFIL:                             指定历史文件,默认为 ~/.bash_history

HISTFILESIZE:                        命令历史文件记录历史条数

HISTTIMEFORMAT="%F %T `whoami` "     显示时间和用户

HISTIGNORE="str1:str2*:…"            忽略 str1 命令str2开头的历史


HISTCONTROL:                         控制命令历史的记录方 

    ignoredups          是默认值,可忽略重复的命令,连续且相同为“重复

    ignorespace         忽略所有以空白开头的命令

    ignoreboth          相当于ignoredups, ignorespace的组合

    erasedups           删除重复命令


[ 持久保存变量 ]

vim ~/.bash_profile

export HISTCONTROL=ignoreboth

export HISTTIMEFORMAT="%F %T `whoami` "

source ~/.bash_profile

2.1 Linux 基础命令_Linux_45


2.3)获取帮助

获取帮助的能力决定了技术的能力!!

多层次的帮助

whatis

command --help

man and info

/usr/share/doc/

Red Hat documentation 、Ubuntu documentation

软件项目网站

其它网站

搜索


[ whatis 使用数据库来 显示命令的简短描述 ]

此工具在系统刚安装后,不可立即使用需要制作数据库后才可使用

执行下面命令生成数据库:

# 生成数据库

mandb        # CentOS 7

makewhatis   # CentOS 6


# 示范

whatis rm

2.1 Linux 基础命令_Linux_46


[ 内部命令查看帮助

type echo

help echo

2.1 Linux 基础命令_Linux_47


[ 外部命令查看帮助 ]

type hostnamectl

hostnamectl --help

2.1 Linux 基础命令_Linux_48


2.3.1)查看 date 命令帮助 案例

date --h

2.1 Linux 基础命令_Linux_49


date +%T

2.1 Linux 基础命令_Linux_50


# 输出两天前的时间信息

date -d '-2 day'

2.1 Linux 基础命令_Linux_51


# 输出一天前的时间信息 [ 并格式化 %F ]

date -d '-1 day' +%F


# 创建 ·昨天日期· 的日志文件

touch `date -d '-1 day' +%F`.log

man date

whereis date


[ man 章节信息 ]

whatis passwd


# 演示

# 使用 man 命令查看 passwd man 手册章节 5 信息

man 5 passwd

2.1 Linux 基础命令_Linux_52



2.3.2)官方文档

http://www.github.com

https://www.kernel.org/doc/html/latest/

http://httpd.apache.org

http://www.nginx.org

https://mariadb.com/kb/en

https://dev.mysql.com/doc/

http://tomcat.apache.org

https://jenkins.io/zh/doc/

https://kubernetes.io/docs/home/

https://docs.openstack.org/train/

http://www.python.org

http://php.net


举报

相关推荐

0 条评论