Linux常用命令

VI/VIM编辑器

  •   一般模式

    以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。

      

语法

功能描述

yy

复制光标当前一行

y数字y  

复制一段(从第几行到第几行)

p

箭头移动到目的行粘贴

u

撤销上一步

dd

删除光标当前行

d数字d

删除光标(含)后多少行

x

删除一个字母,相当于del,向后删

X

删除一个字母,相当于Backspace,向前删

yw

复制一个词

dw

删除一个词

shift+^

移动到行头

shift+$

移动到行尾

gg或者1+G

移动到页头

G

移动到页尾

数字+G(先输入数字,在按G)

 

  •       编辑模式

      

按键

功能

i

当前光标前

a

当前光标后

o

当前光标行的下一行

I

光标所在行最前

A

光标所在行最后

O

当前光标行的上一行

  •     指令模式  

    

命令

功能

:w

保存

:q

退出

:!

强制执行

/ 要查找的词

n 查找下一个,N 往上查找

? 要查找的词

n是查找上一个,N是往下查找

:set nu

显示行号

:set nonu

关闭行号

ZZ(shift+zz)

没有修改文件直接退出,如果修改了文件保存后退出

  •      模式间转换

      ESC



1.常用快捷键

常用快捷键

功能

ctrl + c

停止进程

ctrl+l 或clear

清屏;彻底清屏是:reset

ctrl + q

退出

善于用tab

提示(更重要的是可以防止敲错)

上下键

查找执行过的命令

ctrl +alt

linux和Windows之间切换

2.帮助命令

. man:是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助等等

案例实操

查看ls命令的帮助信息

 

[root@Linux01 ~]# man ls

.help:该命令是bash内建命令,用于显示bash内建命令的帮助信息

 

   案例实操

 

       查看cd命令的帮助信息

 

[root@Linux01 ~]# help cd

3.文件目录类操作

pwd 功能描述:显示用户当前工作目录的绝对路径
ls

功能描述:用来显示目录列表         

ls -a:展示包含隐藏的目录名

ls -A: 展示不包含隐藏的目录名

ls -l :  展示包含文件的属性及权限信息

ls -R:递归展示目录ls -s:以k为单位展示文件
ls -lh 展示包含文件的属性及权限信息并且显示大小(k为单位)

cd

功能描述:将当前工作目录切换到指定目录  

cd 绝对路径/相对路径:切换路径;

cd .. :回到当前目录的上一级目录;

cd或cd~ :回到根目录;

cd - :回到上一次所在目录;

cd -P :跳转到实际物理路径,而非快捷方式路径

 mkdir

功能描述:创建新目录   

mkdir 要创建的目录 :创建目录

mkdir -p 要创建的多级目录 :创建多层目录;

mkdir -pv 要创建的多级目录 :创建多层目录并显示创建过程

 rmdir

 功能描述:删除目录

rmdir 要删除的目录 :删除目录;

rmdir -p 要删除的目录 :递归删除指定目录;

rmdir -pv 要删除的目录 :递归删除指定目录并显示删除过程;

 touch

 功能描述:创建空文件

touch 要创建的文件名称:创建空文件

 rename

 功能描述:批量为文件修改名称

 rename  原字符串  新字符串  被操作的文件:单个修改文件名或批量修改文件名

案例:

将/home/test1下的文件名中的aa全部改为bb

[root@Linux01 home]# ls test1
aabb.txt aa.txt bbaacc.txt

[root@Linux01 home]# rename aa bb test1/*
[root@Linux01 home]# ls test1
bbbbcc.txt bbbb.txt bb.txt

 cp

 功能描述:cp指令用来将-一个或者 多个源文件或者目录复制到指定的目标文件或者目录

cp 源文件 文件复制到的目录 :进行复制

cp -a 源文件 文件复制到的目录 :保持源文件的结构和属性进行复制;
cp -r 源文件 文件复制到的目录 :递归复制;

加 -v :显示拷贝过程

案例:

将etc下的passwd拷贝到home下

[root@Linux01 home]# cp /etc/passwd ./
[root@Linux01 home]# ls
banzhang.txt jinghang lisi3 passwd test1 work01-shell.sh xiaozhang
class233.txt jinghang2 mayun test test2 work02-shell.sh

 rm

 功能介绍: rm指令用于删除给定的文件和目录。

