# man[命令或者配置文件] //获取帮助信息(外部命令)
列如 :
# man ls //查看ls命令的帮助信息
shell:可以看做是一个命令解释器(终端输入命令,shell进行解释并最终交给内核执行)
一部分基础功能的系统命令是直接内嵌在shell中的,系统加载启动之后会随着shell一起加载,常驻系统内存中。这部分命令被称为“内置命令”;相应的其他命令被称为外部命令。
# help [命令] //获取shell内置命令的信息
# 命令 --help //查看外部命令
列如 :
# help cd //查看cd命令的帮助信息
# type [命令] //查看命令的类型
列如 :
# type cd //查看cd命令的类型
# type useradd //查看useradd命令的类型
# man -f cd //查看cd命令的信息
# man 3tcl cd//查看3tcl里面的cd命令信息
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl + l | 清屏等同于clear ;彻底清屏 reset |
tab | 提示(防止敲错) |
上下键 | 查找执行过的命令 |
绝对路径:从根目录开始都显示出来
/
开头。例如/usr/local/mysql
相对路径:就是相对当前你所在路径开始算。例如你现在进入到usr目录下,然后你想到达mysql目录,你只需要local/mysql
# pwd //显示当前工作目录的绝对路径(print working directory)
# cd [参数] //切换路径(change directory)
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd | 返回自己的家目录 |
cd - | 回到上一次所在的目录 |
cd . . | 返回上一级目录 |
# ls [参数][目录或文件] //列出目录内容(list)
参数 | 功能 |
---|---|
-a | 全部的文件,连同隐藏文档(开头为.的文件) |
-l | 长数据串列出,包含文件的属性与权限等等数据;(等价于 ll ) |
# mkdir [选项] //建立目录(make directory)
参数 | 功能 |
---|---|
-p | 创建多层目录 |
举例:
# mkdir xinxin //建立一个名字为xinxin的目录
# mkdir xin1 xin2 //建立两个目录名字分别为xin1和xin2
# mkdir -p xin1/xin2 //创建多层目录,xin1目录包含xin2
# rmdir [选项] //要删除的空目录(remove directory),如果删除的目录下面包含目录或文件都会删除失败
参数 | 功能 |
---|---|
-p | 删除多层空目录 |
举例:
# rmdir xinxin //删除名字为xinxin的空目录
# rmdir xin1 xin2 //删除两个空目录名字分别为xin1和xin2
# rmdir -p xin1/xin2 //删除多层空目录,会先删除xin2,然后删除xin1
# touch 文件名称 //创建空文件
举例:
# touch /home/jjr/hello // 在/home/jjr文件夹下创建一个hello文件。前提是/home/jjr文件夹存在
# cp [选项] source dest //复制source到dest
选项 | 功能 |
---|---|
-r | 递归复制整个文件夹 |
举例:
# cp initial-setup-ks.cfg /home/jjr // 把initial-setup-ks.cfg文件复制到,/home/jjr目录下
# cp initial-setup-ks.cfg /home/jjr/hello // 把initial-setup-ks.cfg文件复制到hello文件,hello文件内容和initial-setup-ks.cfg一致
# cp -r xinxin/ /home/jjr/ // 把xinxin文件夹所有内容复制到/home/jjr/文件夹下
# rm [选项] 目录或文件名 //删除目录或者文件
选项 | 功能 |
---|---|
-r | 递归删除整个文件夹 |
-f | 强制删除,不提示确认 |
-v | 显示指令的详细执行过程 |
举例:
# rm -rf /* //千万别试,试试就逝世
# rm -rf ./* //删除当前目录下的所有文件
# rm /home/jjr/hello // 删除hello文件
# rm -r home //删除home文件夹
# mv 旧名字 新名字 //重命名
# mv 旧位置 新位置 //移动
举例:
# mv hello /home/jjr/ //把hello文件移到/home/jjr/目录下
# mv hello hello1 //把hello文件重命名为hello1
# cat [选项] 文件名 //查看文件内容(针对小文件)
选项 | 功能 |
---|---|
-n | 显示所有行的行号,包括空行 |
# more 文件名 //查看文件内容
选项 | 功能 |
---|---|
空格键 | 下一页 |
Enter | 下一行 |
f | 向下滚动一屏 |
b | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
q | 退出查看文件 |
和
more
命令相似,但是比more
功能强大,不同的是less
命令不是一次加载全部的内容,而是根据显示的内容去加载,大于很大的文件具有较高的效率
# less 文件名 //查看文件内容
选项 | 功能 |
---|---|
空格键 | 下一页 |
上移动键 | 上一页 |
下移动键 | 下一页 |
G | 直达底部 |
g | 直达头部 |
/ 【字串】 | 向下搜寻【字串】;n:向下查找;N:向上查找 |
?【字串】 | 向上搜寻【字串】;n:向下查找;N:向上查找 |
q | 退出查看文件 |
# echo [选项] 输出内容 //输出内容到控制台
-e 支持反斜线控制的字符转换
控制字符 | 功能 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是tab键 |
举例:
# echo hello zhangsan //控制台输出hello zhangsan,如果你要想增加字符之间的距离,那就加上双引号
# echo hello zhangsan //控制台换行输出hello zhangsan
# echo $USER //执行系统环境变量,如果不知道有什么环境变量,那就echo $ 按下Tab键就行了,就会提示出来所有的变量。
# ls -l > 文件 //将ls -l查看的内容写到文件中(覆盖写)
# ls -l >> 文件 //将ls -l查看内容追加到文件中
# cat 文件1 > 文件2 //将文件1的内容复制到文件2
# echo 内容 >> 文件 //将内容追加到文件中
-e 支持反斜线控制的字符转换
控制字符 | 功能 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是tab键 |
# head 文件 //显示文件头部10行信息
# head -n 5 文件 //显示文件头部5行信息,5行可以是任意行
参数 | 功能 |
---|---|
-n 行数 | 显示头几行的行数 |
# tail 文件 //显示文件尾部10行信息
# tail -n 5 文件 //显示文件尾部5行信息,5行可以是任意行
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
软连接和windows里的快捷方式类似
# ln -s [文件或者目录][软连接名] //给原文件创建一个软连接
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
# history -s [文件或者目录][软连接名] //查看已经执行过的历史命令
# date [参数][format] //显示当前时间
# date +%Y //当前年份
# date +%m //当前月份
# date +%d //显示当前是哪一天
# date "+%Y-%m-%d %H:%M:%S" //显示年月日时分秒
# date +%s //显示当前时间的时间戳 (从1970.01.01开始到当前时间)
参数 | 功能 |
---|---|
-n 行数 | 显示尾部几行的行数 |
-f | 显示文件最新追加内容,监视文件变化,退出监控 Ctrl + c |
# date -d "1 days ago" //显示前一天时间
# date -d "-1 days ago" //显示后一天时间
# date -s "字符串时间" //设置系统时间(格式为:%Y-%m-%d %H:%M:%S 例如:2017-03-18 12:34:22)
# cal [参数] //显示本月日历
参数 | 功能 |
---|---|
具体年数 | 显示这一年的日历 |
-y | 显示本年一年的日历 |
举例:
# cal -3 //前一个月,本月,下个月一起显示
# cal -m //周一开头
# useradd 用户名 //添加新用户
# passwd 用户名 //添加对应用户的密码
# id 用户名 //查看用用户信息
# cat /etc/passwd //查看创建了那些用户
# userdel 用户名 //删除用户
# userdel -r 用户名 //删除用户包括用户下的文件
# su 用户名 //切换用户(root用户切换不用输密码,普通用户切换需要输入密码)
# who am i //查看最外层会话是哪个用户(最外层会话就是指你初始登陆的那个 root)
# whoami //查看当前会话是哪个用户(当前会话就是指你现在使用的用户 xiaoming)
# sudo 命令 //设置普通用户具有root权限
使用root用户去修改 /etc/sudoers 文件,然后使用sudo就可以正常用了。
# groupadd 组名 //新增组
# groupmod -n 新组名 旧组名 //修改组名
# groupdel 组名 //删除组
# useradd -g 组名 用户名 //添加新用户到某个组
# usermod -g 组名 用户名 //修改用户的用户组
举例:
# usermod -g tongluowan shanji //修改shanji用户到tongluowan用户组
ls -l
或ll
命令每行列出的信息依次为:文件类型与权限 链接数 创建者 文件属组 文件大小用byte表示 建立或者最近修改的时间 文件名称
如果是文件的话:链接数指的是硬链接数。
如果是目录的话:链接数指的子文件夹个数。
(1)文件
r(read):代表可以读,查看。
w(write):可以修改,但是不代表可以删除该文件,想删除文件,必须对该文件所在的目录有写的权限,才能删除该文件。
e(execute):可以被系统执行。
(2)目录
r(read):可以读取,ls查看目录下的内容。
w(write):可以修改,可以在目录内新建和删除文件或重命名目录。
e(execute):可以进入目录
第一种
# chmod [u/g/o/a][+-=][rwx] 文件或目录 //改变权限
第二种
# chmod [421][421][421] 文件或目录 //改变权限 r=4,w=2,x=1,rwx=7
参数 | 功能(第一种参数的解释) |
---|---|
u/g/o/a | u代表user(创建这个文件人的权限),g代表group(同一组的权限),o代表other(其他用户的权限),a代表all(u,g,o) |
+ - = | +代表增加某个权限,-是减掉某个权限,=是设置权限等于啥 |
rwx | r可读,w可写,x可运行 |
第一种举例:
# chmod u=rw 文件或目录 //修改u的权限为rw
# chmod o+r 文件或目录 //o增加权限r
# chmod a-w 文件或目录 //a减掉权限w
第二种举例:
# chmod 751 文件或目录 //u的权限:rwx,g的权限:r-x,o的权限:--x
# chmod -R 777 目录 //修改目录及里面的所有文件(ugo)都修改为rwx(可读可写可执行)
# chown [选项][用户] 文件或目录 //改变文件或目录的所有者(u)
选项 | 功能 |
---|---|
-R | 递归操作 |
举例:
# chown jjr hello //改变hello的所有者为jjr用户
# chgrp [选项][用户] 文件或目录 //改变文件或目录的所有组(g)
举例:
# chgrp tongluowan hello //改变hello的所有组为tongluowan
# find [搜索范围][选项] //指的目录向下递归的遍历其各个子目录,显示在终端
选项 | 功能 |
---|---|
-name | 按照文件名查找 |
-user | 按照用户名查找 |
-size | 按照文件大小查找,b-块(512字节),c-字节,w-字(2字节),k-千字节,M-兆字节,G-吉字节 |
举例:
# find -name hello //查找文件名称为hello的目录
# find /root -size +10M //查找/root目录下文件大于10M的文件
由于
locate
命令是基于数据库进行查询,所以第一次运行期,必须使用updatedb
命令创建locate数据库
# locate 搜索文件 //搜索文件
管道符,‘|’,表示将前一个命令的处理结果输出传递给后面的命令处理
# grep [选项][查找的内容][源文件] //过滤查找
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
举例:
# grep -n boot initial-setup-ks.cfg //在initial-setup-ks.cfg文件查找boot字符串,并显示行号
ls | grep .cfg //查找后缀名为.cfg的文件
- 只能压缩文件不能压缩目录
- 不保留原有文件
- 多个文件会产生多个压缩包
# gzip 文件名 //压缩文件,只能将文件压缩为 *.gz文件
# gunzip 文件.gz //解压文件命令
# zip [选项] XXX.zip 压缩的内容 //压缩文件和目录
# unzip [选项] XXX.zip //解压缩文件
zip 选项 | 功能 |
---|---|
-r | 压缩目录 |
unzip 选项 | 功能 |
---|---|
-d | 解压后存放到那个目录 |
# tar [选项] XXX.tar.zip 打包的内容 //打包目录,文件格式为 *.tar.zip
选项 | 功能 |
---|---|
-c | 产生 .tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包 .tar文件 |
-C | 解压到指定文件夹 |
举例:
# tar -zcvf mytar.tar.zip tar -zcvf mytar.tar.zip initial-setup-ks.cfg hello xinxin/ //将initial-setup-ks.cfg和hello文件和xinxin目录一起打包压缩成 mytar.tar.zip文件
# du [选项] 目录/文件 //查看目录下每个目录和文件的磁盘使用情况(dist usage)
选项 | 功能 |
---|---|
-h | 容易阅读的GBytes,MBytes,KBytes等格式自行显示 |
-a | 不仅查看子目录大小,还包括文件 |
-c | 显示所有文件和子目录大小,显示总和 |
-s | 只显示总和 |
- - man-depth=n | 指定统计子目录的深度为第 n 层 (- -max-depth=1(只显示该目录下一级子目录)) |
# df [选项] //查看磁盘空间使用情况(dist free)
选项 | 功能 |
---|---|
-h | 容易阅读的GBytes,MBytes,KBytes等格式自行显示 |
# lsblk [选项] //查看设备挂载情况
选项 | 功能 |
---|---|
-f | 查看详细的设备挂载情况,显示文件系统信息 |
# mount [options][device][dir] //挂载设备
# umount 设备文件名或挂载点 //卸载设备
选项 | 功能 |
---|---|
options | 主要用来描述设备或档案的挂接方式。 loop:用来把一个文件当成硬盘分区挂接上系统; ro:采用只读方式挂接设备; rw:采用读写方式挂接设备; |
device | 要挂接的设备 |
dir | 设备在系统上的挂接点(目录名) |
# vim /etc/fstab //打开设置开机自动挂载文件
在root用户下才能使用
# fdisk -l //查看磁盘分区详情
# fdisk 硬盘设备名 //对新增硬盘进行分区操作 (/dev/ 都在这个目录下)最多有16个分区
# ps aux | grep xxx //查看系统中所有进程(process status)
# ps -ef | grep xxx //可以查看子父进程之间的关系
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
ps aux
显示信息说明(想查看进程的CPU占用率和内存占用率,可以使用aux)
USER:那个用户产生。
PID:进程的ID号。
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源。
%MEM:该进程占物理内存的百分比,占用越高,进程越耗费资源。
VSZ:该进程占用虚拟内存的大小,单位KB。
RSS:该进程占用实际物理内存的大小,单位KB。
TTY:该进程是在那个终端运行的。 对于CentOS来说 ,? 代表没有终端,tty1 是图形化终端,tty2-tty6 是本地的字符界面终端,pts0-pts255代表虚拟终端。
STAT:进程状态。 R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示、<:优先级比较高、N:优先级比较低。
START:该进程的启动时间。
TIME:该进程占用CPU的运算时间,注意不是系统时间。
COMMAND:产生此进程的命令名。
ps -ef
显示信息说明(想看父进程的PID可以使用-ef)
# kill [选项] 进程号 //通过进程号杀死进程
# killall 进程名称 //通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用(谨慎使用)
选项 | 功能 |
---|---|
-9 | 强制进程立马停止 |
# pstree [选项] //查看进程树
# yum install pstree //安装pstree命令(pstree要是能使用就不用安装了)
选项 | 功能 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
# top [选项] //实时监控系统进程状态
选项 | 功能 |
---|---|
-d 秒数 | top隔几秒更新。默认是3秒在top命令的交互模式当中可以执行命令 |
-i | 不显示任何闲置和僵尸进程 |
-p | 通过指定进程ID来监控某个进程的状态 |
# netstat -anp | grep 进程号 //查看该进程网络信息
# netstat -nlp | grep 端口号 //查看网络端口号占用情况
选项 | 功能 |
---|---|
-a | 显示所有正在监听和未监听的套接字 |
-n | 拒绝显示别名,能显示数字的全部转化为数字 |
-l | 仅列出在监听的服务状态 |
-p | 显示那个进程在调用 |
# crontab [选项] //定时任务设置
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有crontab任务 |
参数 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时中的第几分钟 | 0-59 |
第二个 * | 一天中的第几个小时 | 0-23 |
第三个 * | 一个月中的第几天 | 1-31 |
第四个 * | 一年中的第几个月 | 1-12 |
第五个 * | 一周中的星期几 | 0-7 (0和7都代表星期天) |
* | 代表任何时间 | 比如第一个X改为*(就是一小时中每分钟都执行) |
, | 代表不连续时间 | 比如:0 8,12,16 * * * (每天8,12,16点都执行一次命令) |
- | 代表连续的时间 | 比如:0 5 * * 1-6(周一到周六凌晨5点0分执行命令) |
*/n | 代表每隔多久执行一次 | 比如:*/10 * * * *(代表每隔十分钟就执行一次) |
# crontab -e //会打开vim编辑器
* * * * * 执行的任务
*/n * * * * echo "hello,world" >> xinxin //每隔一分钟就把hello,world写进xinxin文件
安装的时候会有依赖关系,你下载下来可能依赖于别的软件,你还得再去下载依赖的软件,所以不是很方便。
# rpm -qa //查询所安装的所有rpm软件包
# rpm -qa | grep XXX //查询包含XXX的的rpm软件包
# rpm -e 软件包 //卸载软件包
# rpm -e --nodeps 软件包 //不考虑依赖关系卸载软件包
# rpm -ivh RPM包全包 //安装软件包 -i安装,-v显示详细信息,-h显示进度条
# rpm -ivh --nodeps RPM包全包 //安装前不检查依赖 -i安装,-v显示详细信息,-h显示进度条
基于RPM,可以自动处理依赖关系(类似于maven)。
# yum [选项][参数] 软件包名 //操作软件包
选项 | 功能 |
---|---|
-y | 对所有问题都回答yes |
参数 | 功能 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查更新rpm软件包 |
remove | 删除指定rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |