一、基础知识
1.使用文件
UNIX系统只识别三种基本类型文件:普通文件(系统中包含数据、文本、程序指令或其它内容的文件)、目录文件和特殊文件(对UNIX有特殊意义,通常和某种形式的I/O相关联)
文件名字符数不能超过255个
2.使用目录
linus系统中一切皆为文件
以 / 开头则为绝对目录,否则为相对目录
... 指向当前目录的上级目录
3.通用字符
‘*’表示一个或多个字符组成的字符串
‘?’表示一个字符组成的字符串
‘[]’用来指定范围
‘!’用来排除,需要与[]一起用
‘`’成对出现,表示命令并被执行
‘>’将输入的信息直接写入目标文件或设备中,并覆盖掉之前的内容
‘>>’将输入信息以追加的方式写入
‘\’转义符
4.标准输入、输出、重定向
ctrl+d终结标准输入
输出重定向: ‘>’, ‘>>’
输入重定向: ‘<’
< file 标准输入重定向至file
> file 标准输出重定向至file(覆盖写)
>| file 标准输出重定向且file内容清空
>> file 追加
<< word 标准输入重定向至随后的行直到某行只包含word
<& digit 标准输入重定向至与描述符digit相关的文件
>& digit 标准输出重定向至与描述符digit相关的文件
<&- 关闭标准输入
>&- 关闭标准输出
<> file 读取和写入file
5.shell的职责
首先进行变量名和文件名的替换
进行磁盘搜索命令之前先判断是否为内建命令(cd,pwd,echo)
I/O重定向:
管道:将上一个标准输出连接到下一个标准输入,然后执行两者
环境控制:能够定制个人环境
Shell先进行管道和I/O重定向,然后变量、命令的替换,然后文件名替换,接着将命令行解析成参数,删除空格制表格和换行符,切分成参数交给对应请求命令
二、命令
1.VM/VIM编辑器
1.1 一般模式
以vi/vim打开一个文档就会默认进入一般模式,可以用上下左右按键移动光标,用【删除字符】、【删除整行】、【复制粘贴】处理文件内容。
yy 复制光标当前行
y数字y 复制光标当前数行
p 粘贴到目标行
u 撤销上一步
dd 删除光标当前行
d数字d 删除光标当前数行
x 相当于del
X 相当于backspace
1.2编辑模式
在一般模式中只能进行复制粘贴删除等操作,但无法编辑文件内容。按[i,I,o,O,a,A]中的任意字母可以进入编辑模式,进入后界面左下方会显示【--插入--】,退出到一般模式按Esc。
1.3指令模式
在一般模式中,输入[:/?]中任意字符可以进入指令模式
:w 保存
:q 退出
:! 强制执行
2.常用基本命令
1.常用快捷键
ctrl+c 停止进程
ctrl+l 清屏(彻底清屏是reset)
CTRL+q 退出
2.文件目录类
pwd 显示当前工作目录绝对路径print work directory
ls 列出目录内容list -a全部文件(包括隐藏的) -l长数据串列出,包含文件属性权限等信息
cd 切换路径change directory cd ~回到home cd .. 返回上级目录 cd -回到上次目录
mkdir 建立目录make directory -p建立多层目录
rmdir 删除空目录remove directory 只能删除空的目录
touch 创建空文件
cp 复制文件或目录 cp [选项] source dest 复制source到dest -r递归复制文件夹
rm 删除文件 -r递归删除目录所有内容 -f强制执行
mv 移动文件和重命名 mv Oldname Newname file重命名 mv Oldfile targetfolder
cat 查看文件内容
echo 输出内容到控制台 -e支持反斜杠控制的字符转换
3.其他常用
date显示日期和时间
转义符:\b 退格 \c 忽略换行符 \f 换页 \n 回车换行 \r 回车 \t 制表符 \\ 反斜线
wc 统计行数、单词数、字符数
rm 删除文件
ps 显示所有进程
cut 从每行提取字段:-cchars file -d指定字段分隔符 -f 指定代替取的字段
上传文件 rz 下载文件 sz
三、shell编程
1.概述
shell是命令解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。linux命令通过shell解释器和linux内核进行交互,linux内核驱动硬件工作,shell解释器解释linux命令,shell脚本封装了一系列复杂命令的文件,一次性完成任务,类似于批处理。
2.shell脚本的执行方式
1.脚本必须以 #!/bin/bash 开头,且有执行权限
2.脚本的执行方式:
第一种:输入脚本的绝对路径或相对路径(需要脚本的+x权限 chmod赋予)
第二种:bash或sh+脚本
3.shell中的变量
系统变量和用户自定义变量。
1.显示当前shell中所有变量:set
2.将变量提升为全局环境变量的方法:export
3.声明静态变量:readonly
4.将命令的返回值赋给变量
使用``或$()包含住命令,将结果返回给变量
5.环境变量设置
source 配置文件或export 变量名=变量值
6.位置参数变量
$n 第n条命令
$* 所有命令
7.预定义变量
$? 最后一次执行命令的返回状态 0表示成功
4.运算符
$((运算式))或$[运算式]或expr 运算式
5.条件判断
基本语法: [condition]
常用条件: =字符串比较 -lt小于 -le小于等于 -eq等于 -ne不等于
-r 有读的权利 -w有写的权力 -x有执行的权力 -f是文件且常规 -e文件存在 -d存在且是目录
6.流程控制
1.if
if [条件判断式]
then
程序
fi
2.case
case $变量名 in
"值1")
执行程序1
;;
"值2")
执行程序2
;;
esac
3.for
for 变量 in 值1 值2 值3 值4...
do
程序
done
4.while
while [条件判断式]
do
程序
done
5.read
read读取控制台输入
read -t 7 -p "please input your name in 7 seconds" NAME
-t 等待时间 -p提示语句 变量NAME存储读取的输入