rm -r 文件或目录名 :递归删除目录中所有内容;

rm -f 文件或目录名 :强制执行删除;

-i :交互式删除,会询问;

-v:显示过程

 mv

 功能介绍: mv 移动文件与目录或重命名

mv 老的目录名 新的目录名 :重命名;

mv 要被移动的目录名 移动到目的目录路径:移动目录

案例:

1、将/home/passwd目录改为passs 

[root@Linux01 home]# mv passwd passs
[root@Linux01 home]# ls
banzhang.txt jinghang lisi3 passs test1 work01-shell.sh xiaozhang
class233.txt jinghang2 mayun test test2 work02-shell.sh

2、将home/passs移动到/home/test1下

[root@Linux01 home]# mv passs test1/
[root@Linux01 home]# ls test1
bbbbcc.txt bbbb.txt bb.txt passs

 cat

 功能介绍: 查看文件内容(一次性全部读取,适用小文件)

-b :在非空行前面显示行号;

-n:显示所有行的行号,包括空行;

-s:压缩空行,多个空行连续出现时仅显示一个空行;

 more

 一次性读取,全屏展示分屏查看器查看该文件(适用中小型文件)

 more  要查看的文件名 :查看文件,进去查看之后可以用内置快捷键如下

内置快捷键:空格:向下翻一页,

      回车:向下翻一行,

      q:退出more,

      ctrl+F:向下滚动一屏,

      = :输出当前行号;

 less

 跟more相似,但是他不是一次把整个文件加载之后再显示,而是根据显示需要加载内容,适用显示大型文件;

less 文件名:要查看的文件名 :查看文件,进去查看之后可以用内置快捷键如下

内置快捷键: 空格:向下翻页,

      / 字符串:查找该字符串,n:向下查找;N:向上查找

      q:退出less

 echo

 功能介绍:echo指令用于在shell中打印shell变量的值,或者直接输出指定的字符串。

echo $指令名称:执行该指令;

echo "内容":打印该内容;

-e:支持反斜线控制的字符转换,如下:

echo -e  "hello  \  word" :输出就是hello word

echo -e "hello  word":输出的hello word会换行;

echo -e "hello    word" :输出的hello word中间有一个制表符

 head

 功能介绍:head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。

head  要读取文件名 : 读取该文件前10行

head -n  指定数字  要读取文件名:读取该文件指定前几行  

 tail

 功能介绍:tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。

tail  要读取文件名 : 读取该文件后10行

tail -n 指定数字 要读取文件名 :读取该文件后几行;

tail -f 文件名:监控该文件所有更新

 > 和 >>

  > :覆盖

>> :追加

 history

 功能介绍:history指令用于查询历史指令命令

history :查询所有历史指令命令

history 数字:从后查询几条执行过的命令

 ln

功能介绍:(硬)软链接也称为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。

ln -s  原文件或目录名 软链接名:给原文件创建软链接

案例:

  给/home/test创建软链接名为aatest

  [root@Linux01 home]# ln -s test aatest

  [root@Linux01 home]# ll 

  总用量 48

  lrwxrwxrwx. 1 root      root         4 7月   4 15:41 aatest -> test

注意:

  1、ln 默认创建链接为硬链接,不能对目录建立链接。要为目录建立链接必须使用“-s”选项,指明创建的链接类型为符号链接。

  2、只能为普通文件创建硬链接, 不能为目录创建硬链接。而符号链接(软连接)则没有任何限制,

  3、删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/

  4、查询:通过ll就可以查看,列表属性第1位是l,尾部会有位置指向。

 

4、搜索查找类操作

find

功能介绍:find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端

find -name 查询目录 :模糊查找所有的该目录名的目录

find -user 用户名 :查找该用户的所有文件目录

find -size +/-10k : 查找大于/小于10k的文件

find -empty : 查找文件大小为0k的文件

find -empty |xargs ls -l :将之前查询的文件当成参数传给后面

find -type 加文件类型 : 查找对应的(文件类型:b代表块设备文件,d代表目录,f代表普通文件,c代表字符设备文件,l代表符号链接文件例如软链接,s代表网络套接字文件)

案例:

  在全部目录中搜索test目录

  [root@Linux01 home]# find / -name test

/home/test

/home/test2/test

/usr/bin/test

/usr/share/doc/db4-devel-4.7.25/ref/test

/usr/lib64/python2.6/test

