linux基础入门和帮助

概述重点:(文章很长,急看重点)

  • 深度理解shell的功能合作用以及bash的命令的实现过程
  • 熟练常用命令
  • 深刻了解帮助命令

1.linux基础

1.1用户类型

root 用户

(oneself:正常系统都有一个超级用户或管理员root权限大 , 普通用户权限小 , 不然咋知道谁操作命令 )
一个特殊的管理帐户 ,也被称为超级用户
root已接近完整的系统控制
对系统损害几乎有无限的能力
除非必要,不要登录为 root

普通( 非特权 )用户

权限有限
造成损害的能力比较有限

1.2终端

【一个输入输出设备,在linux也是设备文件,以一种设备文件的方式保留tty和console(一切皆文件)。 】
终端(英语:Computer terminal),是与计算机系统相连的一种输入输出设备,它用来显示主机运算
的输出,并且接受主机要求的输入,通常离计算机较远。根据功能不同,可分若干类。典型的终端包括
显示器键盘套件,打印机打字机套件等。
image.png
随着技术的发展,控制台,终端这些不再是单独的物理设备了,而是被键盘和显示器整合,替代。现在
计算机的console控制台和tty终端都是虚拟出来的概念了,在概念上,键盘和显示器既是console,又是
tty。至于什么时候是console,什么时候是tty,取决于那一刻在做什么。
这里的虚拟,指的是,Linux操作系统中,以一种设备文件的方式保留tty和console(一切皆文件)。当使
用特定软件连接该主机时,就能看到当前连接所占用的终端设备文件,这样就表示该机器的一个终端被
激活,正在使用中。
tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通
过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适
image.png

1.2.1 终端类型

控制台终端: /dev/console
串行终端:/dev/ttyS#
虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#
伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接
图形终端:startx, xwindows

1.2.3查看终端命令

#查看终端
mage@ubuntu22:~$ tty
/dev/pts/0
#查看终端详细(有谁个控制操作系统)
mage@ubuntu22:~$ w
 13:12:29 up 0 min,  1 user,  load average: 0.30, 0.10, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
mage     pts/0    10.0.0.1         13:11    4.00s  0.02s  0.00s w
mage@ubuntu22:~$ 

1.3shell** 交互式接口 **

【oneself:系统界面接口连接了程序和硬件】终端设备附加一个交互式应用程序
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
**1.3.1 交互式接口类型 **
GUI:Graphic User Interface X protocol, window manager, desktop
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面)

CLI:Command Line Interface,
shell 程序

image.png
Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并
把它送入内核去执行 。
shell也被称为LINUX的命令解释器(command interpreter),Shell 本身是一个程序。将用户输入的命
令行拆解为”命令名“与”参数“。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,
然后将刚才解析出来的参数传给该程序并执行
shell是一种高级程序设计语言,提供了变量,函数,条件判断,循环等开发语言的功能。
由于Shell本身是个程序,所以它可以被任何用户自己开发的各种Shell所代替。

1.31各种shell

image.png
sh:Steve Bourne
bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
csh:c shell , C 语言风格
tcsh:
ksh :Korn Shell, AIX 默认 shell
zsh: MacOS默认shell

**查看系统用的是什么shell
mage@ubuntu22:~$ echo $SHELL
/bin/bash
**查看系统有什么shell
mage@ubuntu22:~$ cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

**直接输入shell名称就可以切换shell类型
mage@ubuntu22:~$ sh
$ 
$ 
$ 
$ /bin/bash      
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

1.4设置主机名

【有些公司会用特殊格式命名】

**临时更改主机名 重启或开启一个新的子进程会生效
[root@10 ~]# hostname bai
[root@10 ~]# 
[root@10 ~]# bash
[root@bai ~]# 
[root@bai ~]# 
[root@bai ~]# 
**永久更改主机名 重启或开启一个新的子进程会生效
[root@bai ~]# hostnamectl set-hostname Rocky
[root@bai ~]# 
[root@bai ~]# bash
[root@Rocky ~]# 
[root@Rocky ~]# 
**打印主机名
[root@Rocky ~]# hostname
Rocky

**注意: **
修改hostname 需要root权限
主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
有些软件对主机名有特殊要求
一般按照组织的要求设置主机名,通常有一定的意义的

范例:错误的主机名可能会导致某些服务无法启动

