Linux语法 命令大全

目录

帮助命令

查看文件

目录操作

文件操作

其他命令

时间日期类

用户管理命令

sudo 临时管理权限

用户组管理

访问权限

压缩解压类

磁盘管理

进程管理

ps 查看进程状态(process status)

kill 终止进程

top 实时监控系统进程状态

netstat 显示网络状态和端口占用信息

搜索查找类

VIM编辑器

一般模式

编辑/插入模式(一般按 i 进入)

命令模式( : +命令)

网络配置和系统管理操作

虚拟机的网络连接模式

系统管理

防火墙设置

Linux进程运行级别

关机重启命令

crontab 系统定时任务

软件包管理

RPM

YUM

Shell

系统预设变量

自定义变量

特殊变量

运算符

条件判断

常用判断条件

逻辑与&&、或|| 实现三目运算符

流程控制

if 判断

case 语句

for 循环

while 循环

read 读取控制台输入

函数

系统函数 (basename、dirname)

自定义函数

正则

文本处理工具

层级式目录结构


        [  ] 中表示当前所在路径

~ 表示 /root

  • Ctrl + C 停止进程

  • Ctrl + L 清屏,等同于clear;彻底清屏/重置是reset

帮助命令

man [命令名称] 查看命令的说明文档

man -f cd / help cd 查看内置命令

type cd / history /exit / useradd 查看命令类型(内嵌、外部)

ls --help 命令自带的帮助选项

查看文件

  • cat [选项] 要看的文件

-n 显示所有行的行号

  • more 分屏显示要查看的文件

  • less 分屏显示文件内容

  • 空格 向下翻页

  • Enter 向下翻一行

  • q 退出

  • Ctrl + F 向下滚动一屏

  • Ctrl + B 返回上一屏

  • = 输出当前行的行号

  • :f 输出文件名和当前行的行号

  • /搜索

  • g页首 G页尾

  • n向下查找 N向上查找

目录操作

  • pwd 打印工作目录(print working directory)

pwd -P 实际路径(针对软链接)

  • cd /开头是绝对路径,否则是相对路径cd - 返回上一次工作目录cd ~ 或 cd 回到家目录cd .. 回到当前目录的上一级目录cd -P 跳转到实际物理路径,而非快捷方式路径

  • ls 列出目录内容(list) -a全部内容,-l列表显示,-al都显示,-lh显示文件大小

  • mkdir [相对/绝对路径] 创建文件夹 -p 若父目录不存在则自动创建

  • rmdir [相对/绝对路径] 删除文件夹 -p 若父目录为空则自动删除

文件操作

  • touch 创建空文件

  • cp [选项] source dest

-r 递归复制整个文件夹

cp前加反斜杠,不提示是否覆盖(\cp [选项] source dest)

  • rm 删除

-r 递归删除目录中所有内容

-f 强制执行删除操作,而不提示进行确认

-v 显示指令的详细执行过程

  • mv source dest 移动

其他命令

  • echo [选项] 输出内容到控制台

-e 支持反斜杠转义字符

echo $PATH $USER $HOSTNAME

  • > 覆盖写入 >> 追加写入 输出重定向,将信息输出到文件中

  • head -n<行数> 文件 查看文件头n行内容

  • tail -n<行数> 文件 查看文件末n行内容

tail -f 文件 实时追踪该文件的所有更新【Ctrl + S 暂停 Ctrl + Q 继续】

  • ln -s [原文件或目录] [软链接名] 给原文件创建一个软链接 link

删除软链接:rm -rf 软链接名

  • history 查看已经执行过的历史命令,+数字表示显示最近的几条记录

history -c 清除历史记录

时间日期类

ntpdate 更新最新时间

date 显示当前时间

date +%Y 显示当前年份

date +%m 显示当前月份

date +%d 显示当前是哪一天

date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒

date -d '1 days ago' 显示前一天时间

date -s "2022-07-11 11:46:30" 设置系统当前时间

date +%s 生成时间戳

cal 日历

cal -3 近三个月

cal -m 周一为始

cal -y 查看当前年全年

cal 2021 查看整年

用户管理命令

useradd 用户名 添加新用户

useradd -d 文件路径 用户名 指定用户名的home文件夹名称

useradd -g 组名 用户名

userdel 用户名 删除用户,不删用户文件夹

userdel -r 用户名 彻底删除用户,删除所有用户信息

