Linux常用命令

一、基础命令

passwd 

修改密码

chmod

用来修改权限

switch user 

切换用户

.tar

打包

useradd -m 用户名

 

.tar.bz2

压缩文件

passwd 密码

添加用户

date

查看系统时间命令

su -用户名

切换用户名

hwclock

查看硬件时间命令

userdel + 用户名

删除用户

timedatectl set-time

修改系统时间

exit

退出

ls –l(ll)

查看目录

pwd

打印当前所在的目录

whereis + 要查看的命令

查看某个命令所在的目录

groupadd

添加组

ps

监控后台工作情况

reboot

重启

logout

退出登录

Shutdown [选项]时间

关机、重启

systemctl

服务管理(常用)

free

查看内存

Df -h

查看磁盘空间

 

打包——就是将多个文件合并为一个文件  不过合并后的文件大小与原来的文件大小和几乎不变;

压缩文件——合并后大小会发生变化 变小;

修改系统时间——如果出现Failed to set time: Automatic time synchronization is enabled的提示 那么需要先关闭ntp自动校时;使用命令   timedatectl set-ntp no

再进行修改 修改完成后开启ntp自动校时    timedatetectl set-up yes;

Shutdown——关机重启建议使用shutdown比较的安全;一般服务器上有很多用户在使用,不可以直接进行关闭电源等操作;因为同时可能有很多人的硬盘都在高速运转,就容易崩。

Shutdown中的选项 有 –c 取消前一个关机命令、-h 关机、-r 重启;一般服务器只进行重启。

二、yum源

        在windows上我们可通过360等对软件进行安装、卸载,并解决软件之间的依赖相关问题。Yum就是这种软件,只是运行在CentOS系统中的,使用yum我们就可以做到一个命令安装软件。软件安装包的来源我们称之为源,所以yum源就是软件安装包来源,打开centOS的压缩文件可以看到其中有一个package文件,其实有很多很多的软件安装包,就是本地yum源。

配置yum源:https://blog.csdn.net/no_ob/article/details/78668255

三、文件处理命令

        Linux比windows要灵活,比如可以同时对多个文件进行同时拷贝(可不同路径下的),也可以在复制、剪切的时候进行改名等。

. (一个点)

当前目录

..(两个点)

代表上一层目录

-rw-r—r--

R读 w写 x执行

mkdir -p

创建目录,p递归创建

cd

Change directory

rmdir

删除空目录

cp -rp

复制目录 r复制目录p 保留文件属性

rm -rf

删除文件或目录 r删除目录 f强制执行

mv

剪切、改名

touch

创建空文件

tail –n f

显示文件后几行 n 指定行数 f动态显示

less

分页显示文件内容(可向上翻页)

cat -n

显示文件内容 n行号

ln -s

创建链接文件 –s创建软链接

chmod 数字(744) 文件

改变文件权限

chown 用户名 文件名

将该文件所有者转到该用户名

        其中写的命令后跟的每一个字符都是可分开使用的。

        软链接可理解为windows的快捷方式,只是一个简单的链接指向;硬链接相当于cp –p,区别是硬链接可以动态更新。

权限管理中r代表4,w代表2,x代表1 ;u代表所有者,g代表所属组,o代表其他人;还有种修改权限方式:chmod u+x g+w o-r (不常用)。

四、查找相关命令

首先find查找命令所消耗的系统资源比较多,所以在使用率比较高的情况下避免使用,但是他的查找又是比较稳定的。

命令:find 搜索范围 匹配条件

      find /etc -name init  在目录etc中查找文件init

      find /etc -iname init 不区分大小写搜索

      find / -size 204800 在根目录中查找大于100MB文件  204800是数据块  1数据块=0.5kb

      find /etc -cmin -5  在etc文件中查找5分钟内改动的文件

      文件属性  cmin

文件内容  mmin

find /etc -size +163840 –a(-o) -size -204800  在/etc下查找大于80MB并且(或者)小于100MB的文件

locate -i 文件名  i代表不区分大小写 在文件资料库中查找文件(速度很快)(tmp临时文件中是查不到的)

updatedb  用来升级文件资料库 然后进行locate查找

grep  在文件内容中查找指定的字串,把他显示出来(很强大)

五、Vim常用操作

       Vim有三种模式:命令模式,插入模式,编辑模式;

        首先进入命令模式,输入a、A、i、I、o、O进入插入模式;esc从插入模式退出到命令模式;使用“:”从命令模式到编辑模式。

