Linux的shell介绍
一、文本传输
-
管道
管道可以把一系列命令连接起来,可以将前面的命令的输出作为后面命令的输入
使用管道符 | 来建立一个管道行 -
输入重定向
输入重定向是指把命令或可执行程序的标准输入重定向到指定的文件中
也就是输入可以不来自键盘,而是来自一个指定的文件,输入重定向主要用于改变一个命令得输入源
输入重定向的一般形式为“命令 < 文件名” -
输出重定向
输出重定向是指把命令或可执行程序的标准输出或标准错误输出重新定向到指定文件中
命令中的输出不显示在屏幕上,而是写入到指定的文件中,以便完成以后的问题定位或其他的用途
输出重定向的一般形式为“命令 > 文件名” 当然 > 是覆盖,>> 是追加
标注输出 echo
-
输出到终端
tty查看当前终端的信息,即挂载的路径
who am i查看当前用户的登录详细信息
w查看所有终端的登录信息,能显示用户登录名、终端标志、ip地址、登录时间、闲置时间、占用cpu时间、系统运行时间和用户正在执行的程序
二、文件传输 -
文件别名-alias
alias别名
alias 命令用来设置指令的别名
查看别名可以用alias或者type
使用方法:alias 新命令=‘原命令 -选项/参数’
unalias 命令用来取消别名
这样添加的别名只是当前有效,下次登录不会生效要想永久生效,需要添加到.bashrc当中,当每次登录时会自动运行此脚本
有点意思的别名$ alias cd='rm -rfv' $ alias sudo='sudo halt' $ alias cp='mv' $ alias vim='vim +q'
郑重声明!!!这些自己玩下就好,切勿对别人使用,负责造成后果自负哦
-
文件打包
tar命令
tar命令用于将文件打包或解包,扩展名一般为.tar
指定特定参数可以调用gzip或bzip2制作压缩包或解开压缩包-c 建立新的压缩包 -x 解压压缩包 -f 使用压缩包的名字,f参数之后不能再加参数 -i 忽略存档中的0字块 -v 处理过程中输出相关信息 -z 调用gzip来压缩归档文件,与-x连用时调用gzip完成解压缩 -j 调用bzip2压缩或解压 -p 使用源文件的原来属性
使用z参数打包后的大小更小
解压后包还在
-
综合使用
在上面把要打包的东西都放在a.list文件里面,然后再根据文件内容去打包 -
软连接
ln链接
-i覆盖既有文件之前先询问用户
-s创建符号(软)链接而不是硬连接
链接,类似windows上的快捷方式
三、进程管理 -
进程概念
计算机其实能执行的是若干指令,比如:加减,计算两个数的和,内存中查找地址等
若干的指令结合在一起,就能形成程序
一个程序就可以执行复杂操作
进程就是正在运行的程序 -
ps -一次性进程监视
上述各项代表的意思USER: 启动进程的用户 PID: 进程的ID号 %CPU 进程占用的CPU百分比 %MEM: 进程占用的物理内存百分比 VSZ: 进程使用的虚拟内存总量,单位KB TTY: 该进程在哪个终端中进行 STAT: 进程状态 START: 启动进程的时间 TIME: 进程消耗CPU的时间 COMMAND: 产生此进程的命令名 STAT常见的状态: R:运行,S:睡眠,T:停止,s:包含子进程,+:位于后台Z僵尸进程,<:优先级比较高的进程
ps 命令
-u 按用户和启动时间的顺序来显示进程
-a 显示所有用户的所有进程
-x 显示无终端控制的进程
-f 列出进程全部相关信息,通常和其他选项联用
-e 所有进程
-l 采用详细的格式来显示程序状况
-
top -动态监控
第1行分别是:系统时间、系统启动了1小时23分、登录的用户有1个、“load average”代表:最经1分钟、5分钟、15分钟的系统负载值,如超过CPU个数的2倍说明高负载,需处理
第2行Tasks表示:有166个进程在内存中,2个正在运行,130个睡眠,0个停止,0个处于僵尸状态
第3行Cpu(s)表示:user上花费的时间,sys上花费的时间,nice优先级调整上花费的时间,idle:CPU空闲时间,iowait等待系统io时间,hi硬件中断时间,si软中断时间,steal被虚拟机偷掉的时间
第4行Mem表示:总内存、空闲内存、已经使用的内存、用于缓存文件系统的内存、交换内存的总容量,这内存还可以用free命令来查看
第5行Swap表示:交换空间总大小、空闲的交换空间、使用的交换内存空间、用于缓存文件内容的交换空间
top 实时显示进程情况-d 设置更新的时间间隔 -n 显示更新的次数,然后退出 -u 只显示指定用户的进程信息 -s 安全模式运行,禁用一些交互命令
大家也可以下载htop来查看,top命令以后可以按q退出
-
进程暂停和杀死
01、前台进程后台进程
Linux的进程分为前台进程和后台进程,前台进程占用终端窗口,而后台进程不占用终端窗口。要启动一个前台进程,只需要在命令行输入启动进程的命令即可,要让一个程序在后台运行,只需要在启动进程时,在命令后加上&符号即可
02、暂停和启用Ctrl + z 让正在前台执行的进程暂停 jobs 获取当前的后台作业号 fg 将进程从后台调到前台执行 bg 将进程放到后台执行
03、kill 杀死进程
HUP 1 终端断线
INT 2 中断(同Ctrl + C)
QUIT 3 退出(同Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反,fg/bg命令)
STOP 19 暂停(同Ctrl + Z)
四、shell介绍
-
shell
怎么把你的想法告诉别人?
语言?文字?
有了Linux内核之后,相当于我们有了一个脑子,但是要想说话交流还不行,还需要“手”和“嘴”,这些东西就都在shell壳里面
人的大脑可以自动的去调控我们的身体,不需要意思的参与
Linux内核也是可以自动的控制计算机硬件
人的意识可以控制我们的身体
通过shell外壳,也可以控制计算机硬件
shell它接受来自用户输入的命令,然后将这些命令转化成一系列的系统调用送到内核执行,最后将结果输出给用户 -
脚本语言
shell不只是一种解释器,还是一种编程工具,称为脚本语言
编译型语言
编译工具先将程序编译成机器认识的可执行文件,(比如windows下的exe文件,Linux下的二进制可执行文件),之后运行时直接运行编译后的文件,因此一般来说编译型语言执行速度较高,常见的编译型语言有:C/C++、Java
解释型语言
解释型语言是运行时翻译,执行一条语句就立即翻译一条,而且每次执行程序都需要进行解释 -
shell发展
1977年Bourne Shell
20世纪70年代C Shell
20世纪80年代初Korn Shell
20世纪80年代末Bash Shell
Bsah Shell完全兼容Bourne Shell同时吸收了之前很多Shell中优秀的功能,成为目前使用最为广泛的shell -
shell脚本
交互模式
和Python类似,shell也有交互模式
其实在我们使用远程连接工具连接
Linux时,就是进入了shell交互模式
脚本模式
将要执行的命令都放在一个文件中,然后油Bsah Shell读取并执行。
第一行
shell脚本的第一行最好是以“#!"开头,这个是脚本开始的标记,告诉系统执行使用某个解释器,后面的路径指示具体的路径
第二行
这行是一个注释
第三行
一个简单的输出命令
第四行
$数字 0代表文件名 1代表第一个参数一次内推 -
shell脚本运行
第一种:将脚本作为命令行参数
bash tesh.sh
或者完整路径:
bash /home/bd/test.sh
第二种:脚本独立运行
在脚本第一行添加:
#! /bin/bash
给脚本添加可执行权限:
chmod 744 test.sh
运行:
./test.sh