【Linux】

    1. 简介

主流操作系统

MS

MS-DOS

Microsoft Windows

Windows 9.X Kernel

Windows 95

Windows 98

Windows NT Kernel

Windows 2000

Windows XP to 11

Unix Kernel

Mach Kernel

NEXT

XNU Kernel

Darwin OS

OSX/MacOS

BSD Kernel

IOS

FreeBSD

Orbis OS

OpenBSD

SunOS

Solaris

Linux Kernel

Fedora

RedHat

CentOS

Rocky

Debian

Ubuntu

Mint

Slackware

SUSE

OpenSUSE

Gentoo

Chrome OS

Arch

Manjaro

Android

Linux发行版本

1、内核:Linux内核Kernel目前最新稳定版 3.4  http://www.kernel.org/

2、发行版本:一些厂商以内核为基础,再添加一些软件和文档形成发行版本,例如RedHat Linux,Debian,Ubuntu, Novell/SuSE Linux等。

3、ubuntu Ubuntu版本号由发布的年份和月份(Y.MM)组成,首次发行版本为4.10,最新版本为12.04。

软件安装方式

适合用途

Redhat系列

商业公司维护

使用人数多,资源多

RHEL(Redhat Enterprise Linux)

(Redhat商业版)

包管理方式采用的是基于RPM(RedHat Package Manager)包的YUM包管理方式,包分发方式是编译好的二进制文件。

稳定性好,适合服务器

Fedora Core

(RHEL测试版)

关注新技术,不关注稳定性,适合桌面

RHEL的测试平台(试验场)

CentOS(Community Enterprise Operating System)

(RHEL社区版)

RHEL的社区克隆版本,稳定性好,配置简单,适合服务器

Debian系列

社区组织维护

Debian

社区类Linux的典范,最遵循GNU规范

Stable (Sarge)

Testing (Etch)

Unstable (Sid)

apt-get/dpkg包管理方式。

包分发方式是编译好的二进制文件。

稳定版,适合服务器

经过测试的版本

最新的测试版本,适合桌面

Ubuntu

基于Gnome的Ubuntu

基于KDE的Kubuntu

基于Xfc的Xubuntu

使用基于apt的程序包管理器

包分发方式是编译好的二进制文件。

基于Debian的unstable版本加强而来,界面友好,容易上手,硬件支持非常全面,最适合做桌面系统。

Gentoo

Linux最年轻的发行版本,因此也吸取之前的发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。

Portage包管理系统。

包分发方式是源代码,必须编译后才能运行,安装较慢,但在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。

Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,那么你完全可以选择Gentoo。

最佳学习对象

FreeBSD

并非Linux系统,但与Linux支持的硬件环境比较一致,采用的软件也比较类似,用户也有许多重合。所以可视为一个Linux版本。

stable:稳定版

采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,使用比Portage复杂。

FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。如果你需要的是一个非常非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。

current:测试版

SUSE

界面华丽

SUSE商业版

OpenSUSE

使用Yast来管理软件包

嵌入式开发常用debian、Fedora、Ubuntu。

Linux组成

硬件接口层——kernel(内核):是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。

命令解释层——shell(壳):是系统的用户界面、用户和内核交互的接口、命令解释器。是高级编程语言(shell编程)。

外围应用层——第三方GNU应用程序:标准的Linux操作系统都会有一套应用程序例如X-Window,Open Office等。

下载地址

centos7.9下载地址:

CentOS Mirrors List

bin  (binaries)存放二进制可执行文件(系统必备命令)

boot 存放用于系统引导时使用的各种文件

dev (devices)用于存放设备文件

etc (etcetera)存放系统配置文件

home 存放普通用户文件的根目录

lib  (library)存放跟文件系统中的程序运行所需要的共享库及内核模块(类似Windows的dll文件)

lost+found  丢失寻回文件

media  外部设备挂载点

misc  存放用途不明的文件

mnt  (mount)系统管理员安装临时文件系统的安装点

net  存放网络相关文件

opt  额外安装软件的目录,如oracle数据库安装路径可选此

proc  系统内存映射,可访此获取系统信息

root  超级用户目录

sbin  (super user binaries)存放二进制可执行文件(超级用户的系统管理命令)

selinux  Redhat/CentOS特有的目录,selinux安全机制目录

srv  (service)存放服务启动后要提取的数据

