linux常用命令整理 文件目录时间日期解压压缩组用户权限………………

Linux介绍

Linux是一款开源的操作系统,免费,开源,安全,高效,处理高并发非常强悍,很多企业级开发项目都部署在Linux/UNIX上。
创始人:Linus Torvalds  林纳斯
Linux吉祥物:企鹅------tux
Linux主要发行版:
CentOS、Redhat、Ubuntu、Suse、红旗Linux
目前主要操作系统
windows、android、车载系统、MacOS、iOS、Linux、unix
安装
VMvare
ContOS
虚拟机的网络连接三种形式说明
桥街模式
好处:Linux可以和其他系统通信
弊端:可能造成ip地址冲突
NAT模式
网络地址转换方式:Linux可以访问外网,不会造成ip地址冲突
仅主机模式
你的虚拟机是一个独立的主机,不能访问外网
终端使用和联网
终端
点击鼠标右键,即可选择打开
联网
linux目录结构
/根目录
/opt 一些大型软件安装目录,或一些服务程序的安装目录
/usr/local 自己安装软件的目录,相当于win的programefiles
/etc 存放所有系统管理所需要的配置文件和子目录
/dev 管理外部设备(硬件映射为文件)
/lib 系统最基本的动态连接共享库类似于winDDL文件
/lost+found  一般是空的,非法关机后  会出现一些文件
/media 自动识别一些设备如U盘等,识别后会将设备挂载到这个目录
/mnt 用户挂载别的文件系统,将光驱挂载上去,就可以在/mnt/上查看光驱文件内容了
/proc 虚拟目录,系统内存的映射,访问这个目录来获取系统信息
/sbin 系统管理员的系统管理程序
/srv 服务器启动后需要重启的数据
/sys 2.6内核很大的变化,安装了2.6内核中新出现的文件系统sysfs
/tmp 临时文件
/usr/bin 系统用户使用的应用程序
/usr/sbin 超级用户数使用的比较高级的管理程序和系统守护程序
usr/src 内核源代码默认放置目录
/var 存放不断扩充的东西,习惯将经常被修改的目录放在这里,包括各种日志文件
/bin 常用的指令
/home 用户主目录(每个用户都会有自己的目录,一般以用户账号命名)
/root 系统管理员  超级权限用户的主目录
/boot 启动Linux的核心文件,包括一些连接文件和镜像文件
/run 临时文件系统,存储系统启动以来的信息,重启时被删除或清除

虚拟机的克隆
如果 以及安装了一台Linux 操作系统,如果还需要更多,没必要重新安装,只需要克隆已有的就可以。

方式一,直接拷贝一份安装好的虚拟机文件
方式二,使用vmvare的克隆操作注意,克隆时,需要先关闭Linux操作系统
虚拟机快照
如果在使用虚拟机系统时(比如Linux),你想回到 原先的某一个状态,也就是说你担心可能有些误操作造成的系统异常,需要回到原先的某种正常运行的状态,vmvare也提供了这样一个功能,就叫快照管理。
安装vmtools
vmtools安装后,可以让我们在windows下更好的管理vm虚拟机
可以设置windows和centos的共享文件夹
安装过程:
进入centos
点击vm菜单虚拟机的install vmware tools
centos会出现一个vm的安装包,xx.tar.gz
拷贝到/opt
使用解压命令tar,得到一个安装文件
cd /opt/
tar -zxvf xx.tar.gz
回车
进入该vm解压目录,/opt目录下
cd vm.....tools....../
安装./vmware-install.pl
全部使用默认设置即可,就可以安装成功
注意:安装 vmtools需要有gcc
vi和vim
vi内建的 文本编辑器
vim具有程序编辑功能,可以看作是增强版的vi
三种常用的模式
正常模式(常用模式,一般模式)
以vim打开一个档案就直接进入了这一模式了,在这个模式中,可以使用快捷键,可以使用上下左右按键来移动光标,可以使用删除字符和 删除整行来处理档案内容,也可以使用复制粘贴来处理文件数据
插入模式(编辑模式)
按下i,I,o,O,a,A,r,R可以进入,在这个模式下,可以编辑内容
按:进入命令行模式
命令行模式
提供你的相关指令,完成读取、存盘、替换、离开、vim、显示行号等动作
先按esc回到一般模式,在输入:,可进入命令行模式
输入wq,保存退出
q退出
q! 强制退出且不保存