/usr/lib64/python2.6/site-packages/OpenSSL/test

/lib/alsa/init/test

grep

功能介绍:grep 过滤查找,在文件中搜索匹配的行 (管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理)

which

功能介绍:which指令用于查找并显示给定指令的绝对路径

which + 指令名:查找该命令的绝对路径

whereis

whereis + 指令名:查找该指令相关文件的路径

5、用户管理类操作

useradd

功能介绍:useradd 添加新用户

useradd  用户名 :添加新用户

useradd -g 组名 用户名 :添加一个该组名的该用户名(但是前提该组得存在,不会再自动创建组)

useradd -d  /添加该用户的宿主目录 用户名:默认添加用户组直接到根目录,这个可以指定根目录

useradd -u 要设置的ID号 用户名:设置用户ID

useradd -c "注释内容" 用户名:给用户加说明;

passwd

功能介绍:passwd 设置用户密码

passwd 用户名 :更改用户密码

id

功能介绍:id 查看用户是否存在

id 用户名 :查看用户是否存在

查看创建的用户 语法:cat  /etc/passwd
userdel

功能介绍:userdel删除用户及相关文件

userdel 用户名:只删除用户,目录还在

userdel -r 用户名:删除用户及相关文件

userdel - f 用户名 :强制删除,即使正在登录  

usermod

功能介绍:usermod指令用于修改用户的基本信息

usermod -g 要换成的组名 用户名:修改用户的组

usermod -c "要修改成什么注释" 用户名:修改用户的注释信息

usermod -d /想要修改成宿主目录 用户名:修改用户的宿主目录,但是不会帮你生成文件,只是会有路径 

su

功能介绍:su <swith user> 切换用户

su 用户名:切换用户

who

功能介绍:who 查看登录用户信息

whoami:查询当前所登录的用户名

who am i:查询系统登录用户信息

sudo

功能介绍:sudo 设置普通用户具有root权限

先root用户进入这个文件 vim /etc/sudoers,然后找到91行复制粘贴,将root修改为普通用户名,然后su 普通用户名:切换用户,然后sudo vim /etc/sudoers:这个时候普通用户就可以进这个配置文件了,只需要在指令前面加sudo 就可以执行root权限

6、用户组管理操作

 groupadd

功能介绍:groupadd创建新工作组 

groupadd 新组名:创建一个新的用户组

groupadd -g 新用户组的ID 新用户组:创建一个新的指定ID的用户组

 groupdel

 功能介绍:groupdel删除工作组

groupdel 用户组:删除用户组(只能删除没有用户的组,也就是空的用户组)

 groupmod

 功能介绍:groupmod修改工作组信息

groupmod -n 修改后的组名 原组名:修改用户组的组名

groupmod -g 修改后的组名ID 原组名:修改用户组的ID(新的组名和ID必须唯一)

 查看创建的组  语法:cat  /etc/group

7、文件权限类操作

文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。

             

 chmod

功能介绍:chmod 改变权限    

经验技巧:
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
r=4 w=2 x=1 

chmod u/g/o  +/-  r/w/x  用户名:添加或取消对应权限

chmod 三个数字(三个数字代表三组权限,每组可以计算rwx) 用户名:添加或取消对应权限;

 chown

功能介绍:chown 改变文件或目录所有者

chown 要改变成的用户 文件名:更改该文件创建的用户

chown -R 要改变成的用户 文件名:递归更改,

再加-v:显示修改过程

chgrp

功能介绍:chgrp 改变所属组

chgrp 要改成的用户组 文件名:改变文件的所属组

chgrp 要改成的用户名  要改成的用户组 文件名:改变文件的所属用户及用户组

8、时间日期类操作

date  

date :显示当前时间

date -s 字符串时间  :设置系统时间

cal

cal : 查看当前月日历

cal 某年:查看某年日历;

 9、压缩和解压缩操作

gzip/gunzip

功能介绍: gzip/gunzip 压缩与解压缩;将文件压缩为.gz后缀的文件,只能压缩文件,不能压缩目录,不能保留原文件

案例:

  将/home下的class23.txt压缩、解压

[root@Linux01 home]# gzip class233.txt 

