Linux语法基础

本文聚焦CentOS 6.5,介绍基本命令使用。涵盖正则表达式特殊符号含义,如^、$等,还涉及替换、切分与排序。同时介绍了vi、sed、awk等编辑器和工具,以及用户管理,包括用户增删和权限设置,并给出命令使用示例。

概述:本文主要介绍CentOS 6.5下的一些基本命令的使用,包括正则表达式中特殊符号的含义、vi编辑器和文本分析工具awk的使用等,并给出命令的具体使用示例。

1、正则表达式

(1) ^(开头)、$(结尾)、|(或)、<(单词边界)、>(单词边界)、.、*、+、?的使用

需要使用\转义的符号:{、},(、),|、<、>、? 使用grep -E时可以不使用\转义上述符号

假设文件内容为test.txt

ooxx12123
ooxx 121222322
oxx 1234
123 ooxx
oo1243
oo123xxx
$1239x
dfjdfkloxoo3
dfffffffooo4
ooxx 1234
1234 helloworld
hhh  xxoo
IPADDR=127.0.0.1

eg1:四位数字的匹配

grep -E "[^0-9][0-9]{4}[^0-9]" test.txt
#上面的方式具有局限性
grep "\(^[0-9]|[^0-9][0-9]\)[0-9]\{2\}[0-9]$|\([0-9][0-9^]\)" test.txt
#或
grep -E "(^[0-9]|[^0-9][0-9])[0-9]{2}[0-9]$|([0-9][0-9^])" test.txt

2、替换、切分与排序

. ,$s/oo/yy/
#全文替换(行内只替换第一个匹配的)
%s/oo/yy/
#行内匹配的都替换掉(i表示忽略大小写)
%s/oo/yy/g
%s/oo/yy/gi
#若查找内容包含/,则改用@替换之
%s#/a#/b#
. ,$s%/b%/b%
#删除文件内容
. ,$d
#或
dG
#恢复文件内容
u
#删除1到倒数第二行数据
1,$-2d
#复制3到第九行
3,9y
#粘贴
p
​
#切分文件
#输出指定列(按某种分隔符)
#显示第一列
cut -d' ' -f1 test.txt
#显示第二列
cut -d' ' -f1,2 test.txt
#显示1-3列
#不显示没有分隔符的行
cut -d' ' -f1,2 -s test.txt
​
#排序
sort ../etc/hosts
#指定第二列排序
sort -t' ' -k2 ../etc/hosts
#指定数值排序
sort -t' ' -n -k1 ../etc/hosts
​
#指定数值排序(大->小)
sort -t' ' -n -r -k1 ../etc/hosts
#单词统计(末尾$也算)
cat -A test.txt
wc test.txt

3、行编辑器sed

#显示所有行
sed "2p" test.txt
#显示第二行
sed -n "2p" test.txt
#删除第二行(修改原文件i)
sed "2d" test.txt
#删除第二行
sed -i "2d" test.txt
#第二行后增加数据(不修改原文件)
sed "2a\hello,hadoop" test.txt
#第二行前增加数据(修改原文件)
sed -i "2i\hello,hadoop" test.txt
#替换、删除
sed "s/hadoop/Hadoop/" test.txt
sed "/hello,/d" test.txt
​
#应用1
sed "s/[0-9]/8/" test.txt
​
sed "s/id:[0-9]:initdefault:/8:initdefault:/" test.txt
#使用选择符: \1表示第一个括号内的内容,\2同理
sed "s/\(id:\)[0-9]\(:initdefault:\)/\18\2/" test.txt
​
#变量的使用
num=100
echo $num
set "s/\(id:\)[0-9]\(:initdefault:\)/\1\$num\2/" test.txt
​
#应用2-----修改ip
#假设文本值为:
...
DEVICE=eth0
#HWADDR=00:0C:29:BD:89:6C
TYPE=Ethernet
#UUID=2600518b-aaaf-4f8f-9c67-b6fb1c6d0625
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.3.101
NETMASK=255.255.255.0
GATEWAY=192.168.3.2
DNS1=114.114.114.114
DNS2=8.8.8.8
DNS3=8.8.4.4
​
#方式一
sed "s/\(IPADDR=\([0-9]\?[0-9][0-9]\?\.\)\{3\}\).*/\188/" test.txt
​
#方式二
sed "s/\(IPADDR=\(\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\).*/\199/" test.txt
​

