文件权限
r:可读取此文件的实际内容,如读取文本文件的文字内容等。
w:可以编辑、新增或者修改该文件的内容,但不含删除文件。
x:该文件内容为指令,具有可以被系统执行的权限。
对于文件的rwx来说,主要都是针对 文件的内容 来说的
目录权限
Linux特权:目录的主要内容在记录文件名列表
r:表示具有读取目录结构列表的权限
w:具有移动该目录结构列表的权限,建立新的文件与目录,删除已经存在的文件与目录 ( 对文件名增删查改 )
x:是否可以切换cd,用户能否进入该目录
Linux7种文件类型:SUID:只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义 ;执行suid权限的程序时**,**此用户将继承此程序的所有者权限
SGID:执行sgid权限的程序时**,**此用户将继承此程序的所属组权限,可作用于目录上。
Stick-bit:对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录,粘滞位。
1、 - 普通文件
2、b 块设备文件
3、c 字符设备文件
4、d 目录
5、l 符号链接文件
6、p 命名管道文件
7、s socket文件(套接字文件,支持虚拟文件)
2、3统称为设备文件,块设备文件包括:硬盘、光盘…一次读取若干个字符,字符设备文件包括:输入输出设备…一个字符一个字符的读取,
第一章 Linux常用命令1、man用来提供在线帮助,使用权限是所有用户
man+需要帮助的命令
2、help 显示命令的一些帮助信息,如果内容超出了一个屏幕,可通过管道使用more分屏显示信息
例:ls --help | more
3、ls显示目录内容
-a 不隐藏以 . 字符开始的项目,列出所有文件
-A 列出除了 . 及 … 以外的任何项目
-d 对于目录列出目录本身而非目录内的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-app7KmRW-1653832251154)(D:大二下课程Linuximage-20220526144427140.png)]
-l 以长格式显示制定目标的信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9ZlEPPs-1653832251155)(D:大二下课程Linuximage-20220526144529225.png)]
10个字符(文件类型+文件主权限+文件组权限+others)+硬链接数+文件主+文件大小+时间+文件名
-F 在文件名后显示文件类型说明符。/: 目录,*:可执行,@:符号链接,|:管道,=:socket文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8B2NmYq-1653832251155)(D:大二下课程Linuximage-20220526144744485.png)]
软连接:
类同与windos的快捷方式,给文件创建一个快速的访问路径,它依赖于原文件,与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。当原文件出现问题后,该链接不可用。
ln -s file1path file2path
给文件file1 创建软连接file2
硬链接:
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名
命令 ln file1 file2
给文件file1 创建硬连接file2
4、mkdir 建立子目录
mkdir [参数] [目录名]
mkdir zb //在当前目录下创建zb目录
-m 设定权限模式
参数:-p 创建多级目录
5、rmdir 删除目录 (目录为空才可)
rmdir 目录名
6、cd 切换目录
cd 目录名
7、vi 文本编辑器
vi 文件名
在键盘上按i键,进入插入状态,俺ESC键进入命令状态,按+“:” ,进入last行模式,输入wq,保存文件并退出
8、mv 用来为文件或目录改名,或者将一个目录转移到另一个目录中,权限为所有用户
改名:mv a.txt aaa.txt
cp 原文件名 目标文件名
移动:mv /usr/cbu@]}引用所有元素值
若用“${数组名[*/@]}”引用时,*拓展为一个词,@拓展为多个词
获得数组大小:${#数组名[@]}
环境变量Linux环境(Shell环境)由许多变量组成,这些变量决定了用户环境的外观及Shell默认行为,环境变量是被导出的变量。
环境变量可以被当前Shell下启动的子进程所继承,而局部变量不被继承;而且子进程的环境变量独立于父进程,子进程中对环境变量的修改不影响父进程变量的值。
变量导出–export常用环境变量
$HOME 用户的注册目录(用户主目录);同~
$SHELL 设置用户的Shell类型
$USER 保存当前的用户名
$PATH 定义查找命令的目录列表,目录名用冒号隔开
$PWD 保存用户当前在文件系统的位置
$PS1 定义Shell的主提示符
$PS2 域内分隔符,包括:空格、跳格、换行
export变量列表
将用户变量导出为环境变量
export var1 var2
export var=abc
declare [选项] 变量名
-a 声明变量为数组
-i 声明为整形
-x 声明为环境变量
-r 声明为只读变量
位置参数位置参数及引用
位置参数也称为命令行参数,即:组成命令行的所有元素
在Shell脚本中通过$0、$1 … 进行引用位置参数
为位置参数赋值
set 参数值列表
位置参数移动
shift [n] 将位置参数(除 $0 )左移n个位置,默认为1
输入/输出$? 最后一次执行命令的返回码
$$ 当前脚本自己的PID
$ ! 脚本进程最近启动的后台进程的PID
$# 命令行参数的个数
$0 脚本文件本身的名字
$1,$2 第一、第二个命令行参数
“$*” 将所有命令行参数作为一个整体单词来看待
“$@” 将命令行参数 作为多个单词看待
echo–显示命令
echo [option][string]
将string的内容按照option指定的方法送到屏幕上进行显示
-n 输出后不换行
-e 对字符串中的特殊字符进行特殊翻译
n 换行
t 跳格
read–从键盘读取用户输入到变量中
格式:read 变量名列表
read 变量名列表 < file
test测试与 [ ]格式:test 条件 或 [ 条件 ]
注意:[ 条件 ] 条件和[]前后必须有空格
其中条件:
(1)文件特性检测
-f 普通文件 -d 目录 -s 文件大小非零 -r 可读 -w 可写 -x 可执行 -L/h 符号链接文件
(2)字符串比较
-z str 字符串长度等于0
-n str 字符串长度不等于0
str1 = str2 str1 与 str2 相等
str1 != str2 str1与str2不相等
(3)整数比较
-eq =
-gt >
-ge >=
-ne <>
-lt <
-le <=
(4)逻辑运算
!NOT -o OR -a AND
注意:可以用( )来改变运算的优先级,但括号必须转义,如:
[ ( $a -lt 0 -o $a -eq 10 ) -a $b -gt 100 ]
特殊条件测试:
不做任何事,返回0;
true:总是返回0;
false:总是返回255;
#!/bin/bash echo -n enter filename: read fname echo -n enter words: read words echo $words 2>/dev/null >$fname if [ $? –eq 0 ] then echo Write successfully else echo write error fi[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7Q6YkHW-1653832251158)(D:大二下课程Linuximage-20220529174606337.png)]
shell脚本运行条件
#!/bin/sh count=3 while [ $count -gt 0 ] do echo -en "Login name:" read logname echo -en "Password:" read pwd [ $logname = "root" -a $pwd = "12345" ] && { echo "Welcome Here!!!" count=0 } let count=count-1 sleep 5 done结构控制–whilewhile read vars do command list done遍历file中的行,每读取一行将行中的内容作为read的输入传递给变量,并执行循环体
循环结构–forfor var do command_list done 从shell的位置变量中取值例:显示输入的参量 #!/bin/bash echo you enter $# vars echo They are: count=0 for var do echo “$count. $var ” let count=count + 1 done[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZLOvYGf-1653832251159)(D:大二下课程Linuximage-20220529175233657.png)]
例:备份指定目录中的所有文件到指定目录中 #!/bin/bash [ ! -d $1 -o ! -d $2 ]&&{ echo arguments error;exit 1; } for file in $1/* do if test -f $file –a –r $file then cp $file $2 fi donefor((e1;e2;e3)) do 命令列表 doneBreak、Continue、ExitBreak [n] 退出n层循环
continue [n] 跳到第n层循环继续
exit [n] 退出脚本,并设置退出码
函数格式:
function name(){ command list [ return n ] }其中return用于带回函数的返回码(0 ~ 255)
注意:函数必须先定义后使用
函数在当前函数下运行,和调用它的脚本共享变量;而且可以把变量作为定位参数来赋值的方式传递变量
数值处理 let命令 let 赋值表达式
使用C的表达式语法;在表达式中引用变量时,前可不加"$";按长整型求值,不检查溢出。
注意:表达式中有特殊字符时,必须用双引号括起来。
指数 运算符:**
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMzyX65W-1653832251159)(D:大二下课程Linuximage-20220529185040870.png)]
$((表达式))扩展 对表达式进行计算、并替换,表达式构成规则同C
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1NLptgov-1653832251159)(D:大二下课程Linuximage-20220529185119795.png)]
expr命令 expr表达式
表达式中的变量要用$进行引用,表达式中的每个元素必须用空格隔开
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7zU2cywx-1653832251160)(D:大二下课程Linuximage-20220529185247741.png)]
shell内置命令 eval–命令分析eval 命令字符串
功能;首先对“命令字符串”进行shell替换,然后执行该命令
#将输出 i 和 第i个参数 for((i=1;i<=$#;i++)) do eval echo $i. $$i done[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7QG6llG-1653832251160)(D:大二下课程Linuximage-20220529190028100.png)]
exec命令exec 命令
用执行命令所启动的进程替代当前shell进程。
sourcesource 脚本名 或 .脚本名
功能:将指定脚本在当前shell中执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7etlQ5V-1653832251160)(D:大二下课程Linuximage-20220529190243566.png)]
Shell脚本跟踪与测试通过 b a s h − n v x 脚 本 名 bash -nvx 脚本名 bash−nvx 脚本名,执行脚本
-n仅作语法检查 无结果输出
-x 显示对命令行完成参数替换后的结果(跟踪模式)
-v 在执行命令前将命令原样输出一次
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5tLU1K4-1653832251161)(D:大二下课程Linuximage-20220529190850681.png)]
第三章 C语言开发工具 工作模式1、末行模式
2、命令模式
3、输入方式
注:vi启动后,直接进入命令模式
命令模式通过: 进入 末行模式
命令模式通过 i,a,o,O 进入 输入模式
输入模式 通过 ESC 进入命令模式
启动与退出 启动vim [文件名]
退出:wq
:q!
进入输入模式删除、替换i i i 在光标所在字母前插入,进入输入模式
a a a 在光标所在字母之后插入,进入输入模式
o o o 在当前行之下插入一个新行,进入输入模式
O O O 在当前行之上插入一个新行,进入输入模式
复制、粘贴[ n ] x [n] x [n] x 从光标当前字符开始的n个字符
[ n ] d d [n] dd [n] dd 从当前行向后的n行
$d $^ 从光标当前位置删除到行首
$d $$ 从光标当前位置删除到行末
r r r 将当前光标处的字符替换为r后键入的字符
R s R s R s 用字符串的内容替换从当前光标开始的相应字符,直到Esc
u / . u /. u /. 取消 / 重复上一次操作
c t r l + r ctrl +r ctrl+r 撤销取消
Vi简单配置[n] yy 复制当前行 / 当前行开始的n行
y $ / ^ / w / % 复制指定内容
:l1,l2y 复制 l1 行到 l2 行的内容
[n]p 粘贴
set nu 给每行加行号
set nonu 取消行号显示
set ts=4 设置Tab建跳格数
set sm 括号匹配
设置c语言格式的自动缩进 编辑 用户主目录中的 .vimrc文件 set cindent set softtabstop=4 set autoindent