[root@Linux01 home]# ls
banzhang.txt jinghang lisi3 test test2 work02-shell.sh
class233.txt.gz jinghang2 mayun test1 work01-shell.sh xiaozhang
[root@Linux01 home]# gunzip class233.txt
[root@Linux01 home]# ls
banzhang.txt jinghang lisi3 test test2 work02-shell.sh
class233.txt jinghang2 mayun test1 work01-shell.sh xiaozhang

 zip/unzip  功能介绍: zip/unzip 压缩与解压缩、zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。

zip -r  XXX.zip  要压缩的内容 :递归压缩成zip格式

unzip  XXX.zip  -d  要解压到的目录/ :解压缩文件到指定目录

 tar

 功能介绍: tar 打包备份

-z  打包同时压缩

-c  产生.tar打包文件

-v  显示详细信息
-f  指定压缩后的文件名
-x  解包.tar文件

tar -zcvf   XXX.tar.gz   要压缩的内容 :压缩指定内容

tar -zxvf  XXX.tar.gz  -C  解压到的目录:解压到指定目录

10、进程管理类操作

ps

功能介绍: 查看当前系统进程状态

-a 选择所有进程
-u 显示所有用户的所有进程
-x 显示后台进程得运行参数

ps -aux :查看系统中所有进程

ps -ef :查看子父进程之间的关系

 kill

功能介绍: kill 终止进程

kill -9  进程ID:通过进程号强制杀死进程

killall 进程名称:通过进程名称杀死进程

 pstree

 功能介绍: pstree 查看进程树

pstree -p :以树的形式显示进程名称并显示进程ID

pstree -u :以树的形式显示进程名称并显示进程所属用户

11、系统性能监控类操作

top

功能介绍: top指令实时报告系统整体性能情况(默认3秒更新)

top -d 秒数:指定几秒更新数据

top -i :使top命令不显示闲置和僵尸进程

top -p  指定进程ID:只监控指定进程

执行完这些指令后,可以进行排序

q:退出top

P:以CPU使用率排序,默认就是此项

M:以内存的使用率排序

N:以进程ID排序

k:根据进程的ID杀死进程

free

功能介绍: 显示内存的使用情况

free -b:以字节为单位显示内存使用情况

free -k:以千字节为单位显示内存使用情况(默认)

free -m:以兆字节为单位显示内存使用情况

free -t:显示汇总结果

netstat

功能介绍: netstat 显示网络统计网络系统的状态信息和端口占用情况

选项 功能
-n 使用数字形式的IP、端口、用户ID、协议、用户等名称信息
-l 仅列出有在listen(监听)的服务状态
-p 表示显示哪个进程在调用
-a 显示处于监听状态和处于非监听状态的socket信息
-u 查看udp连接信息
-t 查看tcp连接信息

常用

netstat -anp | grep 进程号:查看该进程网络信息

netstat -nlp | grep 端口号:查看网络端口号占用情况(使用场景:如果端口被占用,可是又要用这个端口,就可以找到占用这个端口的进程,杀死)

 12、磁盘分区类操作

df

功能介绍: df 查看磁盘空间使用情况(列出文件系统的整体磁盘使用量,显示磁盘分区上可用的磁盘空间)

df -h :展示磁盘空间的使用情况

du

功能介绍: du 显示每个文件和目录的磁盘使用空间占用情况

选项 
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
-c 列出明细的同时,增加汇总值

du 选项  需要查询的目录:展示某个文件或目录的磁盘使用空间占比情况

 fdisk

功能介绍:查看磁盘使用情况和磁盘分区

fdisk -l:查看磁盘使用情况和磁盘分区

fdisk /dev/sda :回车之后会让按m寻求帮助,显示出相应的指令,可以按下对应的进行增加分区,删除分区,查询分区等(q:查询,n:新建分区,d:删除分区,w:保存并退出)

 mount/umount  

概述:对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它就是一个根目录、一个独立唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部分,Linux采用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得。

案例:

 将镜像文件挂载到/home/test下:

[root@Linux01 home]# mount -t iso9660 /dev/sr0 /home/test
mount: block device /dev/sr0 is write-protected, mounting read-only

