目录
一、基础知识
二、文件夹
三、认识Linux命令
1.认识Shell
2.命令
2.1命令执行的过程
2.1.1知识扩展
hash——缓存空间
2.2命令的分类
2.3命令的格式
通用的命令行使用格式
选项
参数/对象
举例
2.4编辑Linux命令行
2.5获得命令帮助的办法
2.5.1内部命令help
2.5.2命令的“--help”
2.5.3使用man命令阅读手册页
2.5.4info
四、Linux常用命令
1.查看当前的工作目录——pwd
print work directory——打印当前目录
2.cd——切换目录(文件夹)
2.1重点:*路径的表示*
2.2路径表示示例:
2.3cd - 表示返回上一次的目录(但只有一次)
3.ls——显示当前文件夹下所有文件
五、Linux系统七大文件属性
六、拓展——挂载
Linux系统的优点
一切都是一个文件。容易看(包括硬件,文本,二进制,源代码)
系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
当遇到复杂任务,通过不同功能用途的程序组合起来完成。 轻量级,一台服务 dhcp ip 数据库服务 网页
避免令人困惑的用户界面就是没有复杂的图形界面。
不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
root #表示用户
localhost #主机名
~ #家目录
# #管理员用户
$ #普通用户
root #root的家目录
opt #opt目录
[root@localhost ~]#
[zhangsan@localhost root]$ 普通用户
[zhangsan@localhost root]$ hostname
localhost.localdomain
[zhangsan@localhost opt]$
#关机命令:
1、halt #立刻关机
2、poweroff #立刻关机
3、shutdown -h now #立刻关机(root用户使用)
4、shutdown -h 10 #10分钟后自动关机
#重启:
reboot
init6
shutdown -r now
#修改语言
修改LANG变量实现中文语言提示
[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# LANG=en_US.UTF-8
[root@localhost ~]# echo $LANG
en_US.UTF-8
#修改颜色
[root@localhost ~]#vim /root/.bashrc
PS1='\[\e[1;34m\][\u@\h \W]#\[\e[0m\]'
[root@localhost ~]#source /root/.bashrc
#查看时间
date
#修改时间
date -s "2022-09-15 12:00"
data
文件夹名称 | 描述 |
bin | 存放二进制文件(电脑可以直接运行的文件) 常用的ls命令 在bin文件夹内 |
dev | 存放硬件设备(磁盘、光驱) 输入输出设备 (stdin输入、stdout输出) |
home | “ ~ ”当前用户的家目录;每一个用户都会有一个家目录,存放用户的基本配置信息及个性化配置,存放用户自己的文档使用 home是存放家目录的地方,是家目录的上级目录 例,aa是家目录 a是home 一旦建立用户,会有一个同名的家目录诞生 在home下诞生 root用户:超级管理员的家目录是在根目录下的root |
lib | 存放可以被调用的库32位操作系统使用 (lib64 存放可以被调用的库64位操作系统使用 ) |
proc | 内存环境中的程序状态(内存:临时保存、硬盘:永久保存)[在Linux中临时修改靠命令,永久修改需要写入文件] |
boot | 开机启动需要的文件,操作系统最重要的是内核,内核在boot (例,Linux中vmlinuz-3.10.0-693.el7.X86_64 是操作系统的内核) |
etc | 存放配置文件 (用户信息、密码信息、软件配置信息) |
mnt | 挂载点,空文件夹 |
opt | 存放后续安装的软件,空文件夹 |
sbin | 普通用户使用的二进制 |
tmp | 存放临时文件 |
var | 子目录;存放日志 /var/log |
misc | 光驱 光盘 |
net | 网络 |
run | 内存相关 |
sys | 系统相关 |
usr | 小根;存放根目录不想存放的;存放帮助信息 |
media | 多媒体 |
srv | 空文件夹 |
Linux系统中运行的一种特殊程序;
在用户和内核之间充当“翻译官”;
用户登录Linux系统时,自动加载一个Shell程序;
Bash是Linux系统中默认使用的Shell程序(文件位于/bin/bash)
Shell是一类软件的总称
程序的定义:执行特定任务的一串代码
Shell执行翻译任务,将人类使用的高级语言(汉语、英语、java、python、go、html)翻译成二进制交给内核 内核再交给硬件执行(操作系统也是程序,管理调用硬件、操作系统拥有多种内核 )内核≈操作系统
无论是Windows还是Linux一旦登录系统必须加载一个翻译官
Linux用户一旦登录系统必须加载一个shell程序,那么这个程序就是/bin/bash/(使用 /bin/bash的原因是其功能比较全 ,常用的补全功能是bash的功能)
命令的本质是一个程序,用一个程序必须得先安装这个程序,所有的命令都是程序
ls命令由代码构成,执行的任务是显示当前文件夹中的所有文件 = 程序 ;ls就是一个程序 ;type ls可以查看是ls程序内部还是外部
内部命令是/bin/bash的一部分,只要登录系统,内部命令直接就运行在内存中了
执行命令的定义:可以理解为你和系统做了一个约定,有5个特殊的文件夹,如果外部命令在这5个特殊文件夹里就可以直接写程序的名字,然后调用,不用关注具体位置,如果程序不在规定的这5个文件夹,就需要将程序的位置写完整(从根开始描述程序的位置)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
echo既是内部也是外部 ;内部命令的个数是61个;内部命令的个数是和shell类型有关
[root@localhost /]#type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo
命令执行的过程
- 首先判断是内部还是外部命令,如果是内部命令直接执行
- 如果是外部命令,先看缓存空间是否有,如果有按照缓存空间(hash)中的位置执行,如果缓存位置中没有找到直接报错
- 如果第一次执行,去看五个文件夹是否有,如果有直接执行,如果没有则报错命令不存在
延伸:如果输入命令,命令提示不存在
原因如下:
1.命令打错
2.命令没有安装
3.命令不在规定的路径下
4.运行过命令,但是命令的位置发生了改变
hash——缓存空间
hash -d 加缓存里的命令 单独删除
hash -r 删除所有
将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后 ,才可以继续使用。
内部命令 | 外部命令 |
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
命令的定义:命令是要你做什么。在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。
命令字 (空格) [选项] (空格) [参数/对象]
命令字是整条命令中最关键的一部分;唯一
确定的一条命令
定义:修饰命令,添加额外功能(ls显示当前文件夹下的所有文件;ls -l 表示文件夹下文件的详细信息)
ls (空格)-l 空格必须加!!!
1.短格式选项:使用“ - ”符号引导
2.长格式选项:使用“ -- ”符号引导
3.什么都不加
4.子命令 命令+子命令+子命令 例 nmcli
定义:代表对谁做(文件、文件夹/用户名)
如果不写默认当前文件夹或文件(用户名一定要加)
[root@localhost ~]#useradd gd
useradd代表命令 ; gd代表参数/对象 其中选项省略了
选项之间一般是没有顺序要求的,选项可以叠加,选项放在对象后面也可以
tips:如果想执行多种命令,用;隔开
例 cd /mnt;ls 转到文件夹mnt并查看该文件夹下的文件
快捷键 | 功能 |
Tab键 | 自动补齐(如果命令唯一,直接自动补全;如果不唯一,按两次显示所有可能 ) |
反斜杠“\” | 强制换行 |
Ctrl+A | 光标想跳转至行首 |
Ctrl+K | 删除当前光标所在位置之后的 |
Ctrl+L | 将光标移到顶行 |
“↑”“↓”上下键 | 回看执行过的命令 |
Ctrl+R | 输入关键字查询命令,回车再次执行,左键显示在屏幕上 |
反斜杠举例
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
使得代码看得更舒服
查看Shell内部命令的消息(help cd )
[root@localhost ~]# help echo
#内部命令查看帮助
echo: echo [-neE] [参数 ...]
将参数写到标准输出。
在标准输出上显示 ARG 参数后跟一个换行。
选项:
-n 不要追加换行
-e 启用下列反斜杠转义的解释
-E 显式地抑制对于反斜杠转义的解释
`echo' 对下列反斜杠字符进行转义:
\a 警告(响铃)
\b 退格
\c 抑制更多的输出
\e 转义字符
\f 格式提供
\n 换行
\r 回车
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\0nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
0到3个八进制数字
\xHH 以 HH (十六进制)为值的八比特字符。HH可以是
一个或两个十六进制数字
退出状态:
返回成功除非有写错误发生。
# -n 不换行显示
[root@localhost ~]# echo -n " 1 2 3"
1 2 3[root@localhost ~]#
[root@localhost ~]# echo -n "123456";echo "123456"
123456123456
# \b 删除前一个字符
[root@localhost ~]# echo -e " 1 2\b 3"
1 3
#\n换行
[root@localhost ~]# echo -e " 1\n 2\n 3"
1
2
3
#tab键叫制表符
[root@localhost ~]# echo -e " 1\t 2\t 3" tab键叫制表符
1 2 3
适用于大多数Linux外部命令( ls -- help )——代表查看ls这个外部命令的详细信息手册
[root@localhost ~]# ls --help
[root@localhost dev]# useradd --help
使用“↑”“↓”方向键滚动一行文本
使用Page UP和Page Down键翻页
空格键是回到1页
按“Q”或者“q”键退出阅读环境
按“\”查看内容,并高亮标识,找到后按n键向下匹配 N键向上匹配
man手册(Manual)是一本书
区段1:用户指令、区段5:文件格式 (重点记忆)
命令格式: man (序号,默认为1) 文件
man 1 命令 代表显示命令的用法
例,man 5 password 的解释为查看man手册的第五章节的内容;代表passwd文件的格式
[root@localhost ~]# man 5 passwd
#查看第五章内容,第5章一般是配置文件格式详细解释
man手册是属于操作系统后天添加的,可以用mandb生成man手册
info也可以查看相关的帮助信息
[root@localhost dev]# info ls
显示当前用户所在的工作目录的完整路径
代码格式:pwd
示例:
[root@localhost ~]#pwd
/root
绝对路径 | 相对路径 |
从根开始描述文件的位置 ; 有且唯一; 无论在哪里都可以准确找到某一个文件 |
从当前路径开始描述文件的位置 ; 有可能不唯一 ; 如果参照物变了,就找不到文件 |
在处理某一个文件之前(复制、移动、改名)必须先清楚该文件在哪个位置
代码格式:cd
命令 | 效果 |
cd 什么都不加 | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd ~ | |
cd - | 到前一次目录 |
示例:
[root@localhost ~]# cd /etc/
代表切换到/etc目录
[root@localhost etc]#
[root@localhost ~]# cd
cd 什么也不加 是到当前用户的家目录
[root@localhost ~]#
[root@localhost ~]# cd ~
“ ~ ” 代表当前用户的家目录
[root@localhost ~]#
家目录:存放用户个性化配置文件的地方
[zhangsan@localhost ~]$ pwd
查看当前所在目录位置
/home/zhangsan
当前目录所在位置/home/zhangsan
[zhangsan@localhost ~]$ cd ../../opt
cd切换目录到/opt文件夹 第一个..代表home文件夹,第二个..代表根目录
[zhangsan@localhost ~]$
[root@localhost 1]#pwd
/opt/1
当前所在位置为/opt/1
[root@localhost 1]cd /opt/2
[root@localhost 2]cd -
使用cd - 命令
[root@localhost 1]cd -
/opt/1
退回到/opt/1文件夹
/opt/2
退回到/opt/2文件夹
相对路径的表现形式 | ||
表现形式 | 说明 | 示例 |
直接使用目录名或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.conf |
以一个点“ . ”开头 | 表示以当前的工作目录为起点 | ./grub.conf |
以两个点“ .. ”开头 | 表示以当前目录的上一级目录(父目录)作为起点 | ../vmlinuz |
以“~用户名”形式开头 | 表示以指定用户的宿主目录作为起点 | ~teacher |
生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)
代码格式:ls (空格) [选项] (空格)[文件或目录… ]
选项 | 说明 |
-l | 长格式显示 显示文件属性 ll=ls -l |
-a | 显示全部包括隐藏文件 (以.开头的文件) |
-A | 显示全部文件或隐藏文件,但不包括 . 和.. |
-d | 仅列出目录本身,而不是列出目录内的文件数据 |
-h | 人性化显示加个单位 (加单位) |
-R | 递归显示(从第一层文件显示到最后一层) |
-t | 时间排序 |
-r | 倒序显示 |
--color | 显示颜色 (蓝色代表文件夹、黑色代表普通文件、红色代表压缩文件) |
-S | 文件大小排序 |
-i | 显示文件的inode号 |
[root@localhost opt]#ls -l
总用量 0
drwxr-xr-x. 2 root root 6 12月 19 14:56 2
drwxr-xr-x. 2 root root 6 12月 19 14:56 3
[root@localhost opt]#
d 代表文件的属性
rwxr-xr-x. 代表权限
2 代表硬连接个数
root 代表文件主人
root 代表属于哪个小组(属组)
6 代表文件大小
12月 19 14:56 代表文件时间
3 代表文件名
-a
[root@localhost opt]#ls -a
. .. 2 3 test
. ..表示隐藏目录
-R
[root@localhost opt]#ls -R
.:
当前目录下显示文件夹2 3 aa test
./2:
./3:
./aa:
2 3 aa test
bb test
bb文件夹显示以下文件
./aa/bb:
cc test
cc文件夹显示以下文件
./aa/bb/bb:
dd
dd文件夹显示以下文件
./aa/bb/cc/dd:
[root@localhost opt]#
-t -r
[root@localhost opt]#ll -t
总用量 0
drwxr-xr-x. 3 root root 28 12月 19 16:03 aa
drwxr-xr-x. 1 root root 0 12月 19 15:24 test
drwxr-xr-x. 2 root root 6 12月 19 14:56 2
drwxr-xr-x. 2 root root 6 12月 19 14:56 3
时间排序,按时间从最近到最远时间显示
[root@localhost opt]#ll -tr
总用量 0
drwxr-xr-x. 2 root root 6 12月 19 14:56 3
drwxr-xr-x. 2 root root 6 12月 19 14:56 2
drwxr-xr-x. 1 root root 0 12月 19 15:24 test
drwxr-xr-x. 3 root root 28 12月 19 16:03 aa
时间按倒序排列,按时间从远及近排列
-S
[root@localhost opt]#ll -S
总用量 0
drwxr-xr-x. 3 root root 28 12月 19 16:03 aa
drwxr-xr-x. 2 root root 6 12月 19 14:56 2
drwxr-xr-x. 2 root root 6 12月 19 14:56 3
drwxr-xr-x. 1 root root 0 12月 19 15:24 test
代表按照文件大小 28>6=6>0排列
[root@localhost opt]#ll -Sr
总用量 0
drwxr-xr-x. 1 root root 0 12月 19 15:24 test
drwxr-xr-x. 2 root root 6 12月 19 14:56 3
drwxr-xr-x. 2 root root 6 12月 19 14:56 2
drwxr-xr-x. 3 root root 28 12月 19 16:03 aa
代表按照文件大小 倒序排列 0<6=6<28排列
“ ?”匹配文件名中的一个未知字符
“ * ”匹配文件名中的任意多个字符
[root@loacalhost opt]#ls {1..10}.txt
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
将1-10每一个数字和txt组合
[root@loacalhost opt]#touch {1..10}.txt
[root@loacalhost opt]#ls
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
建立1-10的txt
其中{1..10}代表阿拉伯数字1.2.3.4.5.6.7.8.9.10
如果是[123],123仅代表单个数字字符
[root@loacalhost opt]#ls [123].txt
1.txt 2.txt 3.txt
代表1.2.3每个数字和txt相匹配
[root@loacalhost opt]#ls [0-9]
1 2 3 4 5 6 7 8 9
[0-9]代表单个字符
[root@loacalhost opt]#ls [0-9][0-9]
10
[0-9][0-9]代表两个字符
[root@loacalhost opt]#ls
a b c d e f
A B C D E F
[root@loacalhost opt]#ls[a-c]
a A b B c
[root@loacalhost opt]#ls[A-c]
A b B c
可以理解为取值范围[]两边都取
ls [^zhou]
表示除zhou以外的
[[:lower:]]一个小写字母
“ \ ”转义 表示原来的意思
\ * = *
面试题:显示当前文件夹下的文件,按时间排序倒序显示 —— ls -tr
第一个字符 | 文件类型 |
“ - ” | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等 |
“ d ” | 目录,类似 Windows 系统中的文件夹 |
“ b ” | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘 读写文件的时候是一整块一整块的读和写 |
“ c ” | 字符设备文件 一次只能录入一个字符 键盘 |
“ s ” | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信(ip 端口号 传递消息 )系统程序之间交换信息可以依靠套接字 |
“ p ” | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误(数据只能沿一个方向传输 Linux命令中丨 表示管道 )系统程序之间交换信息可以依靠管道符 |
“ l ” | 链接文件,类似 Windows 系统中的快捷方式 |
将系统中的文件夹和磁盘做上关联,使用文件夹就等于使用磁盘 (文件夹要空)
Linux唯一使用外来设备的方式
Windows有C盘、D盘、E盘有C根、D根
Linux只有一个/根