sys  该目录安装了linux2.6内核中新出现的sysfs文件系统

tmp  (temporary)用于存放各种临时文件

usr  (unix shared resources)用于存放共享的系统资源(类似于Windows的Program Files)

var  (variable)用于存放运行时需要改变数据的文件(如各种日志文件)

Linux 的软件安装目录

/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32,一般让软件包管理器来管理/usr目录。

/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/,它和/usr目录具有相类似的目录结构。用户自己编译的软件默认会安装到这个目录下。

/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面,当你不需要时,直接rm -rf掉即可,不影响系统其他任何设置。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。

源码放哪里?

/usr/src:系统级的源码目录。

/usr/local/src:用户级的源码目录。

内部命令:属于Shell解析器的一部分

cd 切换目录(change directory)

pwd 显示当前工作目录(print working directory)

help 帮助

外部命令:独立于Shell解析器之外的文件程序

ls 显示文件和目录列表(list)

mkdir 创建目录(make directoriy)

cp 复制文件或目录(copy)

查看帮助文档

内部命令:help + 命令(help cd)

外部命令:man + 命令(man ls)

ls (list)以网格模式列出当前目录下的文件及文件夹(蓝文件夹,黑文件,绿可执行文件,红压缩包)

-l (long)

-a (all)注意隐藏文件、特殊目录.和..   

-t (time)

ll 列出当前目录下的文件以及文件夹(列表模式)(相当于ls -l)(Redhat支持)

ll / 列出根目录下的文件以及文件夹(列表模式)(相当于 )(Redhat支持)

ls -a 或 ll -a 陈列时显示隐藏文件

find . 列出当前目录和子目录下所有文件和文件夹

find 路径名 -name "关键字" 查找文件

ls -l | grep "^-" | wc -l 统计当前目录下文件的个数(不包括目录)

ls -lR| grep "^-" | wc -l 统计当前目录下文件的个数(包括子目录)

ls -lR | grep "^d" | wc -l 查看某目录下文件夹(目录)的个数(包括子目录)

cd 目录名 进入指定目录

cd / 切换到根目录

cd 切换到主目录(回老家)(亦可cd ~)

cd .. 切换到上级目录

cd - 切换到上次目录

pwd 显示当前工作目录(print working directory)

mkdir 目录名 创建目录(make directoriy)

-p 父目录不存在情况下先生成父目录(parents)

touch 文件名 创建空文件

ln 链接名 文件名 创建链接

-s 对源文件建立符号连接,而非硬连接(symbolic)

cp 文件名 目录名或文件名 拷贝文件到目录或同时改名(copy)

cp -r 目录名 目录名 拷贝目录到目录(r:递归recursive)

mv 文件名或目录名 目录名或文件名 移动文件或目录到目录或同时改名(move)

注:mv只能修改单个文件名,使用rename命令加通配符可批量改名:

例如有foo1 foo2 foo3...到foo99的文件,如果想把数字部分都改为2个字符等宽,只需要把1位数字1、2、3...到9改为01、02、03...到09,使用下面命令即可:

rename foo foo0 foo?

其中?代表一个字符。除了问号,通配符还有*,代表任意字符,如若要将*.htm文件改为*.html,使用下面命令:

rename .htm .html *.htm

补充:如果只用于单个文件名的修改,使用方法和mv一样,可以省略第三个参数。

scp 文件名 用户名@IP:文件名 拷贝文件到指定系统的指定路径

scp -r 目录名 用户名@IP:目录名 拷贝目录到指定系统的指定目录

rm 文件名 删除文件(remove)

rmdir 空目录名 删除空目录(remove directoriy)

rm -rf 目录名 递归(recursive)且强制(force)删除目录(强制删除无需逐一确认)

echo 内容 终端输出($开头的内容是变量)

echo "hello" > hello.txt 输出 hello 到文件 hello.txt (重写模式)

echo "hello" >> hello.txt 输出 hello 到文件 hello.txt (追加模式)

cat 文件名 显示文本文件内容 (catenate)

more 文件名 分页查看文件内容(按空格下一页,按Enter逐行,按q退出)

less 文件名 分页查看文件内容(按空格下一页,按Enter逐行,按Shift + g到页尾,按g到页首,按/查找,按q退出)

tail 文件名 查看文件尾部内容

tail -20 文件名 查看文件尾部内容,显示20行(默认10行)(完整写法:tail -n 20 文件名)

