目录
Linux 常用操作指令
一,基本必会操作
1.1shutdown(相关操作)
1.2ping命令(ping [选项] ip)
二,目录操作
2.1 pwd(查看工作目录)
2.2 ls(列出指定目录内容)
2.3 cd(进入不同路径改变工作路径)
2.4 mkdir(创建目录)
2.5 ln(创建连接命令)
2.6 find (搜索操作)
2.7 rm(删除操作)
三,文件基础知识
3.1 cat(连接文件并输出显示文件内容)
3.2 more(命令显示一屏幕的文本)
3.3 head(在屏幕上显示指定文件的开头若干行)
3.4 touch (修改指定文件的时间标签,或创建空文件)
3.5 grep (文本文件中查找指定模式的词或短句)
3.6 sort (命令对文本文件的各行进行排序)
3.7 uniq(命令从排序好的文件中去除重复行)
3.8 comm (命令对两个已排序文件进行逐行比较)
3.9 diff(比较两个文本文件并找出不同)
3.10 cmp(命令对两个文件逐一比较相同不显示信息,有差异则会报出)
3.11 find(在指定目录下查找文件)
3.12 cp(复制文件或目录到指定位置,源文件不变)
3.13 (rm命令删除文件和目录)
3.14 mv(从一个目录移动文件到另一个目录)
3.15 wc(统计指定文件的字节数,字数,行数并显示)
3.16 chmod(命令改变或者设置文件权限)
四,进程相关命令操作
4.1 ps(命令查看当前系统进程信息)
4.2 nice(命令修改优先级)
4.3 kill(指令终止进程)
4.4 sleep(命令使程序暂停执行)
五,文件压缩命令操作
5.1 tar(打包/解包指令)
5.2 gzip(命令对文件进行压缩和解压)
5.3 unzip(命令对ZIP格式文件解压)
六,文本操作
vi部分(有三种工作方式)
vim部分
(三种工作方式,大部分操作与vi详细更人性化)
七,Linux shell程序设计方面
7.1建立脚本
7.2执行脚本的三种方式
7.3 shell特殊字符
7.4算数运算(两种)
7,5控制结构
if语句
case语句
while语句
until语句
for语句
select语句(常用做菜单)
break语句(跳出循环体)
continue语句(跳出本次循环)
7.6条件测试(三种写法)
7.7 bg和fg命令(bg [进程号]作业的前后台切换)
八,linux环境编程与常用的开发工具
1,gcc编译系统(能编译C,C++,等C语言)
gcc相关指令
2,gdb调试工具
九,Linux系统管理
文件系统:
用户系统:
9.1 useradd(创建用户组操作)
9.3 groupadd (添加用户组的命令)
9.4 关于组其他指令
9.5文件系统的备份(三种)
linux的特点
Linux图形环境
linux内核概述
linux系统安全设定方式
Linux系统调用和库函数
Linux 常用操作指令
前言bash一般格式
命令名 [选项] [参数1] [参数2]
①命令名必须为小写 ②[选项]是对命令的特殊具体定义 ③"[ ]"中是可选可有可无的
④命令正常执行返回0(无报错即执行)⑤联机后的help对每个命令都做了准确说明
一,基本必会操作
man man #进入linux工作使用手册,含配置,编程各种操作非常详细!(“q”退出) info #info是man指令的详细内容(info里有更完整最新的GUN工具信息) help #显示shell的内部帮助信息 who #输出正在使用系统的用户信息 echo hello wold! #echo将指定内容输出(输出hello wold!) echo -e 今天 ·date· #echo允许转义将指定内容输出(输出今天加系统时间) mv #将一个文件移到另一个文件(下面有详解) cp #将源文件或目录复制到目标文件或目录(下面有详解) clear #清屏 ls #查看当前路径下文件 date #显示系统日期和时间 cal 10 2022 #显示2022年10月的日历(如果只输出第一个参数,则显示该年的日历) ip addr #查看自己的网络位置相关数据 passwd #修改用户密码 su #获取管理员操作权限(下载和根目录操作等都需要权限) sudo #使用管理员权限进行相关的操作 sudo passwd #修改管理员密码 !! #执行上一条指令 !n #执行第n条指令 !string #执行上一条以string开头的指令 poweroff #直接关闭电源 reboot #重启 shutdown #一分钟后关机 exit #退出终端
1.1shutdown(相关操作)
shutdown -r #关机并重启 shutdown -s -t #设置定时关机 shutdown -c #取消关机 shutdown -f #强行关闭应用 shutdown -h #休眠
1.2ping命令(ping [选项] ip)
ping -b #允许ping一个广播地址 ping -c count #发送count次测试报文 ping -r #绕过正常路由表可用来ping主机是否通 ping -s packetsize #指定发送字节数默认为56字节
二,目录操作
~表示用户主目录
.表当前目录
..上级目录
2.1 pwd(查看工作目录)
pwd #查看当前工作路径
2.2 ls(列出指定目录内容)
ls #查看当前路径的内的文件和目录 ls -a #显示所有的文件,包括隐藏文件(以.开头的文件) ls -A #显示所有的文件,包括隐藏文件,但不包括表示当前目录.和上级目录 ls -c #和-lt一起使用:显示列表并且以ctime(文件状态最后改变时间)排序。 #和-l一起使用:显示ctime并且以文件名排序。其他情况,以ctime排序 ls -d #仅列出目录本身,而不是列出目录里的内容列表 ls -f #直接列出结果,而不进行排序(ls默认会以文件名排序) ls --color[=WHEN] #是否根据文件类型显示颜色,WHEN可以为never、always或者auto ls --full-time #以完整的实际模式显示(包含年月日时分) ls -g #列表显示结果,和-l类似,但是不显示文件所属者。 ls -h #将文件内容大小以GB、KB等易读的方式显示 ls -i #结合-l参数,列出每个文件的inode ls -l #列出长数据串,显示出文件的属性与权限等数据信息(常用) ls -n #和-l类似,只是显示的所属用户和组不是名称而是对应的id ls -r #将排序结果以倒序方式显示。 ls -S #以文件大小排序 ls -t #以修改时间排序 ls --help #显示帮助信息 ll #查看当前目录内的详细内容(权限,创建时间等)
2.3 cd(进入不同路径改变工作路径)
cd ~ #进入当前用户目录 cd / #进入根目录 cd - #进入上一次访问的目录 cd .. #进入上一级目录 cd a/b/c #进入绝对路径(a下的b下的c)
2.4 mkdir(创建目录)
小tips:(命名目录或文件尽量避免 ; | < > ' " $ ! % & * ? \ () [] 因为有特殊含义)
mkdir sn #在当前目录下创建为“sn”的目录 mkdir /abc #在根目录下创建“abc”的目录 mkdir ./bb #在目录上一级创建“bb”的目录
2.5 ln(创建连接命令)
ln -d home/m1.c /home/test.1 #给home下的m1.c建立与test.c建立硬链接 ln -s home/m1.c /home/test.1 #给home下的m1.c建立与test.c建立符号链接 ln -i home/m1.c /home/test.1 #给home下的m1.c覆盖test.c(需要用户授权)
2.6 find (搜索操作)
find / -name 'a' #搜索根目录下名为"a"的目录和文件 find / -name 'a*' #搜索根目录以为"a"开头的目录和文件
2.7 rm(删除操作)
rm -r /abc #删除/目录以及其中的文件(会提醒) rm -rf /abc #直接强制删除目录及其中文件
三,文件基础知识
文件类型:(一共四种)
普通文件(-):文本文件,数据文件,可执行二进制文件。
目录文件(d):一种特别的文件,可构成文件系统的分层树结构。
设备文件(c字符,b块):一种可以标记各个设备驱动器,字符设备,块设备的文件。
符号链接文件(l):提供其他文件引用的文件。
文件路径:(从某一树节点出发,沿树的分支到达目标文件或者目录所在节点路径)
绝对路径:从根目录(/)出发直到目标文件或者目录的路径
相对路径:从当前目录出发直到目标文件或目录路径
通配符:
* 匹配任意数目的任意字符
? 匹配单一数目的任何字符
[] 匹配[ ]之内的任意字符
[!] 匹配除了[!]内的任意字符
3.1 cat(连接文件并输出显示文件内容)
cat -b file #从第一行开始输出file中所有非空内容 cat -n file #从第一行开始输出file中所有内容(包括空行) cat -s file #将file中相邻空行合并为一个空行 cat -help #查看help的详细用法
3.2 more(命令显示一屏幕的文本)
more -[num] file #指定一屏显示具体(num)行数 more -c file #显示满后不主动滚屏,清理后显示剩下内容 more -d file #显示时提示还有剩余内容百分比 more -s file #将联系空白行显示一个空白行输出 more +/ file #显示指定文件之前搜索字符串 more +[num] file #从第(num)行开始查看
在进行查看时 Space 显示文本下一屏内容
# B 显示上一屏内容
# Enter 显示文本下一行内容
# / 接着输入一个模式,可在文本中寻找下一个匹配模式
# H 显示帮助信息
# Q 退出more指令)
#(less与more相似,可用上下翻行,pagedown和pageup翻页)
3.3 head(在屏幕上显示指定文件的开头若干行)(ail在屏幕上显示指定文件的末尾若干行与head相似)
head -[num] file #显示file文件的前num行 head -c -[num] file #显示file文件的前num个字节 head -q file #显示文件内容,但不给出文件名 head -v file #显示文件内容,并给出文件名
3.4 touch (修改指定文件的时间标签,或创建空文件)touch -a file #改变指定文件的存取时间 touch -m file #改变指定文件的修改时间 touch -f STAMP #使用STAMP指定的时间标签 touch ex2 #创建ex2(空文件)
3.5 grep (文本文件中查找指定模式的词或短句)
grep -b -E [file1,flie2...] #查找正则表达式下的输出首次匹配字符串在文件中的位置 grep -n -E [file1,flie2...] #查找正则表达式下的输出匹配模式之前加行号 grep -v -E [file1,flie2...] #查找正则表达式下的显示不包含匹配字符串的文本行号 grep -x -E [file1,flie2...] #查找正则表达式下的显示整个行都要严格匹配行 grep -c -E [file1,flie2...] #查找正则表达式下的匹配字符的行的总数 grep -f -E FILE [file1,flie2...] #查找正则表达式下从文件FILE中获取模式 grep -i -E [file1,flie2...] #查找正则表达式下匹配时不做大小写区分 grep -b -F [file1,flie2...] #查找纯字符串下的输出首次匹配字符串在文件中的位置 grep -n -F [file1,flie2...] #查找纯字符串下的输出匹配模式之前加行号 grep -v -F [file1,flie2...] #查找纯字符串下的显示不包含匹配字符串的文本行号 grep -x -F [file1,flie2...] #查找纯字符串下的显示整个行都要严格匹配行 grep -c -F [file1,flie2...] #查找纯字符串下的匹配字符的行的总数 grep -f -F FILE [file1,flie2...] #查找纯字符串下从文件FILE中获取模式 grep -i -F [file1,flie2...] #查找纯字符串下匹配时不做大小写区分
3.6 sort (命令对文本文件的各行进行排序)
sort -m file #d对已排序好文件进行合并。 sort -c file #检查是否排序,未排序的报错 sort -o file #将排序放入指定文件里 sort -d file #按字典排序 sort -f file #忽略字母大小写排序 sort -i file #忽略非打印字符排序 sort -r file #按逆序排序 sort -b file #比较关键字忽略前导空白符 sort flie >more #将文件file的前10行定向到more中
3.7 uniq(命令从排序好的文件中去除重复行)
uniq [选项][输入文件[输出文件]]
uniq -c file #显示输出时在行首加上出现次数 uniq -d file #只显示重复行 uniq -f -fields=N file #忽略比较前的N个字段 uniq -s -chars=N file #忽略比较前的N个字字符 uniq -u file #只显示文件的不重复行
3.8 comm (命令对两个已排序文件进行逐行比较)
comm -1 file1 flie2 #比较已排序的两个文件不显示第一列 comm -2 file1 flie2 #比较已排序的两个文件不显示第二列 comm -3 file1 flie2 #比较已排序的两个文件不显示第三列
3.9 diff(比较两个文本文件并找出不同)
diff -b flie flie1 #忽略空格造成的差别 diff -c flie flie1 #输出格式未上下三行 diff -C n flie flie1 #输出格式为上下n行 diff -e flie flie1 #输出一个合法ed脚本 diff -i flie flie1 #忽略字母大小写区别 diff -r flie flie1 #当file1与file2都是目录,递归找子目录
3.10 cmp(命令对两个文件逐一比较相同不显示信息,有差异则会报出)
cmp -b file1 file2 #显示有差异的字节 cmp -i -initial=n file1 file2 #跳过开头n个字节
3.11 find(在指定目录下查找文件)
find [目录名] [条件表达式] find cat -name filename #查找名为filename的文件 find cat -perm #按执行权限来查找 find cat -user username #按文件属主来查找 find cat -group groupname #按组来查找 find cat -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前 find cat -atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前 find cat -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 find cat -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在 find cat -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存 find cat -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 find cat -size n[c] #查长度为n块[或n字节]的文件 find cat -mount #查文件时不跨越文件系统mount点 find cat -follow #如果遇到符号链接文件,就跟踪链接所指的文件 find cat -prune #忽略某个目录
3.12 cp(复制文件或目录到指定位置,源文件不变)
cp -a /home/mengqc /home/liuz #常在复制目录时使用,递归将所有文件复制到目标文件 cp -d /home/mengqc /home/liuz #当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录; cp -i /home/mengqc /home/liuz #交互式复制文件,每个文件都要询问一次,可以输入n或者y进行选择复制或者不复制; cp -l /home/mengqc /home/liuz #对源文件建立硬连接,实际上不复制文件; cp -p /home/mengqc /home/liuz #保留源文件或目录的属性; cp -R/r /home/mengqc /home/liuz #递归处理,复制指定目录里面的层层子目录和对应的文件; cp -s /home/mengqc /home/liuz #对源文件建立软连接,实际上不复制文件; cp -u /home/mengqc /home/liuz #复制时比较源文件与目标文件的更改时间,如果源比目标新,则进行复制。或者目标不存在同名时,也会进行复制。 cp -S /home/mengqc /home/liuz #在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀; cp -b /home/mengqc /home/liuz #备份已存在的目标文件后再进行覆盖; cp -v /home/mengqc /home/liuz #显示执行情况的详细信息
3.13 (rm命令删除文件和目录)
rm -f test eample #删除test文件和eample文件(忽略不存在的文件删除) rm -r /home/a #递归的删除指定目录下的各级子目录和文件(慎用!) rm -i test #删除test文件(有提醒,输入y确定删除) rm -d /home #删除空目录
3.14 mv(从一个目录移动文件到另一个目录)
mv -i soure target #将源文件soure,移动到target中(有提醒) mv -f soure target #将源文件soure,移动到target中(无提醒) mv /home/mengqc . #将/home/mengqc中所有文件移到当前目录。
3.15 wc(统计指定文件的字节数,字数,行数并显示)
wc -clw flie #显示文件file的字节数,行数,字数(c[字节]l[行]w[字数]可换位置)
3.16 chmod(命令改变或者设置文件权限)
方式:chmod [who] [操作符] [mode] 文件名
例:
chmod a+x ex1 #将文件ex1权限改为所用用户可执行
#(具体组合太多以下列出选项
#who u 表示“用户(user)”,即文件或目录的所有者。
# g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
# o 表示“其他(others)用户”。
# a 表示“所有(all)用户”,也就是包括了u、g、o,它是系统默认值。
#操作符
# + 添加某个权限。
# - 取消某个权限。
# = 重新分配权限。
#mode
# r 表示有读取的权限
# w 表示有写入的权限
# x 表示有执行的权限(umask显示或设置新建文件权限的掩码)
(chgrp 改变文件或目录的用户组)
(chown改变文件或者目录的所属组)
四,进程相关命令操作
各项参数如下:
USER: 进程的当前用户;
PID : 毫无疑问, process ID的缩写,也就进程号;
PPID :process parent ID,父进程ID
VSIZE : virtual size,进程虚拟地址空间大小;
RSS : 进程正在使用的物理内存的大小;
WCHAN :进程如果处于休眠状态的话,在内核中的地址;
PC : program counter,
NAME: process name,进程的名称4.1 ps(命令查看当前系统进程信息)
ps -e #显示所有进程 ps -a #显示系统中与tty相关的所有进程信息 ps -f #显示进程的所有信息 ps -l #以长格式显示进程信息 ps -r #显示正在运行的进程
4.2 nice(命令修改优先级)
(ncie 取值范围为 -20 ~ 19,数值越小优先级越高)
nice -n, --adjustment=N #在优先级数值加上数字N(默认值为10)
4.3 kill(指令终止进程)
kill 1651 #终止1651号进程
4.4 sleep(命令使程序暂停执行)
sleep 5s #进程暂停执行5秒 sleep 5m #进程暂停执行5分钟 sleep 5h #进程暂停执行5小时 sleep 5d #进程暂停执行5天
五,文件压缩命令操作
5.1 tar(打包/解包指令)
( tar [选项] 文件或者目录)
tar -c file #创建新的打包文件
tar -t file #列出打包文件名
tar -x file #从打包文件中释放文件
tar -f file #指定打包文件名,需要放在选项后
tar -v file #列出详细的tar处理信息例:
tar zcvf file.tar.gz file #压缩file并打包为file.tar.gz tar zxvf file.tar.zip file #将file.tar.gz 解压到file
5.2 gzip(命令对文件进行压缩和解压)
(gizp [选项] [name]一般格式)
gzip -c file #将输出写到标准输出上,并保留原有文件。
gzip -d file #将压缩文件解压。
gzip -l file #对每个压缩文件,显示详细信息
gzip -r file #递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
gzip -t file #测试,检查压缩文件是否完整。
gzip -v file #对每一个压缩和解压的文件,显示文件名和压缩比。
gzip -num file #用指定的数字num调整压缩的速度,5.3 unzip(命令对ZIP格式文件解压)
(unizp [选项] 被压缩文件名)
unzip -c flie.zip #将解压缩的结果显示到屏幕上,并对字符做适当的转换
unzip -p flie.zip #与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
unzip -l flie.zip #显示压缩文件内所包含的文件
unzip -f flie.zip #更新现有的文件
unzip -t flie.zip #检查压缩文件是否正确,但不解压
unzip -u flie.zip #除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
unzip -z flie.zip #仅显示压缩文件的备注文字
unzip -v flie.zip #执行是时显示详细的信息。或查看压缩文件目录,但不解压
unzip -T flie.zip #将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间
unzip -x flie.zip #指定不要处理.zip压缩文件中的哪些文件
unzip -d flie.zip #指定文件解压缩后所要存储的目录
unzip -n flie.zip #解压缩时不要覆盖原有的文件
unzip -q flie.zip #安静模式,执行时不显示任何信息
unzip -o flie.zip #不必先询问用户,unzip执行后覆盖原有文件
unzip -a flie.zip #对文本文件进行必要的字符转换
unzip -j flie.zip #不处理压缩文件中原有的目录路径
unzip -aa flie.zip #把所有的文件目录当作文本处理
unzip -UU flie.zip #忽略Unicode编码字符
unzip -C flie.zip #压缩文件中的文件名称区分大小写
unzip -L flie.zip #将压缩文件中的全部文件名改为小写
unzip -I flie.zip #指定字符编码为UNIX
六,文本操作
小tips(文本编辑操作有vi和vim两种,vim要下载,建议使用vim,v太反人类,狗都不用)
vi部分(有三种工作方式)
基本操作
vi m1.c #进入m1文本中操作(若没有则创建该文件) vi 3 file #进入file文件,光标第3行的行首。 vi word file #进入file文件,光标停留在首次出现word的行首。 vi file1 file2 file3 #依次处理,flie1,flie2,flie3这些文件。
1,命令方式:(进入后默认命令方式)
1,上下左右--移动光标
2,x --删除字符(可5x,则向右删5个)
3,a --附加命令(附加到当前光标之后)
A --附加命令(附加到行尾)
4,i --插入指令当前位置(进入输出方式)
I --插入指令移动到首行(进入输出方式)
5, o --打开(在当前行的下一行进入输入方式)
O --打开(在当前行的上一行进行输入方式)
6,k,j, h,l --对应上下左右移动光标
7, 按“0” --光标移动到当前行头
8,w --光标后移至下一个词开头
9,b --光标前移至上一个词开头
10,M --光标移至屏幕中间行的开头
11,dd --删除光标所在整行
12,d[移动命令] --灵活删除
13,u --撤回上一步操作
14,U --撤回对当前行操作
15.J --把当前行与下行合并为一行(“nJ” ,n行合并)
2,输入方式:(所有操作都将输入文本中,注意上下左右变成abcd)
1,按esc --退出输出方式进入命令方式
2,Ctrl+U --光标退回刚插入字符串的首字符,并删除
3,Ctrl+W --光标移到最后插入单词首字符,并删除
4,Ctrl+T --光标在开头且有自动缩进,则插入缩进对应的空格
命令替换:(再文本中嵌入命令)
格式:
$(command)
`command`
cmd1$(cmd2)
cmd1`cmd2`
例:
echo now is ·data· i am in $(pwd) #在文本中插入输出时则会显示now is “现在系统时间” i am in “工作路径”
3,ex转义方式:
1,冒号 为ex命令的提示符,按下中断键可以终止正在执行的命令(常规为Delete),
转义方式结束后自动进入命令方式。
#常用的ex命令(包含命令定位,字符检索) #例 :1 $s/I/i/g
#从文件的第一行至最后一行将大写I变为小写i :20 #将光标移到20行,行首。 :/this #从当前往后查,光标移到从前往后第一个this :?this #从当前往前查,光标移到从前往后第一个this 退出vi(最好在命令方式下,避免误操作)
1, :wq --保存并退出
2, :ZZ --当对内容修改时将内容写入文件 (:X相同的用法)
3: :q! --不保存退出
vim部分
(三种工作方式,大部分操作与vi详细更人性化)
一,命令方式:(进入后默认命令方式)
1.1显示
:set nu ##在每一行前显示行号
:set nonu ##取消行号显示
:set mouse=a ##显示鼠标
:set cursorline ##显示行线
1.2字符的搜索:
/关键字
n向下匹配
N向上匹配
1.3字符的管理:
y2l ##复制2个字母
y2w ##复制2个单词
y2y ##复制2行
d2l ##删除2个字母
d2w ##删除2个单词
d2d ##删除2行
c2w ##剪切2个单词
c2c ##剪切2行
1.4字符的替换:
:%s/要替换的字符/替换成的字符/g
:%s/:/@/g ##替换全文的:为@
2,输入方式:
与正常window文本操作差不多。
退出vim(最好在命令方式下,避免误操作)
1,:w 将编辑的数据写入到硬盘中。
2,:q 离开vi.后面加!为强制离开。
3,:wq 保存后离开。:wq!为强制保存后离开
七,Linux shell程序设计方面
shell(解释性编程语言):用于执行复杂的系统管理任务。
7.1建立脚本
vim 一个文本加上一个 #!/bin/bash(一定要加且不能错告诉系统这个文本是脚本)
7.2执行脚本的三种方式
1, bash < 脚本名
bash
2,bash <脚本名 [参数] (与第一个相同可带参数)
bash ex2 /user/meng /user/zhang
3, 先加权限,再直接打脚本名字
chmod a+x bash_test1 # 将bash_test1给予执行命令 PATH=$PATH:. # 将脚本所在路径(.为当前工作路径)添加到搜索路径 bash_test1 # 输入脚本名运行脚本
7.3 shell特殊字符
1,常用通配符
^$ 匹配空行
^ *$ 匹配含有空格的空白行和空行
^.*$ 匹配整个行
[abc]*s 匹配s前面含有任意abc随机组合的字符串
[A-Za-z0-9.]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,4} 匹配电子邮件地址
\b[[:alpha:]]+\b 或(^| )["({[]*book[]})"?,.:;!'s ]*( |$) 匹配正规文本中的单词
http://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4} 匹配一个HTTP URL
2,引号
“” 双引号中除了($、\)其他均以字符对待
'' 单引号中都以普通字符出现
` 倒引号中的字符均以命令解释
3、其他符号
命令1&&命令2 逻辑与执行两个命令
命令1||命令2 逻辑或执行两个命令
{echo “你好”; who } 将两个指令组合执行
4、变量 ( 变量区分大小写,为数字(不能开头),字母,下划线组成)
变量名=字符串 定义变量,左右不能有空格
{name} 引用name变量
5,数组 (数组与c语言使用相似)
city[0]=beijing
city[1]=shanghai
6,位置参数(set 为位置参数赋值)
set 参数1 [参数2......]
其中对应 m1 m2 m3 m10 m11
$1 $2 $3 ${10} ${11}
7.4算数运算(两种)
let 算数表达式
let "j=i*6+2" #算数运算将i×6+2赋值给j
((算数表达式))
let ((j=i*6+2)) #算数运算将i×6+2赋值给j
7,5控制结构
if语句
if a>b #如果a大于b成立 then max=a #将a赋值给max elif a=b #再判断如果a=b then max=a #将a赋值给max else max=b #将b赋值给max fi #结束
case语句
read response #读取响应 case $response in #匹配响应 1)echo one;; #如果匹配到1则执行输出one 2)echo two;; #如果匹配到2则执行输出two 3)echo three;; #如果匹配到1则执行输出three
read(从键盘上读取数据,格式 read [选项][变量])
选项中 -r 取消转义
-t 设置读取时限
-u fd 从文件表述df对应的文件读取数据
-n 读取数据长度不超过nchar个
-N 读取长度等于nchar个
while语句
while i<5 #判断条件是否成立 do #do i++ #成立执行的指令 done # 结束
until语句
until i<5 #判断条件是否不成立 do #do i++ #不成立执行的指令 done # 结束
for语句
for day in Monday Wednesday Friday Sunday #(将day设置为循环变量,遍历后面的星期,与python相似) do #do echo $day #输出遍历值 done #结束
select语句(常用做菜单)
select choice in a b c d e #从后面的选项中遍历选择 do #do case "choice" in #判断选择的字符 a) echo "This is A choice" #如果选择为a输出This is A choice b) echo "This is B choice" #如果选择为b输出This is B choice c) echo "This is C choice" #如果选择为c输出This is C choice d) echo "This is D choice" #如果选择为d输出This is D choice e) echo "This is E choice" #如果选择为e输出This is E choice
break语句(跳出循环体)
break 2 #跳出两层循环
continue语句(跳出本次循环)
continue 2 #最内层循环向外跳到第2层
exit(退出正在执行的脚本)
7.6条件测试(三种写法)
1test -[选项] "对象" 2[ -[选项] "对象" ] 3[[ 条件表达式]](测文件属性和字符串比较)
文件方面的测试
选项 参数 功能
-r 文件名 如文件存在并且是用户可读的,则测试条件为真
-w 文件名 如文件存在并且是用户可写的,则测试条件为真
-x 文件名 如文件存在并且是用户可执行的,则测试条件为真
-f 文件名 如文件存在并且是普通文件,则测试条件为真
-d 文件名 如文件存在并且是目录文件,,则测试条件为真
-p 文件名 如文件存在并且是命名的FIFO文件,则测试条件为真
-b 文件名 如文件存在并且是块特殊文件,则测试条件为真
-c 文件名 如文件存在并且是字符特殊文件,则测试条件为真
-s 文件名 如文件存在并且文件长度大于0,则测试条件为真
-t 文件描述符 如文件被打开切文件描述符是与终端设备相关的,则测试条件为真,默认文件描述符是1字符串测试
选项 参数 功能
-z s1 如果字符串s1的长度为0,则测试条件为真-n s1 如果字符串s1的长度大于0,则测试条件为真
sl 如果字符串s1不是空字符串,则测试条件为真
!= s1!=s2 如果s1不等于s2,则测试条件为真
< s1> s1>s2 如果按自定顺序s1在s2之后,则测试条件为真 数值测试
数值测试运算符的形式及功能
参数 功能
n1 -eq n2 如果整数n1等于n2,则测试条件为真
n1 -ne n2
如果整数n1不等于n2,则测试条件为真n1 -lt n2 如果如果n1小于n2,则测试条件为真
n1 -le n2 如果如果n1小于或等于n2,则测试条件为真
n1 -gt n2 如果n1大于n2,则测试条件为真
n1 -ge n2 如果n1大于或等于n2,则测试条件为真
————————————————
(版权声明:本段条件测试段为CSDN博主「古大帅哥」的文章,原文链接:https://blog.csdn.net/qq_38333529/article/details/80387741)7.7 bg和fg命令(bg [进程号]作业的前后台切换)
bg %9630 #将9630号进程放入后台运行 fg %9630 #将9630号进程放在前台运行
八,linux环境编程与常用的开发工具
1,gcc编译系统(能编译C,C++,等C语言)
编译分4阶段
.预处理阶段
读取C语言并对以#开头的指令和特殊符合进行处理。
.编译阶段
编译程序,对预处理之后的输出文件进行词法,语法分析,并报语法错误。
.汇编阶段
把汇编语言代码翻译成目标机器代码。
.连接阶段
. 连接程序要解决外部符号访问地址问题。
gcc需要自主下载,命令如下
sudo apt-get install gcc #然后输入管理员密码就可以了(Ubuntu)
如果因为网络下载失败则需要。点击左下角找到
后修改,找到中国下载源。
然后再执行,后重试。
sudo apt-get update #一个更新刚刚设置的操作
gcc相关指令
gcc f1.c f2.c #对f1和f2文件编译并形成a.out可执行文件 gcc -E f1.c #仅作预处理,不进行编译、汇编和链接 gcc -S f1.c #仅编译到汇编语言,不进行汇编和链接 gcc -c f1.c #编译、汇编到目标代码(也就是计算机可识别的二进制) gcc -o f1.c file #执行命令后输出放入file中 gcc -g f1.c #生成调试信息 gcc -w f1.c #不生成任何警告
2,gdb调试工具
主要可以做4大类事,帮助用户在程序运行过程中发现bug。
1 启动程序,并列出可能会影响它运行的一些信息
2使程序在特定条件下停止下来
3当程序停下来的时候,检查发生了什么
4对程序做出相应的调整,帮助纠正一个错误并继续发现其它错误控制程序执行有具体的四个点
1停止点
2断点(到断点行则停止执行,断点信息用于显示函数调用的踪迹和变量的值)
3观察点(程序执行到某个表达式的值发生变化时暂停)
4捕捉点(捕捉程序运行时出现的事件)
运行程序:
run[args]
args:传给被调用程序的命令行参数
单步跟踪:
step[N] (程序执行N行后停止,默认n=1)
next[N](与step相似,但是不进入调用函数内部)
连续执行:
continue,c,fg(程序执行到下一个停止点)
gdb也需要下载
sudo apt-get install gdb #输入密码下载(Ubuntn)
gdb相关指令
gdb -h #列出所有选项,并附简要说明 gdb -s file #读出文件(file)中的符号表 gdb -write #开通(enable)往可执行文件和核心文件写的权限 gdb -e file #在适当时候把File作为可执行的文件执行,来检测与core dump结合的数据 gdb -se File #从指定文件中读取符号表信息,并把它用在可执行文件中 gdb -c File #把File作为core dump来执行,调试时core dump的core文件。 gdb -x File #从File中执行GDB命令 gdb -d Directory #把Dicrctory加入源文件搜索的路径中,加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径
gdb内部指令
file [filename] 装入想要调试的可执行文件 kill [filename] 终止正在调试的程序 break [file:]function 在(file文件的)function函数中设置一个断点 clear 删除一个断点,这个命令需要指定代码行或者函数名作为参数 run [arglist] 运行您的程序 (如果指定了arglist,则将arglist作为参数运行程序) bt Backtrace: 显示程序堆栈信息 print expr 打印表达式的值 continue 继续运行您的程序 (在停止之后,比如在一个断点之后) list 列出产生执行文件的源代码的一部分 next 单步执行 (在停止之后); 跳过函数调用 nexti 执行下一行的源代码中的一条汇编指令 set 设置变量的值。例如:set nval=54 将把54保存到nval变量中 step 单步执行 (在停止之后); 进入函数调用 stepi 继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码 watch 使你能监视一个变量的值而不管它何时被改变 rwatch 指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 awatch 指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 Ctrl-C 在当前位置停止执行正在执行的程序,断点在当前行 disable 禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数 display 在断点的停止的地方,显示指定的表达式的值。(显示变量) undisplay 删除一个display设置的变量显示。这个命令需要将display list中的索引做参数 enable 允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数 finish 继续执行,直到当前函数返回 ignore 忽略某个断点制定的次数。例:ignore 4 23 忽略断点4的23次运行,在第24次的时候中断 info [name] 查看name信息 load 动态载入一个可执行文件到调试器 xbreak 在当前函数的退出的点上设置一个断点 whatis 显示变量的值和类型 ptype 显示变量的类型 return 强制从当前函数返回 txbreak 在当前函数的退出的点上设置一个临时的断点(只可使用一次) make 使你能不退出 gdb 就可以重新产生可执行文件 shell 使你能不离开 gdb 就执行 UNIX shell 命令 help [name] 显示GDB命令的信息,或者显示如何使用GDB的总体信息 quit 退出gdb (版权声明:本文段为引用CSDN博主「Martin98」文章)
九,Linux系统管理
文件系统:
mkfs 创建文件系统
mount 安装文件系统
/etc/fstab 系统初始化分区安装配置文件
umount 卸载文件系统
mkswap 创建交换分区
swapon 激活交换分区
fsck 检查文件系统的状态
du 查看指定目录或文件占用的磁盘空间
df 显示目前文件系统磁盘使用情况
用户系统:
为了管理用户账号,Linux设置了多个文件夹存放相关信息,以下为重要文件夹
1,passwd文件(通常在/etc/passwd中,其中各字段作用如下)
login_name(用户名)
passwd(密码)
UID(用户标志号)
GID(组标志号)
home_directory(用户主目录)
2,shadow文件(常在/etc/shadow,其中的记录每条用:分开内容)
登录名:加密密码:上次修改密码时间:密码有效期:密码失效前警告用户的天数......
3,group文件(常在/home/mengqc中其中内容)
ls -l test #可查相关内容
组名 : 密码:组ID:用户列表
9.1 useradd(创建用户组操作)
常用格式 useradd [选项] [用户名登陆]
useradd -c comment #给新用户添加备注 useradd -d home_dir #为主目录指定一个名字(如果不想用登录名作为主目录名的话) useradd -e expire_date #用YYYYY-MM-DD格式指定一个账户过期的日期 useradd -f inactive_days #指定这个帐户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁 用,-1表示禁用这个功能 useradd -g initial_group #指定用户登录组的GID或组名 useradd -G group #指定用户除登录组之外所属的一个或多个附加组 useradd -k #必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录 useradd -m #创建用户的HOME目录 useradd -M #不创建用户的HOME目录(当默认设置里指定创建时,才用到) useradd -n #创建一个同用户登录名同名的新组 useradd -r #创建系统账户 useradd -p #passwd 为用户账户指定默认密码 useradd -s #shell 指定默认登录shell useradd -u #uid 为账户指定一个唯一的UID
9.3 groupadd (添加用户组的命令)
常用格式groupadd [选项] work
groupadd -g #为新组指定唯一GID groupadd -o #为新组指定不唯一GID groupadd -r #新组GID选择小于1000第一个可用值 groupadd -f #若组存在不报错强行再添加该组
9.4 关于组其他指令
userdel group1 #删除group1用户账号 passwd 123456 #设置用户密码 groupdel group1 #删除组名为group1的组 groupmod -g 300 -n job work #修改组属性(将名为work的组的GID修改为300,并改名为job)
9.5文件系统的备份(三种)
1,完全备份:隔一段时间对系统进行全面备份
2,增量备份:首先进行一次完全备份,然后较短时间备份修改过的数据
3,更新备份:完全备份一次,然后每天更新备份一次
代码示例(格式 tar -cvfpsz <生产的备份文件><所需要备份的目录>):
tar -cvf log.tar.gz /tmp/log #将日志文件log.tar.gz备份到/tmp/log路径 他人 -xzvf log.tar.gz #恢复日志
4.定时
crontab -e #编辑定时任务配置表
50 7***/sbin/service sshd star 每天7:50开启ssh服务
0 0 1 ,15**fsck/home: 每月1号,15号检查/home磁盘。
linux的特点
1,自由软件,代码开源
2,与UNIX系统兼容
3,性能高,安全性强
4,便于定制和再开发
5,交互性高,支持多任务,64运算
Linux图形环境
1,标准图形接口:X window
2,体系结构:客户-服务器模型, x协议
3,桌面系统:
GNOME系统:Red Hat Linux默认
KDE系统:红旗Linux
linux内核概述
linux系统有三层结构
1,靠近硬件的底层是内核
2,中层是内核外的shell层
3,最高层是应用层
linux系统安全设定方式
1, 取消不必要的服务
2,限制远程存取
3,隐藏重要资料
4,修补安全漏洞
5,采取安全工具进行经常性的安全检查
Linux系统调用和库函数
linux操作系统对外提供的基本服务方式
1,系统调用
2,库函数
调用方式(系统调用和库函数相同)
C函数形式调用:类型,名称,参数
需要使用的头文件:/usr/include/sys 、/usr/include/linux
示例:
文件相关头文件
进程相关头文件
内存相关头文件
上机具体操作往这走基础上机