快捷键练习:

(一般模式下)拷贝当前行  yy;拷贝当前行向下的5行   5yy;粘贴(输入p);
删除当前行 dd;  删除当前行向下的5行  5dd;
在文件中查找某个单词[命令模式下输入/关键字,回车查找,输入n就是查找下一个]
设置文件行号:[命令模式下输入:set nu和:set nonu]
定位到文件的首行和末行[首行  gg 末行  G]
文件中输入“Hello”,要撤销这个动作  在一般模式下输入 u;
将光标移动到10行    先输入10 然后按shift+g

磁盘分区挂载

分区:
1、 Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
2、 Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目 录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一 个目录下获得。
(1) mbr分区:
①最多支持四个主分区
②系统只能安装在主分区
③扩展分区要占一个主分区
④MBR最大只支持2TB,但拥有最好的兼容性
(2) gtp分区:
① 支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
② 最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
③ windows7 64位以后支持gtp
1、 Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
2、 对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属 盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就 是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为 第二个IDE硬盘上的第二个主分区或扩展分区。
3、 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余 则和IDE硬盘的表示方法一样。
查看磁盘状态,命令:
fdisk -l

linux分区
1、查看系统的分区和挂载情况 ,命令 :
lsblk 或者 lsblk -f

2、如何增加一块硬盘

  1. 虚拟机添加硬盘

2)分区
分区命令
fdisk /dev/sdb

开始对/sdb分区
• m 显示命令列表
• p 显示磁盘分区 同 fdisk –l
• n 新增分区
• d 删除分区
• w 写入并退出 说明: 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区。两次回车默认剩 余全部空间。最后输入w写入分区并退出,若不保存退出输入q。

  1. 格式化
    格式化磁盘 分区命令:
    mkfs -t ext4 /dev/sdb1
    其中ext4是分区类型

  2. 挂载
    挂载: 将一个分区与一个目录联系起来,
    • mount 设备名称 挂载目录
    • 例如: mount /dev/sdb1 /newdisk
    • umount 设备名称 或者 挂载目录
    • 例如: umount /dev/sdb1 或者 umount /newdisk 虚拟机增加硬盘步骤

  3. 设置可以自动挂载 (永久挂载)
    通过修改/etc/fstab实现挂载 添加完成后 执行mount –a 即刻生效 • 用命令行挂载重启后会失效

磁盘情况查询
基本语法:
df -hl

2、把/dev/sdb1在/home/newdisk下的挂载给清除掉
第一种方式:umount   /dev/sdb1  /home/newdisk

第二种方式:
umount /home/newdisk

3、查询指定目录的磁盘占用情况
基本语法 du -h
-s 指定目录大小汇总
-h带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值

统计/home文件夹下文件的个数

ls -l /home | grep "^-" | wc -l

^是定位符  -  开头的是文件  wc是统计

统计/home文件夹下目录的个数

ls -l /home | grep "^d" | wc -l

^是定位符  d开头的是文件"^-"   wc 是统计

统计/home文件夹下包括子文件夹里的文件

ls -lR /home |grep "^-" | wc -l

R是递归的扫描

统计/home文件夹下包括子文件夹里的目录

ls -lR /home |grep "^d" | wc -l

以树状形式显示目录结构

tree

此时发现tree指令不存在,我们可以通过yum指令去安装 即

yum install tree

此时我们就可以运用tree指令去显示目录结构

关机重启注销登录

关机重启
shutdown -h now 立刻进行关机
shutdown -h 1  1分钟后关机
shutdown -r now 现在重启计算机
halt   关机
reboot   现在重启计算机
sync  把内存的数据同步到磁盘

细节
不管重启系统还是关闭系统,首先要执行sync命令,把内存数据写入到磁盘中
目前shutdown/reboot/halt等命令已经在关机之前进行了sync,,但小心驶得万年船
登录注销
登录时尽量少用root账号登录,因为他是系统管理员,超级用户,最大权限,避免操作失误,可以利用普通用户登录,登录后在使用“su-用户名”命令来切换成系统管理员身份
在提示符下输入logout即可注销用户
logout注销指令在图形运行级别无效,在运行级别3下有效

