操作系统的作用:
使计算机系统易于使用
有效管理系统资源
方便用户开发、测试和引进新功能
向下封装硬件,向上提供操作接口
linux分为内核版本和发行版本
内核源码网站:www.kernel.org
发行版本就是给系统披上了UI
文件系统:
采用 “路径” + “文件名”
linux 采用 ‘’/" 且没有盘符
路径分为:
- 绝对路径
- 相对路径
./表示当前目录../表示上一级目录
linux目录结构
- / 根目录
- /home 家目录
- /bin 放工具(可执行文件)
- /lib 库文件
- /usr/include 头文件
文件权限
文件分类
- 普通文件 -
- 目录文件 d
- 设备文件 c字符设备 b块设备
- 管道文件
- 链接文件
| 文件类型 | 文件所有者 | 用户组 | 其他人 |
|---|---|---|---|
| - | rwx | rwx | rwx |
-rwxrwxrwx
查看用户组信息
1 | cat /ect/gruop |
查看用户信息
1 | cat /ect/passwd |
用户名: x : 用户id : 组id
文件目录的x权限代表可进入权限
一般情况下linux/unix只允许文件所有者或超级用户(root)改变文件权限
命令 [-可选参数1] [-可选参数n]
[]是可选参数
查命令
使用–hellp
查手册
用man命令
1 | man [选项] 命令名 |
按q退出
enter下一行
空格下一屏
h列出所有功能键
/字符串 搜索所有该字符串
可以使用方向键操控
以章节方式分类
1代表命令
2代表系统调用
3代表库调用
1 | man 3 printf //查询printf函数使用说明 |
按tab键可以补全命令
方向键可以查使用过的命令
history 命令
列出历史命令(连续重复的命令只列举一次)
ls 遍历当前目录
ls [-选项]
| -a | 遍历所有子目录与文件 |
|---|---|
| -l | 详细显示信息 |
| -h | 以人性化方式显示文件大小 |
使用方式
1 | ls -ahl |
一个文件夹默认有两个目录,一个是.另一个是.. 分别代表当前目录和上一级目录。
| 文件类型 | 权限 | 硬连接数目 | 文件所有者 | 用户组 | 文件大小 | 创建日期 | 文件名/目录 |
如果是文件夹,硬链接数目代表其下有多少子目录
touch 创建文件
1 | touch 文件名 |
如果文件存在则修改日期时间为当下时间,否则则创建新文件
| ? 代表任意一个字符 |
| [abc] 匹配a、b、c中任意一个字符 |
| [a~z] 匹配a~z中任意一个字符 |
| \ 转义字符 |
1 | ls ?.c |
输出重定向命令: >
将命令执行结果重定向到一个文件上
1 | ls > text.txt #如果文件不存在,则创建.存在则覆盖 |
分屏显示:more
1 | more 文件名 |
按q退出 空格下一页 h帮助
管道:|
一个命令的输出可以通过管道做为另一个命令输入
输出|输入
1 | ls | grep std #从ls中搜索std字符 |
从切换工作目录 cd
Linux所有的目录或文件名大小写敏感
1 | 切换到当前用户的主目录(/home/用户目录) |
查看当前路径 pwd
清屏 clear
1 | clear |
ctrl+l也可以
创建文件夹 mkdir
1 | mkdir 文件名 |
创建者需要有当前文件夹写的权限
删除文件夹 rmdir
1 | rmdir 文件夹名 |
文件夹必须是空的才可以删除
rm 可以删除非空文件夹或文件
-f不提示
-r删除文件夹
-i交互式删除
1 | rm 文件 |
建立链接文件 ln
硬链接:
给某个文件拷贝一份,这两个文件独立存在
改变其中一个,另一个也会改变
删除某个硬链接,不会影响另一个文件
只能链接普通文件,不能链接目录
1 | ln 源文件 链接文件 |
软链接:
类似windows的快捷方式
如果源文件删除,软连接文件没有意义
1 | ln -s 源文件 链接文件 |
和windows快捷方式的区别:
假设有一个软连接目录是aaa,源文件是b,进入aaa路径会显示xx/aaa而不是xx/b,aaa实际上是b的别名,实际进入的是b目录
软链接文件的大小是固定的
gedit 图形化文本编辑
1 | gedit 文件名 |
文件存在就打开,不存在就创建一个
查看或合并文本内容 cat
1 | cat 文件名 |
文本搜索 grep
grep [-选项] '字符串' 文件名
字符串最好用双引号括起来
-v求反
-n显示行号
-i不区分大小写
1 | grep "sss" 1.txt |
正则表达式
^a代表以a开头
ke$以ke结尾
[1~9]1~9中任意一个
[1~9]aaa[1~9]aaa是固定字符
.a.点代表任意一个字符,a是固定字符
?和*失效
1 | ls | grep ^a |
查找文件 find
find 路径 -name 文件名
find 路径 -size 文件大小
find 路径 -perm 0777
1 | find ./ -size 2M #搜索等于2M的文件 |
拷贝文件 cp
cp 源文件或目录 文件名 [-选项]
-a保持文件原有属性
-f不提醒
-i交互式复制
-r递归复制目录
-v显示进度
1 | cp ./a /b -r |
移动文件 mv
用来移动或重命名文件或目录
-f 不提示
-i 交互式移动
-v显示进度
1 | mv ./a.txt ./b |
获取文件类型 file
file 文件名
executable 可执行文件
ASCII text 文本文件
编译文件
gcc 源文件 -o 文件名
运行程序
直接输入路径+文件名
1 | ./a.exe |
归档管理 tar
打包和解包但不压缩
tar [参数] 打包文件名 源文件
-可以不写
打包
1 | tar -cvf 打包名称.tar 源文件 |
解包
1 | tar -xvf 包名 |
gzip压缩和解压
1 | gzip xxx.tar #自动生成一个xxx.tar.gz压缩包 |
-r代表压缩,一般省略不写
-d代表解压
1 | gzip -r xxx.tar xxx.tar.gz |
解压
1 | gzip -d xxx.tar.gz |
bzip2 解压/压缩
1 | bzip2 xxx.tar #压缩 |
打包压缩
指定路径要加 -C
gzip
1 | tar -czvf xxx.tar.gz *.* |
bzip2
1 | tar -cjvf xxx.tar.bz2 *.* |
1 | tar -cjvf xxx.tar.bz2 -C ./my/*.* |
解压解包
gzip
1 | tar -xzvf xxx.tar.gz |
bzip2
1 | tar -xjvf xxx.tar.bz2 |
1 | tar -xjvf xxx.tar.bz2 -C ./my/ |
文件压缩和解压 zip unzip
压缩 zip
1 | zip -r 压缩文件名 |
解压 unzip
1 | unzip -d 压缩包名 |
查看命令所在目录 which
1 | which 命令名 |
who查看最近登录的用户
1 | who |
w 查看最近登录的用户,显示ip
1 | w |
exit 退出当前用户
1 | exit |
如果是图像界面终端,退出当前终端
如果是使用ssh远程登录,退出登录用户
如果是切换后的登录用户,退出则返回上一个登录账户.
su 切换用户
1 | su #切换到root用户 |
sudo 运行普通用户执行一些或全部的root命令的一个工具,减少了root用户的登录和管理时间,提高安全性
需要root权限
添加删除组账号:groupadd groupdel
groupadd 新建组账号
groupdel删除组账号
如果有用户属于组了,就不能删组了,把用户移出该组才可以删
groupadd 组名
groupdel组名
1 | groupadd abc |
修改用户所在组 usermod
usermod -g 用户组 用户名
1 | usermod -g root abc |
查看用户组信息 cat /etc/group
查看用户信息 cat /etc/passwd
yxc19980620c:x:1000:0:yc:/home/yxc19980620c:/bin/bash
1000代表用户id
0代表用户组id
添加用户 useradd或adduser
添加用户时需要在/home目录下添加一个和新建用户同名的文件夹
useradd和adduser功能完全一样
useradd -d 用户文件夹 用户名 -m
useradd -d /home/abc abc -m
1 | useradd -d 用户文件夹 用户名 -m |
-d代表指定用户文件夹
-m代表如果用户文件夹不存在则新建一个用户文件夹
新建用户并指定用户组
useradd -d 用户文件夹 用户名 -g 用户组 -m
1 | useradd -d /home/abc abc -g root -m |
删除用户 userdel
1 | userdel 用户名 #不会自动删除用户的主目录 |
给用户添加密码 passwd
1 | passwd 用户名 |
查看用户登录情况 last
1 | sudo last |
修改文件权限 chmod
字母法:
chmod 修改权限 文件名
u 用户所有者 g 用户组 o 其他人
1 | + 代表加权限 |
1 | chmod u+x 1.c #给1.c文件添加所有者x执行权限 |
数字法
1 | u g o |
1 | rwx |
1 | chmod 777 1.c #代表1.c的权限是-rwx rwx rwx |
文件夹权限说明
目录没有x权限,表示不能进此目录
没有r权限,不能查看文件夹内容
没有w权限,不能新建或删除,修改文件
改变文件所有者 chown
1 | chown 用户名 文件或目录 |
改变文件所属组 chgrp
1 | chgrp 用户组 文件或目录 |
查看当前日历 cal
1 | cal |
显示或设置时间 date
1 | date |
查看进程信息 ps
1 | ps -aux |
可以不用加-
-a显示所有进程,包括其他用户进程
-u显示进程的详细信息
-x 显示没有控制终端的进程
-w显示加宽,以便显示更多的详细
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER 用户名
PID 进程ID
%CPU 进程占用的CPU百分比
%MEM 占用内存的百分比
VSZ 该进程使用的虚拟內存量(KB)
RSS 该进程占用的固定內存量(KB)(驻留中页的数量)
TTY //该进程在哪个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
STAT 进程的状态
START 该进程被触发启动时间
TIME 该进程实际使用CPU运行的时间
COMMAND:所执行的指令
动态显示进程信息 top
1 | top |
结束进程 kill
1 | kill 进程id |
后台运行 &、jobs、fg
1 | ./hello.exe & #表示后台运行 |
关机重启 reboot shutdown init
1 | reboot #重启 |
字符界面和图像界面切换
redhat平台
1 | init 3 #字符界面 |
Ubuntu快捷键切换
ctrl+alt+F2 字符界面
ctrl+alt+F1 图像界面
检测硬盘空间 df
1 | df -h |
检查目录所占磁盘空间:du
1 | du -h 目录 |
-a 递归显示指定目录中各文件和子目录中文件占用的数据块
-s 显示指定文件和目录占用的数据块
-b 以字节为单位显示磁盘占用情况
-h人性化输出大小
安装软件 rpm
rpm [选项][软件包名]
-i指定安装的软件包
-h显示安装过程及进度
-v 显示安装的详细信息
-q查询系统是否已安装指定软件包
-a 查看系统已安装的软件包
-e 卸载软件
--nodeps 配合-e使用 ,强制卸载,不检查依赖项
--force 强制操作,如强制安装或卸载
1 | rpm -ihv ./aaa.rpm |
获取最新的软件包的列表
1 | sudo apt-get update |
从源中添加xxx软件
1 | sudo apt-get install xxx |
删除xxx软件
1 | sudo apt-get remove xxx |
dpkg
Debian Linux系统用来安装、创建和管理软件包的实用工具。
语法
dpkg(选项)(参数)
选项
-i:安装软件包;
-r:删除软件包;
-P:删除软件包的同时删除其配置文件;
-L:显示于软件包关联的文件;
-l:显示已安装软件包列表;
--unpack:解开软件包;
-c:显示软件包内文件列表;
--confiugre:配置软件包。
参数
Deb软件包:指定要操作的.deb软件包。
实例
1 | dpkg -i package.deb #安装包 |