shell是什么?
- 外壳,提供与系统交互的接口;
- 解释型脚本语言。
常见的解释器种类?
sh:Unix上标准的shell,现在很多的版本中,/bin/sh都是一个软链接,指向其他解释器
bash:Linux众多发行版本默认shell,对sh增加了一些命令和参数
csh:在语法上有一点点类似于C语言
tcsh:csh的增强版,加入了命令补全和更多语法支持
zsh:炫酷,配置复杂
ash:轻量级,低内存
dash:比bash更小,功能相对少一些,由ash发展移植而来
Linux Man手册
--查询Shell命令、可执行程序、基础工具集或Linux API、GLibc API、系统配置文件格式规范等;
序号 | 英文 | 中文 |
---|---|---|
1 | Executable programs or shell commands | 可执行程序或shell命令 |
2 | System calls (functions provided by the kernel) | 系统调用(由内核提供的函数) |
3 | Library calls (functions within program libraries) | 库调用 (标准库或第三方库提供的函数) |
4 | Special files (usually found in /dev) | 特殊文件(如对文件/dev/random的描述 ) |
5 | File formats and conventions eg /etc/passwd | 描述了文件的格式,各个字段的含义和取值约束等 |
6 | Games | 游戏 |
7 | Miscellaneous (including macro packages and conventions) | 杂项(不便具体分类的说明都暂且都放这节吧) |
8 | System administration commands (root) | 系统管理员命令(通常仅适用于root用户) |
9 | Kernel routines [Non standard] | 内核例程(非标准) |
指令man man可以查看
options:命令选项有两种形式
长选项(--)和短选项(-)
- 长选项: 用 -- 引导,后面跟完整的单词,eg: --verbose
- 短选项: 用 - 引导,后面跟单个的字符, eg: -e -l -f (-elf), 但是长选项不能组合使用,如 --verbose后面就不能直接再跟另外一个(选项)单词或字符了。
Shell 命令
安装相关命令
dpkg命令
deb系列软件包管理系统
- 安装
- 移除
- 打包
- 查看
- 配置
列出当前系统软件包
dpkg -l
安装软件包
dpkg -i <package>.deb
卸载软件
vim <文件名>进入或创建文档;
按i进入编辑模式;
编辑完成后按Esc退出插入模式;
输入:wq保存并退出。
包
dpkg -r <package> (保留配置文件)
dpkg -P <package> (不保留配置文件)
列出已安装软件包内容
dpkg -L <package>
查找某个文件属于哪个软件包
dpkg -S <file>
注:安装卸载等操作需要管理员权限,需要在指令之前加上sudo,启用管理员权限。
注:.deb格式的安装包可以双击直接安装
apt命令
封装度更高的软件包管理系统
- 安装
- 卸载
- 查看
- 搜索
更新软件源缓存
apt/apt-get update //更新软件包档案库元数据
升级所有可升级的软件包
apt/apt-get upgrade //安装已安装的软件包的候选版本并且不移除任何其它的软件包
apt full-upgrade
/apt-get dist-upgrade //安装已安装的软件包的候选版本,并且需要的话会移除其它的软件包
安装软件包
apt/apt-get install <package>
卸载软件包
apt/apt-get remove <package>
apt/apt-get autoremove //移除不再需要的自动安装的软件包
apt/apt-get purge <package> //清除软件包的配置文件
apt/apt-get clean //完全清除本地仓库的软件包检索文件
apt/apt-get autoclean //清除本地仓库中过时软件包的软件包检索文件
显示软件包信息
apt/apt-cache show <package>
查找软件包
apt search <package>
搜索某个文件的所属软件包
apt-file rearch <file>
注:apt指令安装软件不需要下载软件包,直接输入软件名在源中下载。安装卸载同样需要管理员权限。
apt和dpkg的差别和关联
- apt命令在安装软件包时,调用dpkg进行安装;
- apt可以下载软件包,可以从线源中查找和安装软件包,dpkg只能安装已经下载的软件包;
- apt可以自动拉取软件包的依赖包,dpkg无法自动处理依赖。
目录命令
ls命令
用途:列出目录包含的内容
cd命令
用途:改变shell的工作目录
cd <文件夹名>
dirs命令
用途:显示目录栈内容
dirs -v //显示目录栈索引
pushd和popd命令
用途:将目录进栈和出栈,并将工作目录切换到新的栈顶
ln命令
用途:创建linux系统中的链接
软链接和硬链接
软连接
- 软链接,以路径的形式存在,类似于Windows操作系统中的快捷方式;
- 软链接可以 跨文件系统 ,硬链接不可以;
- 软链接可以对一个不存在的文件名进行链接;
- 软链接可以对目录进行链接。
硬链接
- 硬链接,以文件副本的形式存在,但不占用实际空间,inode节点号与源文件相同;
- 不允许给目录创建硬链接;
- 硬链接只有在同一个文件系统中才能创建。
ln -s <file1> <file2> //把file2软链接到file1
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
注:作为链接目标文件的路径要使用绝对路径;上图命令是在新建文件夹的基础上链接文件;上图箭头的意思相当于wangwu文件夹是lisi文件夹的快捷方式。
mkdir命令
用途:创建目录
参数 | 用途 |
---|---|
-p | 逐级创建,如果父目录不存在会自动创建 |
-m | 指定目录权限属性 |
touch命令
用途:创建文件
参数 | 用途 |
---|---|
-d | 使用指定的时间代替current time |
-m | 仅修改mtime |
-a | 仅修改atime |
-c | 禁止创建文件 |
cp命令
用途:复制文件和目录
cp <源文件或目录绝对路径> <目标文件或目录绝对路径>
mv命令
用途:移动文件和目录
mv <源文件或目录绝对路径> <目标文件或目录绝对路径>
rm命令
用途:删除文件和目录
rm <文件或目录名>
vi/vim/vim.tiny系列程序
用途:文本编辑器
注:需要apt vim进行安装后才能使用。
vim使用步骤
- vim <文件名>进入或创建文档;
- 按i进入编辑模式;
- 编辑完成后按Esc退出插入模式;
- 输入:wq保存并退出。
top命令
用途:显示系统进程和资源情况
参数 | 说明 |
---|---|
-p | 只显示指定PID的进程,可以重复使用该参数监听多个进程 |
-H | 显示线程 |
1.top字段说明
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:进程的状态。它有以下不同的值:
- D - 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
2.常用指令
Ctrl+L:擦除并且重写屏幕
K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i:忽略闲置和僵死进程。这是一个开关式命令。
q:退出程序
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S:切换到累计模式。
s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F:从当前显示中添加或者删除项目。
o或者O:改变显示项目的顺序
l:切换显示平均负载和启动时间信息。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T:根据时间/累计时间进行排序。
W:将当前设置写入~/.toprc文件中。
ps命令
用途:输出当前进程的快照
参数 | 说明 |
---|---|
-ef | 显示所有用户的所有进程(UNIX风格参数) |
aux | 显示所有用户的所有进程(BSD风格参数) |
free命令
用途:显示当前系统内存使用情况
参数 | 说明 |
---|---|
-b/-k/-m/-g | 以bytes/kilobytes/megabytes/gigabytes形式显示结果 |
-h | 以可读性更强的形式展现结果 |
-si | 以1024为阶级,而非1000 |
-c N | 连续输出N次结果,然后退出 |
-s N | 每隔N秒输出一次结果 |
注:-s指令按Ctrl+c结束。
fdisk命令
用途:操作磁盘分区表,能识别GPT、MBR、Sun、SGI和BSD类型的分区表
参数 | 说明 |
---|---|
-l | 列出指定的(或所有在/proc/partitions中的)磁盘的分区表 |
-b | 指定磁盘的扇区大小,可用的值有512/1024/2048/4096 |
fdisk /dev/XXX | 对指定磁盘的分区表进行操作 |
ssh命令
用途:登录远程主机
scp命令
用途:远程拷贝文件
参数 | 说明 |
---|---|
-r | 拷贝目录 |
-p | 同时拷贝mtime、atime和modes |
从本地拷贝文件到远程主机:
- scp test kylin1@172.17.4.xxx:~
- scp -r test kylin1@172.17.4.xxx:~
从远程主机拷贝文件到本地:
- scp kylin1@172.17.4.xxx:~/test /home/kylin/
- scp -r kylin1@172.17.4.xxx:~/test /home/kylin/
sudo命令
用途:以另一用户身份继续执行后续指令
参数 | 说明 |
---|---|
-u | 指定用户 |
cat命令
用途:从头到尾打印文件
参数 | 说明 |
---|---|
-n | 输出的同时加上行号 |
-b | 输出的同时加上行号,但不统计空白行 |
-E | 在每行的结尾加上$符标记 |
-v | 打印那些不可见的字符 |
tail命令
用途:打印文件尾指定行数
参数 | 说明 |
---|---|
-f | 持续追踪文件变化并打印 |
--retry | 当文件不存在时不退出,持续监听直至文件出现 |
-F | 相当于-f --retry |
-n N | 打印倒数N行 |
head命令
用途:打印文件头指定行数
sed 命令
用途:利用脚本处理文本文件
选项与参数:
-n :使用安静(silent)模式。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内
-r :sed 的动作支持的是延伸型正规表示法的语法。
-i :直接修改读取的文件内容,而不是输出到终端。
动作说明:
a :新增 sed 4a\newline testfile
c :取代
d :删除 sed '1,2d' testfile
i :插入
p :打印
s :取代 sed 's/要被取代的字串/新的字串/g'
more命令
用途:以分页的形式显示文件
操作:
空格 -- 向下翻页
回车 -- 向下滚动一行
q -- 退出
参数 | 说明 |
---|---|
+N | 从第N行开始显示 |
-n | 每次显示N行 |
less命令
用途:more than more
查找命令
grep命令
用途:搜索并打印符合表达式的文本行
参数 | 说明 |
---|---|
-v | 反搜,即搜索那些不符合表达式的文本行 |
-E | 以扩展版正则表达式解析后续的 PATTERNS |
-i | 忽略大小写 |
-w | 全文匹配 |
-A N | 输出匹配行的同时,还输出该行后的N行 |
-B N | 输出匹配行的同时,还输出该行前的N行 |
-C N | 输出匹配行的同时,还输出该行前后各N行 |
history命令
用途:输出历史命令记录
参数 | 说明 |
---|---|
-c | 清空历史记录列表 |
-w | 将当前操作的记录到历史文件中 |
-a | 将当前会话的历史记录追加到历史文件中 |
!命令
用途:使用上一条命令
chown命令
用途:变更文件的属组/属主
chgrp命令
用途:变更文件的属组
chmod命令
用途:变更文件的属性标志位