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)权限!!

代码转载自:https://pan.quark.cn/s/a4b39357ea24 本文重点阐述了利用 LabVIEW 软件构建的锁相放大器的设计方案及其具体实施流程,并探讨了该设备在声波相位差定位系统中的实际运用情况。 锁相放大器作为一项基础测量技术,其核心功能在于能够精确锁定微弱信号的频率参数并完成相关测量工作。 在采用 LabVIEW 软件开发的锁相放大器系统中,通过计算测量信号与两条参考信号之间的互相关函数,实现对微弱信号的频率锁定,同时输出被测信号的幅值信息。 虚拟仪器技术是一种基于计算机硬件平台的仪器系统,其显著特征在于用户可以根据实际需求自主设计仪器功能,配备虚拟化操作界面,并将测试功能完全由专用软件程序实现。 虚拟仪器系统的基本架构主要由计算机主机、专用软件程序以及硬件接口模块等核心部件构成。 虚拟仪器最突出的优势在于其功能完全取决于软件编程,用户可以根据具体应用场景灵活调整系统功能参数。 在基于 LabVIEW 软件开发的锁相放大器系统中,主要运用 LabVIEW 软件平台完成锁相放大器功能的整体设计。 LabVIEW 作为一个图形化编程环境,能够高效地完成虚拟仪器的开发工作。 借助 LabVIEW 软件,可以快速构建锁相放大器的用户操作界面,并且可以根据实际需求进行灵活调整和功能扩展。 锁相放大器系统的关键构成要素包括测量信号输入通道、参考信号输入通道、频率锁定处理单元以及信号幅值输出单元。 测量信号是系统需要检测的对象,参考信号则用于引导系统完成对测量信号的频率锁定。 频率锁定处理单元负责实现测量信号的锁定功能,信号幅值输出单元则负责输出被测信号的幅值大小。 在锁相放大器的实际实现过程中,系统采用了双路参考信号输入方案来锁定测量信号。 通过分析两路参考信号之间的相...
边缘计算环境中基于启发式算法的深度神经网络卸载策略(Matlab代码实现)内容概要:本文介绍了在边缘计算环境中,利用启发式算法实现深度神经网络任务卸载的策略,并提供了相应的Matlab代码实现。文章重点探讨了如何通过合理的任务划分与调度,将深度神经网络的计算任务高效地卸载到边缘服务器,从而降低终端设备的计算负担、减少延迟并提高整体系统效率。文中涵盖了问题建模、启发式算法设计(如贪心策略、遗传算法、粒子群优化等可能的候选方法)、性能评估指标(如能耗、延迟、资源利用率)以及仿真实验结果分析等内容,旨在为边缘智能计算中的模型推理优化提供可行的技术路径。; 适合人群:具备一定编程基础,熟悉Matlab工具,从事边缘计算、人工智能、物联网或智能系统优化方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究深度神经网络在资源受限设备上的部署与优化;②探索边缘计算环境下的任务卸载机制与算法设计;③通过Matlab仿真验证不同启发式算法在实际场景中的性能表现,优化系统延迟与能耗。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注算法实现细节与仿真参数设置,同时可尝试复现并对比不同启发式算法的效果,以深入理解边缘计算中DNN卸载的核心挑战与解决方案。
### 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` 文件,并打印每一步正在处理哪个文件。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值