tail -f 文件名 查看文件尾部内容(实时刷新),常用于实时查看日(fellow?:循环读取?)

head 文件名 查看文件头部内容(默认10行)

head -20 文件名 查看文件头部内容,显示20行(默认10行)(完整写法:head -n 20 文件名)

wc 文件名 统计文本的行数、字数、字节数(word count)(一个字被定义为由空白、跳格或换行字符分隔的字符串)

-l 或 --lines 只显示行数

-w 或 --words 只显示字数

-c 或 --bytes 或 --chars 只显示字节数

./可执行文件名 执行当前目录下的指定的可执行文件

压缩

gzip

-d 将压缩文件解压(decompress)

-l 显示压缩文件的大小,未压缩文件的大小,压缩比(list)

-v 显示文件名和压缩比(verbose)

-数字 指定压缩速度,-1或--fast表最快压缩(低压缩比),-9或--best表最慢压缩(高压缩比)。系统默认-6

gzip * 把当前目录下的每个非压缩文件压缩成.gz文件(删除源文件)

gzip -l * 显示前目录下的每个压缩文件的大小,未压缩文件的大小,压缩比(list)

gzip -dv * 把当前目录下的每个压缩文件解压(删除原压缩文件)

gzip -rv 目录名 递归压缩目录内所有文件并查看压缩情况(r:递归;v:查看)

gzip -dr 目录名 递归解压目录内所有文件(d:解压;r:递归)

bzip2

-c 将压缩的过程产生的数据输出到屏幕上

-d 解压缩的参数(decompress)

-z 压缩的参数(compress)

-数字 指定压缩速度,-1或--fast表最快压缩(低压缩比),-9或--best表最慢压缩(高压缩比)。系统默认-6

归档

tar

-c 建立一个压缩文件的参数指令(create)

-x 解开一个压缩文件的参数指令(extract)

-z 是否需要用 gzip 压缩

-j 是否需要用 bzip2 压缩

-v 压缩的过程中显示文件(verbose)

-f 使用档名,在 f 之后要立即接档名(file)

tar -cvf 新包名.tar 文件1 文件2 打包文件

tar -cvf 新包名.tar 目录 打包目录

tar -xvf 新包名.tar 解包到当前文件夹

tar -zcvf 新压缩包名.tar.gz 文件1 文件2 打包文件并以gzip压缩

tar -zcvf 新压缩包名.tar.gz 目录 打包目录并以gzip压缩

tar -zxvf 压缩包名.tar.gz 解压并解包到当前文件夹

tar -zxvf 压缩包名.tar.gz -C 目录 解压并解包到指定目录下

    • 命令

权限描述

三种基本权限:  r 读权限(read);  w 写权限(write);  x 执行权限(execute)

  1. 第1位:文件类型(d 目录,- 普通文件,l 链接文件)
  2. 第2-4位:所属用户权限,用u(user)表示
  3. 第5-7位:所属组权限,用g(group)表示
  4. 第8-10位:其他用户权限,用o(other)表示
  5. 第2-10位:表示所有的权限,用a(all)表示

示例的完整信息:一个文件,所属用户具有读写执行权限;所属组的用户有读写权限,没有执行权限;其他用户只有读权限

su 以root身份运行(不切换环境变量)

su - 以root身份运行(同时切换环境变量)

su 用户名 以指定用户身份运行(不切换环境变量)

su - 用户名 以指定用户身份运行(同时切换环境变量)

sudo 执行root权限的命令

sudo vi 文件名 以root身份编辑文件

sudo passwd 设置su密码

visudo 配置sudo权限(vi /etc/sudoers)

编辑 /etc/sudoers 文件,将hadoop用户添加到sudoers文件中去:

root    ALL=(ALL)       ALL

hadoop  ALL=(ALL)       ALL

chmod 修改文件或目录的权限(change mode)(-R:递归(大小写?))

chmod 707 文件名 修改指定文件的权限为对所属用户提供rwx权限,对所属组用户提供---权限,对其他用户提供rwx权限

chmod u+w 文件名 修改指定文件的权限为对所属用户(u)增加可写权限

chmod g-x 文件名 修改指定文件的权限为对所属组成员用户(g)删除可执行权限

chmod o=r 文件名 修改指定文件的权限为对其他用户(o)使具有可读权限