vim 文件名

进入vi界面

a

在所在光标后输入

A

到所在行尾

i

在所在光标前输入

I

到所在行首

o

插入下一行

O

插入上一行

gg

到第一行

G

到最后一行

:n

到第n行

x

删除当前字符

dd

删除行(剪切行)

yy

复制当前行

p

粘贴行

u

撤销上一个动作

/字符串

搜索字符串所在位置

:q!

不保存退出

:qw

保存退出

:q

没操作,直接退出

 

 

 

Vim使用技巧:

定义快捷键:map 快捷键 触发命令

例如: : map ^p I#<etc> 在当前行首添加#注释(^p是由ctrl+v+p或者ctrl+v再ctrl+p所展示出来的)之后在该文件中输入ctrl+p就在行首打出注释;

       :map ^B 0x<etc> 删除行首注释;

六、软件包管理

Windows中所有的包都不能在linux中进行安装;

软件包的分类:源码包和二进制包(就是rpm包,源代码包经过编译之后的包,不能再看到源码;系统默认包);

     源码包:1、开源;

             2、可以自由选择所需功能;

             3、软件是编译安装,更适合自己的系统;

             4、卸载方便;

             5、安装步骤较多,容易出错;

             6、编译时间较长;

             7、安装过程报错,新手很难解决;

     二进制包:1、包管理系统简单;

               2、安装速度快;

               3、看不到源码;

               4、功能选择少;

               5、依赖性强;

Rpm包是以.rpm结尾的,源码包是以tar.gz结尾的;

RPM包默认安装位置:

          /etc/  配置文件安装路径

             /usr/bin/  可执行的命令安装目录

             /usr/lib/  程序所使用的函数库保存位置

             /usr/share/doc/  基本的软件使用手册保存位置

             /usr/share/man/  帮助文件保存位置

源码包安装位置:

          /usr/local/软件名/

安装位置的不同带来的影响

        RPM包安装的服务可以使用系统服务管理命令(service)来管理;

        service是不能管理源码包的,service只能去找到RPM包安装的路径;

所以源码包只能用绝对路径来进行管理,启动等;

源码包安装过程

         1、安装准备   需要jcc的编译器(c语言的),下载相应的源码包(tar.gz);

         2、源码包保存位置   /usr/local/src/     软件安装位置   /usr/local/;

         3、将软件包传到linux  并进行解压 (解压后的文件中的INSTALL和README两个文件很重要,对于陌生软件阅读他们进行安装及使用);

         4、./configure  软件配置与检查

            1)./configure --prefix=/usr/local/自己定义的文件     该命令表示安装在将源码包安装在该目录下;

         5、make 进行编译;

         6、make install  编译安装  (如果在前两部出错了,使用make clean进行清空即可);

         7、使用绝对路径到安装位置 start    进行启动;

         (在安装完成之后进行卸载,只要将安装的文件卸载就可以)

管理软件包的方式有两种:

    1、rpm命令管理

rpm包管理方式最大的问题在于不断地有很多的依赖,安装会非常麻烦;

rpm安装命令:

rpm -ivh 包全名    -i(install) 安装;-v(verbose) 显示详细信息; -h(hash) 显示进度; --nodeps 不检测依赖性; 将i换成U update  就是升级;-e 卸载

2、yum在线管理

yum只要告诉他要装那个包,其他所有的依赖都会自动安装;使用光盘当成本地yum;缺点是部分产商对此会收取一定的费用;IP地址配置和网络yum源;

yum安装:   yum -y install 包名

升级: yum -y update 包名 (如果不加包名,就是升级整个系统,慎用)

卸载: yum -y remove 包名 (导致所有依赖的包都卸载了,慎用)

光盘yum源搭建(常用的安装yum的方式)

其实就是使用光盘中所有已存在的包;

光盘yum源由于是光盘安装的,所以需要进行一些配置;

1、挂载镜像:  mount /dev/cdrom /mnt/cdrom

2、让网络yum源文件失效:  cd /etc/yum.repos.d/       将该目录中的除了Medis的都进行后缀名改名,目的是让他们都失效;

3、修改光盘yum源生效:   vim CentOS-Media.repo    其中最重要的是enabled=1

七、分区和文件系统管理

分区与文件系统

主分区:总共最多只能有四个;(一个大柜子只能分为4个小柜子);

