目录
一、shell
1、Linux系统中运行的一种特殊程序
2、在用户和内核之间充当“翻译官”
3、用户登录Linux系统时会自动加载一个shell程序
4、Bash是Linux系统中默认使用的shell程序
二、Linux命令
1、分类
内部命令 | 外部命令 |
shell解释程序内的一些特殊指令,也称内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于shell的一部分 | 属于shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应系统中一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由shell加载后才能执行 /bin,/user/bin,user/local/bin等 |
2、命令行的格式
2.1通用的命令行使用格式
命令字+【选项】+【参数】——英文字符区分大小写
命令字:整条命令中最关键的一部分
唯一确定的命令
选项:短格式选项——使用“-”符号引导(多个单字符选项可以组合在一起使用)
例如:ls -a 查看所有文件
ls -l 产看文件详细信息
长格式选项——使用“--”符号引导
例如:ls--all 显示目录中的所有文件和子目录,包括隐藏文件,ls--all=l是-a
参数:命令字的处理对象
可以使文件名。目录(路径)名或用户名等内容
个数可以是零到多个
2.2编辑Linux命令行
编辑Linux命令行的辅助操作 | |
Tab键 | 自动补齐 |
反斜杠“\” | 强制换行 |
Ctrl+U | 清空至行首 |
Ctrl+K | 清空至行尾 |
Ctrl+L | 清屏 |
Ctrl+C | 取消本次命令编辑 |
Ctrl+a | 切换到行首 |
Ctrl+e | 切换到行尾 |
2.3获得命令帮助的方法
内部命令 help——查看shell内部命令的帮助信息
命令的“--help”选项——适用于大多数Linux外部命令
使用man命令阅读手册页——使用上下键翻页
——按Q或q退出阅读环境
——按反斜杠“\”键查找内容,n键向下查找,N键向上查找
例如man ls
3、常见基础命令
3.1查看当前工作目录-pwd
[root@xiaowang AA]# pwd
/root/BB/AA——当前工作目录的绝对路径
3.2切换工作目录-cd
命令 | 注释 | 示例用法 |
cd | cd 目标位置——切换到目标位置 | [root@localhost ~]# cd project/ [root@localhost project]# ——切换到project目录 |
cd ~/cd——切换到当前目录的宿主目录(家目录) | [root@localhost project]# cd ~ [root@localhost project]# cd | |
cd - ——切换到上一次执行cd命令时所在的目录 | [root@localhost ~]# cd - /root/project [root@localhost project]# |
3.3列表显示目录内容-ls
ls【选项】+【目录或文件】 | ls ——列出当前目录中的所有文件和子目录 | [root@xiaowang /]# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr |
ls -a ——查看所有(all)子目录和隐藏文件信息 | [root@xiaowang ~]# ls -a . anaconda-ks.cfg .bash_logout .bashrc .tcshrc .. .bash_history .bash_profile .cshrc | |
ls -l ——以长格式显示文件详细信息(权限、大小、最后更新时间) | [root@xiaowang ~]# ls -l total 4 -rw-------. 1 root root 1423 Jul 8 23:08 anaconda-ks.cfg | |
ls -h ——人性化友好显示,目录或文件的大小,默认单位为字节(B) | ||
ls -R ——以递归的方式显示指定目录及其子目录中的所有内容 | [root@localhost project]# ls -R .: ./video: ./video/image: ./video/image/photo: | |
ls -i ——显示文件和目录的inode号 | [root@xiaowang var]# ls -i 134218951 adm | |
ls -t ——以时间排序,最新的文件会排在上面 | ||
ls -r ——表示反向排序,倒序输出 | ||
3.4通配符
符号 | 解释 |
“?” | 表示任意一个字符,有且只有一个字符 |
“*” | 表示任意数个字符,可以是0个或者1个或者多个 |
“【】” | 表示可以匹配字符组中的任意一个字符 |
示例用法
[root@xiaowang AA]# ls
ab.txt ac.txt a.txt bc.txt b.txt c.txt
[root@xiaowang AA]# ls a*.txt
ab.txt ac.txt a.txt
[root@xiaowang AA]# ls a?.txt
ab.txt ac.txt
[root@xiaowang AA]# ls [ab].txt
a.txt b.txt
3.5设置别名-alias
通过别名机制简化常用的、比较长的命令
基本格式:alias+命令别名=‘命令’——“=”两边不能有空格
示例:设置myls为ls -alh的别名
alias myls=‘ls -alh’
取消别名unalias+命令别名
3.6统计目录及文件空间占用情况-du
基本格式:du+选项+目录或文件
常用选项
选项 | 说明 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 人性化友好显示出统计结果(默认以KB计数,但不显示单位) |
-s | 至同统计所占用空间总的大小,而不是统计每个子目录、文件的大小 |
--max-depth=n | 统计所有小于等于第n层的目录的总大小 |
示例:统计出/var/log目录中子目录的大小
du -h --max-depth=1 //var/log
注意:du -ash不可用,条件相互冲突
3.7创建新目录-mkdir
基本格式:mkdir +选项+目录位置及名称
常用选项:-p——一次性创建递归的多层目录
示例:
在AA下创建BB,在BB下创建CC,在CC下创建DD,在DD下创建EE
[root@xiaowang AA]# mkdir -p BB/CC/DD/EE
[root@xiaowang AA]# ls -R
.:
BB
./BB:
CC
./BB/CC:
DD
./BB/CC/DD:
EE
./BB/CC/DD/EE:
3.8创建空文件-touch
基本格式:touch+文件
经常用于创建多个新的空文件
示例:
在AA目录下创建名分别为aa 、bb、 cc的三个空文件
[root@xiaowang AA]# ls
ab.txt ac.txt a.txt bc.txt b.txt c.txt
[root@xiaowang AA]# ls a*.txt
ab.txt ac.txt a.txt
[root@xiaowang AA]# ls a?.txt
ab.txt ac.txt
[root@xiaowang AA]# ls [ab].txt
a.txt b.txt
或者
[root@xiaowang AA]# touch {aa,bb,cc}
[root@xiaowang AA]# ls
aa bb cc
3.9创建链接文件-ln
目的:为文件或目录建立链接文件,类似于Windows中的快捷方式
链接文件类型:
①软链接(符号链接)——ln -s
②硬链接——ln
基本格式:ln 【-s】源文件或目录+链接文件或目标位置
示例:
软链接:为aa创建一个软链接1.txt
[root@xiaowang AA]# ls
aa bb cc
[root@xiaowang AA]# ln -s aa 1.txt
[root@xiaowang AA]# ll
total 0
lrwxrwxrwx. 1 root root 2 Aug 1 05:05 1.txt -> aa 【软链接指向源文件】
-rw-r--r--. 1 root root 0 Aug 1 04:37 aa
-rw-r--r--. 1 root root 0 Aug 1 05:04 bb
-rw-r--r--. 1 root root 0 Aug 1 04:37 cc
[root@xiaowang AA]# rm -rf aa 【删除源文件】
[root@xiaowang AA]# ls
1.txt bb cc
[root@xiaowang AA]# ll
total 0
lrwxrwxrwx. 1 root root 2 Aug 1 05:05 1.txt -> 【软链接失效】
-rw-r--r--. 1 root root 0 Aug 1 05:04 bb
-rw-r--r--. 1 root root 0 Aug 1 04:37 cc
[root@xiaowang AA]# ls -i
3358 1.txt 3355 aa 3356 bb 3357 cc 【inode号不同】
硬链接:为bb创建一个硬链接2.txt
[root@xiaowang AA]# ls
aa bb cc
[root@xiaowang AA]# ln -s aa 1.txt
[root@xiaowang AA]# ll
total 0
lrwxrwxrwx. 1 root root 2 Aug 1 05:05 1.txt -> aa 【软链接指向源文件】
-rw-r--r--. 1 root root 0 Aug 1 04:37 aa
-rw-r--r--. 1 root root 0 Aug 1 05:04 bb
-rw-r--r--. 1 root root 0 Aug 1 04:37 cc
[root@xiaowang AA]# rm -rf aa 【删除源文件】
[root@xiaowang AA]# ls
1.txt bb cc
[root@xiaowang AA]# ll
total 0
lrwxrwxrwx. 1 root root 2 Aug 1 05:05 1.txt -> 【软链接失效】
-rw-r--r--. 1 root root 0 Aug 1 05:04 bb
-rw-r--r--. 1 root root 0 Aug 1 04:37 cc
[root@xiaowang AA]# ls -i
3358 1.txt 3355 aa 3356 bb 3357 cc 【inode号不同】
软硬链接原理示意图
软硬链接的区别:
链接类型 | 与源文件大小相比 | inode号 | 文件属性 | 删除源文件后 |
软链接(ln -s) | 不同 | 不同 | 指向源文件 | 不能查看 |
硬链接(ln) | 相同 | 相同 | 独立文件 | 正常查看 |
软硬链接优缺点:
软链接 | 硬链接 | |
优点 | 可以跨文件系统,方便 | 不重复占用空间(),不受源文件删除的影响 |
缺点 | 占用inode空间,默认权限太大了、源文件删除软连接失效 | 无法跨文件系统进行创建 |
3.10复制文件或目录-cp
基本格式:cp +选项+原文件或目录+目标问价或目录
常用选项:
选项 | 说明 |
-p | 复制时保留源文件的权限、属主及时间标记等属性不变 |
-r | 递归复制所有文件及子目录,复制目录时必须使用此选项 |
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-a | 完整保留所有的信息,包括连接文件,可以直接复制目录 |
注意:复制多个文件或目录时,目标位置必须是目录,且目标努力必须已经存在 |
示例:
将AA目录及子目录复制到BB目录里
[root@xiaowang ~]# ls
AA anaconda-ks.cfg BB my-dir
[root@xiaowang ~]# cd AA
[root@xiaowang AA]# ls
aa bb cc
[root@xiaowang AA]# cd ..
[root@xiaowang ~]# cp -r AA BB
[root@xiaowang ~]# cd BB
[root@xiaowang BB]# ls
AA
[root@xiaowang BB]# cd AA
[root@xiaowang AA]# ls
aa bb cc
3.11查找命令文件存放目录-which
搜索范围由环境变量PATH决定(echo $PATH)
基本格式:
①.which +命令/程序名——默认当找到第一个目标后不在继续查找
②which -a +命令/程序名——在所有搜索路径中查找
示例:
查找ls命令所在位置
[root@xiaowang ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
3.12查找文件或目录-find
基本格式:find+【查找路径】+【查找条件】+【处理动作】
命令特点:精确查找、实时查找,遍历(慢)、支持查找条件较多
各表达式之间使用逻辑运算符
①“-a”——表示而且(and)
②“-o”——表示或者(or)
示例:
查找类型 | 关键字 | 说明 |
名称 | -name | 根据目标文件的名称进行查找,允许使用“*”及"?"通配符 |
文件大小 | -size | 根据目标文件的大小进行查找,一般使用“+”“-”来设置大于或小于指定的大小作为查找条件,常用的容量单位kB、MB、GB(注意区分大小写) |
文件属主 | -user | 根据文件是否属于目标用户进行查找 |
文件类型 | -type | 根据文件类型进行查找,常见类型有普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)、管道文件(p)、符号链接文件(l)、套接字文件(s)等 |
inode号 | -inum | 根据文件inodel号查找 |
权限 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepthlevel | 将文件以分级的形式查找 |
最小搜索目录深度 | -mindepthlevel | 同上 |
3.13移动(重命名)文件或移动目录-mv
基本格式:mv +选项+源文件或目录 +目标文件或目录
常见选项:
选项 | 说明 |
-i | 在覆盖目标文件之前提示用户确认 |
-f | 强制覆盖目标文件,不提示用户确认 |
-u | 仅当源文件比目标文件新时才执行移动操作 |
示例:
将AA目录下的文件a.txt文件移动到BB目录中;将AA目录中b.txt文件移动到BB目录中并改名为B.txt
[root@xiaowang AA]# ls
a.txt b.txt c.txt
[root@xiaowang AA]# cd ../
[root@xiaowang ~]# ls
AA anaconda-ks.cfg BB
[root@xiaowang ~]# cd AA
[root@xiaowang AA]# ls
a.txt b.txt c.txt
[root@xiaowang AA]# mv a.txt ../BB
[root@xiaowang AA]# cd ../BB
[root@xiaowang BB]# ls
a.txt
[root@xiaowang BB]# cd ../AA
[root@xiaowang AA]# ls
b.txt c.txt
[root@xiaowang AA]# mv b.txt ../BB/B.txt
[root@xiaowang AA]# ls
c.txt
[root@xiaowang AA]# cd ../BB
[root@xiaowang BB]# ls
a.txt B.txt
3.14删除文件或目录-rm
基本格式:rm +选项+目录或文件
常见选项:
选项 | 说明 |
-i | 在删除文件或目录之前提示用户确认 |
-f | 强制删除文件或目录,不提示用户确认 |
-r 或 --recursive | 递归删除目录及其内容,会提醒用户确认 |
-rf | 强制递归删除目录及其内容,不提醒用户确认 |
-v | 显示详细信息,列出被删除的文件和目录 |
注意:谨慎使用-r 和-f 选项,因为它们可能导致数据丢失 |
示例:
①rm -i
[root@xiaowang BB]# ls
a.txt B.txt
[root@xiaowang BB]# rm -i a.txt
rm: remove regular empty file ‘a.txt’? y
[root@xiaowang BB]# ls
B.txt
②rm -f
[root@xiaowang BB]# ls
a.txt B.txt
[root@xiaowang BB]# rm -f a.txt
[root@xiaowang BB]# ls
B.txt
③rm -r
[root@xiaowang BB]# ls
B.txt CC
[root@xiaowang BB]# cd CC
[root@xiaowang CC]# ls
c.txt
[root@xiaowang CC]# cd ../
[root@xiaowang BB]# rm -r CC
rm: descend into directory ‘CC’? Y
rm: remove regular empty file ‘CC/c.txt’? Y
rm: remove directory ‘CC’? Y
[root@xiaowang BB]# ls
B.txt
④rm -rf
[root@xiaowang BB]# mkdir CC
[root@xiaowang BB]# ls
B.txt CC
[root@xiaowang BB]# cd CC/
[root@xiaowang CC]# touch c.txt
[root@xiaowang CC]# ls
c.txt
[root@xiaowang CC]# cd ../
[root@xiaowang BB]# rm -rf CC
[root@xiaowang BB]# ls
B.txt