用户管理 运行级别 帮助指令

linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
基本语法

添加用户     useradd 用户名
设置密码   passwd  用户名
回车
输入密码
确认密码
当创建一个用户后,会自动的创建和用户同名的家目录
每个用户都有自己的家目录,默认在 /home文件夹下
也可以通过“useradd -d  指定目录  新的用户名”,给新创建的用户指定家目录
删除用户    userdel   用户名
删除用户,但保留家目录   userdel  用户名
删除用户及家目录    userdel -r 用户名
查询用户信息指令    id  用户名
切换用户    su  -   用户名
高权限用户切换到低权限用户不需要输入密码
查看第一次登录到系统的用户信息      who  am  i
用户组
类似于角色,系统可以对有共性/相同权限的多个用户进行统一管理
新增组     groupadd   组名
删除组     groupdel    组名
添加用户时直接加上组    useradd   -g  组名   用户名
修改用户的组     usermod   -g   组名   用户名
用户和组相关的文件
/etc/passwd文件
用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号(uid):组标识号(gid):注释性描述:主目录(家目录):登录的Shell
/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
指定运行级别
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
切换运行级别命令:  init  运行级别     (如:init  3  切换到运行级别3)
查看当前运行级别:  systemctl get-default
切换默认运行级别:     systemctl   set-default   要切换的运行级别
帮助指令
man 获得帮助信息
基本语法:man [命令或配置文件](功能描述:获得帮助信息)
案例:查看ls命令的帮助信息   man  ls
获得内置命令的帮助信息

文件目录类

指令的选项可以同时使用  如ls -la或ls -al
pwd   显示当前绝对路径
ls       查看当前路径下的文件
-a   显示当前目录所以文件和目录,包括隐藏的
-l   以列表的形式显示
cd     绝对路径或相对路径(功能描述:切换到指定目录)
cd ~ 或者cd   回到自己的家目录
cd ..回到当前目录的上一级目录
例:  cd ../文件夹名  先回到上一级 ,在进入这个文件夹
mkdir  (路径/)目录名    用于创建目录
-p  用于创建多级目录
例: 创建在home目录下创建wang目录,并在wang目录下创建jie目录
mkdir  /home/wang/jie -p
rmdir   目录名    删除空目录(如果目录下有内容是无法删除的)
rm -rf  (路径/)目录名  可删除目录下有内容的目录
touch  文件名称     创建空文件
例   touch  hello.txt   创建一个hello.txt空文件
touch   文件1  文件2 ........   创建多个空文件
cp   要拷贝的文件    拷贝到的指定目录  (拷贝文件到指定目录(\cp  强制覆盖))
-r  递归拷贝
将/home/test/目录及目录下的所以文件拷贝到/home/z/目录下
cp -r  /home/test/    /home/z/
rm  要删除的文件或目录 (删除目录或文件)
-r  递归删除整个文件夹
-f   强制删除不提示
mv   参数1   参数2
当mv命令中的第二个参数类型(目标)是文件时,实现重命名源文件或目录的功能,记住这里源文件或目录只能有一个,因为如果有多个时,会存在命名冲突的问题 。
当mv命令中的第二个参数类型(目标)是目录时,实现的是移动源文件和目录的功能,这里源文件或目录可以有多个,mv命令会将源文件或目录移动到目标目录下。
-b   覆盖之前先备份
-f  强制覆盖
-i   覆盖时询问
-u   当原文件是最新更新时,才可以覆盖目标文件

-t   当有多个原文件时,使用这种方法。但目标文件在前,原文件在后  空格隔开
cat   要查看的文件      查看文件内容
-n  显示行号
|   more   分页显示
空格  向下翻页
Enter   向下一行
q   立刻离开more
Ctrl+F   向下滚动一屏
Ctrl+B  返回上一屏
=      输出当前行的行号
:f    输出文件名和当前行的行号
less   文件名     分页查看文件内容(比more强大,并不是将整个文件加载后显示,而是根据显示需要加载内容,对于大文件显示具有较高的效率)
空格    下翻一页
pagedown     下翻一页
pageup        上翻一页
/字串       向下搜寻字串的内容;n:向下查找  N:向上查找
?字串    向上搜寻字串内容   n:向上查找  N:向下查找
q   离开less

