1、shell是一个命令行解释器,能够使用户和操作系统进行交互。
命令格式(通常包括三部分,选项和参数是可选项):命令 选项 参数
连续按下两次TAB键用于命令补齐,按下一次TAB键用于文件名补齐。
2、shell通配符和特殊字符
'*‘表示匹配任意长度的字符串,’?'表示匹配一个长度的字符
管道(|):将第一个命令的输出作为第二个命令的输入,,使用管道可以将一些命令联合起来使用,得到单个命令无法实现的效果。 eg:ls /usr/bin |wc -W
输入/输出重定向:改变shell命令的输入输出目标
“>file” 将file文件重定向为输出源,新建模式,若有同名文件将被删除
eg:ls /usr >a.txt 将/usr目录下的文件名输出到a.txt文档中
“>>file” 将file重定向为输出源追加模式,追加到已有文件内容之后
“<file” 将file文件重定向为输入源
3、常用的一些shell命令
cat:在命令行显示文本文件内容 eg:cat 1.txt
cp: cp 源文件 目标文件 所有目标文件指定的目录必须是已经存在的。cp命令不能创建目录
mv: 后面跟两个文件名表示重命名,后面有一个是目录表示移动文件
grep:查找字符串 eg: grep “he” 1.txt -n -R 在1.txt文件中查找含有字符串"he"的行
"^he"查找以字符串"he"开头的行,-n显示行号 -R 递归查找
head:显示文件开头 eg:head -2 1.txt 在终端显示1.txt文件的前两行内容
tail:显示文件结尾
diff:比较两个字符串 eg:diff 1.txt 2.txt 如果终端没有任何打印信息,则两个文件 内容一样
file:查看文件类型
echo:显示文本,打印,用在脚本里 eg:echo hello
date:显示时间和日期
gzip:压缩文件 后缀名.gz 注意压缩的对象不能是目录文件
bzip2:压缩文件 后缀名.bz2 解压缩用bunzip2
gunzip:解压缩文件
tar:归档和展开文件(将很多文件打包为一个文件,后缀名.tar,但并没有压缩)
eg:tar -czvf test.tar.gz test/ (在目标文件所在目录进行打包压缩)
:打包并且压缩一个目录文件
c : 创建
x : 释放
z : 使用gzip完成压缩操作
j : 使用bzip2完成压缩操作
v : 显示过程
f : 指定文件名
解压并且释放一个压缩文件 :
tar -xvf test.tar.gz
whereis:查找命令
ps:列出进程(可以搭配kill指令,随时中断删除不必要的程序) 程序的一次执行就是一个进程
top:监视进程
chmod:改变文件或目录的访问权限
info:获得帮助
pwd:显示当前工作目录的绝对路径
ln:创建文件链接
sudo su:登录root用户 ctrl+D退出root用户
ls: ls -a 显示指定目录下的所有目录和文件,包括隐藏文件 ls -l 以列表形式显示文件的详细信息。
ll:该命令会更详细地列出该目录下的文件信息,包括隐藏文件
touch: 用于创建一个新文件,如果文件已存在,则更新文件最后一次修改时的时间戳
rm -rf :若源文件是一个目录,则rm命令递归删除该目录下的所有子目录和文件,由于rm命令执行物理删除,一旦一个文件被删除就不能回恢复,如果登录root用户,那么可以删除整个文件系统
rmdir: 删除一个目录,参数-p 递归删除子目录(只能删空目录)
uname -r 查看内核版本号
od命令:用于输出文件的八进制,十六进制等格式编码字节,通常用于显示,查看文件中不能直接显示在终端的字符。
4、linux文件系统
在任何一个操作系统中,文件系统都是最重要的组件,用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。
linux文件系统常见目录
/ linux文件系统根目录
/bin 存放系统中最常用的可执行文件(二进制)
/boot 存放linux系统内核和系统启动文件
/dev 存放所有的设备文件
/etc 存放系统的所有配置文件
/mnt 常用于被挂载的文件系统的挂载点
/var 通常用于存放长度可变的文件,例如日志文件和打印机文件
补充:/usr/include存放C、C++等开发语言的标准include文件
绝对路径和相对路径:
绝对路径指文件在文件系统中的绝对位置,以根目录为起点。eg:/usr/games/gnect
相对路径指相对于用户当前位置的一个文件和目录的位置,例如用户处于usr目录中,只需要"games/gnect"就可以确定文件位置
5、linux系统中的7种文件类型 lsp-bcd
l 符号链接文件,只保留了文件地址,而不是文件本身
s 套接字,用于进程间通信
p 管道,一种进程间通信的机制,用于进程间通信的暂时文件
- 普通文件,指ASCII文本文件、二进制可执行文件,以及硬件连接
b 块设备文件
C 字符设备文件,每次IO操作仅传送一个字符
d 目录文件
6、创建链接文件
链接文件就相当于windows的快捷方式,只保留目标文件的地址而不占用存储空间,使用链接文件和使用目标文件的效果是一样的。linux中有两种类型的链接:
硬件链接:利用linux中为每个文件分配的物理编号–inode建立链接
软连接::利用文件的路径名建立链接
注意:如果修改硬链接的目标文件名,链接依然有效,如果修改软连接的目标文件名,则链接将断开,删除目标文件后,重新建一个同名文件,软连接将恢复,硬链接不再有效,因为inode已经改变。
格式:ln -s target linkname 参数-s表示创建软连接,缺省情况下创建硬链接
eg:ln -s 2 1.txt 给1.txt创建软连接2,则vi 2和vi 1.txt效果一样
7、linux网络配置
linux系统中的网络配置就是修改网络相关的配置文件
IP网络中通常用最小的IP地址标识网络本身,将最大的IP地址作为该网络的广播地址,其余所有的IP地址都分配给网络中的主机。然后网络中的主机并不能直接访问网络,需要通过一个作为代理的网关或网络地址转换服务NAT才能访问internet
ifconfig 该命令用于显示网卡的配置
通常用户采用普通以太网卡,无线网卡等设备接入网络,以太网卡被映射为eth,无线网卡被映射为wlan.
DHCP(Dynamic Host Configuration Protocol动态主机配置协议)可以实现动态分配IP资源,整个过程类似于一个租赁过程,DHCP服务器好比是IP地址的出租方,用户主机好比是IP地址的临时租用者,可分为下面四个过程:
客户端寻找DHCP服务器–》服务器提供可分配的IP地址–》客户端接收IP地址租赁–》服务器确认租借IP
ping ip地址 该命令可用于检测网络的连通性
/etc/network/interfaces IP地址保存在该配置文件里
8、shell编程
(1)shell脚本语言中,变量是直接定义的,没有所谓的数据类型,使用时要用$符号引用,共有下面四种变量类型:
用户自定义变量:
在shell编程中通常使用全大写变量,方便识别
eg:COUNT = 1 echo $COUNT
位置变量:
在命令行中使用的变量
$1,$2…$9 分别指第一个到第九个命令行参数
$@ 包含所有的命令行参数$1,$2…$9
eg:bash add.sh $1 KaTeX parse error: Expected 'EOF', got '#' at position 66: …制语句 说明性语句:注释行,以#̲号开始到该行结束,不被解释执行… expr 3 - 8/2
test 可测试字符串、整数、文件属性三种对象
a -eq b 测试a与b是否相等 -ne是否不等
a -gt b 测试a是否大于b -ge 是否大于等于
a -lt b 测试a是否小于b -le 是否小于等于b
结构性语句:条件、循环
条件语句格式: if 表达式
then
命令
fi
循环语句 for 变量名 in 单词表 while 命令或表达式
do do
命令表 命令表
done done
9、软件包安装
dpkg: 离线安装软件包,不会自动检查软件包依赖关系
apt-get:在线安装,自动检查软件包依赖关系
sudo apt-get install 软件包名
sudo apt-get remove 软件包名
sudo apt-get -f install 软件包名 修复依赖关系
sudo apt-get source 软件包名 下载源码包
sudo apt-get update 更新索引文件
sudo apt-get upgrade 更新应用程序
10、查询参数
vim -t 需要查询的参数
ctrl+ ] 向下查找
ctrl+ o 返回上一层
11、linux文件权限的数字表示法
linux文件权限的数字表示,一般由四个八进制表示,一般忽略首位
-rwx - rwx - rwx ---->0777
从左到右的权限组,分别表示文件所有者权限,文件所有者所在的组权限、其它权限。
12、makefile文件查询
查询某个单词 :/x
查询以X开头的单词 :/^x