清屏ctrl+l
tab 自动补齐命令或者路径
ctrl+c 强行终止
+k 清除从光标到行末
+u 清除从光标到行首
pwd 看当前工作命令
bash 解释器 shell中最好的解释器
init 0 关机 init 6 重启 在ubantu 中前面要加sudo 来授权
file hello 看文件详情 查看文件类型 file
ls -a 查看当前目录下的所有文件和目录,包括以点(.)开头的隐藏文件
echo $? 上一条命令的返回值 0正常执行 非0 执行失败
查看当前系统默认解释器为哪个 echo $SHELL /bin/bash
ps aux:查看瞬间进程 top:实时进程 ps aux|grep sshd:找出sshd进程(SSHD的子进程) bash(sshd的子进程),grep文本过滤
| 管道符号:将前面命令输入后面命令(进程之间)
env 查看环境变量
编程语言 编译形(源代码改变要重新编译) c java go gcc为编译器 yum install vim -y安装vim
yum install gcc -y 安装gcc 编译形更快
gcc -o hello(指定输出文件名) hello.c 将hello.c 编译成为hello二进制文件 /root/hello 可以进行编译输出 ./hello也可以
解释形 python shell 用python hello.py 就可以 (gcc 是将源代码编译成可执行程序的编译器)
ctrl+shift+esc:打开任务管理器
操作系统(operating system OS):
方法:1、下划线 var_name 2、驼峰 大驼峰VarName,小驼峰varName
类型:1、预定义 2、自定义 作用域:局部和全局
变量名不能有特殊符号,可包含下划线,不能以数字开头
=左右不能有空格,区分大小写
变量的引用:$varname 调用
位置变量 position variable
$#:位置变量个数
$@和$*:位置变量集合
$0:文件名
$?:上一条命令返回值 0表示成功,非0表示不成功
shell概念
硬件:cpu(最快),内存,磁盘(最慢),主板,声卡,网卡,外设
- 内核kernel:对cpu,内存,磁盘,网卡等底层硬件进行管理。 The Linux Kernel Archives
- 应用命令->(shell解析命令)->传给内核(启动进程) 系统调用->内核(管硬件和文件)->硬件
- 进程:进程控制块(pid uid gid) 内存地址 (pcb+code+data)就绪(sleeping)排队,阻塞(stopped),执行(running)
- 在磁盘(有inode对文件夹的描述信息 记录文件的属性)mkdir一个文件夹,从磁盘加载到内存中,再在cpu中运行(running)
-
处于三个硬件之间的位置时是处于就绪态(ready)
- 磁盘读写(disk I/O):磁盘中读出和写入数据 阻塞状态是因为磁盘速度太慢
- 网络I/O:阻塞指网站传输速度太慢
- 系统调用(system call):也是程序,只给应用程序使用,用来调内核里的代码(像接口)
- 应用程序:实现各种功能的程序,如mkdir,ls,vim,等
- shell也是软件或程序,用来实现人机交互,人给命令,shell查询路径,帮助人告诉内核去执行程序,创建进程,结果再返回给用户。shell是人机交互软件的统称
- bash是linux中的默认shell。
- 定义变量时 a=100 等号两边不可以空格
- echo:输出(像print) $SHELL 引用shell的值。
- 库函数:也是程序,能实现某些功能 A支持图形图像识别 B可以调用A功能,形成依赖关系
- useradd xfb 新建用户 passwd xfb 设置密码
- echo “123456”|passwd 用户名 –stdin
- echo “用户名:123456”|chpasswd
- linux运行时SSHD(一个进程 一直运行)提供远程登录服务
- yum provide pstree 查询pstree命令是哪个软件提供的
- shell编程:是linux/unix里面的命令编程(脚本编程),主要就是使用大量的linux命令
- shell脚本:本质上是一个文件,存有许多linux命令可以运行执行(编程时提高效率)
-
shell编程
- 脚本:监控类,一键部署类,备份类,数据库操作类,日志分析类,用户管理类,安全类型,时间相关
- 变量variable var
- 变量定义
- [root@sealos shell]# sg="tom"
[root@sealos shell]# echo $sg
tom
[root@sealos shell]# echo $sg1
这里空白指无输出
[root@sealos shell]# echo ${sg}1 注意是大括号
tom1
top -n 1(-n 1迭代一次)(df-Th) 瞬间进程 |grep “%Cpu” awk ’{print $8}’ 取第8个字段 将命令的输出结果赋值给变量:varname=$(命令) 注意是小括号 可嵌套,先运行内部
varname=`命令`也可以赋值,但不能嵌套
varname=$(“88+9.9”|bc)
echo $varname
输出结果为97.9
grep “/$” 过滤出以/结尾的一行
grep -E相当于egrep,支持正则表达式(将字母、数字、特殊符号按照某种规则组合成一个公式用来表达某些意思)
- grep “^root” 以root开头 grep “bash$”以bash结尾 egrep “^root”|”bash$” 以root开头或以bash结尾
- uname -r 查版本号
- &> :重定向
id $name:检查是否存在用户$name useradd $name:添加用户$name
/dev/null任何内容重定向到这个文件都不保存,如id $name &>/dev/null,如果不重定向就会有输出值显示,重定向之后运行文件不会有id $name的输出值 /dev 目录专门存放设备文件 1 && 2 1成功就执行2
1 && 2 || 3 1成功执行2,不成功执行3
1 || 2 1不成功就执行2
ls(list):查看文件夹列表 pwd:查看当前所在文件路径 cd进入文件夹
- 单引号:所见即所得 双引号:会执行其中变量替换
- alias:查看命令别名 alias c=’clear’ 自定义c 是clear 的别名 vim /root/.bashrc(可以永久有效定义别名) 退出后打source /root/.bashrc(在当前终端)
- unalias c取消别名 定义别名的时候不要和操作系统本身的冲突
- du -sh /usr 估算这个文件的大小 du -h 是我们可以看懂的 -hs 或者-h -s
- (( )):数值的比较
- [[ ]]:字符串的比较 括号和之间内容用空格隔开,前后都要
- \ 转义字符:让特殊符号没有特殊意义 (也可以是续行符号)
- ip add 查看ip地址(如果一直连接不上,在虚拟机中查ip)
- / 根文件夹(根目录)linux:倒立的目录结构,根目录在最上面
tree /china 查看文件夹china下的所有子文件夹
yy 复制当前行 3yy 复制3行 copy p粘贴 paste 把鼠标放到要复制的第一行
dd 删除当前行 delete 3dd删除三行
u 撤销 undo
- 绝对路径:从/开始的路径,一层层往下走
- 相对路径:不是以/开头的路径,以当前文件夹作为参照物,可往上走可往下走,比较灵活
- vim :编写脚本程序 yum install vim -y :安装vim
- vim 文件名.txt ->命令模式-> i(insert输入模式)-> ESC(离开)-> :wq(保存)