chmod +rwx 文件名 修改指定文件的权限为对所有用户(a)可读可写可执行(省略了默认值a:chmod a+rwx)

chown 用户名:用户组 文件名 修改指定文件的所属用户和所属组(change owner)

chgrp 用户组 文件名 修改指定文件的所属组(change group)

nohup 命令 > 文件路径 2>&1 & 以后台方式运行命令,并将该命令的标准错误输出重定向到标准输出的引用,即前面指定的文件路径

    • 命令

配置文件

保存用户信息的文件:/etc/passwd

每一行的意思: 用户名:密码:用户id:用户所在组id:备注:用户家目录:shell命令所在目录

例如: root:x:0:0:root:/root:/bin/bash

只查某一用户的信息:cat /etc/passwd|grep 用户名

保存密码的文件:/etc/shadow

保存用户组的文件:/etc/group

每一行的意思: 用户组:用户组密码:用户组id:用户组所包含的用户

例如: sys:x:3:bin,adm

只查某一用户组的信息:cat /etc/group|grep 组名

保存用户组密码的文件:/etc/gshadow

用户配置文件:/etc/default/useradd

/etc/passwd格式

使用命令:man 5 passwd

account:password:UID:GID:GECOS:directory:shell

用户名

用户登陆系统的用户名

密码

密码位

UID

用户标示号

GID

默认组标示号

描述信息

存放用户的描述信息

宿主目录

用户登陆系统的默认目录,默认是在/home/下

命令解析器

用户使用的Shell,默认是bash

Linux用户分类

超级用户:(root,UID=0)

普通用户:(UID在500到60000)

伪用户:(UID在1到499)

系统和服务相关的:bin、daemon、shutdown等

进程相关的:mail、news、games等

为用户不能登陆系统,而且没有宿主目录

/etc/shadow格式

查看命令:man 5 shadow

用户名

登陆系统的用户名

密码

加密密码

最后一次修改时间

用户最后一次修改密码距现在的天数,从1970-1-1起

最小时间间隔

两次修改密码之间的最小天数

最大时间间隔

密码有效天数

警告时间

从系统警告到密码失效的天数

账号闲置时间

账号闲置时间

失效时间

密码失效的天数

标志

标志

用户组

每个用户至少属于一个用户组

每个用户组可以包含多个用户

同一个用户组的用户享有该组共有的权限

/etc/group格式

组名

用的所在的组

组密码

密码位,一般不使用

GID

主标示号

组内用户列表

属于改组的用户列表

常用命令

useradd 用户名 添加用户(必须设置密码才能正常登陆)

-u 指定userID(uid)

-g 指定所属的组名(gid)

-G 指定多个组,用逗号分开(Groups)

-c 用户描述(comment)

-e 失效时间(expire date)

例子:useradd -u 888 -g users -G sys,root -c "hr zhang" zhangsan

passwd 用户名 修改用户密码

usermod -d 目录名 用户名 修改用户主目录(要事先创建目录,并拷入环境变量文件)(modify)

usermod -l 新名 旧名 修改用户名(login)

usermod -g 组名 用户名 给用户修改组

usermod -G 组名1 组名2 … 用户名 给用户添加组

usermod -L 用户名 锁定用户

usermod -U 用户名 解锁用户

userdel 用户名 删除用户

userdel -r 用户名 删除用户同时删除主目录(remove)

whoami 我是谁

groups 查看当前用户所属组

groups 用户 查看指定用户所属组

groupadd 组名 添加用户组(-g:指定gid)

groupmod 修改用户组信息(-n:更改组名(name))

groupdel 组名 删除用户组

案例:修改某用户的主文件夹

1)以root身份登陆

2)在/home下建一文件夹(例如twx1)准备用作目标用户(例如twx1)的新主文件夹

3)修改/etc/passwd文件内容:twx1:x:1001:1001::/home/twx-one:/bin/bash,将twx-one改为twx1

或者:usermod -d /home/twx1 twx1

4)拷贝原twx-one文件夹内所有文件(包括隐藏文件)至twx1文件夹,并修改所属用户和所属用户组为twx1

SecureCRT连接Ubuntu报The remote system refused the connection.解决方案

进入Ubuntu系统,终端中敲入以下命令:

ps -ef|grep ssh

发现只有ssh-agent进程,而没有sshd进程,缺省情况下没有安装ssh-server

在终端中敲入以下命名安装openssh-server即可:

sudo apt-get install openssh-server

安装完毕后再次使用ps -ef|grep ssh命令查看sshd进程是否运行,如果正常运行使用SecureCRT重新尝试连接即可。

    • 命令

Linux系统登陆的三种方式:图形界面、shell界面、远程登陆SSH

vi /etc/inittab 编辑默认启动界面(3为字符界面模式,5为图形界面模式)shutdown 关机

shutdown -r 关机后立即重启

shutdown -h 关机后不重新启动

halt 不安全不理会各项服务,直接执行硬件关机

reboot 重新启动

init 0 关机(会先关闭运行的服务,用户进程和守护进程,最终关机)

init 1 重启

init 3 关闭当前界面并启动字符界面

init 5  或  startx 关闭当前界面并启动图形界面

# 0 - 停机(千万不能把initdefault设置为0)

# 1 - 单用户模式

# 2 - 多用户,没有 NFS

# 3 - 完全多用户模式(标准的运行级)

# 4 - 没有用到

# 5 - X11(xwindow)

# 6 - 重启(千万不要把initdefault设置为6)

top 实时显示当前系统中耗费资源最多的进程

ps 显示瞬时进程快照

-e /-A 显示所有进程,环境变量

-f 全格式

-a 显示所有用户的所有进程(包括其它用户)

-u 按用户名和启动时间的顺序来显示进程

-x 显示无控制终端的进程

ps -ef 查看系统中当前瞬间的进程信息快照

ps -ef|grep myshell.sh 搜索myshell进程的信息

free 显示内存和交换空间使用情况(默认单位KB) -b设置单位B  -m设置单位MB  -s 秒数 设置刷新时间

kill 进程号 按进程号杀进程

kill -9 进程号 绝杀!慎用!

killall 进程名 按名称杀进程

df -h 显示文件系统磁盘空间使用情况

du 查看当前目录下各级文件夹和文件大小

-h 文件大小以K,M,G为单位显示(human-readable)

-s 只显示各档案大小的总合(summarize)

du -sh 查看当前目录总大小

du -sh * 查看所有子目录大小

    • 命令

ifconfig或ip addr 查看本地连接(/sbin/ifconfig)

netstat(-natp 或 -nltp) 查看网络相关信息

-a 显示所有连接和监听端口

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-l 仅列出有在Listen(监听)的服务状态

-p 显示建立相关链接的程序名

netstat -tunlp|grep 端口号 用于查看指定端口号的进程情况

ping 测试网络的连通性(通过发送Internet控制消息协议(ICMP)回响请求消息来验证与另一台TCP/IP计算机的IP级连接)

setup 进入设置(CentOS 7的命令为 nmtui ),可修改本机网络配置(重启网络服务生效)

service network status 查看网络设备

service network restart 重启网络服务(执行后终端会被断开)

service network stop 停止网络服务

lsof -i 列出当前系统打开的文件(list open files)。

lsof输出各列信息的意义:

COMMAND:进程的名称

PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等

TYPE:文件类型,如DIR、REG等

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

lsof filename.txt 显示开启文件filename.txt的进程

lsof -i 显示符合条件的进程情况

lsof -i :22 显示22端口现在运行什么程序

lsof -c abc 显示abc进程现在打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4 显示使用fd为4的进程

修改ip地址的配置

修改以下配置文件即可改ip地址:

vi /etc/sysconfig/network-scripts/ifcfg-网络名

或者用setup指令通过一个带提示的伪图形界面来修改

修改主机名

vi  /etc/sysconfig/network  修改其中的hostname配置项:

HOSTNAME=yun12-01 

要想立即生效,可以执行指令:

hostname nidezhujiming

管理地址映射

vi /etc/hosts,添加以下内容:

192.168.2.250  域名或主机名

防火墙

service iptables start 开启防火墙(重启后失效)

service iptables stop 停止防火墙(重启后失效)

service iptables restart 重启防火墙(重启后失效)

service iptables status 查看防火墙

chkconfig iptables --list 查看防火墙自启模式(3为字符界面模式,5为图形界面模式)

chkconfig iptables off 关闭防火墙随系统启动

chkconfig iptables on 开启防火墙随系统启动

CentOS 7防火墙

centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

如果你要改用iptables的话,需要安装iptables服务:

sudo yum install iptables-services