[root@rocky8 ~]# hostnamectl set-hostname centos8.3
[root@rocky8 ~]# systemctl restart postfix
Job for postfix.service failed because the control process exited with error 
code.
See "systemctl status postfix.service" and "journalctl -xe" for details.

1.5命令提示符

【登录Linux后,默认的系统命令提示符毫无个性,无法明显辨别生产和测试环境,而导致误操作。 可以
通过修改PS1变量实现个性的提示符格式,避免这种低级错误】(重要的是写入文件的那两句)

[root@Rocky ~]#echo $PS1
\e[33m[\u@\h \W]\$\e[0m
[root@Rocky ~]#
[root@Rocky ~]#
[root@Rocky ~]#
[root@Rocky ~]#
[root@Rocky ~]#PS1='\e[34m[\u@\h \W]\$\e[0m'
[root@Rocky ~]#
[root@Rocky ~]#

**#PS1变量中的常用选项
\d #曰期,格式为"星期 月 日"
\H #完整的主机名。如默认主机名"localhost.localdomain"。
\h #简写的主机名。如默认主机名"localhost"。
\t #24小时制时间,格式为"HH:MM:SS"。
\T #12小时制时间,格式为"HH:MM:SS"。
\A #24小时制时间,格式为"HH:MM"。
@ #12小时制时间,格式为"HH:MM am/pm"。
\u #当前用户名。
\v #Bash版本信息。
\w #当前所在目录的完整名称。
\W #当前所在目录的最后一个目录。
# #执行的第几条命令。
$ #提示符。如果是 root 用户,则会显示提示符为"#“;如果是普通用户,则会显示提示符为”$"

**#PS1中的值要单引号引用,如果是双引号,则某些替换符不会被解析
PS1=‘\e[31m[\u@\h \W]$\e[0m’

#PS1中的颜色部份
\e[ #开始位
\e[0m #结束位
#上面的\033 可以换成 \e
#颜色设置 \e[ 颜色m 内容 \e[0m 颜色后面要用m结束,多个颜色,用;分割,只要一个m
\e[31m我是红色\e[0m

#各颜色表示方式
字体颜色 背景色
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
#字体颜色
\e[30m我是黑色\e[0m
\e[31m我是红色\e[0m
\e[32m我是绿色\e[0m
\e[33m我是黄色\e[0m
\e[34m我是蓝色\e[0m
\e[35m我是紫红色\e[0m
\e[36m我是青蓝色\e[0m
\e[37m我是白色\e[0m
#背景颜色
\e[40m我背景是黑色\e[0m
\e[41m我背景是红色\e[0m
\e[42m我背景是绿色\e[0m
\e[43m我背景是黄色\e[0m
\e[44m我背景是蓝色\e[0m
\e[45m我背景是紫红色\e[0m
\e[46m我背景是青蓝色\e[0m
\e[47m我背景是白色\e[0m

#字体颜色+背景颜色组合,字体颜色和背景颜色不分先后,因为值不一样
\e[30;41m红底黑字\e[0m
\e[41;30m红底黑字\e[0m

#特殊效果
0#关闭效果
1#高亮显示
3#斜体
4#下划线
5#闪烁,闪烁效果与远程工具所在的环境有关
7#反白显示
8#隐藏
9#删除线
#可组合使用,但如果效果有冲突时,以最后的为准,就是说,后面的效果,会覆盖前面的效果

\e[30;41;5m红底黑字闪烁\e[0m
\e[4;30;41;5m红底黑字下划线闪烁\e[0m
\e[0;4;30;41;5m红底黑字下划线闪烁\e[0m #这里的0;4;5 都表示效果,但后面的4;5覆盖了前面的0
\e[4;30;41;5;0m红底黑字下划线闪烁\e[0m #这样写,4;5的效果都被0去掉了

修改提示符格式范例以及永久生效

红色的PS1
PS1="\[\e[31m\][\u@\h \W]\\$\[\e[0m\]" >> ./.bashrc

PS1="\[\e[1;5;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\]\\$"


[root@rocky8 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh

Ubuntu命令提示符
#ubuntu2204中PS1
root@ubuntu2204:~# echo KaTeX parse error: Undefined control sequence: \[ at position 11: PS1 <br />\̲[̲\e]0;\u@\h: \w\…{debian_chroot:+($debian_chroot)}\u@\h:\w$
在 ubuntu2204 中,设置 PS1,如果要对所有普能用户生效,将 PS1 定义写在 /usr/share/bash
completion/bash_completion 的最下面,如里需要对每个用户单独定义,写在用户家目录的 .bashrc
文件的最下面。
范例:实现Ubuntu系统持久保存提示符格式
# KaTeX parse error: Expected '}', got 'EOF' at end of input: …ebian_chroot:+(debian_chroot)} 表示给变量赋值,如果存在
/etc/debian_chroot 文件,则该文件中内容会被赋值给变量$debian_chroot
#文件不存在
root@ubuntu2204:~# ls /etc/debian_chroot
ls: cannot access ‘/etc/debian_chroot’: No such file or directory
#变量为空
root@ubuntu2204:~# echo $debian_chroot
#设置文件内容
root@ubuntu2204:~# echo “test” > /etc/debian_chroot
#文件存在
root@ubuntu2204:~# ls /etc/debian_chroot
/etc/debian_chroot
#查看文件内容
root@ubuntu2204:~# cat /etc/debian_chroot
test
#在另一个终端中登录,提示符多左边多了内容,变量也有了
(test)root@ubuntu2204:~# echo $debian_chroot
test

在 ubuntu2204 中,设置 PS1,如果要对所有普能用户生效,将 PS1 定义写在 /usr/share/bash-completion/bash_completion 的最下面,如里需要对每个用户单独定义,写在用户家目录的 .bashrc
文件的最下面


jose@ubuntu20:~$ echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]'" >> .bashrc
jose@ubuntu20:~$ tail -1 .bashrc 
PS1='\[\e[1;35m\][\u@\h \W]\$\[\e[0m\] '

1.6 执行命令

《重点理解:》
【注:理解什么是内部命令什么是外部命令 shell命令的执行过程 (三个命令 type ,enable, hash ,which )hash的原理以及与PATH的配合】

image.png

1.6.1 执行命令过程

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

1.6.2 shell中可执行的两类命令

内部命令:由shell自带的,而且通过某命令形式提供,用户登录后自动加载并常驻内存中
外部命令:【默认在PASH下】在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执 行完毕后从内存中删除

查看命令类型

[11:16:24 root@Rocky ~]#type ls
ls is aliased to `ls --color=auto'    # (别名)
[11:16:37 root@Rocky ~]#
[11:16:37 root@Rocky ~]#
[11:16:37 root@Rocky ~]#
[11:16:38 root@Rocky ~]#type cd
cd is a shell builtin                 #(内部命令)
[11:16:43 root@Rocky ~]#type -a cd    #(范例: 查看是否存在对应内部和外部命令)
cd is a shell builtin
cd is /usr/bin/cd
[11:19:09 root@Rocky ~]#type yum      #(外部命令路径)
yum is /usr/bin/yum

有内部命令,又有外部命令,因为不是所有主机都使用标准shell,所以常用内部命令会有一个外部命令
的备份,防止内部命令执行失败。
在命令执行时,shell 先判断是否是内部命令,如果是,则执行内部命令,如果不是,则去特定目录下寻
找外部命令。
bash shell 自身就是一个程序,里面有很多小工具,有用户通过终端连接主机,则该终端就有一个bash
在后台运行着。

1.6.2.1 内部命令相关
help #查看所有内部命令及帮助
enable   #查看所有启用的内部命令
enable cmd #启用 cmd 命令
enable -n cmd   #禁用内部 cmd 命令
enable -n   #查看所有禁用的内部命令

1.6.2.2 执行外部命令

查看外部命令路径:

which  -a |--skip-alias 
whereis
######################################
[root@rokcy8 ~]# which ls
alias ls='ls --color=auto'
 /usr/bin/ls
 
#ubuntu中的 which 不显示别名
root@ubuntu2204:~# which ls
/usr/bin/ls
 
 
#跳过别名 
[root@rokcy8 ~]# which --skip-alias ls
/usr/bin/ls
# -a 表示在所有路径中查找匹配的命令,使用该命令时匹配第一个找到的
[root@rokcy8 ~]# which -a echo
/usr/bin/echo
#查看path
[root@rokcy8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
****#创建root下的 bin 目录
[root@rokcy8 ~]# mkdir bin
#拷贝 echo 命令到 /root/bin/ 目录下
[root@rokcy8 ~]# cp /usr/bin/echo /root/bin/
#再次查看
[root@rokcy8 ~]# which echo
/usr/bin/echo
[root@rokcy8 ~]# which -a echo
/usr/bin/echo
/root/bin/echo
#ubuntu中
root@ubuntu2204:~# which -a echo
/usr/bin/echo
/bin/echo





*****外部命令搜索路径*******
#root用户
[root@rokcy8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


#普通用户
[root@rokcy8 ~]# su - mage
[mage@rokcy8 ~]$ echo $PATH
/home/mage/.local/bin:/home/mage/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

1.7Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的
路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不
存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率。
hash 只对当前用户的当前终端进程有效,是一组临时数据;
切换用户后无效;
退出重新登录后会被重置;
hash 命令常见用法

hash   #显示当前终端进程中的hash 缓存
hash -l #显示详创建此条hash 的命令,可作为输入使用
hash -p path name #手动创建hash
hash -t name #输出路径
hash -d name #删除指定hash
hash -r #清空所有hash

1.8命令别名


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

alias #显示当前shell进程所有可用的命令别名
alias name #查看指定别名
alias NAME=‘VALUE’#定义别名NAME,其相当于执行命令VALUE
unalias #撤消别名

**列出系统别名**
[14:37:32 root@Rocky ~]#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 xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
***查看别名****
[14:38:01 root@Rocky ~]#alias ls
alias ls='ls --color=auto'
[14:38:12 root@Rocky ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
****定义使用别名****
[14:40:35 root@Rocky ~]#alias cdnet='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[14:40:49 root@Rocky ~]#
[14:40:53 root@Rocky ~]#cdnet
****取消别名****
[14:41:35 root@Rocky ~]#unalias cdnet
[14:42:11 root@Rocky ~]#cdnet
bash: cdnet: command not found...

在命令行中定义的别名,仅对当前shell进程有效
如里需要永久有效,则要写配置文件:
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc, /etc/bash.bashrc(ubuntu)

[14:56:18 root@Rocky ~]#echo "alias cdnet='vim /etc/sysconfig/network-scripts/ifcfg-ens33' " >> .bashrc 

如果别名同原命令同名,如果要执行原命令,可使用
范例:

\ALIASNAME 
“ALIASNAME” 
‘ALIASNAME’ 
command ALIASNAME 
/path/commmand   #只适用于外部命令

image.png

**命令执行优先级 **
别名 -----> 内部命令 ------>hash—>外部命令

1.9命令格式

【理解帮助之中的符号以及选项的风格和输入命令的格式】
image.png

image.png
image.png

2.0常用的命令

2.1查看硬件信息

2.1.1 查看 cpu

lscpu 命令可以查看cpu信息
cat /proc/cpuinfo也可看查看到

[root@ubuntu2204 ~]# lscpu 
Architecture:           x86_64             #架构
 CPU op-mode(s):        32-bit, 64-bit     #位长
 Address sizes:         45 bits physical, 48 bits virtual 
 Byte Order:           Little Endian 
CPU(s):                  2 
 On-line CPU(s) list:   0,1 
Vendor ID:               GenuineIntel 
 Model name:           11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz 
   CPU family:          6 
   Model:               140 
   Thread(s) per core:  1     #每个core 有几个线程 
   Core(s) per socket:  1     #每个槽位有1个core 
   Socket(s):           2     #服务器面板上有2个cpu 槽位 
   Stepping:            1 
   BogoMIPS:            5990.42 
   Flags:             ... 
     
Virtualization features: 
 Hypervisor vendor:     VMware 
 Virtualization type:   full 
Caches (sum of all):     
 L1d:                   96 KiB (2 instances) 
 L1i:                   64 KiB (2 instances) 
 L2:                    2.5 MiB (2 instances) 
 L3:                    24 MiB (2 instances) 
NUMA:                     
 NUMA node(s):          1 
 NUMA node0 CPU(s):     0,1 

2.1.2查看内存大小

【理解内容】 查看内容
free-h

[mage@bai ~]$free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       303Mi       580Mi       1.0Mi       1.0Gi       1.4Gi
Swap:          2.0Gi          0B       2.0Gi
[mage@bai ~]$
[mage@bai ~]$cat /proc/meminfo 
MemTotal:        1974564 kB
MemFree:          593892 kB
MemAvailable:    1485560 kB
Buffers:           39356 kB
Cached:           957552 kB
SwapCached:            0 kB
。。。。。。。。

补充:

****#1秒刷新一次数据
[root@ubuntu2204 ~]# free -hs 1
*****#刷新2次数据后退出
[root@ubuntu2204 ~]# free -hc 2
total   *** #系统总的可用物理内存大小
used    *** #已被使用的物理内存大小
free    ***#还有多少物理内存可用
shared  ***#被共享使用的物理内存大小
buff/cache  ***#被 buffer 和 cache 使用的物理内存大小
available ***#还可以被 应用程序 使用的物理内存大小
#free 是真正尚未被使用的物理内存数量。
#available 是应用程序认为可用内存数量,available = free + buffer+ cache(大概的计算方法)

2.1.3查看磁盘信息

lsblk
cat /proc/partitions

[mage@bai ~]$lsblk 
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0  61.9M  1 loop /snap/core20/1405
loop1                       7:1    0  79.9M  1 loop /snap/lxd/22923
loop3                       7:3    0  40.9M  1 loop /snap/snapd/20290
loop4                       7:4    0  63.5M  1 loop /snap/core20/2015
loop5                       7:5    0 111.9M  1 loop /snap/lxd/24322
sda                         8:0    0   200G  0 disk 
├─sda1                      8:1    0     1M  0 part 
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0   198G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0    99G  0 lvm  /
sr0                        11:0    1   1.4G  0 rom  
[mage@bai ~]$
[mage@bai ~]$cat /proc/partitions 
major minor  #blocks  name

   7        0      63380 loop0
   7        1      81868 loop1
   7        3      41836 loop3
   7        4      64988 loop4
   7        5     114636 loop5
  11        0    1432338 sr0
   8        0  209715200 sda
   8        1       1024 sda1
   8        2    2097152 sda2
   8        3  207614976 sda3
 253        0  103804928 dm-0

系统信息

arch 系统架构 uname -r 内核版本

[mage@bai ~]$arch
x86_64
[mage@bai ~]$uname -r
5.15.0-89-generic

***Ubuntu发行版本**
[mage@bai ~]$cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

日期和时间

【重点:有些文件名称起名为日期,有时会更改时区】
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
date 显示系统日期

**查看日期时间
[13:13:33 mage@ubuntu ~]$date
Wed Dec 13 01:28:57 PM CST 2023
**显示时区跨度
[13:28:57 mage@ubuntu ~]$date -R
Wed, 13 Dec 2023 13:29:13 +0800    #0800东八区
**时间戳
[13:29:13 mage@ubuntu ~]$date +%s
1702445381
**常用选项 单独显示日期和时间
[13:30:18 mage@ubuntu ~]$date '+%F %T'
2023-12-13 13:30:29
**更改时区
[13:33:22 mage@ubuntu ~]$timedatectl set-timezone Asia/Shanghai 
**查看系统日期时间状态
[13:30:30 mage@ubuntu ~]$timedatectl status
               Local time: Wed 2023-12-13 13:32:56 CST
           Universal time: Wed 2023-12-13 05:32:56 UTC
                 RTC time: Wed 2023-12-13 05:32:56
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
**查看可用时区列表
[13:32:56 mage@ubuntu ~]$timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
.....................
**日历
[13:28:32 root@Rocky ~]#cal
    December 2023   
Su Mo Tu We Th Fr Sa
                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               

总结:代码错误
**在编辑vim时不能保存提示的错误**
'readonly' option is set (add ! to override)
&&&&原因:Ubuntu普通用户权限不够vim编译器设置了只读&&&&


**设置时区失败 :无效或没有安装时区**
Failed to set time zone: Invalid or not installed time zone Asia/shanghai
&&&&原因命令敲错了是'Asia/shanghai' shanghai    开头要大写&&&&

关机和重启

【有可能需要定时关机】
关机
init 0
shutdown 0
重启
reboot
init 6

shutdown关机命令的详细解释

shutdown [OPTION]... [TIME] [MESSAGE]
shutdown #一分钟后关机
shutdown +10 #10分钟后关机
shutdown 01:02 #1点过两分关机
shutdown -r|--reboot #一分钟后重启
shutdown -r now #现在重启
shutdown -H|--halt #一分钟后调用halt 关机
shutdown -P|--poweroff #一分钟后调用poweroff 关机
shutdown -c #取消关机计划

***-r 表示一分钟后重启,如果想立即执行 shutdown -r now***
[root@ubuntu2204 ~]# shutdown -r
Shutdown scheduled for Sun 2022-06-12 20:11:05 CST, use 'shutdown -c' to cancel.
#取消重启
[root@ubuntu2204 ~]# shutdown -c

用户登录信息查看命令

【w 比较重要他可以显示用户的操作】
image.png

**显示当前用户的用户名
[14:59:23 mage@ubuntu ~]$whoami
mage
**显示当前用户的用户名 终端 登录时间 来源IP
[14:59:34 mage@ubuntu ~]$who am i
mage     pts/0        2023-12-13 14:59 (10.0.0.1)
[14:59:37 mage@ubuntu ~]$
**显示所有用户的用户名 终端 登录时间 来源IP
[14:59:38 mage@ubuntu ~]$who
mage     pts/0        2023-12-13 14:59 (10.0.0.1)
mage     pts/1        2023-12-13 14:58 (10.0.0.1)
mage     pts/2        2023-12-13 14:59 (10.0.0.1)

**load average 表示平均负载,最近一分钟,最近五分钟,最近15分钟
**登录名 终端 来源IP 登录时间 空闲时间 当前终端中所有进程使用cpu的时间,不包括后台作业占用的时
间 当前进程使用的cpu的时间
[14:59:45 mage@ubuntu ~]$w
 14:59:58 up  5:08,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
mage     pts/0    10.0.0.1         14:59    1.00s  0.00s  0.00s w
mage     pts/1    10.0.0.1         14:58   42.00s  0.02s  0.02s -bash
mage     pts/2    10.0.0.1         14:59   34.00s  0.00s  0.00s -bash

会话管理

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命
令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话
结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次
登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失
了。
为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,继续运行,等到以后需要的
时候,再让会话"绑定" 其他窗口
终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
1. 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
2. 它可以让新窗口"接入"已经存在的会话。
3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
4. 它还支持窗口任意的垂直和水平拆分。

复用终端screen

image.png
screen 用法
image.png

**查看screen会话
[18:04:13 root@Rocky ~]#screen -ls
No Sockets found in /run/screen/S-root.

[18:04:39 root@Rocky ~]#
[18:04:40 root@Rocky ~]#
**创建screen会话
[18:04:40 root@Rocky ~]#screen -S 666


[18:04:13 root@Rocky ~]#screen -ls
No Sockets found in /run/screen/S-root.
**未解绑窗口做铺垫开启一个持续进程**
[18:04:39 root@Rocky ~]#ping baidu.com
**查看到了会话
[17:56:33 root@Rocky ~]#screen -ls
There is a screen on:
	2743.666	(Attached)
1 Socket in /run/screen/S-root.
[17:57:14 root@Rocky ~]#
[17:57:14 root@Rocky ~]#
[17:57:14 root@Rocky ~]#
**进入会话  继承进程
[17:57:15 root@Rocky ~]#screen -x 666

64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=22 ttl=128 time=8.95 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=23 ttl=128 time=8.96 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=24 ttl=128 time=8.86 ms
..............



&&&&&&&&&&还可以实现操作同步&&&&&&&&&&
只要两个ssh同是进入一个会话即可(共享会话)

输出信息echo(重点)

echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号
image.png
我总结:有三个常见用法(1.输出字符2.输出变量3.加可输出命令)<br />引号作用<br />'' 单引号没什麽作用 和不加引号输出的一样<br />"" 双引号可以输出变量<br /> 反引号可以输出命令也可也可以输出变量
image.png

****例子:****
[14:31:17 mage@ubuntu ~]$echo baishuangqi
baishuangqi
[14:31:43 mage@ubuntu ~]$echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[14:32:03 mage@ubuntu ~]$echo `date`
Thu Dec 14 02:32:16 PM CST 2023
[14:32:16 mage@ubuntu ~]$

字符集和编码

image.png
ASCLL码
是美国人发明的用于计算机编辑英语而生,每一个二进制对应着一个字符,但是只有0-127个字符不能适应我们国家的字符标准所以GB2312编码就诞生了,用来把中文编进去。
Unicode
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会 不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码
为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个 很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定

命令行扩展和被括起来的集合
就是把一个命令结果输出出来,主要的用法是给另一个命令做参数】<br />把一个命令的输出打印给另一个命令的参数,放在中的一定是有输出信息的命令
image.png

[16:28:51 mage@ubuntu ~]$touch `date +%F.%T`.log
[16:29:51 mage@ubuntu ~]$ls
2023-12-14.16:29:48.log

括号扩展:{}

{} 可以实现打印重复字符串的简化形式
image.png

文件扩展创建
[16:36:07 mage@ubuntu ~]$touch {file.1,file.2}
[16:36:12 mage@ubuntu ~]$ls
file.1	file.2
[16:36:15 mage@ubuntu ~]$touch  file{1..5}
[16:39:28 mage@ubuntu ~]$ls
file.1	file1  file.2  file2  file3  file4  file5

{}..用法 以及 0..10..2这里的意思是除以2
[16:43:00 mage@ubuntu ~]$echo {0..12}
0 1 2 3 4 5 6 7 8 9 10 11 12
[16:43:26 mage@ubuntu ~]$
[16:43:28 mage@ubuntu ~]$echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[16:43:52 mage@ubuntu ~]$echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[16:44:04 mage@ubuntu ~]$echo {a..Z}
a ` _ ^ ]  [ Z
[16:44:14 mage@ubuntu ~]$echo {0..10..3}
0 3 6 9

去掉了一个{}的扩展功能 $-好像是某种变量
image.png

tab键补全

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

命令行历史

系统之中记录默认记录了1000条历史命令

当执行某个命令后,系统会在内存中记录下此命令,此时只记录在内存中,
当正常退出终端后,内存中记录下来的执行命令的历史,会保存到用户家目录下的 .bash_history 文件 中
image.png

持久保存变量
[17:28:51 mage@ubuntu ~]$vim .profile   
[17:32:41 mage@ubuntu ~]$vim /etc/profile
[17:33:08 mage@ubuntu ~]$
[17:33:08 mage@ubuntu ~]$vim .bashrc 

image.png

image.png

bash的快捷键
ctrl +a
Ctrl +e
Ctrl +s
Ctrl +q
Ctrl +c
Ctrl +d

image.png

登录提示

image.png

image.png

获得帮助

image.png

image.png
【whatis 是从man手册中挑选的定义解释】注意刚安装的系统可能没有man
需要更新数据库 mandb
whereis 可以列出命令或系统文件路径,以及其对应的man 手册中的文档路径

*****
[19:10:41 mage@ubuntu ~]$whatis ls
ls (1)               - list directory contents
[19:11:02 mage@ubuntu ~]$
[19:11:03 mage@ubuntu ~]$whereis
[19:11:13 mage@ubuntu ~]$

[19:11:13 mage@ubuntu ~]$whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

内部命令帮助
help [command]
可以用type判断是不是内部命令

******
[19:22:55 mage@ubuntu ~]$help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    ............
    

外部命令的 --help 或 -h 选项
显示用法总结和参数列表,大多数命令使用,但并非所有的

[19:29:29 mage@ubuntu ~]$ls --help 
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                               e.g., '--block-size=M'; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information);
                               with -l: show ctime and sort by name;
                               otherwise: sort by ctime, newest first
  -C                         list entries by columns


格式说明:
image.png

《重要:》

MAN 命令
man 是单词 manual 的简写,是Linux系统中的帮助手册和文档
man 是一个外部命令,基本质就是读取特定文件,进行输出,其读取的文件一般位于/usr/share/man/ 目录下
新安装一个软件或程序后,对应的man手册也会放到/usr/share/man/目录下 几乎每个命令都有man的 “页面”
image.png
image.png
image.png
image.png

info命令
【和其他帮助命令相似,不同的是文件中有找链接】
info 是自由软件基金会的GNU项目,是GNU的超文本帮助系统,
整个结构类似于一个网站,有导航,支持链接跳转
不带参数,默认进入的是首页

image.png
安装软件的时候他会默认为我们系统提供很多帮助文件 例:doc
** 我们可以用apm去看sentos(rocky)中安装的包**
** ubuntu用dpck**
image.png

TLDR命令
当我们在使用一个不熟悉的命令时,可以使用 -h 或 --help 选项来查看帮助,或者使用 man 手册还查看
更详细的文档,但这两种方式,会列出所有选项,而有些选项很少使用,根据二八原则,只有一小部份
选项才是最常用的,如是基于此,有人开发了一个开源的查看命令工具,此工具只列出命令的常用选项
的帮助。

image.png

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值