一、shell概述
shell是Linux系统中运行的一种特殊的程序;
在用户和内核之间充当“翻译官”的一个角色,
用户登录Linux系统时,会自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序
内核:用于调用计算机的硬件资源
shell:将用户指令转换成计算机语言让内核识别调用计算机硬件工作
bash是一个文件
bash文件位于/bin/bash
用户与内核交互过程:计算机接收用户输入的命令(例如浏览器访问某个网页),shell会将所接收到的数据转换成计算机识别的二进制语言,再将命令传递给系统内核执行
二、Linux命令的分类
内部命令与外部命令
内部命令 | 外部命令 |
---|---|
继承于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中国能够完成特定功能的脚本或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
内部命令与外部命令的区别:内部命令属于shell,而外部命令在shell程序之外;内部命令在shell内,直接调用,速度较快,外部命令必须要知道对应文件位置(命令的环境变量),由shell进行加载后,系统才能识别命令并调用。
三、命令行格式:由命令字、选项、参数组成
命令字:是整条命令中最关键的一部分,唯一确定一条命令
选项:分为短格式和长格式;短格式选项:使用“-”符号引导(多个单字符选项可以组合使用);长格式选项:使用“--"符号引导
参数:命令字的处理对象,可以是文件名、目录(路径)名或用户名等内容,个数允许零个或多个
1.查看内部命令
type ###查看内部外部指令
enable-n +指令 ###禁用内部指令
enable +指令 ###开启指令
ls --help ##外部命令查询
help cd #内部命令查询帮助
enable ###启用该命令
echo ##shell内嵌/也可以是外部指令(给出具体命令所在)
hash ###可以直接调取缓存中的指令
which +指令 ###查询指令所在路径和别名
2.编辑Linux命令行的辅助操作
-
Tab键:自动补齐/按两下帮忙查询相同前缀的目录或文件(cd会显示目录,vim会显示文件)
-
反斜杠“\”强制换行(在长命令的情况下使用便于排错,更加工整)
-
Ctrl+U组合键:清空至行首
-
Ctrl+K组合键:清空至行尾
-
Ctrl+L组合键:清屏,或者clear
-
Ctrl+C组合键:取消本次命令编辑
-
Ctrl+A组合键:切换到行首
-
Ctrl+E组合键:切换到行尾
3.获取命令帮助
内部命令help:查看Shell内部命令的帮助信息
命令的”--help“选项:适用于大多数Linux外部命令
使用man(manual手册)命令阅读手册页:(1)使用”↑“、”↓“(ENTER)方向键滚动一行文本
(2)使用Page使用Page Up和Page Down (空格) 键翻页
(3)按Q或q键退出阅读环境
(4)按“/"键查找内容,n键向下查找,N键向上查找
pwd ###显示用户当前所在工作目录位置
[root@locallhost]#pwd
/root
4.cd————>切换工作目录:将用户的工作目录更改到其他位置
格式 | 说明 |
---|---|
cd 目标位置 | 切换到目标位置 |
cd ~ | 若不指定目标位置,切换到当前用户的宿主目录 |
cd | 同上,若不指定目标位置,切换到当前用户的宿主目录 |
cd - | 切换到上一次执行cd命令之前所在的目录 |
绝对路径:以根目录开始——/home/hahaha
相对路径:通过cd——>进入/home——>进入/boot(逐级进入目标文件)
相对路径的表项形式
表现形式 | 说明 | 示例 |
---|---|---|
直接使用目录名或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.conf |
以一个点号”."开头 | 表示以当前的工作目录作为起点 | ./grub.conf |
以两个点号”.."开头 | 表示以当前目录的上一级目录(父目录)作为起点 | ../vmlinuz |
以”~用户名“形式开头 | 表示以指定用户的宿主目录作为起点 | ~teacher |
cd #进入当前所在目录根目录下的系统目录
cd ~ #切换到家目录
cd +目录 #进入目标目录
cd - #进入上一次的执行目录
cd .. #返回上一层目录
cd ../../ #返回上两层目录
5.列表显示目录内容ls
显示目录中内容,包括子目录和文件相关属性信息:[ls [选项] [文件或目录] ]
常用选项:
ls #[选项] [文件或目录]
ls #显示目录中的内容,包括子目录和文件的相关属性
ls -l (ll--别名) #显示以列表的形式
ls -a #遍览所有文件及目录
ls -A #区别于-a不列出上一级目录和当前目录
ls -d #查看目录本身信息或者下面的内容
ls -h #以友好的方式查看大小
ls -lt #显示文件时间的排序
ls -R #递归显示,比如一个目录下还有文件,则把那个文件也一起列出
ls -i #显示inode值
ls -lh /etc/sysconfig/ #ls命令还可以组合查看相应目录,
结合通配符:”?“匹配文件名中的一个未知字符;”*“匹配文件名中的任意多个字符。
ls -lh cd?1 ##”?“匹配文件名中的一个未知字符
ls -lt /home/a * txt ##”*“匹配文件名中的任意多个字符。
6.别名设置alias
通过别名机制简化常用的、比较长的命令设置成自己便于记忆和操作的命令
格式:alias 命令别名=命令
例如:alias net=’vi /etc/sysconfig/network-scripts/ifcfg-ens33 将这串命令简化为net,输入net就可以
删除所设置的简称:unalias
7.统计目录及文件空间占用情况-du
统计指定目录(或文件)所占用磁盘空间的大小
du [选项] [文件或目录]
常用选项
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用总的(Summary)大小,而不是统计每个子目录,文件的大小 |
例:统计出/var/log目录所占用空间的大小 du -sh /var/log/
8.创建新目录mkdir
mkdir /opt/sj #创建目录,(父目录必须存在)
-p #创建一个已有的目录会报错,加-p则不会报错/当父目录不存在,递归创建
mkdir{h..t} 添加h到t的目录
mkdir yjs {1..10} 添加yjs1到yjs10的目录
9.创建空文件touch:更新文件的时间标记;经常用于创建多个新的空文件
(1)文件存在:修改文件或目录的时间属性,包括存取时间和更改时间
(2)文件不存在:创建新文件
touch [文件名]
touch [文件名] [文件名]
10.创建链接文件In(软链接、硬链接)
In命令用于为文件或目录建立链接文件,类似Windows系统的快捷方式,
链接文件类型:软链接(又称符号链接)
硬链接
In -s 创建软链接,源文件 或目录...链接文件或目标位置
In 创建硬链接,相当于复制了一份副本
硬链接和软链接的区别:硬链接不能跨分区建立连接,无法对文件夹创建;删除硬件连接可以继续访问硬链接
软链接可以跨设备,可以支持文件夹,软连接删除源文件不能访问
复制文件或目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp-[选项]...源文件或目录..目标文件或目录...
常用选项
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限,属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 保留权限,复制软连接本身,递归复制 |
11.删除文件或目录 rm
-i :删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(使用需十分注意)📕
-f:删除文件或目录时不进行提醒,强制删除
常见用法:rm -rf /*
rmdir
一般不要直接删除系统已有的目录,避免出现故障;当删除某个目录下的文件时,先切换到该目录下再删除
12.移动文件或目录/改名 mv
用法:mv [文件名] [目录名]
mv [文件名] [文件名]
-i:若指定目录有同名文件,则先询问是否覆盖该文件
-f:当mb操作要覆盖某已有的目标文件时不给任何提示
-r:将目录及以下的档案注意删除
例如:rm -rf ./* 删除当前目录所有
13.查找命令/文件存放目录which
which命令用于查找Linux命令程序并显示所在的具体位置,搜索的范围由环境变量PATH决定
which +命令|程序名 只要查找到一个目标就会停止;
which -a 命令|程序名 对所有搜索路径进行查找
14.查找文件或目录find:采用递归方式2,根据目标的名称、类型、大小等不同属性进行精细查找,不设置任何参数,则find命令将再当前目录下查找子目录与文件,并将查找到的子目录和文件全部显示
-name #按名称查找
-size # 按大小查找
-user #按文件属主
-type #按类型查找:普通文件(f)、目录
使用find命令实现多个查找条件
各表达式之间使用逻辑运算符
-a表示 而且(and)
-o表示 或者 (or)
查找存在的用户名的文件: find /home -user 用户名
find /home -user 用户名 -group 组名
总结
Shell是一种特殊程序
Linux命令的分类、格式及使用方法
Linux分为内部命令和外部命令,内部命令在缓存内调用速度快,外部命令类似于一个小程序,调用速度慢
Linux常用命令
查看及切换目录(pwd、cd、ls、du)
创建目录和文件(mkdir、touch、In)
复制、删除、移动目录和文件(cp、rm、mv)
查找目录和文件(which、find)