4、文本分析 awk

#拷贝文件
cp ../etc/passwd password
#分割(CUT)方式显示账户(匿名函数打印第一列)
awk -F':' '{print $1}' password
#或
cut -d':' -f1 password
​
#在上述命令基础上首尾再增加一行数据,以制表符分割
awk -F':' '{print $1 "\t" $7}' password
​
awk -F':' 'BEGIN{print "username\tshell"}{print $1 "\t\t" $7}END{print "admin\t\t/mbin/mbash"}' password
​
#搜索root所在行
awk '/root/{print $0}' password
​
#统计每行行号(NR)、每行列数(NF)、每行内容($0)
#awk默认按空格和制表符分割(-F':'表示按:分割)
awk -F':' '{print NR "\t" NF "\t" $0}' password
​
#应用:报表统计
#统计报表:合计每人1月工资,0:manager,1:worker
#awk.txt
Tom  0   2012-12-11      car     3000
John 1   2013-01-13      bike    1000
vivi 1   2013-01-18      car     2800
Tom  0   2013-01-20      car     2500
John 1   2013-01-28      bike    3500
#
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5}}END{for(i in name){print i "\t" name[i]}}' awk.txt
#
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5};if($2=="0"){role[$1]="manager"}else{role[$1]="worker"}}END{for(i in name){print i "\t" role[i] "\t" name[i]}}' awk.txt
​
#使用awk.sh运行
{
    split($3,date,"-");
    if(date[2]=="01"){
        name[$1]+=$5
    };
    if($2=="0"){
        role[$1]="manager"
    }else{
        role[$1]="worker"
    }
}
END{
    for(i in name){
        print i "\t" role[i] "\t" name[i]
    }
}
​
#运行 -f
awk -f awk.sh awk.txt

5、用户管理

(1)用户增删

useradd test01
useradd test02
#修改密码
passwd test01
passwd test02
​
userdel test01
rm -rf ../home/test01
rm -rf ../var/spool/mail/test01

(2) 权限设置

#root /目录下创建文件夹
mkdir share
#test01 进入share目录,创建文件将受限
vi ../share.txt
#授予权限
groupadd share
usermod -G share test01
#修改属组,为属组用户添加读权限
chown root:share share/
chmod g+w share/
#移除其他用户的执行权限,此时其他用户需要退出重新登录方生效
chmod o-rx share/
​
#test01在share下创建share1.txt
vi /share/share.txt
#test02在share下创建share2.txt
vi /share/share2.txt
​
#开放各自创建的文件权限实现文件共享
#test01用户下,这里o代表root,实际上对root无效
chown :share share.txt
chmod o-r share.txt
#test02用户下
chown :share share2.txt
chmod o-r share2.txt

说明:

  • wrx对应值分别为:421

  • 对于目录文件,要让其他用户访问需要设置x(1)权限!!