扩展分区:只能有一个;(只能其中一个柜子进行分隔;扩展分区中的是逻辑分区);

文件系统常用命令

df -h

文件系统查看命令

du –sh [目录路径]

统计目录或文件总大小

fsck [选项] 分区设备文件名

文件系统修复命令(不建议使用)

dumpe2fs [分区设备文件名]

显示磁盘状态命令

挂载——设备文件名与盘符(挂载点)进行联通;

mount

查询与自动挂载点

mkdir /mnt/cdrom

建立挂载点(盘符)

mount /dev/sr0 /mnt/cdrom/

挂载光盘

umount /mnt/cdrom

卸载命令

缓存(cache)—— 将数据保存在内存中,加速数据的读取过程;

缓冲(buffer)—— 在写入数据时,将分散的写入操作保存到内存中,达到一定程度再集中写入硬盘,加速数据写入过程;

八、Shell脚本

shell概述

shell是一个命令行解析器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序;

shell将我们的命令转换成机器可识别的二进制命令,又能将机器的命令转换成我们能认识的命令;

其实我们使用的交互命令就可以称为shell,其实window中我们使用的图形交互界面也是类似于shell,否则我们做的任何操作,机器都不能识别;

shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强;Shell是解释执行(不需要先编译而是直接执行)的脚本语言,在Shell中可以直接调用Linux系统命令;

shell的分类:Bourne Shell ;在linux中识别为sh;

            C Shell:主要用在BSD版中,其语法和C语言相似而得名;

这两种主要语法彼此不兼容;Bourne家族主要包括sh、ksh、bash、psh、zsh;C家族主要包括:csh、tcsh;我们使用的shell主要是bash的shell,比较主流;

sh命令 切换到bash下,  exit 退出;

shell脚本的执行方式

echo [选项] [输出内容]

echo –e “ab\bc” 输出ab

echo

输出命令

-e

支持反斜杠控制字符转换

\\

输出\本身

\a

输出警告音

\b

退格键

\r

换页符

\n

换行符

\r

回车键

Shell脚本编写:

#!/bin/Bash       这句话是所有bash脚本第一句必须写的(这句话是标识,不是注释);代表以下写的是shell脚本;

第一个shell脚本:

#!/bin/Bash

              #Author:chenjingling   注释

              echo -e "hello world"

使用两种方式运行脚本:1、先chmod 755 hello.sh 再使用相对或绝对路径运行 ./hello.sh;  2、使用bash hello.sh进行运行;

注:如果脚本是在windows中写好放到linux中执行是有问题的,因为windows中的回车符表示与linux回车符是不一样的;使用doc2unix 文件名来从windows格式转换为linux格式;不过需要先安装该工具,使用yum安装;

bash的基本功能

history 可以查看敲过得历史命令

history [选项] [历史命令保存文件]

-c   清空历史命令

上下箭头找到之前使用的命令;

-w 把缓存中的历史命令写入历史命令保存文件  ~/.bash_history

!!重复执行上一条命令;

tab键进行自动补全;

alias 别名 = '原命令'   将原命令设置为简单方便的别名

vi /root/.bashrc    让别名永久生效 (在其中进行添加)

alias    查询命令别名

unalias 别名    删除别名

命令的执行顺序:

第一顺位使用绝对路径或者相对路径就执行原命令;

第二顺位其次就优先使用别名;

第三顺位执行bash的内部命令;

 

Bash常用快捷键

ctrl + c   强制终止当前命令

ctrl + l   清屏,相当于clear命令

ctrl + u  删除或剪切光标之前的命令

ctrl + k   删除或剪切光标之后的命令

ctrl + y   粘贴u、k剪切的内容

ctrl + r   搜索历史命令

ctrl + d   退出当前终端

 

多命令顺序执行:

:   命令1 :命令2     代表多个命令顺序执行,命令之间没有任何逻辑联系

&&   命令1 && 命令2   逻辑与  只有前一个命令正确后一个命令才能执行

||     命令1 || 命令2    逻辑或   只要前一个命令执行错误,后一个命令才能执行

管道符:

|      命令1|命令2       命令1的正确输出作为命令2的操作对象

bash的变量

变量分类:

  1. 用户自定义变量;
  2. 环境变量:这种变量中主要保存的是和系统操作环境相关的数据;

3、   位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的;

4、   预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的;

用户自定义变量(本地变量):

在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型;

对变量进行赋值,等号两边不能有空格;

