Linux工作中常用命令总结
一、基本认识
Linux 最初是由芬兰赫尔辛基大学学生Linux Torvalds 由于自己不满意教学中使用的MINIX操作系统,与1990年底由于个人爱好 设计出了Linunx 系统核心。后来发布于芬兰最大ftp 服务器。
在 Linux 世界里,一切皆文件
二、Vim编辑器三种模式转化
输入 vim 文件名字 进入一般模式
按下 i进入编辑模式
按下ESC 从编辑模式退出到一般模式
在一般模式下输入:或者/进入到命令模式
命令模式下常见指令
:w 将编辑的数据写入硬盘档案中
:w!强制写入
:q 离开vi
:q! 强制离开vi 不储存
:wq 储存后离开
:wq!强制储存后离开
**:set nu查看行号**
1)拷贝当前行 yy ,拷贝当前行向下5行 5yy,并粘贴(p)
2)删除当前行 dd, 删除当前行向下的5行 5dd
3)在文件中查找某个单词【命令行下 /关键字, 回车 查找,输入n就是查找下一个】,查询hello
4)设置文件的行号,取消文件的行号**.[命令行下 : set nu 和 :set nonu]**
5) 编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。
6) 在一个文件中输入 “hello” ,然后又撤销这个动作,再正常模式下输入 u
7) 编辑 /etc/profile 文件,并将光标移动到 第 20 行 shift+g
第一步:显示行号 :set nu 第二步:输入 20 这个数第三步: 输入 shift+g
三、开机关机重启
关机重启命令:
shutdown
shutdown -h now : 表示立即关机
shutdown -h 1 : 表示 1 分钟后关机
shutdown -r now: 立即重启
halt就是直接使用,效果等价于关机
reboot
就是重启系统。
syn:把内存的数据同步到磁盘
注意:当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失
pwd (功能描述:显示当前工作目录的绝对路径
ls:
查看文件夹所包含的目录
ls-l
ls-al
cd
[参数] (功能描述:切换到指定目录)
cd ~ 或者 cd :回到自己的家目录
cd ..表示回到当前目录的上一级目录
**mkdir:**
指令用于创建目录(make directory)**
基本语法
mkdir [选项] 要创建的目录
常用选项
-p :创建多级目录
案例 1:创建一个目录 /home/dog
mkdir /home/dog 表示在home 目录下创建dog目录
案例 2:创建多级目录 /home/animal/tiger
mkdir -p /home/animal/tiger
**rmdir:**
指令删除空目录
基本语法:
rmdir [选项] 要删除的空目录
案例 1:删除一个目录 /home/dog
rmdir /home/dog
注意:rmdir 删除的是空目录,如果目录下有内容时无法删除的
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录
rm -rf /home/dog
**touch:**
指令创建空文件
基本语法:
touch 文件名称
案例 1: 创建一个空文件 hello.txt
touch hello.txt
**cp 指令[重要]**
cp 指令拷贝文件到指定目录
• 基本语法
cp [选项] source dest
• 常用选项
-r :递归复制整个文件夹
案例 1: 将 /home/aaa.txt 拷贝到 /home/bbb 目录下[拷贝单个文件]
cp aaa.txt bbb/ 将当前目录下aaa.txt拷贝到当前目录的bbb这个目录下
案例 2: 递归复制整个文件夹,举例将/home/test 整个目录拷贝到 /home/zwj 目录
cp -r test/ zwj/
一定要注意你当前的目录位置 并 准确定位源目录和目标目录
**rm 指令**
rm 指令移除【删除】文件或目录
• 基本语法
rm [选项] 要删除的文件或目录
• 常用选项
-r :递归删除整个文件夹
-f : 强制删除不提示
案例 1: 将 /home/aaa.txt 删除
rm aaa.txt
案例 2: 递归删除整个文件夹 /home/bbb
rm -rf bbb/
**mv 指令**
mv 移动文件与目录或重命名
基本语法
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)
案例一:将 /home/aaa.txt 文件 重新命名为 pig.txt
mv aaa.txt pig.txt
案例 2:将 /home/pig.txt 文件 移动到 /root 目录下
mv pig.txt /root/
**cat 指令**
cat 查看文件内容,是以只读的方式打开。
•基本语法
cat [选项] 要查看的文件
•常用选项
-n :显示行号
案例 1: /etc/profile 文件内容,并显示行号
cat -n /etc/profile |more
**more 指令**
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键,详见操作说明
•基本语法
more 要查看的文件
•操作说明
•应用实例
案例: 采用 more 查看文件 /etc/profile
more /etc/profile
**less 指令**
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
•基本语法
less 要查看的文件
•操作说明
•应用实例
案例: 采用 less 查看一个大文件文件 /opt/金庸-射雕英雄传 txt 精校版.txt
less 金庸-射雕英雄传 txt 精校版.txt
案例2:ps 查看进程信息并通过分页显示
ps-ef|less
案例3:浏览多个文件
Less log2013.log log1014.log
注意:
【pageup】【pagedown】前后翻页
**date 指令-显示当前日期**
• 基本语法
1) date (功能描述:显示当前时间)
2) date +%Y(功能描述:显示当前年份)
3) date +%m (功能描述:显示当前月份)
4) date +%d 功能描述:显示当前是哪一天
5)date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
**date 指令-设置日期**
•基本语法
date -s 字符串时间
•应用实例
案例 1: 设置系统当前时间 , 比如设置成 2018-10-10 11:22:22
date -s "2018-10-10 11:22:22"
查看日历指令
• 基本语法
cal [选项] (功能描述:不加选项,显示本月日历)
• 应用实例
案例 1: 显示当前日历
cal
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
•基本语法
find [搜索范围] [选项]
•选项说明
-name 按照指定文件名查找文件
-user 查找属于指定用户的文件
-size 按照指定的文件大小
案例 1: 按文件名:根据名称查找/home 目录下的 hello.txt 文件
find /home -name hello.txt
案例 2:按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
find /opt -user nobody
案例 3:查找整个 linux 系统下大于 20m 的文件(+n 大于 -n 小于 n 等于)
find -size +20M
**grep 指令和 管道符号 |**
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
•基本语法
grep [选项] 查找内容 源文件
-n 显示匹配行及行号
-i 忽略字母大小写
案例 1: 请在 hello.txt 文件中,查找 "yes" 所在行,并且显示行号
cat hello.txt | grep -n yes
**压缩和解压类**
gzip/gunzip 指令
gzip 用于压缩文件, gunzip 用于解压的
•基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文 件.gz (功能描述:解压缩文件命令)
案例 1: gzip 压缩, 将 /home 下的 hello.txt 文件进行压缩
进入home目录下 gzip hello.txt
案例 2: gunzip 压缩, 将 /home 下的 hello.txt.gz 文件进行解压缩
gunzip hello.txt.gz
细节说明
当我们使用 gzip 对文件进行压缩后,不会保留原来的文件
**tar 指令**
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件
•基本语法
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
•选项说明
-c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压 .tar文件
案例 1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.tx压缩成a.tar.gz
tar -zcvf a.tar.gz a1.txt a2.txt
案例 2: 将/home 的文件夹 压缩成 myhome.tar.gz
tar zcvf myhome.tar.gz /home/
案 例 3 将 myhome.tar.gz 解压到 /opt/ 目录下
tar -zxvf myhome.tar.gz -C /opt/
指定解压到的那个目录,事先要存在才能成功,否则会报错
**进程指令 ps**
案例一:以全格式显示当前所有的进程,查看进程的父进程
• -e 显示所有进程。-f 全格式。
***ps -ef | more***
• UID:用户 ID
• PID:进程 ID
• PPID:父进程 ID
• C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
• STIME:进程启动的时间
• TTY:完整的终端名称
• TIME:CPU 时间
• CMD:启动进程所用的命令和参数
案例2:查看tomcat 进程
ps -ef | grep tomcat
kill [选项] 进程号(功能描述:通过进程号杀死进程)
kill -9 PID qinzgi
查看当前防火墙的状况,关闭防火墙和重启防火墙。
service iptables status
service iptables stop
service iptables start
**echo指令**
功能:输出内容到控制台
基本语法: echo [选项] [输出内容]
案例:
输出环境变量: echo $path
> 指令和> > 指令
>输出重定向:会将原来的文件内容覆盖掉
> > 追加:不会覆盖原来的文件内容,而是追加到文件尾部
基本语法:
ls -l > 文件(列表内容写入到文件a.txt)
ls -l > > 文件(列表内容追加到文件a.txt)
cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
案例: cat /etc/profile > c.txt
将 /home 目录下的文件列表写入到 /home/info.txt
ls -l /home/ > /home/info.txt
history
查看近期 执行过的指令
history 10: 查看近期执行过的10条指令
执行shell脚本的几种方式
案例: shell文件在此目录 /data/shell/hello.sh
方法1:切换到shell脚本所在目录
./hello.sh
方法2:直接使用bash 或者sh 来执行bash shell脚本
sh hello.sh或者bash hello.sh
方法3:以绝对路径的方式去执行 bash shell脚本
/data/shell/hello.sh
方式4:
在当前的shell环境中执行bash shell脚本:
cd /datd/shell
. hello.sh
或者:
cd /datd/shell
source hello.sh
更改权限:
第一种方式:通过数字变更权限
规则:r=4 w=2 x=1 ,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名相当于
chmod 751 文件目录名
chmod 755 /home/abc.txt
chmod 777 /home/abc.txt
第二种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
案例:
1) 给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权
chomd u=rwx,g=rx,o=rx abc
2)给abc 文件的所有者除去执行的权限,增加组写的权限
chomd u-x,g+w abc
3)给abc 文件的所有用户添加读的权限
chomd a+r abc
权限介绍:
rwx
r:代表可读 可以读取查看
w:可以修改
x:可以被执行
文件以及目录权限案例:
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么
第一个字符代表文件类型: 文件 (-),目录(d),链接(l)
**其余字符每 3 个一组**(rwx) 读(r) 写(w) 执行(x)
第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7
1 文件:硬连接数或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示 4096 字节
Feb 2 09:39 最后修改日期
abc 文件名
用户管理和组管理
在Linux 中的每个用户必须属于一个组,不能独立于组外。
Linux中每个文件有所有者、所在组、其他组的概念
**谁创建了该文件,谁就自然成为该文件的所有者 这个文件的所在组就是该用户所在的组**
所有者
所在组
其他组
改变用户所在组
案例:
创建一个组police,再创建一个用户Tom,将tom 放在police组
groupadd police
useradd -g police tom
passwd tom##更改tom用户密码
查看文件所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
案例:请将 /home/kkk 目录下所有的文件和目录的所有者都修改成 tom
chown -R Tom kkk/
修改文件所在的组
chgrp 组名 文件名
改变用户所在组
usermod -g 组名 用户名
**Yum**
是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
Yum 的基本指令:
•查询 yum 服务器是否有需要安装的软件
yum list|grep xx 软件列表
案例:请使用 yum 的方式来安装 firefox
1)查看
yum list|grep firefox
2) 安装
yum install firefox
详细介绍请看另一篇博文:
https://blog.csdn.net/shassd/article/details/109897413