[root@Linux01 home]# ll test
总用量 566
-r--r--r--. 2 root root 14 6月 29 2018 CentOS_BuildTag
dr-xr-xr-x. 3 root root 2048 6月 30 2018 EFI
-r--r--r--. 2 root root 212 11月 27 2013 EULA
-r--r--r--. 2 root root 18009 11月 27 2013 GPL
dr-xr-xr-x. 3 root root 2048 6月 30 2018 images
dr-xr-xr-x. 2 root root 2048 6月 30 2018 isolinux
dr-xr-xr-x. 2 root root 536576 6月 30 2018 Packages
-r--r--r--. 2 root root 1363 6月 29 2018 RELEASE-NOTES-en-US.html
dr-xr-xr-x. 2 root root 4096 6月 30 2018 repodata
-r--r--r--. 2 root root 1706 11月 27 2013 RPM-GPG-KEY-CentOS-6
-r--r--r--. 2 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--. 2 root root 1730 11月 27 2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--. 2 root root 1734 11月 27 2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root 3380 6月 30 2018 TRANS.TBL

卸载挂载点:

[root@Linux01 home]# umount /home/test
[root@Linux01 home]# ll test
总用量 0
-rw-r--r--. 1 root root 0 6月 29 20:12 ccab.txt
-rw-r--r--. 1 root root 0 6月 29 20:10 cca.txt
-rw-r--r--. 1 root root 0 6月 29 20:10 ccc.txt

 工作常用指令 统计/root文件夹下的文件的个数    :    ls -l /root | grep "^-" | wc -l

统计/root文件夹下的目录的个数  : ls -l /root | grep "^d" | wc  -l                            
统计/root文件夹下文件的个数,包括子文件夹里的       :       ls -lR /root | grep "^-" | wc -l 
统计文件夹下目录的个数,包括子文件夹里的              :       ls -lR /root | grep "^d" | wc -l
以树状显示目录结构                    :        yum install tree(安装树),才能用tree

13、软件包管理类操作

RPM(对本地安装包的操作)

概述:RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具

rpm -qa :查询所安装的所有rpm软件包  例如:rpm -qa |grep firefox :查询火狐的安装包

rpm -qi  安装包名称  :查询安装的软件包的详细信息

rpm -e  安装包名称  :卸载软件包

rpm -e  安装包名称  --nodeps :忽略依赖,卸载软件包

选项 功能
-i    -i=install,安装
-v   -v=verbose,显示详细信息
-h   -h=hash,进度条
--nodeps 不检测依赖进度

rpm -ivh 安装包名称 :安装软件

 YUM

概述:YUM(全称为 Yellow dog Updater, Modified)是一个前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

选项 :
install  安装rpm软件包
update  更新rpm软件包
check-update  检查是否有可用的更新rpm软件包
remove   删除指定的rpm软件包
list  显示软件包信息
clean  清理yum过期的缓存
deplist  显示yum软件包的所有依赖关系

yum 选项 安装包名 :执行对应选项的功能

注意

默认的系统YUM源,需要连接国外apache网站,网速比较慢,可以修改关联的网络YUM源为国内镜像的网站,比如网易163

http://mirrors.163.com/.help/centos.html下载对应CentOS版本的YUM源,替代系统自带的YUM源

14、定时任务操作

定时任务操作crontab

功能介绍:crontab指令周期性执行的任务

service crond restart/start  :启动服务

选项 
-e  编辑crontab定时任务
-l  显示待执行任务列表
-r  删除当前用户所有的crontab任务
-i  删除用户的计划任务前要求用户进行确认

crontab -e :进入编辑定时任务

案例:

每年的3月、7月的1号、2号、5号的12点52分向/home/class233.txt文件里写入 纪念日

[root@Linux01 home]# crontab -e

52 12 1,2,5 3,7 * /bin/echo "纪念日" >> /home/class233.txt

 

定时任务文件编辑相关参数说明

 

进入crontab编辑界面。会打开vim编辑你的工作。

* * * * *  执行的任务 

项目 

含义 

范围

第一个“*”

一小时当中的第几分钟

0-59

第二个“*”

一天当中的第几小时

0-23

第三个“*”

一个月当中的第几天

1-31

第四个“*”

一年当中的第几月

1-12

第五个“*”

一周当中的星期几

0-7(0和7都代表星期日)

    

特殊符号

含义

*

代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。

代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令

-

代表连续的时间范围。比如“0 5  *  *  1-6命令”,代表在周一到周六的凌晨5点0分执行命令

*/n

代表每隔多久执行一次。比如“*/10  *  *  *  *  命令”,代表每隔10分钟就执行一遍命令

原文地址:https://www.cnblogs.com/si-137/p/13234703.html