passwd 用户名 更改用户的密码

id 用户名 查看用户信息,或验证用户是否存在

cat /etc/passwd 查看当前所有用户

su 用户名 切换当前用户(switch user)

who am i 查看最外层当前用户主机

whoami 查看目前会话用户

sudo 临时管理权限

使用root管理员,vim /etc/sudoers 在100行添加允许授权的用户名

普通用户临时权限使用:sudo ls

用户组管理

groupadd 组名 新建空组

usermod -g 组名 修改用户所属组

groupmod -n 新组名 原组名 修改组名

groupdel 用户名 删除组内指定用户

访问权限

Linux语法 命令大全_第1张图片

压缩解压类

gzip 文件名 压缩文件

gunzip 文件名.zip 解压文件

zip [选项] 打包名 要压缩的文件 压缩文件或目录 -r 压缩目录

unzip [选项] 文件名.zip 解压文件 -d [目录] 指定解压后文件的目录

tar [选项] XXX.tar.gz 要打包的目录 打包归档-zcvf 解包-zxvf

-c 产生.tar 打包文件

-v 显示详细信息

-f 制定压缩后的文件名

-z 打包同时压缩

-x 解包.tar 文件

-C 解压到指定目录

磁盘管理

yum install tree 安装tree包

tree ./ 查看当前文件层级结构

du 目录/文件 查看当前目录下所有占有空间大小(disk usage)

-h 以人们较易阅读的GBytes、MBytes、Kbytes等格式自行显示

-a 不仅查看子目录大小,还要包括文件

-c 现实所有的文件和子目录大小后,显示总和

-s 只显示总和

--max-depth=n 指定统计子目录的深度为第 n 层

-ah 只显示总和和目录大小

df -h 查看磁盘使用情况(disk free)

-h 以人们较易阅读的GBytes、MBytes、Kbytes等格式自行显示

free -h 查看内存使用情况

lsblk -f 查看设备挂载情况

硬盘名字:IDE--hda SATA/SCSI--sda 虚拟化硬盘--vda

mount/umount 挂载/卸载

mount -o [loop当成硬盘挂载,ro只读,rw读写] 挂载设备名 挂载目录

vim /etc/fstab 进入手动设置开机自启挂载

fdisk -l 查看硬盘分区详情

进程管理

ps 查看进程状态(process status)

ps aux 查看系统中所有进程

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

a 列出带有终端的所有用户的进程

x 列出当前用户的所有进程,包括没有终端的进程

u 面向用户友好的显示风格

-e 列出所有进程

-u 列出某个用户关联的所有进程

-f 显示完整格式的进程列表

USER:该进程是哪个用户产生的

PID:进程的ID号

PPID:父进程的ID ps -ef看

%CPU:该进程占用CPU资源的百分比

%MEM:该进程占用物理内存的百分比

VSZ:该进程占用虚拟内存的大小,单位KB

RSS:该进程占用实际物理内存的大小,单位KB

TTY:该进程是在哪个终端中运行的。tty1是图形化终端,tty2-tty6是本地的字符页面终端。pts/0-255代表虚拟终端

STAT:进程状态。如:R运行状态;S睡眠状态;T暂停状态;Z僵尸状态;s包含子进程;l多线程;+前台显示;<高优先级;N低优先级

START:该进程的启动时间

TIME:占用CPU的运算时间

COMMAND / CMD :调用当前进程的命令

kill 终止进程

kill [选项] 进程号 通过进程号杀死进程 -9 表示强迫进程立即停止

killall 进程名称 通过进程名称杀死进程,支持通配符

1号进程 -> 启动sshd进程 -> 远程连接ssh -> bash控制台(Shell)

pstree 进程树 -p显示PID -u显示进程所属用户

top 实时监控系统进程状态

-d 秒数 指定每隔几秒更新,默认是3

-i 使top不显示任何闲置或者僵死进程

