一、shell
Linux系统中运行的一种特殊程序
在用户和内核之间之间充当“翻译官”
用户登陆Linux系统时,自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序
内核:用于调用计算机硬件资源
shell:将用户指令转换成计算机语言让内核去调用计算机硬件资源
bash是一个文件,linux系统中万物皆文件
bash文件位于/bin/bash
用户与内核进行交互过程如下:
1、计算机接收用户所输入的的命令
2、shell会将所接收到的命令转换成计算机所能识别的二进制语言
3、再将命令传递给系统内核执行
二、Linux命令分类
shell与内、外部命令
shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)
区别:
内部命令属于shell的一部分,外部命令属于shell程序之外的命令。内部命令直接调用,外部命令会调用一个独立文件,内部命令比外部命令快
内部命令属于shell的一部分(/bin/bash)没有单独的文件,外部命令一般由脚本文件或者二进制文件组成。
内部命令自动加载,可以直接使用,外部命令系统必须要知道对应的文件位置(命令的环境变量),由shell进行加载后,系统才能识别该命令。
三、Linux内部命令
1、内部命令
type #查询内部外部指令
enable-n + 指令 #禁用内部指令
enable + 指令 #开启指令
help #帮助
ls --help #外部命令查询帮助
help cd #内部命令查询帮助
echo #shell内嵌/也可以是外部指令(给出具体命令所在)
hash #可以直接调取缓存中的指令
which + 指令 #查询指令所在路径与别名
2、命令行格式
命令字 空格 [选项] 空格 [参数]
干甚 做完美,干的马虎 干甚(对象)
命令字:唯一确定一条指令,是整条命令中最关键的部分
选项:长格式:使用“- -”符号引导;短格式:使用“-”符号引导
参数:用来处理对象;可以是文件名、目录(路径)名或者用户名等内容;个数可以是0到多个
3、Linux命令行的辅助操作
4、获得命令帮助的方法
内部命令help
查看Shell内部命令的帮助信息
命令的“–help”选项
适用于大多数的 Linux的外部命令
使用man命令阅读手册
可以使用方向键滚动文本
使用Page Up和Page Down键翻页
按Q或q键退出阅读环境
按“\”键查找内容
例如:man cd | col -b > cdhelp.txt #查询帮助文档
#-b:过滤掉所有字符
5、pwd——查看当前的工作目录
pwd #显示用户当前所在工作目录位置
6、cd——切换工作目录(相对路径、绝对路径)
cd /home #后面跟绝对路径,切换到home目录
cd ./home #后面跟相对路径,切换到home目录
cd ~ #切换到当前用户的家目录
cd #切换到当前用户的家目录
cd ~user #切换到某一个用户的家目录,只有root才行,别的用户只能在自己家
cd - #切换到上一次执行操作的目录
cd … #切换到上一层目录(父目录)
cd …/…/ #切换到父目录的父目录
绝对路径:以根开头的都是绝对路径(/home/kgc)
相对路径:以非根开头的都是相对路径,cd kgc
7、ls——列表显示目录内容
显示目录中内容,包括子目录和文件相关属性信息
ls【文件】【文件或目录…】
常用选项
l、-a、-A、-d、-h、-R、–color
结合通配符
“?”:代表任意一个字符,且至少一个
“*”:代表任意数个字符,可以是0个或者1个或者多个
ls的常用选项
-l #将文件信息属性详细列出,通常直接使用ll,因为设置了别名
-R #递归显示,比如一个目录下还有文件,则把那个文件也一起列出
-d #查看目录本身信息,不显示目录下的内容
-i #显示inode值
-h #友好显示文件大小
-a #遍历所有文件及目录(ls内定将文件名或目录名称开头为""的视为隐藏档,不会列出)
-A #跟-a唯一的不同是不列出当前目录和上一层目录
颜色区别
白色:数据文件 txt
深蓝色:目录
白色(黑色):一般文件
绿色:可执行的文件(脚本/程序)
黄色:块设备文件
红色:压缩包
淡蓝色:链接文件/快捷方式
8、扩充
普通文件
d 目录文件 directory
b 块设备文件 block
p 管道文件 pipe
s 套接字文件 socket
l 符号链接文件 link
rwx
r 代表文件可读
w 代表文件可写入可修改
x 代表文件可执行
有x权限文件会变成绿色
9、设置别名-alias
通过别名机制简化常用的、比较长的命令
alias 命名别名 = 命令
示例:
命令:
alias #查看系统当前所有可用别名
alias ll=‘ls-lt’#设置别名
unalias #删除别名
vim /root/.bash 永久生效
(TIPS:)在定义别名时,等号两边不能有空格,否则shell不能决定您需要做什么。仅在命令中包含空格或特殊字符时才需要。
10、统计目录及文件空间占用-du
统计指定目录(或文件)所占用磁盘空间的大小
du [选项] [文件或目录…]
常用选项
-a :统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s:只统计所占用空间总的大小,而不是统计每个子目录、文件的大小
示例:
统计出/var/log目录所占用空间的大小
du - sh /var/log/
11、 创建新目录-mkdir
mkdir /opt/lianyilian #创建目录,注意:父目录必须存在
-p: 创建一个已有的目录会报错,加-p则不会报错/当父目录不存在时,递归创建
mkdir {a..c} 添加a到c的目录
mkdir a{0..9} 添加f0.txt到f9.txt的目录
rmdir 删除一个空目录
案例:
12、创建空文件-touch命令
更新文件的时间标记
经常用于创建多个新的空文件
touch 文件…
示例
创建两个空文件,文件名
Example: touch aa bb
13.创建链接文件-link
为文件或目录建立链接文件,类似于Windows系统的快捷方式
链接文件类型
软连接(快捷方式)
硬链接
硬软链接区别:
硬链接不能跨分区建立连接 无法对文件夹创建
删除硬件连接可以继续访问硬链接
软链接可以跨设备 可以支持文件夹
软链接删除源文件不能访问
软链接一般用在磁盘空间不够的时候
14、复制文件或目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp 【选项】…源文件或目录…目标文件或目录…
cp常用选项
-f:强制复制,不与用户交互
-i:提醒覆盖
-p:连属性一起复制
-r:复制目录时必须使用此选项,表示递归复制所有文件及子目录。
-a:保留权限,复制软链接本身,递归复制
注:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在。
15.删除文件或目录 -rm
删除指定的文件或目录
rm【选项】要删除的文件或目录
常用选项
-f:删除文件或目录时不进行提醒,而直接强制删除。
-i:删除文件或目录时提醒用户确认。(y表示删除,n表示不删除)
-r:删除目录时必须使用此选项,表示递归删除整个目录树(谨慎使用)
删除空目录:rmdir
注:不要直接删除系统中已有的目录或配置文件,以避免出现意外故障。
删除目录下文件时建议最好先切换到目录下再执行rm -rf命令。
16、移动文件或目录-mv
将指定文件或目录转移位置
如果目标位置与源位置相同,则相当于执行重命名操作
mv 【选项】…源文件或目录…目标文件或目录
示例
mv mytouch mkfile
mv mkfile public_html/
当在同一目录下用mv就是改名,如果是跨目录使用mv的话就是移动,相当于剪切的操作
-f:如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-b:当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。无论多少次,生效的文件以最近的两次文件为准
- i:如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入y表示直接覆盖,输入n表示取消该操作。直接覆盖原有文件,n取消移动
-n::要覆盖任何已存在的文件或目录
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
17、查找命令/文件存放目录-which
搜索范围由环境变量PATH决定(echo ¥PATH)
which 命令|程序名 #默认当查找到第一个目标后不再继续查找
或
which -a 命令|程序名 #在所有搜索路径中查找
示例
which is
which cd
查找文件或目录-find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
-name 按名称查找
-size 按大小查找
-user 按文件属主查找
-type 按文件类型查找
使用find命令实现多个查找条件
各表达式之间使用逻辑运算符
-a表示 而且(and)
-o表示 或者 (or)
设置find命令的查找条件时,若需要使用或通配符,最好将文件名用双引号括起来,以避免当前目录下符合条 find /boot -size+1024k-a/-o-name"vmlinuz*"使用"-a”-o”组合两个条件,前者表示两个条件必须同时满足,后者表示只需满足其中任何一个条件即可
Find工具-type参数案例:
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ !-type d#查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d | xargs chmod 755 -R#查目录类型并将权限设置为755;
find /data/ -type f l xargs chmod 644 -R#查文件类型并将权限设置为644;
扩展
可以和管道配合
find ./ -maxdepth1-typef-print0 l xargs-0 ls-lh -atime–访问时间
Linux中日志放在/var/log sylog
-mtime–文件内容修改时间
-ctime --文件属性修改时间
ctime ##以天为单位
cmin ##以分钟为单位
find./ -name"syslog.*.gz"-mtime-5 -exec ls-1h {} ;
#+5是五天以前 #-5天以内
在当前目录下(包含子目录),删除所有txt文件
find ./-name"*.txt"-exec rm{) \;
在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
find ./-name"*.txt"-exec grep “bin” (} \;
找到backup中log类型的文件并删除(删除备份文件)
find /backup -type f -name “*.log” -exec rm {} \;
举例:
寻找etc中满足user且大于1M的:
寻找etc中是root或者大于1M:
四、总结
Shell是一种特殊程序
Shell在用户和内核之间充当“翻译官”
Linux命令的分类、格式及使用方法
Linux命令分为内部命令和外部命令
Linux常用命令
查看及切换目录(pwd、cd、ls、du)
创建目录和文件(mkdir、touch、ln)
复制、删除、移动目录和文件(cp、rm、mv)
查找目录和文件(which、find)