sudo systemctl enable iptables && sudo systemctl enable ip6tables

sudo systemctl start iptables && sudo systemctl start ip6tables

firewall-cmd --zone=public --add-port=20/tcp -permanent 将20端口加入firewalld允许列表中

    • vi命令

vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。

进入vi的命令 

vi filename :打开或新建文件,并将光标置于第一行首

vi +n filename :打开文件,并将光标置于第n行首

vi + filename :打开文件,并将光标置于最后一行首

vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

vi filename....filename :打开多个文件,依次进行编辑

翻滚屏幕命令

Ctrl+u:向文件首翻半屏

Ctrl+d:向文件尾翻半屏

Ctrl+f:向文件尾翻一屏

Ctrl+b;向文件首翻一屏

nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

移动光标命令

h :光标左移一个字符

l :光标右移一个字符

space:光标右移一个字符

Backspace:光标左移一个字符

k或Ctrl+p:光标上移一行

j或Ctrl+n :光标下移一行

Enter :光标下移一行

w或W :光标右移一个字至字首

b或B :光标左移一个字至字首

e或E :光标右移一个字至字尾

) :光标移至句尾

( :光标移至句首

}:光标移至段落开头

{:光标移至段落结尾

nG:光标移至第n行首

n+:光标下移n行

n-:光标上移n行

n$:光标移至第n行尾

H :光标移至屏幕顶行

M :光标移至屏幕中间行

L :光标移至屏幕最后行

0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾

定位命令

:set nu 显示行号

:set nonu 取消行号

gg 到文本的第一行

G 到文本的最后一行

:行号 到文本的指定行

插入命令

i:在光标前插入

I:在当前行首插入

a:在光标后插入

A:在当前行尾插入

o:在当前行之下插入新行

O:在当前行之上插入新行

s:从当前光标位置处开始,以输入的文本替代指定数目的字符

S:删除指定数目的行,并以所输入文本代替之

ncw 或 nCW:修改指定数目的字

nCC:修改指定数目的行

删除命令

x:删除光标所在处字符

数x:删除光标所在处起n个字符

X:删除光标前的一个字符

数X:删除光标前的n个字符

d0:删至行首(不含光标所在处)

d$ 或 D:删至行尾(含光标所在处)

dd:删除当前行

数dd 或 数dw 或 数dW:删除当前行开始的n行

dG:删除当前行至末尾行的所有内容

:数,数d:删除指定范围的行

Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern

?pattern:从光标开始处向文件首搜索pattern

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

r:替换当前字符

R:从当前字符开始替换,按Esc键结束

:s/p1/p2/g:将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置

all:列出所有选项设置情况

term:设置终端类型

ignorance:在搜索中忽略大小写

list:显示制表位(Ctrl+I)和行尾标志($)

number:显示行号

report:显示由面向行的命令修改过的数目

terse:显示简短的警告信息

warn:在转到别的文件时若没保存当前文件则显示NO write信息

nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符

nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始

mesg:允许vi显示其他用户用write写到自己终端上的信息

底行命令

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下

:n1,n2 d :将n1行到n2行之间的内容删除

:w :保存当前文件

:wq:保存且退出。快捷键ZZ

:wq!:强制保存且退出!

:e filename:打开文件filename进行编辑

:x:保存当前文件并退出

:q:退出vi

:q!:不保存文件并退出vi

:!command:执行shell命令command

:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入

:r!command:将命令command的输出结果放到当前行

选择文本操作

v:进入字符可视模式

V:进入行可视模式

Ctrl + v:进入块可视模式

寄存器操作

yy:复制当前行

p:粘贴所复制的行

"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

撤销与重做

u:撤销

Ctrl + r:重做

date 显示时间

date -s 时间字符串 设置时间

cal 显示当前月份日历

cal -y 年 显示某年的日历

* 通配符

tab 命令补全

↑/↓ 找回写过的命令

Ctrl + c 停止当前进程

Ctrl + r 查看命令历史

Ctrl + l 清屏,与clear命令作用相同

clear 清屏

exit 退出终端

命令 --help 命令帮助

put 文件上传

注1:以根(通常习惯称为root)"/" 为开始的路径是绝对路径,不以"/" 开始的是相对路径。

注2:参数可连写

linux find grep组合使用

1. 查找所有".h"文件

find /PATH -name "*.h"

2. 查找所有".h"文件中的含有"helloworld"字符串的文件

find /PATH -name "*.h" -exec grep -in "helloworld" {} \;

find /PATH -name "*.h" | xargs grep -in "helloworld"

3. 查找所有".h"和".c"文件中的含有"helloworld"字符串的文件

find /PATH /( -name "*.h" -or -name "*.c" /) -exec grep -in "helloworld" {} \;

4. 查找非备份文件中的含有"helloworld"字符串的文件

find /PATH /( -not -name "*~" /) -exec grep -in "helloworld" {} \;

注:/PATH为查找路径,默认为当前路径。带-exec参数时必须以\;结尾,否则会提示“find: 遗漏“-exec”的参数”。

使用find和xargs
1. find pathname -options [-print -exec -ok]
-optinos
1)-name:按照文件名查找
find ~ -name “*.txt” -print
find ~ -name “[a-z][0-9].txt” -print
2)-perm:按照权限查找文件
find ~ -perm 755 -print 查找权限为755的文件
find ~ -perm 007 -print 查找o位置上具有7权限的文件
find ~ -perm 4000 -print 查找具有suid的文件
3)-prune
不在当前目录下查找
4)-user和-nouser
find ~ -user zhao -print 查找文件属主是zhao的文件
find ~ -nouser -print 查找文件属主已经被删除的文件
5)-group和-nogroup
find ~ -group zhao -print 查找文件群组是zhao的文件
6)按照时间
find ~ -mtime -5 -print 文件更改时间在5天内的文件
find ~ -mtime +3 -print 文件更改时间在3天前的文件
find ~ -newer file1 -print 查找比文件file1新的文件
7)按照类型查找
find ~ -type d -print 查找所有目录
8)按照大小
find ~ -size +1000000C -print 查找文件大小大于1000000字节(1M)的文件
9)查找位于本文件系统里面的文件
find / -name “*.txt” -mount -print
-exec,-ok:find命令对于匹配文件执行该参数所给出shell命令,相应命令形式为: ‘command’ {} \;
-ok 在执行命令前要确认
find ~ -type f -exec ls -l {} \;
find / -name “*.log” -mtime +5 -ok rm {} \;
find . -name core -exec rm {} \;
使用-x dev参数
防止find搜索其他分区
find . -size 0 -exec rm {} \;
删除尺寸为0的文件
2. xargs与-exec功能类似
find ~ -type f | xargs ls -l
find / -name “*.log” -type f -print| xargs grep -i DB0
find . -type f |xargs grep -i “Mary”
在所有文件中检索字符串Mary
ls *~ |xargs rm -rf
删除所有以~结尾的文件

