什么是Shell?
Shell是系统的用户界面,提供了用户与内核进行交互的一种接口(命令解释器),Shell接收用户输入的命令并把他送入内核执行,在用户与系统之间进行交互。Shell在整个Linux中具有极其重要的地位。
Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁
Shell的功能:
命令解释器是Shell最重要的功能。Linux系统中所有的可执行文件都可以作为Shll来执行
常见Linux中可执行的文件类
类别 | 说明 |
---|---|
Linux命令 | 存放在 /bin、/sbin 目录下的命令 |
内置命令 | 出于效率的考虑,将一些命令的解释程序构造在Shell内部 |
实用程序 | 存放在/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin 等目录下的实用程序 |
用户程序 | 用户程序经过编译生成可执行文件后可作为Shell命令运行 |
Shell脚本 | 由Shell脚本编写的批处理文件 |
常见的Shell版本如下:
bash:多数Linux系统的默认Shell,包含了ksh的优点,接口强大,界面友好。
ksh:由Dava Kom编写,是UNIX系统上的标准Shell。
tcsh:C Shell的拓展
Shell的元字符:
-
? 代表任意字符代表任意字符串
. 代表根目录或作为路径间隔符使用
\ 转义字符。当命令的参数要用到保留字时,要在保留字前面加上转义字符
<Enter> 续行符。可以使用续行符将一个命令行分写在多行上
$ 变量值置换,如SPATH表示环境变量PATH的值
’ 在’.…’.中间的字符均被当作文字处理,指令、文件名、保留字等都不再具有原来的意义
" 在"…"中间的字符会被当作文字处理并允许变量值置换命令替换,置换……中命令的执行结果
< 输入重定向字符
输出重定向字符
| 管道字符
& 后台执行字符。在一个命令之后加上字符“&”,该命令就会以后台方式执行
; 分割顺序执行的多个命令
() 在子Shell中执行一组命令
{} 在当前Shell中执行一组命令
! 执行命令历史记录中的命令
~ 代表登录用户的宿主目录(自家目录)
什么是文件?
在Linux上,文件被看作是字节序列,这种概念使得所有的系统资源有了统一的标识,这些资源包含普通文件或目录、磁盘设备、控制器、(键盘、显示器)、打印机等。
-普通文件
d目录,存放位置
l符号链接
c字符设备文件
b块设备文件
s套接字
p命名管道符
普通文件:普通文件可以是执行文件(文本、程序、脚本等)、源代码等类型,在windows中后缀名决定了文件的类型,但是在Linux中,可执行文件是用权限来标识的,只要有了可执行权限,,那么不论文件后缀是什么都可以执行,但是对于一些数据文件一般也遵循文件名后缀的规则。
常见的文件名后缀
.txt文件 文本文件
.conf 配置文件
.html/.xml/.yml/.sql html、xml、yml、sql文件
.c/.cpp c/c++源码文件
.so/.ko/. lib 模块、库文件
.sh/.php/.py/.pl/.rb SheII/PHP/Python/Perl/Ruby脚本文件
.rpm RPM包文件
.tar 打包、存档文件
.gz/.bz2/.xz 由gzip/bzip2/xz 生成的压缩文件
.tar.gz/.tgz/.tar.bz2/.tbz/.tar.xz/.txz 压缩后的tar包文件
*.lock 用于表示某个程序或某种服务正在运行的锁文件
*~ 备份文件
目录和硬链接:
目录是由一组目录项组成。目录可以是对其他文件的指向。也可以是对其下的子目录的指向
硬链接:将两个文件名指向同一个存储空间,任意修改其中一个都不会影响另一个文件,它并不是一种特殊文件类型,而是允许多个目录指向同一文件的一种机制。
符号链接
符号链接又叫软连接,是指将一个文件指向零一个文件
软链接:将一个文件指向另一个文件,类似与快捷方式,如果删了源文件,那么另一个文件成为死链接。
设备文件:设备文件是指计算机中的外围硬件装置,也就是除了cpu和内存以外的所有设备,Linux下为了屏蔽用户对设备访问的复杂性,采用了设备文件,就可以向普通文件一样对设备进行读写访问,设备文件用来访问设备,包括硬盘、光驱、打印机等,每个设备至少与一个文件关联
设备文件又分为字符设备(如硬盘)和块设备(如磁盘)。
套接字和命名管道:
套接字和命名管道是Linux环境下实现进程间通信的(IPC)机制。
命名管道(FIFO)文件允许在同一计算机上的两个进程之间进行通信。
套接字(socket)允许运行在不同的计算机上的进程之间互相通信。
它们通常实在进程运行时创建或删除,无需管理员来干预。
Linux常用命令格式
Linux常用命令格式:Command[-option][argument}
Command: 即是要运行的命令的本身,说白了就是一个软件(程序)
Option: 是选项(可选),选项是控制命令运行状态和行为的(可多个选项一起,如df -ht)
Argument: 是参数(可选),是命令要操作对象如文件、路径、数据、目录等;
系统信息相关:
- lscpu或cat /proc/cpuinfo 显示cpu信息
free -m或cat /proc/meminfo | grep -i memtotal 显示物理内存大小
cat /etc/system-release 查看系统发行版本
uname -r 查看内核版本
uanme -a 显示版本详细信息
arch 查看机器架构
lsmod 查看内核模块
dmesg 查看系统启动信息
lsblk 查看系统中的块设备
fdisk -l 查看磁盘分区
findmnt 查看挂载的文件系统
df -Ph 查看磁盘剩余空间 - df -h 显示已经挂载的分区列表
date/timedatectl 查看本地时间和日期
localectl 查看语言支持与键盘设置 - (centos)软件包安装
- yum install package_name 下载并安装一个rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum repolist 查看已经启用的软件更新源
rpm -qa 查看已经安装的软件
yum autoremove 自动查找并删除所有缓存的包
yum check-update 检查可更新的所有软件包
yum update 下载更新已安装的所有软件
yum groups install package_name 下载软件包,并自动解决依赖关系
文件和目录
- ls 显示文件和目录列表
ls -al 以列表形式显示所有文件、目录(包含隐藏文件、目录)
ls -R 递归显示当前目录及其子目录下的文件及目录
mkdir /dirname/dirname1 以绝对路径创建一个空目录
mkdir -p /srv/{abc,def}/html 递归创建 /srv/abc/html 和 /srv/def/html 目录
touch file file1 生成file、file1空文件
touch oldfile 修改已有文件的时间为当前时间
cd dirname 切换到目录
cd - 切换到上一次使用cd命令前的目录
cd … 切换到当前目录的上级目录
cd …/… 切换当前目录的上两级目录
tree 树状显示当前目录结构
cp 复制文件
cp file1 dirname 复制单个文件到目录
cp file1 file2 dirname 复制两个文件到目录
cp -r /etc/dir . 复制/etc/dir 目录及所有的文件复制到当前目录
mv file1 file 2 将file1改名为file2
mv file /dirname 移动到目录
rm -rf file/dir 强制删除文件或文件夹
rmdir dir 删除空文件夹
find . -name ‘my*’ 从当前目录查找名字为my开头的文件
find /home -user “osmond” 从/home目录下开始查找用户属主为osmond的文件
信息显示:
whereis ls 查找程序ls的位置
history 显示历史命令
history -c 清空历史命令
cal 2015 显示2015年日历
ifconfig eth0 显示网卡eth0的详细信息
netstat -antp 显示所有已经建立的连接
du -sh 显示当前目录已使用量
df -h 目录名 显示目录磁盘使用量
who 显示当前tty或伪终端占用
id 显示用户uid、gid
网络命令:
ifconfig 显示网卡信息及IP地址
ifconfig 网卡名 显示一个eth0的配置
ifup 网卡名 启用一个 ‘eth0’ 网络设备
ifdown 网卡名 禁用一个 ‘eth0’ 网络设备
wget url/uri 下载某个文件
ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)
dhclient eth0 以dhcp模式启用 ‘eth0’
route -n 显示路由表
echo “1” > /proc/sys/net/ipv4/ip_forward 开启路由转发(数据转发)
hostname 显示系统主机名
ping hostname/IP地址 网络连通性测试
ss或netstat 显示网络状态信息
firewall-cmd --list-all 查看防火墙规则
Vi编辑器:
Vi 是 Visual Interface的简称,可以执行输入、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器所不具备的功能。