变量的值要是有空格,需要使用引号;

如果需要增加变量的值,可以进行值的叠加;不过要用"$变量名"或者用${变量名}进行包含;

如果把命令的结果作为变量值赋予变量,则需要使用反引号或者$()包含命令;     

echo $变量名     调用该变量;

set              查看系统当中所有的变量;

unset name       变量删除;

环境变量:

部分环境变量是系统固定的变量;作用域为当前shell和所有子shell中都有作用;如果写入配置文件,会对所有的shell中生效;

export 变量名=变量值       申明变量;

env       查询变量;

unset 变量名     删除变量;

位置参数变量:

$n  n为数字,$0代表命令本身,$1-$9代表第一到第九个数;10以上的用${n};

$*   把命令行中所有参数看成一个整体

$@    把每个参数区分对待

$#    命令行中所有参数的个数

预定义变量:

位置参数变量其实就是预定义变量中的一种;

$?    判断上一次执行命令的返回结果;如果是0代表执行正确,如果是1代表执行错误;

$$    当前进程的进程号(PID);

$!    后台运行的最后一个进程的进程号(PID);

read [选项] [变量名]   接受键盘输入

 

-p “提示信息”  :在等待read输入时,输出提示信息;

-t 秒数:  read命令会一直等待用户输入,使用此项可以指定等待时间;

-n 字符串:   read命令只接受指定的字符串,就会执行;

-s :   隐藏输入的数据,适用于机密信息的输入;

bash的运算符

数值运算与运算符

declare [+/-][选项] 变量名        声明变量类型;

- :给变量设定类型属性;

+ :取消变量的类型属性;

-i :将变量声明为整数型;

-x :将变量申明为环境变量;

-p :显示指定变量的被申明的类型;

 

还可以使用 $((运算式)) 或者 $[运算式] 其中的运算式与数学一样,比较方便;

变量测试与内容替换

作用:在写脚本的时候可以用来判断某个值是否存在等操作;

例如:  x=${y-新值}   x=新值  表示变量y没有设置;   x为空  表示变量y值为空值;    x=$y    表示变量y设置了值;

九、Shell编程基础

基础正则表达式

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配;grep、awk、sed等都支持正则表达式;

通配符用来匹配符合条件的文件名,通配符是完全匹配;ls、find、cp这些不支持正则表达式,只用来支持通配符;

基础正则表达式

*    前一个字符匹配0次或任意多次

.    匹配除了换行符外任意一个字符

^    匹配行首

$    匹配行尾

[ ]   匹配中括号中指定的任意一个字符,只匹配一个字符

[^]  匹配除中括号中的字符以外的任意一个字符

\    转义附

\{n\} 表示其前面的字符恰好出现n次

\{n,m\}  表示其前面的字符至少出现n次,最多出现m次

要使用支持正则表达式的方式:grep、awk、sed;

字符截取命令

cut字段提取命令、awk命令、sed命令;

cut字段提取命令:

            cut [选项] 文件名       

            -f  列号:  提取第几列

            -d  分隔符:  按照指定分隔符分割列

      cut命令只能针对制表符进行提取,不能对空格符进行提取;

awk命令:

              printf '输出类型输出格式' 输出内容

              输出类型:

              %ns:  输出字符串;n是数字指代输出几个字符;

              %ni:  输出整数;n是数字指代输出几个数字;

              %m. nf:    输出浮点数;m和n是数字;指代输出的总位数,与小数所占位数;

              输出格式:

              \n :    换行;

              \r :    回车,也就是enter键;

              \t :   水平输出退格键,也就是tab键;

              这是awk中的基本命令;

              awk命令功能强大,只是书写比较复杂

              awk ‘条件1{动作1} 条件2{动作2}...’ 文件名

              例如: df -h | awk '{print $2 "\t" $5 }'

sed命令:

sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取,替换,删除,新增的命令;

               sed [选项] '[动作]' 文件名

               -n   一般sed命令会把所有数据输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕

              -e  允许对输入数据应用多条sed命令编辑

              -i  用sed修改结果直接修改读取数据的文件,而不是由屏幕输出

              动作:

              a \ :追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结;

              c \ :行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结;

              i \ :插入,在当期行前插入一行或多行;插入多行时,除最后一行外,每行末尾需用“\”代表数据未完结;

              d :删除,删除指定的行;

              p :打印,输出指定的行;

              s :字串替换,用一个字符串替换另一个字符串。格式为: 行范围s/旧字串/新字串/g;

              主要作用还是用来命令输出;

