Centos基本命令

  • 🍓Centos基本命令
  • 🍓Centos的文件结构
  • 🍒Centos的文件类型
  • 🍒Centos的权限
  • 🍒修改Centos的ip为静态ip
  • 🍒修改文件的所属用户和组
  • 🍒创建链接文件
  • 🍒sudo命令的使用
  • 🍓Centos光驱挂载
  • 🍓脚本编写
  • 🍒脚本文件的创建
  • 🍒if条件语句
  • 🍒三元运算
  • 🍒for循环
  • 🍒while循环
  • 🍓yum
  • 🍒demo修改软件源地址为阿里云地址
  • 🍒yum带各种参数的作用
  • 🍓编辑文本命令vi
  • 🍓防火墙
  • 🍓Centos文件操作
  • 🍓时间
  • 🍓定时任务
  • 🍓免密登录
  • 🍓删除文件
  • 🍓设置开启自启
  • 🍓日志文件常用查看命令less
  • 🍓查看系统信息



linux命令大全字典:

https://www.linuxcool.com/

🍓Centos基本命令

Centos基本命令

Windows基本命令

含义

ls

dir

查看当前目录下的文件

ls -l

dir

以列表的方式查看当前目录下的文件

ls -la

dir

以列表的方式查看当前目录下的文件,并显示以点开头的隐藏文件

ls -lh

dir

以列表的方式查看当前目录下的文件大小

clear

cls

清屏

cd /home

cd d:/

改变目录(windows有盘符的概念,linux没有,所以linux直接/就行,. 是当前目录,.. 是上级目录)

pwd

显示当前所在的目录,加参数P(大写),显示当前目录的物理位置,比如链接文件夹进入之后,不加P,只会显示链接文件夹所在的位置,加P,显示链接的目标文件所在的位置

whoami

显示当前登录用户

su root

切换用户

passwd

默认修改当前用户的密码,后面加用户名的话,就是修改对应用户名的密码,但是这个得在root下才能使用

ifconfig

ipconfig

查看地址

ping

ping

查看网络连接通信情况

mkdir

创建目录

cd -

返回上次的目录下

touch

创建文本文件

echo

打印,默认换行打印,添加参数n,不换行

echo helloworld > 1.txt

重定向输出到文本文件中去(覆盖模式)

echo helloworld >> 1.txt

重定向输出到文本文件中去(追加模式)

cat

type

查看文本文件

tail

显示最后10行内容,一般用于查看日志文件

ls | head

显示前10行内容

more -5

分屏显示文件,一次显示5行,一般用于过大的文件,不带参数行数,默认显示一屏

cp 1.txt 2.txt

复制1.txt为2.txt,如果要复制多个文件可以使用通配符 cp *.txt /home,递归复制文件夹用参数r

rm 1.txt

删除文件

rm -rf

强制递归删除目录

mv

剪切

find

查找某个文件夹下的所有文件,find . 是查找当前所在目录下的所有文件

grep

正则表达式匹配

grep -v

正则表达式过滤,与上面的命令含义相反

find . | more

|,管道符,前面命令的输出作为后面命令的输入

hostname

查看主机名称

vi /etc/hostname

修改主机名称

vi /etc/hosts

修改主机名和ip地址的映射

gzip

原地压缩,把原来的文件覆盖掉了,如果要解压缩,加参数-d

gunzip

原地解压

tar

-cvf 创建一个归档文件; -xvf 解档

``

强制命令解析,在一些命令的参数中我们还需要写一些命令,为了让linux识别这个是命令,就可以用强制命令解析,例如:输出文件中的内容 :echo `cat 1.txt`

$()

与上一个命令的含义一样,但它可以支持多层命令嵌套

xargs

多行变单行,使用空格替换回车换行符,一些命令不支持管道输入,比如说cp,就可以用到这个命令,例如:find . | grep txt | cp `xargs` temp ,这里面的xargs就代表前面管道的输出

which

查看命令所在地,可以根据返回路径去查看该命令的权限与当前用户的关系,是否可以执行

sudo

系统管理命令,相当于windows中的以管理员权限运行,面向所有命令,减少了需要切换登录root的时间

...&

以&号结尾是将当前要执行的作业放到后台运行

jobs

查看后台运行的作业数

curl

传输url上的数据,默认将url返回的数据直接打印在屏幕上,添加参数-o 下载到本地的路径,可以下载文件

fg %n

将指定的后台作业切换到前台,n表示进程的编号

kill %n

杀死作业,n表示作业的编号

ps aux

查看进程

netstat -anop

查看端口

man

命令帮助

fdisk -l

查看磁盘分区

df

查看磁盘使用情况,加上-ah可以人性化查看磁盘使用情况

dirname /x/y/z

取出指定文件的目录/x/y

