Linux基础入门学习笔记
1.常见命令
1.1查看硬件信息
CPU | lscpu | cat /proc/cpuinfo |
---|---|---|
内存 | lsmem | cat /proc/meminfo |
硬盘盒分区 | lsblk | cat /proc/partitions |
查看内存,free命令
[root@ubuntu2404 ~]#
free
[root@ubuntu2404 ~]#free -h
#h,humen
#1秒刷新一次数据
[root@ubuntu2404 ~]#free -hs 1
#刷新2次数据后退出
[root@ubuntu2404 ~]#free -hc 2
1.2查看版本信息
系统架构
[root@ubuntu2404 ~]#arch
x86_64
内核版本
[root@ubuntu2404 ~]#uname -r
6.8.0-39-generic
操作系统发行版本
[root@ubuntu2404 ~]#cat /etc/os-release
PRETTY_NAME=“Ubuntu 24.04 LTS”
[root@rokcy9 ~]#cat /etc/redhat-release
红帽系
Rocky Linux release 9.4 (Blue Onyx)
OS 版本
[root@rokcy9 ~]#uname
Linux
[root@rokcy9 ~]#uname -a
Linux rokcy9.4 5.14.0-427.13.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 1 19:11:28 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
1.3日期和时间
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
date 显示和设置系统时间
[root@rokcy9 ~]#
date
Sat Aug 3 05:00:40 PM CST 2024
#显示时区
[root@rokcy9 ~]#date -R
Sat, 03 Aug 2024 17:01:42 +0800
#时间戳
[root@rokcy9 ~]#date +%s date +%s
1722677233
clock,hwclock 显示硬件时钟
-s|--hctosys
#以硬件时钟为准,校正系统时钟
-w|--systohc
#以系统时钟为准,校正硬件时钟
时区/etc/localtime
查看时区
[root@ubuntu2404 ~]#date -R
Sat, 03 Aug 2024 09:01:29 +0000
[root@ubuntu2404 ~]#timedatectl
修改时区
[root@ubuntu2404 ~]#timedatectl set-timezone Asia
日历 cal
cal [选项] [day moth year]
[root@rokcy9 ~]#
cal 10 7 2024
July 2024
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 910
11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
1.4关机和重启
关机或重启shutdown
shutdown 程序会广播己登录的用户,被看作是安全的关机命令
是一个计划关机任务,可撤销
[root@rokcy9 ~]#
shutdown
Shutdown scheduled for Sat 2024-08-03 17:42:47 CST, use ‘shutdown -c
’ to cancel.
[root@rokcy9 ~]#向其他用户广播一分钟后关机
Broadcast message from root@rokcy9.4 on pts/0 (Sat 2024-08-03 17:41:47 CST):
The system will power off at Sat 2024-08-03 17:42:47 CST!
shutdown 01:02 | 1点过两分关机 |
---|---|
shutdown -r --reboot | 一分钟后重启 |
shutdown -r now | 现在重启 |
shutdown -h now | 现在关机 |
shutdown -c | 取消关机计划 |
shutdown -H--halt | 一分钟后调用halt 关机 |
shutdown -P--powerof | 一分钟后调用poweroff 关机 |
关机
halt
poweroff
init 0
开机
reboot
init 6
#ctrl+alt+delete 三键
init 3 命令行界面
init 5 图形界面
1.5用户登录信息查看命令
- whoami:显示当前登录有效用户
- who:系统当前所有的登录会话
- w:系统当前所有的登录会话及所做的操作
[root@ubuntu2404 ~]#
whoami
root
[root@ubuntu2404 ~]#who am i
lyaya pts/1 2024-08-03 13:07 (10.0.0.1)来源IP
who [选项]... [ 文件 | 参数1 参数2 ]
显示当前已登录的用户信息。
who
列出在当前主机上所有登录用户
who -u | --users
列出当前主机上所有用户的空闲时间
.
表示最近一分钟还是活跃状态old
表示用户己经空闲超过24小时
who -s | --short
列出在当前主机上所有登录用户,等同于who
who -q | --count
登录用户统计
who -b | --boot
上次系统启动时间
who -a | --all
多选项组合
who -m
who am i
w [options]
显示当前所有登录用户的具体信息
w root
查看特定用户
1.6文本编辑工具
nano
工具可以实现文本的编辑,上手容易,适合初学者gedit
工具是图形工具
1.7会话管理
命令行的使用方式,打开一个
终端窗口(terminal window)
,输入命令。
用户与计算机的这种临时交互,称为一次"会话"(session)
会话的重要特点,窗口与进程相连。
打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止。
为了解决这个问题,会话与窗口可以"解绑"‘。窗口关闭时,会话不终止,继续运行,等需要时,再让会话"绑定" 其他窗口。终端复用器软件就是会话与窗口的"解绑"工具
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
- 它可以让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分。
- 类似工具有,
screen
,tmux
screen
利用screen 可以实现会话管理,如:新建会话,共享会话等
screen -S [SESSION] | 创建新screen会话 |
---|---|
screen -x [SESSION] | 加入screen会话 |
screen -r [SESSION] | 恢复某screen会话 |
screen -ls | 显示所有已经打开的screen会话 |
Ctrl+a,d | 剥离当前screen会话 |
exit | 退出并关闭screen会话 |
1.8输出信息echo
echo [-neE] [字符串或$变量名]
- -n :输出完成后不换行
- -e :转义特定字符串
- -E :不转义,原样输出,默认选项
启用命令选项-e
,若字符串中出现以下字符,则特别加以处理
\a | 发出警告声 | \b | 退格键 |
---|---|---|---|
\c | 最后不加换行符 | \e | escape相当于\033 |
\n | 换行且光标移至行首 | \r | 回车,即光标移至行首,但不换行 |
\t | #插入tab | \\ | 插入\字符 |
\0nnn | 插入nnn(八进制)所代表的ASCII字符 | \xHH | 插入HH(十六进制)所代表的ASCII数字(man 7 ascii) |
#
双引号,用变量值替换,弱引用
[root@rokcy9 ~]#echo "$ PATH"
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/lo
#单引号,变量不会替换,强引用
[root@rokcy9 ~]#echo '$PATH'
$PATH
可以显示具有颜色的字符,其格式如下:
"\e[字符背景颜色;字体颜色;特效m字符串\e[0m"
echo -e "\e[32;41;1m1234\e[0m"
2.字符集和编码及语言环境
charset(character set)字符集
:即二进制和字符的对应关系,不关注最终的存储形式encoding(charset encoding)字符集编码
:实现如何将字符转化为实际的二进制进行存储,编码决定了空间的使用的大小
2.1ASCII码
ASCII(American Standard Code for Information Interchange)
:美国制定了一套字符编码,对英语字符
与二进制位之间的关系,做了统一规定,即ASCII 码。计算机 二进制,起源于美国。
一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0。
2.2Unicode字符集
Unicode字符集规定了世界上所有语言中的所有字符对应的二进制代码。
Unicode编码方案:
UTF-8
: 变长,1到4个字节UTF-16
:变长,2或4个字节UTF-32
:固定长度,4个字节
UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储
。
使用 1- 4 个字节表示一个字符,根据字符的不同变换长度。
2.3语言环境
默认系统为英文环境,可以修改为中文环境,从而查看帮助或提示可以变为中文
临时修改LANG变量实现中文语言提示:
[root@rokcy9 ~]#
echo $LANG
en_US.UTF-8
[root@rokcy9 ~]#LANG=zh_CN.UTF-8
[root@rokcy9 ~]# lyaya
bash: lyaya: 未找到命令…
#永久修改
[root@rocky9 ~]#localectl set-locale LANG=zh_CN.utf8
3.命令行扩展和被括起来的集合
3.1命令行扩展``和$()
把一个命令的输出打印给另一个命令的参数,放在``中的一定是有输出信息的命令
[root@rokcy9 ~]$ echo {1..5}
1 2 3 4 5
[root@rokcy9 ~]$ echo echo {1..5} 表示echo 参数 参数
echo 1 2 3 4 5
[root@rokcy9 ~]$ echo `echo {1..5}`
1 2 3 4 5
[root@rokcy9 ~]$ echo $(echo {1..5})
1 2 3 4 5
3.2变量扩展" "和${}
"双引号",弱引用,可以解析内容
'单引号',强引用,原样输出
#
变量拓展
[root@rokcy9 ~]#echo $HOSTNAME
[root@rokcy9 ~]#echo "$HOSTNAME"
[root@rokcy9 ~]#echo ${HOSTNAME}
[root@rokcy9 ~]#echo "${HOSTNAME}"
rokcy9.4
#
输出原样
[root@rokcy9 ~]#echo '$HOSTNAME'
[root@rokcy9 ~]#echo \$HOSTNAME
$ HOSTNAME
3.3比较 “ ” ,‘ ’, ``三者区别
- 单引号:强引用,变量和命令都不识别,原样输出
- 双引号:弱引用,不能识别命令,可以识别变量。
- 反向单引号:内容必须是可执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续。
[root@rokcy9 ~]$ echo "echo $HOSTNAME"
echo rokcy9.4
[root@rokcy9 ~]$ echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@rokcy9 ~]$ echo `echo $HOSTNAME`
rokcy9.4
3.4括号扩展{ }
{} 可以实现打印重复字符串的简化形式
[root@rokcy9 ~]#
echo file{1,2,3}
file1 file2 file3
[root@rokcy9 ~]#echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@rokcy9 ~]#echo {00..10}
00 01 02 03 04 05 06 07 08 09 10
[root@rokcy9 ~]#echo {1..10..2}
1 3 5 7 9 #间隔2
[root@rokcy9 ~]#
echo {1..3} {a..e}
1 2 3 a b c d e
[root@rokcy9 ~]#echo {1..3}{a..e}
1a 1b 1c 1d 1e 2a 2b 2c 2d 2e 3a 3b 3c 3d 3e
关闭和启用{}的扩展功能
与环境变量有关
[root@rokcy9 ~]#
echo $-
himBHs
[root@rokcy9 ~]# echo {1…5}
1 2 3 4 5
[root@rokcy9 ~]#set +B
#关闭
[root@rokcy9 ~]# echo $-
himHs
[root@rokcy9 ~]# echo {1…5}
{1…5}
4.tab 键补全
tab 键可以实现命令及路径等补全,提高输入效率,避免出错
4.1命令补全
用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
[root@rokcy9 ~]# add
addgnupghome addr2line
addpart adduser
4.2路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全,否则:再次Tab给出列表
[root@rokcy9 ~]# ls /
afs/ dev/ lib/ mnt/ root/ srv/ usr/
bin/ etc/ lib64/ opt/ run/ sys/ var/
boot/ home/ media/ proc/ sbin/ tmp/
- /2Tab 显示所有根目录下一级目录,包括隐藏目录
- ./2Tab 当前目录下子目录,包括隐藏目录
- *2Tab 当前目录下子目录,不包括隐藏目录
- ~2Tab 所有用户列表,
- $2Tab 所有变量
5.命令行历史
当执行命令后,系统会在内存中记录下此命令,正常退出终端后,记录下的历史,会保存到用户家目录下的.bash_history
文件中。
当用户下次登录,系统会自动将该文件中的内容加载到内存。
被写入命令历史的,包括错误的命令,默认记录最近1000条
,配置在 /etc/profile
文件中可修改。
5.1history
[root@rokcy9 ~]#
history
113 echo 123
114 echo 456
115 echo 789
116 history
[root@rokcy9 ~]#!114
echo 456
456
-c
#清空命令历史
-d offset
#删除历史中指定的第offset个命令
n
#显示最近的n条历史
-a
#追加本次会话新执行的命令历史列表至历史文件
-r
#读历史文件附加到历史列表
-w
#保存历史列表到指定的历史文件
-n
#读历史文件中未读过的行到历史列表
-p
#展开历史参数成多行,但不存在历史列表中
-s
#展开历史参数成一行,附加在历史列表后
5.2调用命令行历史
重复前一个命令方法:
- 上方向键
- 按 !!
- 输入!-1
- 按 Ctrl+p
!n
#执行history命令输出对应序号n的命令
[root@rokcy9 ~]#!114
echo 456
456
!string
#重复前一个以“string”开头的命令
[root@ubuntu2404 ~]#!e
echo 567
567
!?string
#重复前一个包含string的命令
[root@ubuntu2404 ~]#!?echo
echo 123
5.3命令历史相关环境变量
上变量可以 变量名=“值” 形式存放在 /etc/profile 或 ~/.bash_profile或.bashrc
HISTSIZE #命令历史记录的条数
HISTFILE #指定历史文件,默认为~/.bash_history
HISTFILESIZE #命令历史文件记录历史的条数
`HISTTIMEFORMAT="%F %T `whoami` " #显示时间和用户
6.bash的快捷键
Ctrl + l #清屏,相当于clear命令
Ctrl + o #执行当前命令,并重新显示本命令
Ctrl + s #阻止屏幕输出,锁定
Ctrl + q #允许屏幕输出,解锁
Ctrl + c #终止命令
Ctrl + z #挂起命令
Ctrl + a #光标移到命令行首,相当于Home
Ctrl + e #光标移到命令行尾,相当于End
…
7.登录提示
7.1登录前提示
在命令行模式
下本地终端(tty1~tty6,ctrl+ail+Fn可切换终端
)登录界面,会有几行提示文字,这些文字都保存在/etc/issue
文件中,可以自行修改。
[root@ubuntu2404 ~]#
cat /etc/issue
Ubuntu 24.04 LTS \n \l
[root@ubuntu2404 ~]#nano /etc/issue
\d
#显示当前系统日期
\S
#显示操作系统名称
\m
#显示硬件体系结构,如i386、i686等
\n
#显示主机名
\o
#显示域名
\r
#显示内核版本
\t
#显示当前系统时间
\u
#显示当前登录用户的序列号
如果是远程终端ssh 登录,则其登录前信息,可以放在/etc/issue.net 中,但是该文件中的内容不支持转义
7.2登录后提示
motd:message of the day
当用户从终端登录时,此文件的内容将会显示在终端上,如果shell工具支持中文,也可显示。
内容由使用者定制,经常用于通告信息,欢迎提示等。
但是,此文件只适用于命令行界面
。
/etc/motd
/etc/motd.d/
8.获得帮助
看手册,看日志
- whatis & whereis 命令
- command --help 选项
- man 手册
- 程序自带文档 /usr/share/doc
- 项目官网文档
- 行业网站
- 搜索引擎
8.1whatis & whereis
whatis 使用数据库来显示命令的简短描述,以及对应的man手册的章节
[root@ubuntu2404 ~]#
whatis ls
ls (1) - list directory contents
[root@ubuntu2404 ~]#mandb
whereis 可以列出命令或系统文件路径,以及其对应的man 手册中的文档路径
[root@ubuntu2404 ~]#
whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
8.2查看命令的帮助
2.1 内部命令帮助
help COMMAND
[root@ubuntu2404 ~]# type echo
echo is a shell builtin
[root@ubuntu2404 ~]#help echo
echo: echo [-neE] [arg …]
2.2 外部命令及软件帮助
COMMAND --help|-h
[root@ubuntu2404 ~]#cal -h
[root@ubuntu2404 ~]#cal --help
man COMMAND
info COMMAND
#程序自身的帮助文档:README、INSTALL、ChangeLog 等
#项目官网文档
#行业网站
#搜索引擎
2.3 man 命令
man (manual )是Linux系统中的帮助手册和文档
man 是一个外部命令,基本质就是读取特定文件,进行输出,其读取的文件一般位于/usr/share/man/ 目录下
新安装一个软件或程序后,对应的man手册也会放到/usr/share/man/目录下,几乎每个命令都有man的 “页面。
[root@ubuntu2404 ~]#
man ls
…
man 页面分组
不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
标准man 手册一般有以下几个章节:
- 可执行程序或 shell 命令
- 系统调用(内核提供的函数)
- 库调用(程序库中的函数)
- 特殊文件(通常位于 /dev)
- 文件格式和规范,如 /etc/passwd
- 游戏
- 杂项
- 系统管理命令(通常只针对 root 用户)
- 内核API
[root@ubuntu2404 ~]#
whatis passwd
passwd (1) - change user password
passwd (1ssl) - OpenSSL application comm…
passwd (5) - the password file
[root@ubuntu2404 ~]#man 5 passwd
PA…D(5)File Formats and ConfigurationPA…D(5)
常用快捷键:
- 1G 回到首行
- G 跳转至结尾
- /abc 向下搜索abc 按n向下跳转,按N向上跳转
- ?abc 向上搜索abc 按n向下跳转,按N向上跳转
- q 退出
常用关键字及格式:
- [] 可选项
- <> 必选项
- a|b 二选一
- … 同一内容可出现多次
- { } 分组
段落说明:
- NAME #名称及说明
- DESCRIPTION #详细说明
- SYNOPSIS #使用格式
- FILES #相关文件
- OPTIONS #选项
- AUTHOR #作者
- REPORTING BUGS #相关bug信息
- COPYRIGHT #版权及开源协议信息
- EXAMPLES #使用示例
- SEE ALSO #可参考其它部份
2.4 info 命令
info 是自由软件基金会的GNU项目,是GNU的超文本帮助系统,
整个结构类似于一个网站,有导航,支持链接跳转,不带参数,默认进入的是首页
2.5 TLDR 命令
此工具只列出命令的常用选项的帮助。
TLDR: Too Long;Didn’t Read(太长不看),也可以叫作 “偷懒的人
[root@rokcy9 ~]#
tldr ls