Linux分类:
GNU/Linux Debian Ubuntu Minix等
访问命令行
Linux的基本框架
Linux Kernel : 内核,在开机的时候是需要加载到内存中的。
如果内存占用大,速度就慢。
对于Linux而言,内核的设计方式是以模块的方式来进行,除去必须要的功能之外,对于某些特定的功能是你用到的时候才会去加载的,例如:驱动 (Ismod可以查询):
lsmod
lsmod | grep KVM #截取KVM
KVM (Kernel-based Virtual Machine):基于内核的虛拟化技术,当你把CPU的虛拟化功能启动之后,KVM所对应的内核模块就会被加载。
[rootalocalhost ~]# lsmod | grep kvm
kvm_intel 245760 0
kvm 745472 1 kvm_intel
irqbypass 16384 1 kvm
Shell:安全壳
作用:保护内核(Kernel)及人机交互
类型
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
Tips: BASH SH都是Shell类型的一种!
常见的Shell是BASH:如RHEL Fedora CentOs等.
Shell Script (Shell脚本):
结合Shell的功能,以及结构化语句(循环、判断、分支等)所写的程序。
GNU
GNU (GNU is Not Unix)是一个自由的操作系统,其内容软件完全以GPL (GNU通用公共许可证,GNU General Public License) 方式发布。这个操作系统是GNU计划的主要目标,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。
GNU:软件和内核为一体的计划。
软件:GCC编译器
内核:操作系统版本
Linus Torvalds开发了一个内核-Linux
(GNU/Linux):才是一个完整的操作系统!
Linux命令行
BASH SHELL
如果以交互方式使用shell,它在等待用户输入命令时显示一个字符串。这称为shell提示符。普通用户启动shell 时,默认提示符的结星是$字符,如下所示。
[user@host ~]$
这意味者,你不管通过什么样的方式,连接到你的操作系统,首先你就会触发一个Shell程序。
命令行的功能:就是Shell程序提供的一个基于文本的界面。
命令提示符
[root@localhost ~]#
提示符:开源于PS1的变量(特点:可变)
[root@localhost ~]# echo $PS1
[\u@\h \ W]\$
默认的PS1变量的含义:
[\u (当前登录的用户,如root) @\h(主机名) \ w(当前工作目录)]$(提示符)
提示符:$ 普通用户
#root
命令:文件(可被执行)
root :当前登陆系统的用户!
@:在(用户在某台主机上)
localhost :主机名
~:当前所在的目录(工作目录)
#:root 用户登陆
$:普通用户登陆
两者出现时,要输入命令。
命令
命令:就是一个文件,就是一个可以被执行的文件,就像在windows 当中的.bat .exe或.com,执行一个命令就是去执行一个文件!当你执行一个命令,就是去找到,这个命令所对应的文件!
PATH变量可以找到命令所对应的文件
[root@localhost ~]# echo $PATH
如果命令不存在:
rootalocalhost ~]# 123
bash: 123: command not found...
[rootqlocalhost ~]# mysql
bash: mysql: command not found.
当你去执行一个命令的时候,它会去PATH变量下找和命令同名的文件!
手动添加命令到PATH中
所以针对于自己编译软件的时候,如果你想来执行他,,你就把这个可执行文件所在的目录补充到PATH变量中
将mysql所在路径/opt添加到$PATH中:
[rootalocalhost ~]#mysql
bash: mysql: command not found...
[rootalocalhost ~]# vim /opt/mysql
[root@localhost ~]# chmod +x /opt/mysql
[root@localhost ~]# mysql
bash: mysql: command not found...
[root@localhost ~]# PATH=$PATH:/opt
[rootalocalhost ~]# mysgl
This is my mysql software.
[rootalocalhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt
mysql的内容:
#!/bin/bash
echo "This is mysql software"
命令的组成部分
- 命令对应的文件
- 选项:用来控制命令的输出,执行方式
- 参数:命令的操作对象
[root@www ~]# cat /opt/mysql
#!/bin/bash
#echo
"This is my mysql software"
if ["$1"== 1 ]; then
echo 1
fi
if [ "$1"== 2]; then
echo 2
fi
[rootalocalhost ~]# mysql 1
1
[rootalocalhost~]# mysql 2
2
小结
- 命令本身就决定你要什么事情。
- 参数决定了对谁做操作,例如:rm /tmp/test rm -rf /*
- 选项会影响你的操作方式。
例子:top 查看系统负载,你多久查看一次(频率),统计的次数等。
[rootalocalhost ~]# top -n 2 -d 1
top - 09:59:14 up 2:14, 2 users, load average: 0.02, 0.02
Tasks: 268 total, 1 running, 266 sleeping, 1 stopped,
%Cpu(s): 0.0 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 h
MiB Mem: 3758.6 total, 2644.4 free, 679.2 used, 4
MiB Swap: 4048.0 total 4048.0 free, 0.0 used, 28
对于选项,如果是一个字母,前面带-;如果是单词,则前面带–。通常要知道命令其用法,可以在后面加–help查阅。
-l use a long listing format
-L --dereference when showing file information for a symbolic
系统登录
对于服务器,都有带外远程控制口,例如:
Dell: iDRAC 华为:iBMC HP: iLo
IBM: iLOM
本地登录(直接接上键盘、鼠标及显示器)
图形界面:
文本界面:
TTY:文本终端直接登录的标识
alt+FN来切换 终端
alt+ (Fn) +(F1-6)
没装图形化界面的时候,启动就是一个以文本终端的方式启动的。
默认情况下,是以图形化界面启动,在图形化的情况下,切換到文本终端
Ctrl+Alt+ (Fn) +F2
从F2-F6 都是文本模式(命令行)
F1 是图形化的
从图形化临时的切换到文本界面:
Ctrl+Alt+ (Fn) +F2-F6
又想切换图形化:Alt+(Fn)+F1
默认启动目标
[rootqlocalhost ~]# systemctl get-default
graphical.target
永久切换:
[root@localhost ~]# systemctl set-default multi-user.target
Removed /etc/systemd/system/default. target.
Created symlink /etc/systemd/system/default. target → /usr/lib/systemd/system/multi-user.target
临时切换:
图形→文本:
[rootalocathost ~]# systemctl isolate multi-user. target
文本→图形:
[rootqlocalhost ~]# systemctl isolate graphical. target
远程登录:
大部分的工作场景
- 从Windows连接到Linux:需要工具辅助,例如:XManager (XShell厲于此类)SecureCRT PuTTY
- 从MAC连接到Linux:打开终端 (Terminal)
- 从Linux连接Linux:打开终端 (Terminal)
远程登录格式:ssh 命令
ssh root(目标服务器的用户名)@192.168.100.100(目标主机的IP地址或者FQDN),输入的Yes,代表要接受目标服务器的SSH公钥,最后输入目标服务器用户的密码,即可登录。
lsof -i:22 #可以查看当前连接情况
注销
使用完 shell 并想退出时,可以从几种方法中选择一种结束会话。
- 输入exit命令来终止当前的shell 会话。
- 可以通过按ctr1+D 来结束会话。
使用Bash Shell执行命令
Shell命令的组成部分:命令选项参数(对象)
PS1变量
PATH变量
使用Bash执行命令:
-
命令输入完成,按下Enter键
-
;(分号):当第一条命令执行完成,执行第二条命令
此为顺序执行,不在乎第一条是否实行成功。 -
||(或):只有当你第一条命令执行失败的时候,才会去执行第二条命令
-
&&(与):只有当你第一条命令执行成功的时候,才会去执行第二条命令
; || &&连接多个命令的时候,要能够区分他们的区别。
-
如果你的命令比较长,那么你可以后使用\来做分隔
关于命令执行的快捷键
TAB命令补全
前提:已经安装了bash-completion的包。
[root@localhost test]# rpm -qa | grep bash-completion
bash-completion-2.7-5.el8.noarch
在最小化安装 (Minimal Install))的时候,此包并没有被安装。
使用方法:
-
针对命令
TAB按一下:你输入的关键字能唯一确定一个命令的时候有效。
TAB按两下:如果你的关键字不能唯一识别一个命令,就会把所有与该关键字有关的命令都会显示. -
针对命令选项(如nmcli)
可以在一个完整命令的任何位置都可以使用TAB。 -
不全文件或者目录名字
命令快捷键
命令行编辑实用快捷键
快捷键 | 描述 |
---|---|
Ctrl + A | 跳到命令行的开头。 |
Ctrl + E | 跳到命令行的未尾。 |
Ctrl + U | 将光标处到命令行开头的内容清除。 |
Ctrl + K | 将光标处到命令行末尾的内容清除。 |
Ctrl + ← | 跳到命令行中前一字的开头。 |
Ctrl + → | 跳到命令行中下一字的末尾。 |
Ctrl + R | 在历史记录列表中搜素某一模式的命令。 |
还有其他几个命令行编辑命令可用,但这些是对新用户最有用的命令。其他命令可以在 bash(1)
Ctrl + R
1)关键字:你曾经执行过的命令中的某个关键字,一般都是输入命令。
2)查找历史记录(你曾经执行过的操作) 中包含这个关键字的命令
3) 找到正确的命令之后,按下Enter键。
历史记录
Linux可以记录你执行过的操作! 默认情况下是记录最近的1000条!
命令:history。还可以怎么查;
!+命令序号:就是将命令序号所在的历史命令重新执行一次。
history命令
“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。
history //显示终端执行过的命令
history //显示最近10条终端执行过的命令
Ctrl+r //搜索已经执行过的命令,它可以你写命令时自动补全
修改history命令显示属性
vi ~/.bash_profile