Linux常用指令详解
目录
前言:
Linux的目录结构
Linux常用指令简介
whoami指令
ls指令
pwd指令
cd指令
tree指令
touch指令
mkdir指令
rmdir指令与rm指令
man指令
cp(copy)指令
mv(move)指令
cat指令
重定向及重定向的类型与作用
less指令
head指令
tail指令
find指令
编辑 which指令
whereis指令
grep指令
zip指令/ unzip指令
前言:
Linux是一种免费的开源操作系统,它的内核由Linus Torvalds在1991年创建;Linux操作系统具有高度的灵活性和可定制性,可以在各种设备上运行,包括个人电脑、服务器、移动设备等;Linux操作系统的发行版本非常多,其中一些最流行的版本包括Ubuntu、Debian、CentOS、Fedora等;
Linux操作系统的特点与优势:
- 开源:Linux操作系统是开源的,这意味着用户可以自由地查看、修改和分发源代码;
- 安全性:Linux操作系统具有高度的安全性,因为它的用户账户和文件权限管理非常严格;
- 稳定性:Linux操作系统非常稳定,可以长时间运行而不需要重新启动;
- 可靠性:Linux操作系统非常可靠,可以处理大量的并发任务和用户请求;
- 灵活性:Linux操作系统非常灵活,可以根据用户的需求进行定制和配置;
Linux的目录结构
Linux的目录结构采用层级式的树状目录结构,所有文件的目录都是由根目录(/)开始的,根目录是所有目录和文件的源头,也就是说Linux最上层是根目录"/",然后在此目录下一个一个的分支下来,有点像树枝,这种目录配置方式被称为目录树(directory tree);
常用目录简介:
/boot 存放系统内核及启动相关的文件;
/dev 此目录下以文件的形式存放任何设备和接口,在Linux系统中,一切皆文件,实际上,对硬件的操作都可以看做是对文件的操作;
/etc 存放系统配置文件;
/home 普通用户的家目录;/root root用户(超级用户)的家目录;
/tmp 存放临时文件;
Linux中有两类用户:普通用户 超级用户(root用户)
超级用户:可以在Linux系统中做任何事情,不受限制;
普通用户:只能在Linux系统中做有限的事情;
超级用户的命令提示符为" # ",普通用户的命令提示符为" $ "
Linux系统中,磁盘上的文件和目录组成一棵目录树,每个节点都是目录或文件,对于一棵多叉树,由叶子结点和非叶子结点所构成,非叶子结点一定为目录,叶子结点可能是普通文件,也可能是空目录;
绝对路径:从根目录( / )开始,定位指定文件所形成的路径( 唯一标识一个文件);
相对路径:相对于自身当前所处目录为参考点,定位一个文件的路径;
Linux常用指令简介
目录:目录是一种特殊的文件称作目录文件,目录的核心是其里面可以存放目录或普通文件,相当于windows系统下的文件夹;
文件: 除目录文件外的普通文件称为文件;
whoami指令
whoami 查看当前账号名称
[root@localhost /]# whoami
root
ls指令
- 语法:ls 【选项】【目录或文件】
- 功能:对于目录,该命令列出该目录下的所有子目录与文件;对于文件,将列出文件名及其他信息;
- 常用选项:
-a 列出目录下所有文件,包括以 . 开头的隐藏文件;
-l 列出文件的详细信息;
-d 将目录像文件一样显示,而不是显示该目录下的文件;
ls后面不加任何选项,默认显示将当前目录下的所有文件
[root@localhost class1]# ls
data.txt Linux
ls -a 显示当前目录下的所有文件,包括隐藏文件
[root@localhost class1]# ls -a
. .. data.txt Linux
ls -l 列出文件的详细信息
[root@localhost class1]# ls -l
total 0
-rw-r--r--. 1 root root 0 Dec 3 22:47 data.txt
drwxr-xr-x. 2 root root 22 Dec 3 23:07 Linux
ls 后面直接接目录,会将目录中的内容展开再显示
[root@localhost /]# ls
bin boot class1 dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls class1
data.txt Linux
ls -d 将目录像文件一样显示,并不展开该目录下的文件
[root@localhost /]# ls -d class1
class1
文件=文件内容+文件属性
对文件操作的本质:
1. 对文件的内容操作 2. 对文件的属性操作
pwd指令
语法:pwd
功能:显示用户当前所在目录
[root@localhost Linux]# pwd
/class1/Linux
cd指令
语法:cd 目录名
功能:改变工作目录,将当前工作目录改变到指定目录下;
为了以树状的形式查看文件需要以root 账号安装tree指令 : yum install -y tree
tree指令
语法:tree 【选项】【目录】
功能:以树状结构列出指定目录下的所有内容,包括所有文件,子目录及子目录里的目录和文件;
常用选项:
-a 显示所有文件,包括隐藏文件;
-d 只显示目录
[root@localhost class1]# tree .
.
├── data.txt
└── Linux
└── test.txt
1 directory, 2 files
. 文件代表当前目录 .. 文件代表当前目录的上级目录
[root@localhost class1]# pwd
/class1
[root@localhost class1]# cd .
[root@localhost class1]# pwd
/class1
[root@localhost Linux]# pwd
/class1/Linux
[root@localhost Linux]# cd ..
[root@localhost class1]# pwd
/class1
cd .. :返回当前目录的上级目录;
cd - : 返回最近访问目录;
cd ~ : 进入用户的家目录;
普通用户的家目录为/home/xxx root用户的家目录为/root
[root@localhost Linux]# pwd
/class1/Linux
[root@localhost Linux]# cd ~
[root@localhost ~]# pwd
/root
[zpl@localhost Linux]$ pwd
/class1/Linux
[zpl@localhost Linux]$ cd ~
[zpl@localhost ~]$ pwd
/home/zpl
总结 :cd + 绝对路径/相对路径 ;
touch指令
语法 :touch 【选项】【文件名】
功能: 创建一个不存在的文件;
touch一个已经存在的文件会更新文件的时间信息,文件具有三种时间信息
Access: 文件最后访问时间 ;
Modify: 文件内容的最后修改时间;
Change: 文件属性的最后修改时间;
mkdir指令
语法: mkdir 【选项】【目录名】
功能:在当前目录下创建一个目录
常用选项:
-p 嵌套创建多个目录,例如dir1/dir2/dir3;
rmdir指令与rm指令
rmdir指令
语法:rmdir 【选项】【目录名】
功能:只能在当前目录下删除空目录;
常用选项:
-p 当子目录被删除后如果父目录也变成空目录,则将父目录一起删除;
rmdir 目录名称1 目录名称2 目录名称3
同时删除多个空目录;
rm(remove)指令
语法:rm 【选项】【文件名】
功能:删除文件或者目录
rm 文件名 # 删除文件(询问确认)
rm -f 文件名 # 删除文件(不询问)
rm -r 目录 # 删除目录(询问确认,删除目录时必须带选项-r,否则报错)
rm -rf 目录 # 删除目录(不询问,强行删除目录,包括其中的内容)
通配符:* 匹配任意数目的字符,可以是单个字符 多个字符或者没有字符;
rm -f a* # 删除以 a 开头的文件
rm -f *.txt # 删除以 txt 结尾的文件
rm -f a.txt b.txt # 同时删除多个文件(空格间隔)
rm -f .文件名 # 删除隐藏文件(明确给出隐藏文件的文件名)
man指令
语法:man 【选项】【参数】
功能:man命令是用来查看系统文档的工具,帮助找到和理解系统上的各种命令、函数和配置文件;
常用选项:
-a, --all 显示所有匹配的手册页而不是仅显示第一个匹配的手册页;
手册编号(man手册共8章,主要列出前三章):
1:用户在shell环境可操作的命令或执行文件;
2:系统内核可调用的函数与工具等;
3:一些常用的函数(function)与函数库(library),主要为c的函数库;
总结:man+手册编号+查找的内容(手册编号可以忽略,忽略之后默认从1 号手册向下查找);
cp(copy)指令
同级目录下,不允许存在同名文件或者同名目录
nano是一款轻量级文本编辑器,适用于终端环境;
nano的基本操作如下:
- 打开文件:在终端中输入
nano 文件名
即可打开文件进行编辑;- 保存文件:按下
Ctrl + O
,然后按下Enter
即可保存文件;- 退出Nano:按下
Ctrl + X
即可退出nano;
cat filename
cat 的标准输出(即输出的默认目标)是屏幕,将会在屏幕上输出文件filename的内容;
语法:cp 【选项】【源文件】【目标文件】
功能:复制文件或者目录 ;
示例一:复制一个源文件到目标文件(夹)
命令格式为:
cp 源文件 目标文件夹
目标文件已经存在或目标文件夹中含有同名文件,则复制之后目标文件或目标文件夹中的同名文件会被覆盖;
示例二:同时复制多个文件到目标文件(夹)下
命令格式为:
cp 源文件1 源文件2 目标文件夹
或cp 文件* 目标文件夹
第一种命令格式可以把列出来的多个文件一次性复制到目标文件夹下,每个文件直接用空格分隔;第二种命令格式使用了通配符
*
示例三:复制源文件夹到目标文件夹下
命令格式为:
cp -r 源文件夹 目标文件夹
默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用
-R
选项
隐藏文件的拷贝,目录中的隐藏文件不会拷贝到目标路径下,由于每个目录都包含 . 当前目录文件和..上级目录文件,拷贝到目标路径,必然导致命名冲突;
mv(move)指令
语法 : mv [ 选项 ] 源文件或目录 目标文件或目录功能 :
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中;
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名;
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中;
mv 源文件 目标文件
mv 源文件 目标目录
mv 源目录 目标目录(不存在)
mv 源目录 目标目录(存在)
cat指令
语法:cat [选项] [文件]
功能:查看目标文件的内容
cat filename #查看文件内容
cat -n filename #查看文件内容并对所有输出行编号
cat -b filename #查看文件内容并对非空输出行编号
指令本质为可执行程序,本质也为二进制文件或者脚本文件;
安装的本质就是把对应的可执行程序拷贝到系统所能识别的路径下;
alias指令:
语法:alias 别名='命令'
功能:设置指令别名
注意:别名的作用范围
只对当前的shell中有效
,对子shell也没有无效,退出当前shell之后也无效;
echo指令
语法:echo [字符串/指令]
功能:将字符串输出到标准输出设备即显示器;
[zpl@VM-12-16-centos ~]$ echo "hello Linux"
hello Linux
[zpl@VM-12-16-centos ~]$ echo 'abc'
abc
重定向及重定向的类型与作用
重定向:就是将原本数据输出的默认位置修改输出到指定输出位置(如:文件中!)
echo指令默认向显示器打印(向显示器写入),加入 > 符号改变了打印方向,开始向文件内部写入即输出重定向;(显示器打印即为显示器写入,显示器读取操作为空,同理,键盘读取操作存在,但是写入操作为空),对于硬件设备,都可看做存在读方法和写方法,只不过有些方法为空;
- 输出 / 追加重定向时,若有文件则直接访问,若无文件则创建文件再访问;
- 输出 / 追加重定向可结合 echo 指令实现文件的内容写入;
- 输出 / 追加重定向都是在执行写入操作;
- 输入重定向可以结合 cat 指令实现文件内容的读取与打印(即:将本来应该从标准输入设备(键盘)中读取数据转向在文件中读取数据);
输出重定向每次会清空原始文件,再进行写入!
输出重定向可以实现两个功能 1. 新建文件夹 2. 清空目标文件 ;
追加重定向>> 向目标文件中不断在原始内容的基础上新增内容;
cat从键盘文件读取什么,则向显示器文件写入什么,当在如下场景,cat默认读取文件时,是从键盘文件输入的;
cat默认读取时,是从键盘文件中输入,当将键盘文件更换为其他文件(输入重定向>)
此时cat从其他文件内部(file.txt)读入,显示在显示器上;
less指令
语法:less [选项] [文件名]
功能:less是常用的文本文件阅读工具,适用于浏览大文件,加载文件时不会读取整个文件;
less file #查看文件file的内容
less -m file #查看文件file的内容并在屏幕底部显示已显示内容的百分比
less -N file #查看文件file的内容并显示行号
less指令运行时,可执行如下操作:
向上(下)方向键,向上(下)滚动一行;
回车键 向下 滚动 一行
空格键向下 滚动 一页G(大写) 移动到最后一行
g(小写) 移动到第一行
q 退出 less命令;
- /关键字: 向下搜索关键字
- ?关键字:向上搜索关键字
示例:
输入less file.txt,回车,会看到 file.txt 文件的内容, 这个时候想用关键字搜索的话,有两种方式;
- 从上往下搜索 :输入/关键字 ,如果想从第一行开始搜索,则先入 g ,定位到第一行,再输入 /关键字 ;
- 从下往上搜索: 输入 ?关键字 ,如果想从文件最后一行向上搜索,则先输入G ,定位到最后一行,再输入 ?关键字;
注:默认搜索是区分大小写的,如果不区分大小写,要增加
-i
参数,即less -i file.txt
head指令
语法:head [选项] [文件]
功能:显示文件开头至标准输出中,默认head命令显示其相应文件的前10行;
-n –lines=k
该选项用于指定要显示的行数,k为整数,例如:-n 20 表示显示文件的开头的前20 行;
-c –bytes=k
该选项用于指定要显示的字节数,k为整数,例如:-c 100 表示显示文件开头的前100 个字节;
head file.txt #显示file.txt文件的前10行
head -n 5 file.txt #显示文件的前5行
head -5 file.txt
head -c 100 file.txt #显示file.txt文件的前100个字节
tail指令
语法:tail [选项] [文件]
功能:查看指定文件的后n行,不指定行数则默认打印后10行;
常用选项:
-n –lines=k
该选项用于指定要显示的行数,K 为整数。例如,-n 100 表示显示文件的最后 100 行;
若k前面加上一个正号 + ,则表示从文件开头数第k行开始显示;
例如: -n +10 表示显示文件的第 10 行及其之后的所有内容;
若k前面加上一个负号 - ,则表示显示文件的除了最后 K 行以外的所有内容;
例如: -n -20 表示显示文件除了最后 20 行以外的所有内容;
-c –bytes=k
该选项用于指定要显示的字节数,k为整数;
例如 : -c 1024 表示显示文件的最后 1024 个字节;
若k前面加上一个正号 + ,则表示从文件开头数第 K 个字节开始显示;
例如 :-c +1024 表示显示文件从第 1024 个字节开始的所有内容;
若k前面加上一个负号 - ,则表示显示文件的除了最后 K 个字节以外的所有内容;
例如 :-c -1024 表示显示文件除了最后 1024 个字节以外的所有内容;
tail -n 20 file.txt #显示file.txt文件的最后20行
tail -20 file.txt
tail -n +10 file.txt #从file.txt文件的第10行显示所有内容
tail -c 100 file.txt #显示file.txt文件的最后100个字节
对于一个文件,如何提取文件的中间部分的数据?
head -N file.txt > temp.txt 将原文件file.txt中的前N行重定向到临时文件(新文件);
tail -k temp.txt 提取新文件temp.txt中的后k行,但是需要创建临时文件,更好的做法是利用命令行管道 | ,将head -N file.txt 的输出作为tail -k的输入,指令如下:
head -N file.txt | tail -k
find指令
语法:find [查找路径] [查找条件] [处理动作]
功能:find命令在Linux多叉树目录结构中按照指定诸如文件名,文件大小,文件属性查找 (注:find查找需要指定查找路径,find默认的处理动作为打印,将结果显示至标准输出);
find [查找路径] -name [文件名] #按照指定路径查找指定文件名
which指令
语法:which [选项] [指令]
功能:用于查找指令所在路径的命令和确定一个可执行文件在系统中的位置;
whereis指令
语法:whereis [选项] [文件]
功能:whereis 指令主要用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置;
grep指令
语法:grep [选项] [关键字] [文件名]
功能:grep是行文本过滤工具,按照指定的关键字,在指定的文件中,按行为单位,包含关键字的行整体被保留,不包含关键字的行整体被剔除,查找到将找到的行打印出来;
常用选项:
- -i 忽略大小写的不同,将大小写视为相同;
- -n 查找到输出行号;
- -v 显示不包含关键字的所有行 ;
zip指令/ unzip指令
zip指令
语法:zip 压缩文件.zip 目录/文件
功能:将目录或文件压缩成zip格式;
常用选项
-r : 递归处理,将指定目录下的所有文件和子目录一并处理;
unzip指令
语法:unzip 压缩文件.zip 选项 目录
功能:解压文件;
常用选项:
- 默认:默认解压到当前路径下
- -d:解压到指定路径
zip test2.zip test2/* # 将test2目录压缩
unzip test2.zip -d /tmp # 解压到tmp目录