输出重定向    >>追加
没有目标文件便创建
ls -l   >  文件      列表的内容写入文件(覆盖写入)
ls -l  >>  文件     列表内容追加到文件末尾
cat  文件1  >  文件2     将1的内容覆盖到2
echo "内容"  >>  文件   将""中内容追加到文件 (>时覆盖)
cal  >>  文件      将日历追加到文件(>覆盖)
echo  输出内容到控制台
echo  $PATH    输出环境变量
echo   "内容"    输出内容
head   文件     显示文件开头内容   默认显示文件前十行内容
-n  5   显示前五行    5可以是任意数字  显示前任意行
tail   文件     显示文案金尾部内容    默认显示后十行内容
-n  5    显示后五行    5可以任意数   显示后任意行
-f         实时追踪该文档所以更新   (经常使用)
ln  软链接
ln    -s   要链接的目录  软链接名(路径没变  但内容指向到了要链接的目录)
rm  -rf  软连接名  删除软连接(软连接名后不要加/)
使用pwd查看时  依然时软连接所在目录
history     查看已经执行过的指令
history  n    显示最近执行过的n个指令
history后输入 !n   将历史编号为n的指令执行一遍
例:   history   3  显示最近执行过的3个指令

搜索查找类

find [搜索范围(路径)] [选项]
-name  按照指定文件名查找
find  /home/  -name  hello.txt(/home/下查找名为hello.txt的文件)(文件名改为*为查找全部)
-user  按拥有着查询
find /etc/  -user  perwrj(拥有者用户名)  (查找/etc/下拥有者为perwrj的文件)
-size   按照大小查找
find  /home/   -size  +20M   (查找/home/下大于20m的文件  +n大于  -n小于  n等于)
locate  搜索的文件
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb
先执行updatedb   创建locate数据库(默认情况下 updatedb 每天执行一次。)
locate passwd(查找 passwd 文件)
locate /etc/sh(搜索 etc 目录下所有以 sh 开头的文件)
locate -i ~/r(忽略大小写搜索当前用户目录下所有以 r 开头的文件)
管道符  "|"   (表示将前一个命令的处理结果输出传递给后面的命令处理)
grep        过滤查找(查找文件里符合条件的字符串)
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep test *file (在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。)
grep -r update /etc/acpi (查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容)
grep -v test test(反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行)
-a 或 --text : 不要忽略二进制的数据。
-A

解压压缩类

gzip  文件名    (压缩文件,只能将文件压缩为*.gz的文件)(压缩后不会保留源文件)
gunzip  文件.gz   (解压缩文件命令)
zip   [选项]   xxx.zip   将要压缩的文件或目录     (压缩文件和目录的命令)
-r   递归压缩,即压缩目录
unzip   [选项]  xxx.zip  (解压缩文件)
-d  要解压到的目录       (指定压缩后文件存放目录)
tar指令  打包指令  (最后打包出来的文件是.tar.gz的文件)
tar  [选项]  xxx.tar.gz     打包的内容  (打包目录,压缩后的文件格式为.tar.gz)
要打包压缩多个问文件  文件之间用空格隔开

-C   指定解压目录   (tar   -zxvf   要解压的文件    -C   要解压到的目录)(要解压到的目录必须是存在的)
-c    产生.tar打包文件
-v   显示详细信息
-f    指定压缩后的文件名
-z    打包同时压缩
-x    解压.tar文件

时间日期类

date   显示当前时间
date   +%Y   显示当前年份
date   +%m   显示当前月份
date   +%d    显示当前是那一天
date   "+%Y-%m-%d %H:%M:%S"  显示年月日时分秒
date -s  "时间"(如"2020-11-11 11:22:11") 设置当前时间
cal  显示本月日历
cal   年份    显示某年份一整年的日历

组和权限管理