basename /x/y/z

取出指定文件的文件名称 z

reboot

重启

poweroff

关机

useradd -m

创建用户

userdel -rf

强制删除用户(只有root管理员可以使用,同时删除该用户时应先退出该用户的登录状态(退出登录状态的命令在下面一行)否则删不掉)

exit

退出当前用户的登录

$PATH;${PATH};"$PATH"

取出命令的环境变量路径

export

导入,后面加键值对,只对当前会话有效,相当于编程里面的变量定义,获取变量的值的命令:echo $变量名

${var1:-${var2}}

三元运算符表达式,当变量var1为空的时候,就返回var2的值,否则返回var1的值

echo $?

返回上一个命令执行的结果:

$#

获取传递给可执行文件的参数的个数

$n

提取第n个参数

$0

获取脚本名称

$@

取出所有的参数

shift

参数左移,一般用于配合取参

head -n 10

获前十行的内容,一般跟管道使用,跟more不一样,more只是显示前十行的内容

df -h

显示磁盘使用情况

du -h

显示当前文件夹的大小

env

查看环境变量

source

使配置的系统环境变量文件生效,一般用于文件/etc/profile~/.bash_rc

🍓Centos的文件结构

  • windows是以磁盘分区物理结构作为文件系统结构
  • linux文件系统结构是逻辑结构
  1. linux的所有用户的家都在home的目录下,root除外,cd ~ 这个命令可以让你快捷到达你的家目录下
  2. /bin和/sbin里面封装的是centos最基本的命令,/usr/bin和/usr/sbin里面封装的是centos厂商的命令,/usr/local/bin和/usr/local/sbin里面封装的是用户自己定义的命令
  3. /etc是配置目录
  4. /mnt是挂载目录
  5. /boot是引导目录
  6. /dev是设备目录
  7. /lib是库目录
🍒Centos的文件类型

符号

说明

-

文件

d

目录

l

链接,类似于windows的快捷方式

b

块文件(比如光盘,u盘等)

c

字符文件

🍒Centos的权限

符号

说明

代表数值

含义

r


1

读取文件内容;读取文件夹中的内容

w


2

可以向文件中写入内容;可以删除或增加文件夹中的内容

x

执行

4

执行文件的内容;进入文件夹

-

0

0

没有权限

Centos文件的权限分为三个部分,第一个3位是文件所属人物(u)的权限,第二个3位是文件所在的组(g)的权限,第三个3位是其他人(o)的权限

修改权限的命令:

去除所属人的权限:chmod u-权限 修改的文件
	chmod u-w a.txt
	
	增加所属人的权限:chmod u+权限 修改的文件
	chmod u+rwx a.txt

	修改所属人的权限:chmod u=权限 修改的文件
	chmod u=rwx a.txt
	
	去除组的权限:chmod g-权限 修改的文件
	chmod g-w a.txt
	
	增加组的权限:chmod g+权限 修改的文件
	chmod g+rwx a.txt
	
	修改组的权限:chmod g=权限 修改的文件
	chmod g=rwx a.txt
	
	去除其他人的权限:chmod o-权限 修改的文件
	chmod o-w a.txt
	
	增加其他人的权限:chmod o+权限 修改的文件
	chmod o+rwx a.txt

	修改其他人的权限:chmod o=权限 修改的文件
	chmod o=rwx a.txt

	去除所有人的权限:chmod a-权限 修改的文件
	chmod a-w a.txt
	
	增加所有人的权限:chmod a+权限 修改的文件
	chmod a+rwx a.txt

	修改所有人的权限
	chmod 644 a.txt

	递归修改文件夹以及文件夹内文件的权限
	chmod -R 777
🍒修改Centos的ip为静态ip

命令:

#查看网络状态
	service network status
	#先到这个目录下,找到一个以ifcfg-开头,以网络状态名称结尾的文件,修改这个文件
	cd /etc/sysconfig/network-scripts
	#修改ifcfg-xxx文件
	vi ifcfg-ens33
	#重启网络
	service network restart

ifcfg-xxx文件:

TYPE="Ethernet"													
BOOTPROTO="none"			
DEFROUTE="yes"					
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1db6ab42-00f2-41d9-91c3-7037d175bfc3"
DEVICE="ens33"
ONBOOT="yes"
DNS1="114.114.114.114"
IPADDR="192.168.200.100"
#子网掩码位数,24位:255.255.255.0;32位:255.255.255.255
PREFIX="24"
GATEWAY="192.168.200.2"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
🍒修改文件的所属用户和组
#修改文件的拥有者和组
	chown root:root 文件路径
	#递归修改文件夹的拥有者和组
	chown -R root:root 文件夹路径
