Linux
-
是一种开源的,免费的操作系统,安装在计算机硬件上,用来管理加孙及的硬件和软件资源的系统软件。
-
linux的发行版本:linus 在1991年开发完成,linux 的内核程序,后来很多的软件开发商在内核程序的基础之上,陆续推出了不同的版本的 linux 操作系统
- Ubuntu(乌班图)
- RedHat(红帽)
- CentOS
Linux 操作系统的文件目录结构
linux 只有一个根目录,也就是只有一个盘(不像 win 可以有C盘,D盘 ....)
-
root: 该目录未系统管理员的目录, root 是具有超级权限的用户
-
bin, usr/bin: 存放系统预装的可执行程序,这里存放的可执行文件可以在系统的任何目录下执行
-
usr: 是 linux 的系统资源目录,用于存放一些系统可执行文件或者一些文件库
- usr/local/bin: 放用户自己的可执行文件,同样在系统的任何地方都可以执行
- etc: 存放系统的配置文件
- /etc/profile: 配置系统的环境变量
-
home: 用户的根目录,每一个登录的账号都会分配一个用户的根目录,用来存放用户自己的文件
-
opt: 用来存放安装软件的目录,比如需要安装 MySQL,JDK 等软件要放在这里
Linux 的远程操作常用的软件
- XShell: linux 的远程操作的远程模拟终端
- Xftp: 用于在本地跟服务器上的文件传输
- vi/vim: linux 上的文件编辑
vi/vim 的使用
Vim 的模分类
- 一般模式
- 用 vi/vim 命令打开文件,默认为一般模式,可以查看文件的内
- 并且可以通过上下左右键来移动光标的位置
- 编辑模式
- 在一般模式按下 i 键或者 a 键,可以进入编辑模式
- 编辑模式下可以修改文件的内容,但是不能保存,想要保存的话需要进入下一个模式
- 在编辑模式下回到一般模式按下 ESC 键
- 命令模式
- 在一般模式按下 shift + : 的组合键,进入命令模式
- q!: 不保存强制退出
- wq: 保存并且退出编辑器
- q: 只是退出编辑器
Vim 的其他操作
- 一般模式下
- yy: 复制当前行
- p: 粘贴到光标所在的下一行
- {num}yy: 复制当前行以下的 num 行,例如复制往下的5行:5yy
- dd: 删除当前行
- {num}dd: 删除当前行往下的5行
- gg: 移动到文档的首行
- G / (也就是 shift + g): 移动到文档的最后一行
- {num}G: 将关光标移动第 10 行4G
- u: 撤销上一次编辑的内容
查看 Linux 中的命令
- man {命令}
- 用来查看 Linux 系统手册上的帮助信息
- 分屏显示,按回车翻一行,按空格翻一页
查看 ls 命令的使用:man ls
- help {命令}
- help:列出 Linux 中所有的命令详细信息
- help cd:列出命令 cd 的详细信息
Linux 中常用的命令
文件与目录相关的命令
- cd <路径>
- 进入具体的路径
- ifconfig
- 查看本机 Linux 的地址 ip 信息
- pwd
- 查看当前所在的目录
- shutdown
- shutdown now: 立即关机
- shutdown -h {时间}: 定时关机
- shutdown -r now: 立即重启
- reboot
- 重启
- ls [-l/-a] {指定目录}
- ls:查看当前所在的目录下所有的文件或者子目录
- ls /home:查看 /home 目录下的所有文件和子目录
- ls -l .home:以列表的形式展示指定 /home 下所有的文件和子目录
- ls -a /home:显示指定目录下所有的文件和子目录包括虚拟目录
- cd {指定目录}
- 切换目录
- 以盘符开头叫绝对路径 cd /Dir/test
- 以目录名开始的叫相对目录 cd test:进入当前目录的 test 目录
- ~:代表当前用户的根目录:例如 lisi 的根目录是 /home/lisi,cd ~:进入李四的根目录 /home/lisi
- ./:代表当前目录
- ../:代表当前目录的上一级目录
- mkdir [-p] {目录名字}
- 在指定的地方创建目录
- 目录名可以是绝对路径也可以是相对路径
- 一次只能创建一级目录 mkdir test2/test3 会失败
- mkdir -p test2/test3:使用递归的方式创建目录,允许创建多级。先查看 test2 目录,不存在的话先创建 test2。然后再创建 test3
- rmdir
- 删除目录
- 当目录不为空时删除失败
- 创建文件
-
vi/vim {文件名}
- 使用这个命令创建文件,先检查要创建的文件是否存在,不存在则创建,然后进入 vim 的文件操作模式
-
touch {文件1 文件2 ...}
- 创建多个文件时,使用空格隔开每个文件
- cp [-r] {source} {dest}
- 将 source 文件复制到 dest 文件中去
- cp -r test2 test5:把 test2 目录复制到 test5 目录中
- rm [-f/-r/-rf] {文件名/目录名}
- rm test1.txt:提示删除,会有二次确认
- rm -f test1.txt:强制删除,无二次确认
- 当要删除的是一个目录的时候,删除失败
- rm -r test2:删除 test2 目录,先会确认进入 test2 目录中,查找 test2 中的所有内容,然后一一提示是否要删除该内容,最后确认完毕之后回到 test2 再询问要不要删除 test2。当 test2 中内容比较多的时候工程很繁琐
- rm -rf test2;无二次确认直接删除 test2,无论 test2 中是否有其他的文件
- mv {source} {dest}
- 将 source 文件/目录移动到 dest 文件/目录
- mv test1.txt test2.tx:相当于对 test1.txt 重命名为 test2.txt
- 在文件移动的过程中,如果存在同名的文件将会提示是否覆盖
- echo
- 输出命令,可以输出字符串,或者系统的一些变量信息
- echo $JAVA_HOME:输出系统配置的环境变量 JAVA_HOME 的值
- {命令1} > {文件路径} (向右尖括号)
- 将前一个命令的输出结果输出到指定的文件之中,若文件不存在则新建
- 若文件存在,则是覆盖写入。不是追加写入
- ls > res.txt: 将当前文件夹中有的文件和子目录名都写入 res.txt
- cat test1.txt > test2.txt: 将 test1.txt 中内容输出到 test2.txt 中,相当于复制
日期相关的命令
- date {+%Y / +%m/ +%d / }
- 查看系统当前的完整日期和时间
- date +%Y: 查看当前的年份
- date +%m: 查看当前的月份
- date +%d: 查看当前的日期
- date +%H: 查看当前的小时
- date +%M: 查看当前的分钟
- date +%S: 查看当前的秒钟
- date +%s: 查看时间戳开始计算的时间 (1970-01-20 11:08:00)
- date '+%Y-%m-%d %H:%M:%S': 按 yyyy-MM-dd HH:mm:ss 的格式显示
- date -S '2030-10-20 10:20:10' 设置当前的系统时间
- cal {年份}
- cal: 查看当前月份的日历
- cal 2020: 指定年份的日历
Linux 中关于搜索文件或者目录
- find [指定目录] [-size/-name/-user] [-/+/=] {带通配符的关键字}
- find *.txt: 搜索当前目录中以 .txt 结尾的文件或者目录
- fing test: 搜索当前目录中存在 test 关键字的文件或者目录
- find /opt/testDir *.txt: 搜索 /opt/testDir 目录下的以 .txt 结尾的文件
- find /opt/testDir -size -5k: 搜索 /opt/testDir 目录下的文件大小小于 5k 的文件 ( -5k: 小于5k,+5k: 大于 5k,=5k: 等于5k)
- find /opt/testDir -size -5M: 搜索 /opt/testDir 目录下的文件大小小于 5M 的文件
- find /opt/testDir -user lisi: 搜索 /opt/testDir 目录下属于 lisi 的文件
- locate {文件名}
- 效率比 find 更高
- 跟 find 的区别
- find
- 会实际的去到指定的目录中,一个一个文件的查找
- 搜索的效率比较低
- locate
- Linux 对文件和目录的组织在底层是一颗目录树。locate 命令会在目录树中去查找文件,树形结构的查找一位着效率比较高
- 但是该目录树不是实时更新的。每当新增或者删除一个文件的时候,目录树并不会立即更新该目录树。而是按照一定的策略去更新。
- 所以该命令的搜索不一定是可靠的。
- 一般在使用该命令的时候,都会先让同步底层的数据库,让该吗目录树先更新一次(updatedb),再使用 locate 命令去搜索系统中的文件
updatedb locate *.txt
- find
过滤
- |grep {过滤条件}
压缩
- 压缩或者解压单个文件
- gzip {文件名}
- 压缩完成之后生成一个 .gz 的压缩包(text.txt -> text.txt.gz)
- 压缩完成之后会删除被压缩的文件
- 在当前路径下生成一个 .gz 的压缩文件
- gunzip {.gz压缩文件}
- 解压完成之后会将原来的 .gz 文件删除
- 压缩或者解压多个文件
-
zip [生成的压缩文件的名称(一般使用 .zip 作为后缀名)] 文件或者目录名称列表(使用空格分离)
- zip txt.zip test1.txt test2.txt test3.txt
-
unzip {压缩包文件名} [指定解压的路径]
- unzip txt.zip:默认解压到当前的中
- unzip txt.zip opt/txt/:解压到指定目录中
- tar
- 解压 tar 包:tar -xvf {xxx.tar}
- 解压 tar.gz 包:tar -xzvf {xxx.tar.gz} / 压缩 tar -czvf filename.tar.gz ./dir ./a.txt
- -z:解压/压缩 .gz 文件
- -c:建立一个压缩文件的参数指令(create 的意思);
- -v:压缩的过程中显示文件(显示所有过程)!这个常用,但不建议用在背景执行过程!
- -f:待压缩或待解压缩文件(该命令一般放在末尾指定压缩的文件或者解压的文件)
- -x:解开一个压缩文件的参数指令!
- -t:查看 tarfile 里面的文件
- -r:向压缩归档文件末尾追加文件
- -u:更新原压缩包中的文件
组管理
linux 中使用组管理用户和文件的权限 linux 中的每个用户都不能独立于组存在,每个用户必须属于一个或者多个组 linux 中的文件(目录)必须属于一个且只能属于一个组
从文件的角度看,用户分为三类
- 文件的所有者
- 同组用户
- 其他用户
组管理中常用得命令
- groupadd 组名
- 添加组
- chown -R 新的所有者:[新的组] 文件名/目录名
- 参数 R 标识递归的修改,连同目录中的文件都改成新的所有者和分组
- 可以修改所有者分组
- chgrp -R 新的组 文件/目录名
- chgrp dev test1.txt: 将文件 test1.txt 对应的分组改成 dev
- chgrp -R dev /opt/dir: 将目录 dir 以及目录下的文件一起修改对应的组名为 dev
文件和目录的权限管理
Linux 中文件额目录的三种权限
- Read
- 对于文件来说可以读取文件的内容(cat,more,less,head,tail)
- 对于目录来说,
- Write
- 对文件而言,是可以和使用 vi/vim 命令等来修改保存文件
- 对目录来说实际可以重命名,删除修改创建目录中的子文件等操作
- Execute
- 对文件来说,是可以执行其中的内容
- 对目录来说,是可以切换到该目录(cd)中等命令
权限管理 Linux 中文件或者目录都是由以上的三部分权限控制的,权限标识符按照读,写,执行的顺序使用 r,w,x来标识,使用 - 占位代表该没有该权限,如 rwx 标识三种权限都具有,r-x 表示有读和执行的权限,没有写的权限。
-
查看文件的权限:ls -ls
-
修改文件或者目录的权限:chmod
- 用 r,w,x 分别表示读写执行的权限
- 也可以使用 4(2^2),2(2^1),1(2^0) 来分别表示 r,w,x
- 用 u,g,o,a 分别表示给所有者,同组用户,其他组用户,所有用户修改权限
- 用 +,-,= 分别表示给指定的用户增加,kdddd减少,设置对应的权限
- 给 text.txt 文件的同组用户增加读的权限,给其他组的用户减少写的权限,给所有者添加读写执行权限 chomd g+r, o-w, u=rwx text.txt
Linux 中的网络管理配置
Linux 中的网络管理配置是通过修改配置文件来实现的。 网络配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" // ONBOOT="yes" IPADDR="192.168.11.128" GATEWAY="192.168.11.2" DNS="192.168.11.2"
Linux 中进程的管理
-
什么是进程 就是一个程序的执行,一个进程占用一个端口
-
线程 一个进程由许多的线程组成.
跟进程相关的命令
- ps [e/f]
- ps:查看进程,指挥显示应用的进程
- ps -e:显示所有进程,包括系统后台的进程
- ps -ef:以全格式的形式查看所有的进程
- 通常用来查看 Linux 中某些软件或者应用是否启动(MySQL等)
Linux 中的服务管理
服务是支持 Linux 运行的一些必要程序,本质上也是进程,也叫做守护进程。例如防火墙,sshd 服务等。一般来说,普通用户是使用不到服务的
怎么操作服务
- systemctl [start/stop/restart/reload/status/enable] {服务名称}
- start:启动服务
- stop:停止服务
- restart:重启服务
- reload:重载服务
- status:查看服务的状态
- enable:设置服务开机启动
Linux 中软件包管理
在 Linux 中管理安装包的程序,想在 Linux 中安装一个程序,要使用固定格式的软件包,一般来说用的最多的是 RPM 包,用户需要下载对应程序的 RPM 包到 Linux 中, 使用软件管理包来安装
- RPM 一中 Linux 中软件包打包喝安装软件包工具,它操作的软件包欧式 .rpm 结尾的文件。
使用 rpm 命令
-
查看当前系统中已经安装的 rpm 包:rpm -qa - 当系统中显示的 rpm 包太多的时候可以配合 |grep 过滤命令
-
卸载系统中已安装的 rpm 软件包:rpm -e {要卸载的软件} - 当系统卸载时会二次确认要卸载的程序
-
安装 rmp 软件包:rpm -ivh {xxx.rpm} - 一般来说用户要先去下载对应的 rpm 包,可以去软件的官方网站中下载 - 安装的软件包必须是以 .rpm 为后缀名的文件 - 安装 rpm 软件包的过程其实就是解压 .rpm 文件的过程
-
YUM 包管理工具 Linux 中的软件相互之间会存在依赖的关系。oYUn 包是一种基于 RPM 的软件包管理工具,它可以从指定的服务器自动的下载 RPM 包并且自动安装,可以自动处理软件之间的依赖关系,类似于 Maven 和 Npm。
使用 YUM 管理工具(yum 命令)
- 查看当前系统中是否已经安装了 RPM 包:yum list installed - 可以配合过滤的命令查看指定的安装文件
- 卸载以安装的 RPM 包:yum remove {软件包名称} - 卸载的过程中会二次询问确认
- 安装 RPM 包:yum install {软件包名} - 将会去指定的服务器上搜索有美哦与需要安装的程序文件,找到之后会去分析当前要安装的文件依赖的文件。回同步安装所有的依赖
Linux 中的用户管理系统
-
任何使用 Linux 系统资源的用户,必须有一个合法的账号和密码,账号一般都是向系统管理员申请的, root 是 Linux 系统安装时默认创建的系统管理员账号,由 root 账户来创建普通用户
-
添加用户 假设我们要创建一个 lisi 的用户
-
useradd lisi
- 在执行完上述命令之后,home 目录中会新建一个 lisi 的目录,用来存放该用户的个人文件
- 给 lisi 创建了一个组,在 Linux 红任何一个用户都属于一个,在创建用户的时候如果不指定一个组,则会新建ige组名跟当前用户名一样的组,并且把该用户添加到该组
-
passwd lisi
- 设置 lisi 的登录密码
- 密码有一定的规则,不能过于简单
-
userdel lisi
- 删除用户
- 单独执行删除命令的时候 /home/lisi 这个目录还存在
- userdel -r lisi:删除用户的时候联通用户的文件夹一起删除
-
su lisi
- 切换账号 lisi
- su root:切换账号为 root
- 从权限低的用户切换到权限高的用户时需要去验证密码,反之不需要
Linux 中的组管理系统
Linux 中的组相当于角色的概念,可以对由共性的用户进行统一的管理,每一个用户至少属于一个组,不饿能独立于组存在。
- 添加组:groupadd {组名}
- 删除组:groupdel {组名}
- 把用户添加到组中:gpasswd -a {账户名} {组名}
- 把用户从头组中移除:gpasswd -d {用户名} {组名}
- 创建用户时指定对应的组:useradd -g {组名} {用户名}
命令速查
关机/重启/注销
| 常用命令 | 作用 |
|---|---|
| shutdown -h now | 即刻关机 |
| shutdown -h 10 | 10分钟后关机 |
| shutdown -h 11:00 | 11:00关机 |
| shutdown -h +10 | 预定时间关机(10分钟后) |
| shutdown -c | 取消指定时间关机 |
| shutdown -r now | 重启 |
| shutdown -r 10 | 10分钟之后重启 |
| shutdown -r 11:00 | 定时重启 |
| reboot | 重启 |
| init 6 | 重启 |
| init 0 | ⽴刻关机 |
| telinit 0 | 关机 |
| poweroff | ⽴刻关机 |
| halt | 关机 |
| sync | buff数据同步到磁盘 |
| logout | 退出登录Shell |
系统信息和性能查看
| 常用命令 | 作用 |
|---|---|
| uname -a | 查看内核/OS/CPU信息 |
| uname -r | 查看内核版本 |
| uname -m | 查看处理器架构 |
| arch | 查看处理器架构 |
| hostname | 查看计算机名 |
| who | 显示当前登录系统的⽤户 |
| who am i | 显示登录时的⽤户名 |
| whoami | 显示当前⽤户名 |
| cat /proc/version | 查看linux版本信息 |
| cat /proc/cpuinfo | 查看CPU信息 |
| cat /proc/interrupts | 查看中断 |
| cat /proc/loadavg | 查看系统负载 |
| uptime | 查看系统运⾏时间、⽤户数、负载 |
| env | 查看系统的环境变量 |
| lsusb -tv | 查看系统USB设备信息 |
| lspci -tv | 查看系统PCI设备信息 |
| lsmod | 查看已加载的系统模块 |
| grep MemTotal /proc/meminfo | 查看内存总量 |
| grep MemFree /proc/meminfo | 查看空闲内存量 |
| free -m | 查看内存⽤量和交换区⽤量 |
| date | 显示系统⽇期时间 |
| cal 2021 | 显示2021⽇历表 |
| top | 动态显示cpu/内存/进程等情况 |
| vmstat 1 20 | 每1秒采⼀次系统状态,采20次 |
| iostat | 查看io读写/cpu使⽤情况 |
| 查看io读写/cpu使⽤情况 | 查询cpu使⽤情况(1秒⼀次,共10次) |
| sar -d 1 10 | 查询磁盘性能 |
磁盘和分区
| 常用命令 | 作用 |
|---|---|
| fdisk -l | 查看所有磁盘分区 |
| swapon -s | 查看所有交换分区 |
| df -h | 查看磁盘使⽤情况及挂载点 |
| df -hl | 同上 |
| du -sh /dir | 查看指定某个⽬录的⼤⼩ |
| du -sk * | sort -rn | 从⾼到低依次显示⽂件和⽬录⼤⼩ |
| mount /dev/hda2 /mnt/hda2 | 挂载hda2盘 |
| mount -t ntfs /dev/sdc1 /mnt/usbhd1 | 指定⽂件系统类型挂载(如ntfs) |
| mount -o loop xxx.iso /mnt/cdrom | 挂 载 iso ⽂ 件 |
| umount -v /dev/sda1 | 通过设备名卸载 |
| umount -v /mnt/mymnt | 通过挂载点卸载 |
| fuser -km /mnt/hda1 | 强制卸载(慎⽤) |
⽤户和⽤户组
| 常用命令 | 作用 |
|---|---|
| useradd codesheep | 创建⽤户 |
| userdel -r codesheep | 删除⽤户 |
| usermod -g group_name user_name | 修改⽤户的组 |
| usermod -aG group_name user_name | 将⽤户添加到组 |
| usermod -s /bin/ksh -d /home/codepig –g dev codesheep | 修改⽤户codesheep的登录Shell、主⽬录以及⽤户组 |
| groups test | 查看test⽤户所在的组 |
| groupadd group_name | 创建⽤户组 |
| groupdel group_name | 删除⽤户组 |
| groupmod -n new_name old_name | 重命名⽤户组 |
| su - user_name | su - user_name |
| passwd | 修改⼝令 |
| passwd codesheep | 修改某⽤户的⼝令 |
| w | 查看活动⽤户 |
| id codesheep | 查看指定⽤户codesheep信息 |
| last | 查看⽤户登录⽇志 |
| crontab -l | 查看当前⽤户的计划任务 |
| cut -d: -f1 /etc/passwd | 查看系统所有⽤户 |
| cut -d: -f1 /etc/group | 查看系统所有组 |
⽹络和进程管理
| 常用命令 | 作用 |
|---|---|
| ifconfig | 查看⽹络接⼝属性 |
| ifconfig eth0 | 查看某⽹卡的配置 |
| route -n | 查看路由表 |
| netstat -lntp | 查看所有监听端⼝ |
| netstat -antp | 查看已经建⽴的TCP连接 |
| netstat -lutp | 查看TCP/UDP的状态信息 |
| ifup eth0 | 启⽤eth0⽹络设备 |
| ifdown eth0 | 禁⽤eth0⽹络设备 |
| iptables -L | 查看iptables规则 |
| ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | 配置ip地址 |
| dhclient eth0 | 以dhcp模式启⽤eth0 |
| route add -net 0/0 gw Gateway_IP | 配置默认⽹关 |
| route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 | 配置静态路由到达⽹络'192.168.0.0/16' |
| route del 0/0 gw Gateway_IP | 删除静态路由 |
| hostname | 查看主机名 |
| host www.baidu.com | 解析主机名 |
| nslookup www.baidu.com | 查询DNS记录,查看域名解析是否正常 |
| ps -ef | 查看所有进程 |
| ps -ef | grep codesheep | 过滤出你需要的进程 |
| kill -s name | kill指定名称的进程 |
| kill -s pid | kill指定pid的进程 |
| top | 实时显示进程状态 |
| vmstat 1 20 | 每1秒采⼀次系统状态,采20次 |
| iostat | iostat |
| sar -u 1 10 | 查询cpu使⽤情况(1秒⼀次,共10次) |
| sar -d 1 10 | 查询磁盘性能 |
常⻅系统服务命令
| 常用命令 | 作用 |
|---|---|
| chkconfig --list | 列出系统服务 |
| service <服务名> status | 查看某个服务 |
| service <服务名> start | 启动某个服务 |
| service <服务名> stop | 终⽌某个服务 |
| service <服务名> restart | 重启某个服务 |
| systemctl status <服务名> | 查看某个服务 |
| systemctl start <服务名> | 启动某个服务 |
| systemctl stop <服务名> | 终⽌某个服务 |
| systemctl restart <服务名> | 重启某个服务 |
| systemctl enable <服务名> | 关闭⾃启动 |
| systemctl disable <服务名> | 关闭⾃启动 |
⽂件和⽬录操作
| 常用命令 | 作用 |
|---|---|
| cd <⽬录名> | 进⼊某个⽬录 |
| cd .. | 回上级⽬录 |
| cd ../.. | 回上两级⽬录 |
| cd | 进个⼈主⽬录 |
| cd - | 回上⼀步所在⽬录 |
| pwd | 显示当前路径 |
| ls | 查看⽂件⽬录列表 |
| ls -F | 查看⽬录中内容(显示是⽂件还是⽬录) |
| ls -l | 查看⽂件和⽬录的详情列表 |
| ls -a | 查看隐藏⽂件 |
| ls -lh | 查看⽂件和⽬录的详情列表(增强⽂件⼤⼩易读性) |
| ls -lSr | 查看⽂件和⽬录列表(以⽂件⼤⼩升序查看) |
| tree | 查看⽂件和⽬录的树形结构 |
| mkdir <⽬录名> | 创建⽬录 |
| mkdir dir1 dir2 | 同时创建两个⽬录 |
| mkdir -p /tmp/dir1/dir2 | 创建⽬录树 |
| rm -f file1 | 删除'file1'⽂件 |
| rmdir dir1 | 删除'dir1'⽬录 |
| rm -rf dir1 | 删除'dir1'⽬录和其内容 |
| rm -rf dir1 dir2 | 同时删除两个⽬录及其内容 |
| mv old_dir new_dir | 重命名/移动⽬录 |
| cp file1 file2 | 复制⽂件 |
| cp dir/* . | 复制某⽬录下的所有⽂件⾄当前⽬录 |
| cp -a dir1 dir2 | 复制⽬录 |
| cp -a /tmp/dir1 . | 复制⼀个⽬录⾄当前⽬录 |
| ln -s file1 link1 | 创建指向⽂件/⽬录的软链接 |
| ln file1 lnk1 | 创建指向⽂件/⽬录的物理链接 |
| find / -name file1 | 从跟⽬录开始搜索⽂件/⽬录 |
| find / -user user1 | 搜索⽤户user1的⽂件/⽬录 |
| find /dir -name *.bin | 在⽬录/dir中搜带有.bin后缀的⽂件 |
| locate <关键词> | 快速定位⽂件 |
| locate *.mp4 | 寻找.mp4结尾的⽂件 |
| whereis <关键词> | 显示某⼆进制⽂件/可执⾏⽂件的路径 |
| which <关键词> | 查找系统⽬录下某的⼆进制⽂件 |
| chmod ugo+rwx dir1 | 设置⽬录所有者(u)、群组(g)及其他⼈(o)的读(r)写(w)执⾏(x)权限 |
| chmod go-rwx dir1 | 移除群组(g)与其他⼈(o)对⽬录的读写执⾏权限 |
| chown user1 file1 | 改变⽂件的所有者属性 |
| chown -R user1 dir1 | 改变⽬录的所有者属性 |
| chgrp group1 file1 | 改变⽂件群组 |
| chown user1:group1 file1 | 改变⽂件的所有⼈和群组 |
⽂件查看和处理
| 常用命令 | 作用 |
|---|---|
| cat file1 | 查看⽂件内容 |
| cat -n file1 | 查看内容并标示⾏数 |
| tac file1 | 从最后⼀⾏开始反看⽂件内容 |
| more file1 | more file1 |
| less file1 | 类似more命令,但允许反向操作 |
| head -2 file1 | 查看⽂件前两⾏ |
| tail -2 file1 | 查看⽂件后两⾏ |
| tail -f /log/msg | 实时查看添加到⽂件中的内容 |
| grep codesheep hello.txt | 在⽂件hello.txt中查找关键词codesheep |
| grep ^sheep hello.txt | 在⽂件hello.txt中查找以sheep开头的内容 |
| grep [0-9] hello.txt | 选择hello.txt⽂件中所有包含数字的⾏ |
| sed 's/s1/s2/g' hello.txt | 将hello.txt⽂件中的s1替换成s2 |
| sed '/^$/d' hello.txt | 从hello.txt⽂件中删除所有空⽩⾏ |
| sed '/ *#/d; /^$/d' hello.txt | 从hello.txt⽂件中删除所有注释和空⽩⾏ |
| sed -e '1d' hello.txt | 从⽂件hello.txt 中排除第⼀⾏ |
| sed -n '/s1/p' hello.txt | 查看只包含关键词"s1"的⾏ |
| sed -e 's/ *$//' hello.txt | 删除每⼀⾏最后的空⽩字符 |
| sed -e 's/s1//g' hello.txt | 从⽂档中只删除词汇s1并保留剩余全部 |
| sed -n '1,5p;5q' hello.txt | 查看从第⼀⾏到第5⾏内容 |
| sed -n '5p;5q' hello.txt | 查看第5⾏ |
| paste file1 file2 | 合并两个⽂件或两栏的内容 |
| paste -d '+' file1 file2 | 合并两个⽂件或两栏的内容,中间⽤"+"区分 |
| sort file1 file2 | 排序两个⽂件的内容 |
| comm -1 file1 file2 | ⽐较两个⽂件的内容(去除'file1'所含内容) |
| comm -2 file1 file2 | ⽐较两个⽂件的内容(去除'file2'所含内容 |
| comm -3 file1 file2 | ⽐较两个⽂件的内容(去除两⽂件共有部分) |
打包和解压
| 常用命令 | 作用 |
|---|---|
| zip xxx.zip file | 压缩⾄zip包 |
| zip -r xxx.zip file1 file2 dir1 | 将多个⽂件+⽬录压成zip包 |
| unzip xxx.zip | 解压zip包 |
| tar -cvf xxx.tar file | 创建⾮压缩tar包 |
| tar -cvf xxx.tar file1 file2 dir1 | 将多个⽂件+⽬录打tar包 |
| tar -tf xxx.tar | 查看tar包的内容 |
| tar -xvf xxx.tar | 解压tar包 |
| tar -xvf xxx.tar -C /dir | 将tar包解压⾄指定⽬录 |
| tar -cvfj xxx.tar.bz2 dir | 创建bz2压缩包 |
| tar -jxvf xxx.tar.bz2 | 解压bz2压缩包 |
| tar -cvfz xxx.tar.gz dir | 创建gzip压缩包 |
| tar -zxvf xxx.tar.gz | 解压gzip压缩包 |
| bunzip2 xxx.bz2 | 解压bz2压缩包 |
| bzip2 filename | 压缩⽂件 |
| gunzip xxx.gz | 解压gzip压缩包 |
| gzip filename | 压缩⽂件 |
| gzip -9 filename | 最⼤程度压缩 |
RPM包管理命令
| 常用命令 | 作用 |
|---|---|
| rpm -qa | 查看已安装的rpm包 |
| rpm -q pkg_name | 查询某个rpm包 |
| rpm -q --whatprovides xxx | 显示xxx功能是由哪个包提供的 |
| rpm -q --whatrequires xxx | 显示xxx功能被哪个程序包依赖的 |
| rpm -q --changelog xxx | 显示xxx包的更改记录 |
| rpm -qi pkg_name | 查看⼀个包的详细信息 |
| rpm -qd pkg_name | 查询⼀个包所提供的⽂档 |
| rpm -qc pkg_name | 查看已安装rpm包提供的配置⽂件 |
| rpm -ql pkg_name | 查看⼀个包安装了哪些⽂件 |
| rpm -qf filename | 查看某个⽂件属于哪个包 |
| rpm -qR pkg_name | 查询包的依赖关系 |
| rpm -ivh xxx.rpm | 安装rpm包 |
| rpm -ivh --test xxx.rpm | 测试安装rpm包 |
| rpm -ivh --nodeps xxx.rpm | 安装rpm包时忽略依赖关系 |
| rpm -e xxx | 卸载程序包 |
| rpm -Fvh pkg_name | 升级确定已安装的rpm包 |
| rpm -Uvh pkg_name | 升级rpm包(若未安装则会安装) |
| rpm -V pkg_name | RPM包详细信息校验 |
YUM包管理命令
| 常用命令 | 作用 |
|---|---|
| yum repolist enabled | 显示可⽤的源仓库 |
| yum search pkg_name | 搜索软件包 |
| yum install pkg_name | 下载并安装软件包 |
| yum install --downloadonly pkg_name | 只 下 载 不 安 装 |
| yum list | 显示所有程序包 |
| yum list installed | 查看当前系统已安装包 |
| yum list updates | 查看可以更新的包列表 |
| yum check-update | 查看可升级的软件包 |
| yum update | 更新所有软件包 |
| yum update pkg_name | 升级指定软件包 |
| yum deplist pkg_name | 列出软件包依赖关系 |
| yum remove pkg_name | 删除软件包 |
| yum clean all | 清除缓存 |
| yum clean packages | 清除缓存的软件包 |
| yum clean headers | 清除缓存的header |
DPKG包管理命令
| 常用命令 | 作用 |
|---|---|
| dpkg -c xxx.deb | 列出deb包的内容 |
| dpkg -i xxx.deb | 安装/更新deb包 |
| dpkg -r pkg_name | 移除deb包 |
| dpkg -P pkg_name | 移除deb包(不保留配置) |
| dpkg -l | 查看系统中已安装deb包 |
| dpkg -l pkg_name | 显示包的⼤致信息 |
| dpkg -L pkg_name | 查看deb包安装的⽂件 |
| dpkg -s pkg_name | 查看包的详细信息 |
| dpkg –unpack xxx.deb | 解开deb包的内容 |
APT软件⼯具
| 常用命令 | 作用 |
|---|---|
| apt-cache search pkg_name | 搜索程序包 |
| apt-cache show pkg_name | 获取包的概览信息 |
| apt-get install pkg_name | 安装/升级软件包 |
| apt-get purge pkg_name | 卸载软件(包括配置) |
| apt-get remove pkg_name | 卸载软件(不包括配置) |
| apt-get update | 更新包索引信息 |
| apt-get upgrade | 更新已安装软件包 |
| apt-get clean | 清理缓存 |