Linux bash shell的基础特性
1.补全
查看系统中支持的shell | cat/etc/shell |
---|---|
查看当前系统的默认shell | echo $SHELL |
命令补全:
很多命令都会提供一个bash-complete的脚本,因此给定的打头的字符串如果在系统中能够唯一的标识某一个命令程序文件,再按一下tab键,命令可以直接补全。
如果不能够唯一标识,则需要再次敲击tab键,会给出命令列表以便寻找所需命令。
路径补全:
和命令补全机制不同,在给定的起始路径下:以对应路径下打头的字符串来逐一匹配起始路径下的每一个文件。
tab:
能够唯一标识 | 直接补全 |
---|---|
不能唯一标识 | 再按一次tab后给出列表 |
2.快捷键
Ctrl+c | 终止前台运行的程序,或者删除整行 |
---|---|
Ctrl+d | 退出当前shell命令执行行 |
Ctrl+l | 相当于命令“clear”,清除屏幕内容 |
Ctrl+a | 光标移动到命令行的最前端 |
Ctrl+e | 光标移动到命令行的最后端 |
Ctrl+k | 删除光标后所有的字符 |
Ctrl+u | 删除光标前所有的字符 |
Ctrl+h | 删除光标所在位置的前一个字符 |
Ctrl+r | 搜索历史命令 |
Ctrl+g | 结束‘Ctrl+r’的操作 |
Ctrl+s | 锁定终端,使输入的内容无法在屏幕上显示 |
Ctrl+q | 解除“Ctrl+s”的锁定状态 |
Ctrl+z | 使正在运行的进程暂停 |
3.命令历史
history命令
HISTSIZE | shell进程中可以保留的命令历史的条数, ehco $HISTSIZE |
---|---|
HISTFILE | 持久保持命令历史的文件 |
HISTFILESIZE | 命令历史文件大小 |
格式:history [选项] [历史命令保存文件]
默认:显示曾经输入过的历史命令
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg…]
-c | 清空命令历史 |
---|---|
-d offset | 删除指定的命令历史 |
-r | 从文件中读取命令历史到命令历史列表中 .bash_history—>内存 |
-w | 把命令历史列表中的命令追加到命令历史文件中 .bash_history<—内存 |
history# | 显示最近的#条命令 |
!# | 执行命令历史列表中第#条命令 |
!! | 执行上一条命令 |
! STRING | 再一次执行命令历史列表中最近一个以STRING开头的命令 |
HISTCONTROL
ignoredups | 忽略重复的命令 |
---|---|
ignorespace | 忽略以空白开头的命令 |
ignoreboth | 以上两者同时生效 |
HISTCONTROL=’ ’
4.命令别名
# alias name=‘commond’ | 定义别名(仅对当前shell环境有效) |
---|---|
# unalias name | 撤销别名 |
永久保存别名:
#vi /etc/bashrc
alias name=‘commond’
5.变量
本地变量 | 当前shell环境生效当前shell进程中某一个代码段,通常指某一个函数 |
---|---|
局部变量 | 当前的shell进程生效,其他shell包括子shell均不生效 |
环境变量 | 当前shell进程以及子进程 |
echo $NAME
6.特殊的符号
l 管道 | 将前一个命令的执行结果当作后一个命令的输入 |
---|---|
. 点号 | 当前目录 |
… 双点号 | 上一级目录 |
; 分号 | 分割命令 linux在执行多条命令时。可以用分号分开,顺序的去独立执行各条命令,每条命令不关心是否失败,所有命令都执行 |
``反单引号 | 命令替换 |
''单引号 | 强引用,不做变量的替换 |
""双引号 | 弱引用,可以实现变量和命令的替换 |
{} | 做扩展或者在shell脚本中构建代码块 |
* | 标识通配 |
7.输入输出重定向
linux系统三种IO设备:
标准输入 STDIN-----0 默认来自于键盘的输入
标准输出 STDOUT----1 默认输出到终端窗口
标准错误 STDERR----2 默认输出到终端窗口
重定向:
输入重定向:不常用
输出重定向:使用户将一个命令的执行结果输出重定向到一个文件中,而不是显示到屏幕上
1>:覆盖
1>>:追加
错误重定向:
2>
2>>
正确和错误都重定向到同一个位置:2>&1 &>
/dev/null:数据黑洞
/dev/zero:吐0机
8.命令行通配符:
* | 匹配任意长度的任意字符 |
---|---|
? | 匹配任意单个字符 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
[[:upper:]] | 所有的大写字母 |
[[:lower:]] | 所有的小写字母 |
[[:alpha:]] | 匹配所有的字母 |
[[:digit:]] | 所有的数字 |
[[:alnum:]] | 字母和数字 |
[[:space:]] | 空白字符 |
[[:punct:]] | 标点符号 |
9. 常见的系统管理类命令:
ls命令:
ls [OPTION]… [FILE]…
-a | 显示所有文件包括隐藏文件 |
---|---|
-A | 显示所有文件包括隐藏文件但除过.和… |
-c | 以ctime排序,-lt一起使用 |
-l | 以长数据格式显示文件属性以及权限等信息 |
-t | 以修改时间排序 |
-d | 列出目录本身,而不是目录中的内容 |
-i | 列出文件的inode号 一般和-l一起使用 |
-h | 将文件的大小以kB MB GB格式显示 |
pwd命令:
显示当前工作目录 绝对路径
-L | 显示当前的路径,不管有没有链接文件,不加选项时就是以此显示 |
---|---|
-P | 显示当前路径,如果有链接文件,直接显示链接文件指向的文件 |
cd命令:
改变工作目录
~ | 用户家目录 |
---|---|
- | 表示前一个工作目录 |
… | 上级目录 |
. | 当前目录 |
date命令:
显示或者修改系统时间和日期
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
%p | 显示本地 AM 或 PM |
---|---|
%r | 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) |
%s | 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 |
%T | 直接显示时间 (24 小时制) |
%a | 星期几 (Sun…Sat) |
%A | 星期几 (Sunday…Saturday) |
%b | 月份 (Jan…Dec) |
%B | 月份 (January…December) |
%c | 直接显示日期与时间 |
%D | 直接显示日期 (mm/dd/yy) |
%U | 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形) |
%W | 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形) |
%x | 直接显示日期 (mm/dd/yy) |
%Y | 完整年份 (0000…9999) |
-d “string”:字符串所指的日期和时间,并不代表当前时间 not now
-s “string”:根据字符串来设置日期和时间
日期的设置需要加上时间的设置,否则会将时间重置为00:00:00
-u: 显示目前的格林威治时间
–version : 显示版本编号
passwd命令:设置用户口令
只有root用户有权限使用
-k | 到期后密码仍然可以使用 |
---|---|
-l | lock,锁定用户密码,只有root有权限操作 |
-u | unlock,解除锁定 |
-f | 强制操作 |
-n days | 两次密码修改的最小天数 |
-x days | 两次密码修改的做大天数 |
–stdin | 密码从标准输入获取密码,非交互式设置密码使用 |
-w days | 距离多少天提醒用户修改密码 |
-S | 查询密码状态 |
-i days | 密码过期后 多少天之后,用户被禁用 |
su 命令:改变用户身份
su - username
-c commond: 变更用户为 user的使用者,执行commomd命令,再变回原来使用者
-:用户的环境变量切换
clear命令:清理
Ctrl+l
who命令:显示目前登录到系统的用户信息
who命令语法
who [OPTION]… [ FILE | ARG1 ARG2 ]
-a | 处理 /etc/utmp 文件或有全部信息的指定文件。等同于指定 -bdlprtTu 标志。 |
---|---|
-w | 以系统时间为准 |
-s | 以硬件时间为准 |
w命令:显示登录到系统的用户信息
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。功能与who命令类似。
w命令语法
w - [husfiV] [user]
last命令:列出目前与过去登入系统的用户相关信息
命令语法
last [选项] 命令选项
-a | 把从何处登入系统的主机名称或ip地址,显示在最后一行 |
---|---|
-d | 将IP地址转换成主机名称 |
uname命令:显示操作系统相关信息
命令语法
uname [OPTION]…
-a | 显示所有操作系统相关信息 |
---|
dmesg命令:显示开机信息
free命令:显示系统内存状态
命令语法
free [options]
-b | 以Byte为单位显示内存使用情况 |
---|---|
-k | 以KB为单位显示内存使用情况 |
-m | 以MB为单位显示内存使用情况 |
-g | 以GB为单位显示内存使用情况 |
-s | 间隔秒数,持续观察内存使用状况 |
-t | total,显示内存总和列 |
ps命令:显示系统进程瞬间运行状态
命令语法
ps [options]
-l | 显示详细信息 |
---|---|
-aux | 当前以用户为主的所有进程状态 |
状态类型:
user | 用户,代表进程属于哪个用户 |
---|---|
PID | 进程ID |
%CPU | 用掉的cpu百分比 |
top命令:动态监控系统处理器状态
PID | 进程ID |
---|---|
user | 进程的拥有者 |
PR | 进程优先级 |
NI | nice值, 负数表示优先级最高 |
VIRT | 进程使用虚拟内存总量 |
REX | 进程正在使用,未被换出的物理内存大小 |
SHR | 共享内存大小 |
S | 进程状态: R:runing S:sleeping T:stop Z:zombie D:不可中断 |
%CPU | 从上次刷新到目前使用的cpu时间占比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用cpu的时间 单位1%秒 |
COMMAND | 进程名称 |