字符处理命令

sort [选项] 文件名

-f    忽略大小写

-r    反向排序

-n    以数值型进行排序,默认使用字符串型排序

-t    指定分隔符,默认是分隔符的制表符

-k n[,m]    按照指定的字段范围排序;从第n字段开始,m字段结束(默认到行尾)

wc [选项] 文件名

-l    只统计行数

-w    只统计单词数

-m    只统计字符数

 

条件判断

1、按照文件类型进行判断

-d 文件    判断该文件是否存在,并且是否为目录文件(是目录为真);

-e 文件    判断该文件是否存在(存在为真);

-f 文件    判断该文件是否存在,并且是否为普通文件(是普通文件为真);

两种方式:1、 test -e 文件     2、  [-e 文件]  (这种在脚本文件中常用);

再去使用echo $?  获取上一条命令的结果;

2、按照文件权限进行判断

-r 文件    判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真);

-w 文件    判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真);

-x 文件    判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真);

例如:   [ -w /sh/student.txt ] && echo yes || echo no

3、两个文件之间进行比较

文件1 -nt 文件2    判断文件1的修改时间是否比文件2的新(如果新则为真);

文件1 -ot 文件2    判断文件1的修改时间是否比文件2的旧(如果旧则为真);

文件1 -ef 文件2    判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否是同一个文件;一般用于判断硬链接;

4、两个整数之间的比较

整数1 -eq 整数2    相等为真

整数1 -ne 整数2    不相等为真

整数1 -gt 整数2    1大为真

整数1 -lt 整数2    1小为真

整数1 -ge 整数2    1大于等于为真

整数1 -le 整数2    1小于等于为真

5、字符串之间的比较

-z 字符串    判断字符串是否为空(空位真);

-n 字符串    判断字符串是否为非空(非空为真);

字符1==字符2    相等为真;

字符1 != 字符2    不等为真;

6、多重条件判断

判断1 -a 判断2    逻辑与,判断1和判断2都成立,最终的结果才是真;

判断1 -o 判断2    逻辑或,判断1和判断2有一个成立,最终的结果为真;

! 判断    逻辑非,使原始的判断式取反;

流程控制

1、if语句

单分支if条件语句

 

         if [ 条件判断式 ];then

             程序

         fi

    或者使用

         if [ 条件判断式 ]

                        then

                   程序

         fi       

                 

        双分支if条件语句

              if [ 条件判断式 ]

                     then

                条件成立时,执行的程序

                  else

                              条件不成立时,执行的另一个程序

       fi

           

    多分支if条件语句

        if [ 条件判断式1 ]

                      then

               当条件判断式1成立时,执行程序1

                      elif [ 条件判断式2 ]

                             then

                                    当条件判断式2成立时,执行程序2

                  else

                            条件不成立时,执行的另一个程序

        Fi

 

2、case语句

    case $变量名 in

          "值1“)

             如果变量的值等于值1,则执行程序1

             ;;

          “值2”)

             如果变量的值等于值2,则执行程序2                   

                   ;;

                     ......

                     *)

                       如果不是以上所有的值,执行此程序

                     ;;

        Esac

 

3、for循环

    语法1:

                     for 变量 in 值1 值2 值3...

                         do

                                程序

                            done

       语法2:

                     for((初始值;循环控制条件;变量变化))

                         do

                                程序

                            Done

4、while循环与until循环

while [ 条件判断式 ]

                         do

                                程序

                         done

until循环与while循环相反,不成立一直循环,直到循环成立,终止循环;

               until [ 条件判断式 ]

                       do

                              程序

                       Done

十、备份与恢复

dump [选项] 备份之后的文件名 原文件或目录

-level    就是我们说的0-9十个备份级别;

-f 文件名  指定备份之后的文件名;

-u     备份成功之后,把备份时间记录在/etc/dumpdates文件

-v     显示备份过程中更多的输出信息

-j     调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式

-W     显示允许被dump的分区的备份等级及备份时间

restore [模式选项] [选项]

模式选项:(只能选一个)

-C    比较备份数据和实际数据的变化

-i    进入交互模式,手工选择需要恢复的文件

-t    查看模式,用于查看备份文件中拥有哪些数据

-r    还原模式,用于数据还原

选项:

    -f    指定备份文件的文件名

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值