单向双向V2G 环境下分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)内容概要:本文介绍了在单向和双向V2G(Vehicle-to-Grid)环境下,分布式电源与电动汽车充电站的联合配置方法,并提供了基于Matlab的代码实现。研究涵盖电力系统优化、可再生能源接入、电动汽车充放电调度、储能配置及微电网经济调度等多个关键技术领域,重点探讨了在不同电价机制和需求响应策略下,如何通过智能优化算法实现充电站与分布式电源的协同规划与运行优化。文中还展示了多种应用场景,如有序充电调度、鲁棒优化模型、多目标优化算法(如NSGA-II、粒子群算法)在电力系统中的实际应用,体现了较强的工程实践价值和技术综合性。; 适合人群:具备电力系统、新能源、智能优化算法等相关背景的科研人员、研究生及从事能源系统规划与优化的工程技术人员;熟悉Matlab/Simulink仿真工具者更佳。; 使用场景及目标:①用于科研项目中关于电动汽车与分布式电源协同配置的模型构建与仿真验证;②支持毕业论文、期刊投稿中的案例分析与算法对比;③指导实际电力系统中充电站布局与能源调度的优化设计。; 阅读建议:建议结合文中提供的Matlab代码与具体案例进行同步实践,重点关注优化模型的数学建模过程与算法实现细节,同时可参考文末网盘资源获取完整代码与数据集以提升学习效率。
【电动车】【超级棒】基于蒙特卡洛模拟法的电动汽车充电负荷研究(Matlab代码实现)内容概要:本文围绕基于蒙特卡洛模拟法的电动汽车充电负荷研究展开,利用Matlab代码实现对不同类型电动汽车(如常规充电、快速充电、换电模式)在不同场景下的充电负荷进行建模与仿真。通过蒙特卡洛方法模拟大量电动汽车的充电行为,结合用户出行规律、充电时间、电量需求等随机因素,分析电动汽车规模化接入电网后对电力系统负荷的影响,并探讨分时电价策略对充电负荷的引导作用,进而优化电网运行。研究涵盖充电负荷的空间分布特性、时间分布特征及对电网峰谷差的影响,旨在为电力系统规划和电动汽车有序充电管理提供理论支持和技术工具。; 适合人群:具备一定电力系统、交通工程或新能源汽车背景的研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。; 使用场景及目标:①用于研究大规模电动汽车接入对配电网负荷曲线的影响;②支撑分时电价、需求响应等政策制定与优化;③为充电站规划、电网调度、储能配置等提供数据支持和仿真平台;④适用于学术研究、课题复现及工程项目前期分析。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注蒙特卡洛模拟的参数设置、充电行为的概率建模过程,并尝试调整输入变量以观察负荷变化趋势,加深对电动汽车充电负荷不确定性和聚合效应的理解。
### Linux 基础语法概述 Linux 是一种基于 Unix 的开源操作系统,其基础语法主要围绕着命令行工具展开。掌握这些基础知识对于日常操作和深入开发都至关重要。 #### 终端命令格式 Linux 中的终端命令遵循固定的结构[^3]: ```bash # 命令 [-选项][参数] command [-option][parameter] ``` - **`command`**: 表示具体的命令名称,通常是对应功能的英文单词或缩写。 - **`[-option]`**: 可选部分,用于调整命令的行为或提供额外的功能。 - **`[parameter]`**: 指定命令作用的对象,比如文件路径、用户名或其他实体。 #### 查看帮助信息 当不熟悉某个命令时,可以通过以下方式获取更多信息: 1. 使用 `--help` 选项显示简要的帮助信息: ```bash command --help ``` 2. 利用 `man` 手册页查看详细的文档描述: ```bash man command ``` #### 常见的基础命令 以下是几个常用的 Linux 命令及其用途[^3]: | 命令 | 功能 | |--------------|--------------------------------------| | `ls` | 显示当前目录下的文件列表 | | `cd` | 更改工作目录 | | `pwd` | 输出当前所在的工作目录 | | `mkdir` | 创建新目录 | | `rm` | 删除文件或目录 | | `cp` | 复制文件 | | `mv` | 移动或重命名文件 | | `touch` | 创建空文件 | | `cat` | 查看或连接文件内容 | | `echo` | 将字符串输出到屏幕 | 例如,创建一个新的目录并切换至该目录: ```bash mkdir new_directory cd new_directory ``` #### 软件包管理和 Shell 编程简介 除了基本命令外,了解如何管理软件包以及编写简单的 Shell 脚本也是重要的技能之一[^1]。常见的软件包管理工具有 `apt`, `yum`, 和 `dnf` 等,具体取决于所使用的发行版。 Shell 脚本是一种自动化任务的强大工具,通过组合多个命令实现复杂逻辑处理。一个简单的例子如下所示: ```bash #!/bin/bash for file in *.txt; do echo "Processing $file" done ``` 此脚本会遍历当前目录下所有的 `.txt` 文件,并打印每一步正在处理哪个文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值