-p 通过指定监控进程PID来仅仅监控某个进程的状态

  • 默认按照%CPU排序(shift+P)

  • 以%MEM内存占用大小排序(shift+M

  • 以PID排序(shift+N)

  • 按u,选择指定用户

  • 按k,杀死指定PID

netstat 显示网络状态和端口占用信息

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

netstat -nlp | grep 端口号 查看网络端口号占用情况

-a 显示所有正在监听listen和未监听的套接字socket

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

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

-p 表示显示哪个进程在调用

d 目录文件 l链接 c字符设备文件 b块设备文件

ll:文件类型和权限 硬链接数 文件属主 文件属组 文件大小 建立或最近修改时间 文件名

chmod [{u/g/o/a} {+/-/=}{r/w/x}] [文件或目录] 修改文件权限

chmod [421] [文件或目录] r=4 w=2 x=1 rwx=4+2+1=7

例:chmod 644 xxx.sh (rwxr--r--)

chmod -R 644 xxx/ 修改整个文件夹里面所有文件的权限

chown [选项] [用户] [文件或目录] 改变文件或目录的所有者 -R进行递归

chgrp [选项] [用户] [文件或目录] 改变文件或目录的所属组

搜索查找类

find [搜索范围] [选项] 查找文件或目录

-name <查询方式> -user <用户名> -size [+ / -] <文件大小>

locate [搜索文件] 快速定位文件路径

updatedb 更新数据库

which/whereis [命令] 查看命令说明

grep -n 过滤 显示对应行号

wc 看文件或目录情况

 

VIM编辑器

一般模式(删除、复制、粘贴)、插入模式(按 i 进入,ESC退出)、命令模式(按 : 直接命令,如 :wq :q :q!)

  • :w 保存

  • :q 退出

  • :set nu 显示行号

  • :set nonu 不显示行号

一般模式

y复制、x剪切、p粘贴、u撤销、d删除、w单词、r替换

语法

功能描述

^

移动到行头

$

移动到行尾

w

移动到下一个词头位置

b

移动到上一个词头位置

e

移动到当前词尾

gg

页首部

H

当前页首

G

页底部

L

当前页尾

数字+G

移动到指定行

数字N+G

移动到目标行

x

剪切当前字符,相当于del删除

X

剪切前一个字符,相当于Backspace后退

u

撤销,相当于 Ctrl + Z

r

更改光标当前字符

R

替换模式(Insert模式)

yy

复制当前行

y数字y / 数字yy

复制一段(从光标当前行到后n行)

yw

复制一个词

y^

复制从光标位置到本行首

y$

复制从光标位置到当前行结束

p

粘贴目的行

数字p

重复粘贴多少次

dd

删除当前行

d数字d / 数字dd

删除光标(含)后多少行

dw

删除一个词

d^

删除从光标位置到本行首

d$

删除从光标位置到当前行结束

编辑/插入模式(一般按 i 进入)

按键

功能(进入编辑模式的光标位置)

i

光标前

a

光标后

o

光标的下一行

I

行头

A

行尾

O

当前光标的上一行

命令模式( : +命令)

:w 保存

:q 退出

:wq 保存并退出

:q! 不保存强制退出

/要找的词 n查找下一个,N查找上一个

:noh 取消高亮显示

:set nu 显示行号

:set nonu 关闭行号

:s/old/new 使用 new 替换当前行匹配到的第一个 old

:s/old/new/g 将当前行所有old改为new

:%s/old/new 替换文档中每一个匹配到的第一个old为new

:%s/old/new/g 将所有old改为new

网络配置和系统管理操作

远程登录:ssh [email protected]

ifconfig 查看网络接口配置

vim /etc/hosts 查看hosts文件(IP地址-主机名 通讯录)

添加后可直接ping主机名

hostname 查看主机名 hostnamectl 主机具体信息

vim /etc/hostname 编辑设置主机名

hostnamectl set-hostname xxx 实时更改主机名

vim /etc/sysconfig/network-scripts/ifcfg-ens33 更改网络配置文件

将文件第四行BOOTPROTO="dhcp"改为"static"即修改为静态IP,同时添加以下内容:

  • #IP地址

  • IPADDR=192.168.111.100

  • #网关

  • GATEWAY=192.168.111.2

  • #域名解析器

  • DNS1=192.168.111.2

  • 子网掩码(默认为255.255.255.0)

重启网络服务:service network restart

虚拟机的网络连接模式

  • 桥接模式:虚拟机直接连接外部物理网络,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的。

  • NAT模式:虚拟机和主机构建一个专有网络,通过虚拟网络地址转换(NAT-Network Address Translation)设备对IP进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机。

  • 仅主机模式:虚拟机只与主机共享一个专有网络,与外部网络无法通信。

系统管理

  • 进程process:一个正在执行的程序或命令 PID进程识别码

  • 服务service:启动后一直存在、常驻内存的进程

  • 守护进程daemon:具体执行系统服务的进程

查看服务:ls usr/lib/systemd/system centOS 6 :/etc/init.d/

systemctl 主要用于管理所有服务,启动或停止当前服务,设置开机自启动状态

设置服务:systemctl start | stop | restart | status |enable/disable 服务名

列出服务:chkconfig -- list

设置指定运行级别on/off某服务:chkconfig -- level 3 network on

防火墙设置

  • systemctl status firewalld 查看防火墙

  • systemctl stop firewalld.service 关闭防火墙

  • systemctl disable firewalld.service 关闭开机自启动

Linux进程运行级别

systemctl get-default 查看当前运行级别

Ctrl + Alt + F1 / init 5 切换到运行级别5

Ctrl + Alt + F2~6 / init 3 切换到运行级别3

开机 -> BIOS -> /boot -> init进程 -> 运行级别 -> 运行级对应的服务

Linux语法 命令大全_第2张图片

CentOS7运行级别简化为:

  • multi-user.target 等价于原运行级别3(多用户有网,无图形界面)

  • graphical.target 等价于原运行级别5(多用户有网,有图形界面)

关机重启命令

  • shutdown 关机(默认1min后执行)

  • shutdown -c 取消关机

  • shutdown now 立即关机

  • shutdown 数字 几分钟后关机

  • shutdown 15:28 定时关机

预读迟写(buffer缓冲区实现)

sync 将数据由内存同步到硬盘中(手动存盘)

halt 停机,关闭系统,但不断电

poweroff 关机,断电

rebot 重启,等同于 shutdown -r now

shutdown [选项] 时间

  • -H 相当于 halt,停机

  • -h 相当于poweroff,关机

  • -r 相当于rebot,重启

crontab 系统定时任务

systemctl restart crond 重新启动 crond 服务

crontab [选项]

-e 编辑 crontab 定时任务

-l 查询 crontab 任务

-r 删除当前用户所有的 crontab 任务

编辑crontab任务界面

  1. 第几分钟 0-59

  2. 第几小时 0-23

  3. 第几天 1-31

  4. 第几月 1-12

  5. 一周当中的星期几 0-7

*表示任何时间 ,表示不连续的时间 -代表连续 */n代表多久执行一次

软件包管理

RPM

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

rpm -qa 查询所安装的所有rpm软件包

rpm -qi 软件名 查询指定软件安装的详细信息

rpm -e 软件包 卸载软件包

rpm -e --nodeps 软件包 不检查依赖卸载软件包

rpm -ivh 软件包

-i 安装install

-v 显示详细信息--verbose

-h 进度条--hash

--nodeps 安装前不检查依赖

YUM

YUM(Yellow Dog Updater, Modified) 可以自动处理依赖性关系,一次安装所有依赖的软件包

yum [选项] [参数]

-y 所有的提问都回答yes

参数:install安装,update更新,check-update检查更新,remove删除,list显示软件包信息,clean清理yum过期缓存,deplist显示所有依赖关系

Shell

脚本格式

#!/bin/bash 开头(表示指定解析器)

脚本执行方式

  • 使用bash或sh 直接解析脚本 新生成子Shell执行

  • 打开可执行权限,直接用路径跑 新生成子Shell执行

  • 在脚本路径前加上 “.” 或者 source 直接在当前Shell执行

系统预设变量

常用系统变量:$HOME、$PWD、$SHELL、$USER

env 当前所有环境变量

printenv 变量名 打印环境变量信息

set 当前定义的所有变量

自定义变量

定义变量:变量名=变量值

转为全局变量:export 变量名 注意父子Shell值传递问题

声明静态变量(只读):readonly 变量

撤销变量:unset 变量名

特殊变量

$(xxxx) 或 `xxxx` 命令替换

  • $n n为数字,$0代表该脚本名称,$1-9代表第一到地九个参数,十以上需要大括号${10}

  • $# 输入参数个数

  • $* 获取所有输入参数,看成一个整体

  • $@ 获取所有输入参数,把每个参数分区对待

  • $? 最后一次执行命令的返回状态

运算符

a=$[1+2] a=$((1+2)) 将计算式放在中括号或双小括号中即可

expr 1 + 2 expr 5 /* 2

条件判断

test 条件 [ 条件 ](注意方括号内首尾有空格) 条件之间也要加空格

$? 查看判断结果,0表示正确,1表示错误

若方括号中只有一个值,结果为0;若为空值,则结果为1

常用判断条件

  • -a 逻辑与(and)

  • -o 逻辑或(or)

两个整数之间比较

  • -eq 等于(equal)

  • -ne 不等于(not equal)

  • -lt 小于(less than)

  • -le 小于等于(less equal)

  • -gt 大于(greater than)

  • -ge 大于等于(greater equal)

如果是字符串之间的比较,用等号“=”判断相等,用“!=”判断不等。

按照文件权限进行判断

  • -r 有读的权限(read)

  • -w 有写的权限(write)

  • -x 有执行的权限(execute)

按照文件类型进行判断

  • -e 文件存在(existence)

  • -f 文件存在并且是一个常规的文件(file)

  • -d 文件存在并且是一个目录(directory)

逻辑与&&、或|| 实现三目运算符

[ xxx ] && echo OK || echo notOK

如果第一条语句为真,则执行第二条。如果为假,则执行第三条

流程控制

if 判断

单分支

if [ 条件 ]; then xxx; fi

if [ 条件判断式 ];then 程序 fi

或:

if [ 条件判断式 ] then 程序 fi

多分支

if [ 条件 ]; then xxx; elif [ 条件 ]; then xxx; fi

if [ 条件判断式 ] then 程序 elif [ 程序判断式 ] then 程序 else 程序 fi

case 语句

;; 相当于break *)相当于default

case $变量名 in "值1") 程序1 ;; "值2") 程序2 ;; *) 最终其他程序 ;; esac

for 循环

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

foreach循环:

for 变量 in 值1 值2 值3…do 程序 done

while 循环

while [ 条件判断式 ]do 程序 done

read 读取控制台输入

read [选项] [参数]

-p 指定读取值时的提示符 -t 指定读取时等待的时间(秒)

函数

生成带时间戳的变量名

#!bin/bash filename="$1"_log_$( date +%s ) echo $filename

系统函数 (basename、dirname)

basename [string / pathname] [suffix]

取路径里的文件名称 suffix去掉指定后缀

dirname 文件绝对路径

$(cd $(dirname $0); pwd)

自定义函数

function funname ( ) { 程序; [return int;] }

正则

^ 以xx开头,如:^a,表示axx,axxx

$ 以xx结尾,如:t$,表示xxt,xxxt ^$匹配出空行

. 匹配一个任意字符,如r..t,表示rabt,root…

* 匹配多个上一字符,如ro*t,表示rt,root,rooot,roooot… .*匹配出任意字符

+ 出现1次或多次 ? 出现0次或1次

[ ] 字符区间 , - *

\ 转移字符,必须单引号引起来

{ } 重复出现几次 使用-E 扩展才有用

文本处理工具

cut [选项] filename 默认分隔符是制表符

-f 列号,提取第几列 -d 分隔符,按指定分隔符分割列,默认是制表符“/t” -c 按字符进行切割,后加加n表示取第几列,比如 -c l

awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2}…’ filename

pattern:表示awk在数据中查找的内容,就是匹配模式 action:在找到匹配内容时所执行的一系列命令

-F 指定文件分隔符 -v 赋值一个用户定义变量(引入变量) FILENAME 文件名 NR 已读的记录数(行号) NF 浏览记录的域的个数(切割后,列的个数)

层级式目录结构

  • /binBinary的缩写,最经常使用的命令

  • /sbin:System Binary的缩写,系统管理员使用的系统管理程序

  • /lib:库目录,重要

  • /usr:user用户

  • /boot:核心镜像文件,单独挂载了1G硬盘空间,类似于Win中System32

  • /dev:设备

  • /etc:配置文件

  • /home:普通用户的主文件夹

  • /root:超级管理员主文件夹

  • /opt:可选目录,存放第三方软件

  • /media:可移动媒体设备

  • /mnt:外部存储,类似于media

  • /proc:process进程目录

  • /run:运行目录,当前所有运行信息

  • /srv:serice系统服务

  • /sys:系统硬件相关信息

  • /tmp:临时目录

  • /var:变量,可变目录。一般存放日志

你可能感兴趣的:(你必须知道的计算机,【查阅手册】,linux,服务器,运维)