🍒创建链接文件
#创建硬链接:ln 需要创建链接的文件路径 链接名称
	ln 1.txt b_lnk
	#创建符号链接:ln -s 需要创建链接的文件路径 链接名称
	ln -s 2.txt b_lnk2 
	#修改链接文件的指向
	ln -sfT 修改的指向目录 需要修改的链接文件
  1. 硬链接
    两个完全相同的文件,类似于实时备份。两个文件之间完全同步,除了删除步骤,缺点是占用空间,注意文件夹不允许创建硬链接
  2. 符号链接
    符号链接,链接到目录,如果目录不存在,该链接就是无效链接
🍒sudo命令的使用

sudo是临时借用root的身份去执行这个命令,相当于windows中的以系统管理员的身份去执行的功能一样,使用sudo命令之前,用户必须具有可以使用sudo命令的权利,需要去修改配置文件
配置文件修改:

  1. etc文件夹是Centos系统根目录下面的文件夹,是Centos环境配置的文件夹,这里我们先进入etc目录下
  2. 找到sudoers文件给你需要的用户赋予权限
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 
## This file must be edited with the 'visudo' command.

## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using 
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2

## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem


## Command Aliases
## These are groups of related commands...

## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp 

## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#
# Refuse to run if unable to disable echo on the tty.
#
Defaults   !visiblepw

#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what software on 
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## 	user	MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root	ALL=(ALL) 	ALL
## 在这边复制一下上面一行的命令,将root改为你需要的给予sudo权限的用户名称

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel	ALL=(ALL)	ALL

## Same thing without a password
# %wheel	ALL=(ALL)	NOPASSWD: ALL

## Allows members of the users group to mount and unmount the 
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

🍓Centos光驱挂载

在Centos的文件结构中,存放外设文件(光驱,打印机)的是在文件夹dev中管理的,光驱里面的文件是由dev文件夹下的链接文件cdrom管理的,如果我们想要查看光驱里面的东西,可以通过以下命令:

1. 创建一个文件夹
	mkdir /cdrom
	2. 以只读的方式将/dev/cdrom光驱里面的东西挂载到/cdrom中去
	mount /dev/cdrom /cdrom

卸载挂载目录:
注意:首先必须要先从挂载目录中出来,否在会出现设备繁忙

umount /cdrom

🍓脚本编写

🍒脚本文件的创建
##创建并编写脚本文件,脚本文件一般为.sh结尾
	vi a.sh
	##给脚本文件赋予可执行的权利
	chmod u+x a.sh
	##执行脚本文件,并给脚本文件传递参数1,2,3,4,5,6
	./a.sh 1 2 3 4 5 6
	##脚本第一行写下面的命令,#!+路径,表示解释此脚本的shell路径,bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
	#!/bin/bash
🍒if条件语句

逻辑符号:
-eq:等于
-ne:不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真