svn过滤svn文件夹
1.使用管道进行双层“过滤”,其中第二次grep使用了-v选项,即逆向匹配,打印出不匹配的行

    grep -r 'function_name' * | grep -v '.svn'

2.或者更简单一些,直接使用--exclude-dir选项,即指定排除目录,注意svn前的 \.

    grep -r --exclude-dir=\.svn 'function_name' *

grep多个过滤条件

1、或操作

  grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行

  egrep '123|abc' filename    // 用egrep同样可以实现

  awk '/123|abc/' filename   // awk 的实现方式

2、与操作

  grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

find过滤svn文件夹

find -type f ! -path '*/.svn/*'

rpm命令

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便。

rpm命令的常用参数

-i 安装应用程序(install)

-e 卸载应用程序(erase)

-vh 显示安装进度;(verbose   hash)

-U 升级软件包;(update)

-qa 显示所有已安装软件包(query all)

-qa|grep 名称 显示包含该名称的所有已安装软件包(query all)

例子:rmp -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm

yum命令

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

例子(需要上网,没有网络可以建本地源):

yum install gcc-c++

yum remove gcc-c++

yum update gcc-c++

yum -y install wget 安装wget(解决-bash: wget: command not found问题)

安装mysql

查看系统有没有安装mysql:

rpm -qa | grep mysql

安装mysql:

sudo -ivh MySQL-server.xxx.rpm

发现了冲突包,用这条指令去查询存在哪些冲突包:

sudo rpm -qa | grep mysql

然后删除:

sudo rpm -e mysql-libs-5.1.66-2.el6_3.i686

发现有依赖关系不能删,这样做:

sudo rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps

/usr/bin/mysql_secure_installation