在Linux中每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念。
查看文件所有者
ls   -ahl
修改文件所有者
chown   用户名    文件名
组的创建
groupadd   组名
创建用户并放入一个组
useradd  -g   组名   用户名
用户创建文件文件目录类指令.note后  文件所在组为用户所在组
修改文件所在组
chgrp   组名   文件名
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
usermod   -g   组名   用户名
usermod    -d   目录名   用户名   (改变这个用户登录的初始目录)
查看用户信息
id  用户名
权限
-rw-r--r--. 1 root   root    6   3月    18  19:24    ok.txt
-rw-r--r--.
文件的类型(第1个):

  • 普通文件
    d  目录
    l   软链接
    c   字符设备(鼠标、键盘等)
    b  块文件,硬盘
    文件所有者拥有的权限(第234个):
    文件所在组的用户拥有的权限(第567个)
    文件其他组用户拥有的权限(第8910个)
    作用到文件
  • 无权限
    r    读取,查看
    w   写,可以修改 不一定能删除(删除必须对文件所在目录有写的权限)
    x   执行
    作用到目录
  • 无权限
    r    可读取,ls查看目录内容
    w    可写,可修改,目录内创建+删除+重命名目录
    x    可执行,可进入该目录
    权限可以用数字表示(r = 4,w = 2, x = 1,因此rwx = 4 + 2 + 1 = 7)
    1
    (如果是文件,表示硬链接数,如果是目录,则表示此目录的子目录个数)
    第一个root
    文件所有者
    第二个root
    文件所在组
    6
    文件的大小为6字节(如果是目录显示4096)
    3月    18  19:24
    文件最后的修改时间
    ok.txt
    文件名
    权限的管理
    通过chmod指令,可以修改文件或目录的权限
    第一种方式:+、-、=变更权限
    u:所有者  g:所有组  o:其他人  a:所有人(u、g、o的总和)
    chmod  u=rwx,g=rx,o=x   文件名
    chmod   0+w  文件名
    chmod  a-x   文件名
    第二种方式:通过数字变更权限
    r=4 w=2 x=1  rwx =4+2+1=7
    chmod  u=rwx,g=rx,o=x    文件名   相当于    chmod   751   文件名
    修改文件所有者
    chmod   新所有者   文件名
    chmod   新所有者:新所在组     文件名
    -R  如果是目录,则使其下所有子文件和目录递归生效(所有 直接和间接)
    修改文件所在组
    chgrp   新所在组   文件名
    -R  如果是目录,则使其下所有子文件和目录递归生效(所有 直接和间接)
任务调度

crond  任务调度
crontab 进行 定时任务的设置
概述
任务调度:是指系统在某时间执行特定的命令或程序
任务调度分类:
1、系统工作:有些特定的工作需要周而复始的执行。如病毒扫描等
2、个别用户工作:个别用户可能希望执行某些程序,比如对mysql的数据库备份。
基本语法
crontab  [选项]
常用选项:
-e   编辑crontab定时任务
-l    查询crontab任务
-r    删除当前用户所有的crontab任务
快速入门:
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab  -e命令。
-r   终止任务调度
-l   列出当前有哪些任务调度
service   crond   restart   [重启任务调度]
接着输入任务到调度文件。
如/1ls -l  /etc/>/tmp/to.txt
意思是每小时的每分钟执行ls -l /etc/>/tmp/to.txt命令
占位符说明:
第一个 :一小时中的第几分钟   范围:0~59
第二个: 一天中的第几小时     0~23
第三个: 一月中的第几天     1~31
第四个:  一年中的第几月     1~12
第五个:  一周中的星期几     0~7(0和7都代表周日)
1、如果只是简单的任务,可以不写脚本,直接在crontab中加入任务即可。
2、对于比较复杂的任务,需要写脚本(shell编程)
特殊符号说明:
*代表所有时间
,代表不连续时间。比如”0 8,12,16 ***“命令代表每天八点零分,十二点零分,十六点零分都执行一次
-代表连续时间。”0 5 * * 1-6“代表周一到周六五点执行
/n代表每隔多久执行。比如”/10 ****“代表每隔10分钟一次