##格式:if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi
	## demo
	if [ $# -lt 3 ] ; then
		echo param too less!;
	elif [ s# -rt 5 ] ; then
		echo param too more;
	else 
		echo param suitable;
	fi
🍒三元运算
#如果x为空,则取t,否则取x
 	m=${x:-t}

注意: 中括号与其他命令之间一定要用空格隔开,不然会报错

🍒for循环
#打印前100的数
	for(( x=0 ; x<100 ; x=$x+1 ));
	do echo $x ; done ;

	#打印所有的参数
	for x in $@ ;
	do echo $x ; done ;
🍒while循环
#打印前100 的数
	i=0
	while((i < 100));
	do 
		echo $i;
		i=$((i + 1));
	done;

🍓yum

yum命令是用来安装软件的,软件安装通常需要安装各种依赖,这些依赖都来源于依赖软件源,软件源的在线地址配置在Centos的 /etc/yum.repos.d 文件夹下的*.repo文件中

🍒demo修改软件源地址为阿里云地址
cd /etc/yum.repos.d
	#下载阿里云的软件源的配置文件,文件名称重命名为aliyun.repo
	curl -o ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
	#屏蔽Centos默认软件仓库,使阿里的软件源配置文件生效,将/etc/yum.repos.d文件夹下的*.repo文件删除或者更改扩展名
🍒yum带各种参数的作用
#列出所有的软件包
	yum list
	#列出已经安装的软件包(数据量大可以用管道过滤)
	yum list installed
	#在yum的软件源中搜索软件nano
	yum search nano
	#安装软件nano
	yum install nano
	#不用提示我是否安装nano
	yum -y install nano
	#卸载软件nano
	yum remove nano
	#只下载不安装nano,如果需要下载的文件已经安装,可以换成reinstall
	yum install --downloadonly --downloaddir=下载到本地的路径 nano
	#本地安装nano
	yum localinstall nano.rpm
	
	#安装本地依赖
	rpm -ivh xxx.rpm
	#当依赖的版本有些许差别的时候,普通安装会失败,可以强制安装本地依赖
	rpm -ivh --nodeps --force xxx.rpm
	#卸载依赖
	rpm -e xxx

🍓编辑文本命令vi

  • esc:切换到命令模式,退出编辑模式
  • :q!:不保存退出
  • :wq:保存退出
  • i:进入编辑模式
  • dd:删除一行
  • x:删除一个字符

🍓防火墙

#开放8080端口
	firewall-cmd --permanent --add-port=8080/tcp
	#移除开放的端口8080
	firewall-cmd --permanent --remove-port=8080/tcp
	#查看Centos开放端口
	firewall-cmd --permanent --list-ports
	#重启防火墙(修改配置后需要重启防火墙,并且永久有效)
	firewall-cmd --reload
	#关闭防火墙(当前会话有效)
	systemctl stop firewalld
	#永久关闭防火墙
	systemctl disable firewalld
	#开启防火墙(当前会话有效)
	service firewalld start

🍓Centos文件操作

#创建文件
touch a.txt

#修改文件的创建日期
touch -d "2022-08-18 10:00:00" a.txt

#创建并写入数据到文件
vi a.txt

#查看文件
cat a.txt

#查看并修改文件
#vi命令进入只读模式
vi a.txt
#显示行号
:set nu
#进入编辑模式
i
#保存修改退出
:wq!
#不保存修改退出
:q!

#动态查看文件
tail -f a.txt

🍓时间

#查看当前系统时间
	date
	#手动修改当前系统时间
	date -s "2020-02-03 11:12:13"
	#校时服务器
	ntpdate ntp1.aliyun.com

🍓定时任务

#修改配置文件
	vi /etc/crontab

	#在以下配置文件中加入需要定时执行的命令
	SHELL=/bin/bash
	PATH=/sbin:/bin:/usr/sbin:/usr/bin
	MAILTO=root
	HOME=/
	
	# For details see man 4 crontabs
	# Example of job definition:
	# .---------------- minute (0 - 59)
	# |  .------------- hour (0 - 23)
	# |  |  .---------- day of month (1 - 31)
	# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
	# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
	# |  |  |  |  |
	# *  *  *  *  * user-name command to be executed
	
	#加入定时任务:每天16:00执行命令ntpdate ntp1.aliyun.com
	0 16 * * * ntpdate ntp1.aliyun.com

🍓免密登录

#1. 检查是否安装了ssh  (openssh-server,openssh-clients,openssh)
	yum list installed | grep ssh
	#2. 检查是否启动了sshd(d表示守护进程)
	ps aux | grep sshd
	#3. 在客户端用户目录下生成秘钥对,会在.ssh文件夹下生成两个秘钥id_rsa(私钥)和id_rsa.pub(公钥)
	#rsa,一种加密算法,密码是'',表示无密,f表示秘钥对生成在哪个文件夹路径下
	ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
	#4. 追加公钥到~/.ssh/authorized_keys文件中(文件名、位置固定)
	cd ~/.ssh
	cat id_rsa.pub >> authorized_keys
	#5. 修改authorized_keys的权限为644(权限固定,不能多也不能少)
	chmod 644 authorized_keys
	#6. 验证是否成功,不需要输入密码
	ssh localhost
	#7. 将id_rsa.pub分发到你需要免密登录的其他服务器,并更名为authorized_keys,同时赋予权限644
	scp -P 22 .ssh/id_rsa.pub root@Centos101:/root/.ssh/authorized_keys
	scp -P 22 .ssh/id_rsa.pub root@Centos102:/root/.ssh/authorized_keys
	#8. 测试免密登录
	ssh -p 22 root@Centos101
	exit
	ssh -p 22 root@Centos102
	exit

🍓删除文件

#删除当前目录下92天之前的,文件类型是file的,名字以bk1,bk2结尾的
find . -mtime +92 -type f -name *.bk[12] -exec rm -rf {} \;

#当删除文件过大,可以使用argument list too long
find . -mtime +92 -type f -name "*.jpg" | xargs rm -r

🍓设置开启自启

#设置mysql开机自启
chkconfig mysqld on

🍓日志文件常用查看命令less

#显示日志前1000行
head -n 1000 日志文件名称

#显示日志后1000行
tail -n 1000 日志文件名称

#从1000行开始显示,显示后面的内容
tail -n +1000 日志文件名称

#日志内容搜索命令:
less 日志文件名称
/  #向下搜索
?  #向上搜索

#组合命令
#显示日志1000-3000行的内容
cat 日志文件名称 | head -n 3000 | tail -n +1000

#显示日志1000行往后1000行的内容
cat 日志文件名称 | tail -n +1000 | head -n 1000

🍓查看系统信息

#查看系统内核
uanme -r

#查看系统版本
cat /etc/redhat-release