查看myslq的相关配置:
1、ps ax | grep '[m]ysqld'
2、cat /proc/$(pidof mysqld)/cmdline | tr '\0' '\n'

安装Tomcat

注意:Tomcat启动需要JDK,在这里我没有安装,使用系统自带的OpenJDK Runtime Environment (rhel-2.6.14.10.el6-x86_64 u181-b00)

下载解压安装

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.5/bin/apache-tomcat-10.1.5.tar.gz

tar -zxvf apache-tomcat-10.1.5.tar.gz

mv apache-tomcat-10.1.5 /usr/local/tomcat

查看防火墙状态是否处于启用中

firewall-cmd --state

开启防火墙

systemctl start firewalld.service

查看防火墙启用端口

netstat -ntlp 或:firewall-cmd --list-ports

打开单个端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

或者

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

/etc/rc.d/init.d/iptables save

打开多个端口:

firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent

设置防火墙开机自启

systemctl enable firewalld.service

重启防火墙:

systemctl restart firewalld.service

查看防火墙设置开机自启是否成功:

systemctl is-enabled firewalld.service;echo $?

查看80端口是否被占用

sudo netstat -apn | grep 8080

被占用就干掉:

kill -9  -XXXXX

启动Tomcat服务

/usr/local/tomcat/bin/startup.sh

如果关闭Tomcat使用:

/usr/local/tomcat/bin/shutdown.sh

使用curl http://127.0.0.1:8080/ 初测若显示tomcat欢迎页源代码即OK

地址栏输入http://ip地址:8080访问,出现tomcat欢迎页面即OK

其他常用软件安装

软件

CentOS命令

Ubuntu命令

Lrzsz

yum install lrzsz

Unzip

yum install -y unzip zip

Redhat中yum下载的软件包存放在哪儿?

可在/etc/yum.conf中查看和更改:

keepcache=1 # 1为保存,0为不保存,默认是0,安装完成后就会被清空掉。

cachedir=/var/cache/yum/$basearch/$releasever # 保存在这个位置根据系统版本和包的源可能有所不同

编辑保存后,设置立刻生效。

    1. 操作系统使用技巧

设置网卡随系统启动、使用静态IP

虚拟机:VMware workstation 16

操作系统:CentOS 7.4

vi /etc/sysconfig/network-scripts/要修改的网卡(名称非lo的)

修改:

BOOTPROTO=static

ONBOOT=yes

追加如:

IPADDR=192.168.44.1.1

NETMASK=255.255.255.0

GATEWAY=192.168.44.1

DNS1=8.8.8.8

注:如果VMware虚拟机网络设置为NAT模式,则GATEWAY的值为“Mware-》编辑-》虚拟网络编辑器-》NAT设置-》网关IP”中的值。

重启网络:

systemctl restart network

注:重启网络后客户端需修改对应连接属性(IP地址)后重新连接

Centos 6的yum命令无法使用了(Cannot find a valid baseurl for repo: base)解决之道

CentOS 6已经随着2020年11月的结束进入了EOL(Reaches End of Life),不过有一些老设备依然需要支持,CentOS官方也给这些还不想把CentOS 6扔进垃圾堆的用户保留了最后一个版本的镜像,只是这个镜像不会再有更新了。简单来说就是官方已经抛弃了这个镜像。

更换Vault源,海外可用官方的http://vault.centos.org,使用的北美AWS的服务器;国内的可用阿里的http://mirrors.aliyun.com/centos-vault/

1、首先把fastestmirrors关了

#编辑

vi /etc/yum/pluginconf.d/fastestmirror.conf

#修改

enable=0

2、先把之前的repo挪到备份,然后下面两个二选一

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

3、替换为官方Vault源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://static.lty.fun/%E5%85%B6%E4%BB%96%E8%B5%84%E6%BA%90/SourcesList/Centos-6-Vault-Official.repo

或者国内用户可以替换为阿里云Vault镜像

wget -O /etc/yum.repos.d/CentOS-Base.repo https://static.lty.fun/%E5%85%B6%E4%BB%96%E8%B5%84%E6%BA%90/SourcesList/Centos-6-Vault-Aliyun.repo

  1. 如果没有wget的话,请使用SFTP上传(已下载好):

5、推荐使用懒人专用一键修复:

sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo

yum clean all

yum makecache

VMware中给CentOS磁盘扩容

http://t.zoukankan.com/leiblog-p-13560070.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值