Basic_commands
[TOC]
文件-目录
为什么先讲文件?
1:日常运维工作中,有近一半以上的工作内容 精力 其实都是对文件的操作。
2: Linux 本身也是一个基于文件形式表示的操作系统。
Linux一切皆文件。
①在windows是文件的,在Linux下同样也是文件;
②在windows不是文件的,在Linux下也是以文件的形式存储的;
日常学习中和日常工作中,对于文件的操作的都有哪些种类?
创建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件、恢复文件。

目录结构:
Bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。
Dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。
Etc:该目录主要存储一些配置文件。
Home:表示“家”,表示除了root用户以外其他用户的家目录,
类似于windows下的User/用户目录。

Proc:process,表示进程,该目录中存储的是Linux运行时候的进程。**
Root:该目录是root用户自己的家目录。
Sbin:全称super binary,该目录也是存储一些可以被执行的二进制文件,
但是必须得有super权限的用户才能执行。
Tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
Usr:存放的是用户自己安装的软件。类似于windows下的program files。
Var:存放的程序/系统的日志文件的目录。
Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
指令
什么是Linux的指令?
指在Linux终端(命令行)中输入的内容就称之为指令。

一个完整的指令的标准格式:Linux通用的格式
#指令主体(空格)[选项](空格)[操作对象]
一个指令可以包含多个选项
操作对象也可以是多个
ls 列文件
用法1:#ls 列出当前工作目录下的所有文件/文件夹的名称
用法2:#ls 路径 列出指定路径下的所有文件/文件夹的名称
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls home
admin
[root@localhost /]#

注意:ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限。
关于路径(重要):
路径可以分为两种:相对路径、绝对路径。
相对路径:相对首先得有一个参照物(一般就是当前的工作路径);
写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。
绝对路径:绝对路径不需要参照物**,直接从根“/”开始寻找对应路径;**
用法3:#ls 选项 路径 在 列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
常见的语法:
#ls -l 路径 -l:表示list,表示以详细列表的形式进行展示
#ls -la 路径 -a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)

上述列表中的第一列字符表示文档的类型,-
表示对应的文档类型为文件,d
表示文档类型为文件夹
用法4:#ls -lh 路径
含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示

pwd 打印当前位置
#pwd (print working directory,打印当前工作目录)告诉当前的位置
(路径较长,直接打印出来复制即可)
[root@localhost /]# pwd
/
[root@localhost /]# cd etc
[root@localhost etc]# pwd
/etc
[root@localhost etc]#
cd 切换当前目录
作用:用于切换当前的工作目录的
语法:#cd 路径
案例:当前在“/”下,需要使用绝对路径切换到/usr/local
案例:当前在/usr/local下,需要使用相对路径切换目录到home目录下的admin用户家目录中去。
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# cd /usr/local
[root@localhost local]# cd ../../home/admin
[root@localhost admin]#
补充:
在Linux中有一个特殊的符号“~”,表示当前用户的家目录。
切换的方式:#cd ~
[root@localhost etc]# cd ~
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]#
mkdir 创建目录
mkedir -p 路径/文件夹
可以是文件夹名称,也可以是包含名称的一个完整路径
当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
mkdir 路径1 路径2 路径3 …. 【表示一次性创建多个目录】
#可以是文件夹名称
[root@localhost /]# mkdir test1
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test1 tmp usr var
#也可以是包含名称的一个完整路径
[root@localhost /]# mkdir /home/admin/test2
[root@localhost /]# ls /home/admin
demo test2
[root@localhost /]#
#已存在
[root@localhost /]# mkdir /test1
mkdir: 无法创建目录"/test1": 文件已存在
#当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
[root@localhost /]# mkdir /test1/test01/test002
mkdir: 无法创建目录"/test1/test01/test002": 没有那个文件或目录
[root@localhost /]# mkdir -p /test1/test01/test002
##mkdir 路径1 路径2 路径3 …. 【表示一次性创建多个目录】
[root@localhost /]# mkdir -p test2 test3/test31 test4

touch 创建文件
作用:创建文件
语法:#touch 文件路径 【路径可以是直接的文件名也可以是路径】
#使用touch来在当前路径下创建一个文件
[root@localhost /]# touch tou1.tx
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test1 test3 tmp usr
boot etc lib media opt root sbin sys test2 test4 tou1.tx var
#使用touch来同时创建多个文件
[root@localhost /]# touch tou2.txt tou3.txt
#指定路径
[root@localhost /]# touch /home/admin/touch.txt
cp 复制
作用:复制文件/文件夹到指定的位置
语法:#cp 被复制的文档路径 文档被复制到的路径
注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须,则建议保持前后名称一致。
使用cp命令来复制一个文件夹
注意:当使用cp命令进行文件夹复制时需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
[root@localhost /]# cp /tou1.tx /home/admin
[root@localhost /]# ls /home/admin
demo test2 tou1.tx touch.txt
[root@localhost /]#
mv 移动剪切
作用:移动文档到新的位置
语法:#mv 需要移动的文档路径 需要保存的位置路径
#mv命令移动一个文件
[root@localhost /]# mv /home/admin/tou1.tx /
mv:是否覆盖"/tou1.tx"? y
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test1 test3 tmp tou2.txt usr
boot etc lib media opt root sbin sys test2 test4 tou1.tx tou3.txt var
#mv命令移动一个文件夹
[root@localhost /]# mv /home/admin/test2 /
mv:是否覆盖"/test2"? y
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test1 test3 tmp tou2.txt usr
boot etc lib media opt root sbin sys test2 test4 tou1.tx tou3.txt var
#补充:在Linux中重命名的命令也是mv,语法和移动语法一样。
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test1 test3 tmp tou2.txt usr
boot etc lib media opt root sbin sys test2 test4 tou1.tx tou3.txt var
[root@localhost /]# mv /test2 /test02
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test02 test3 tmp tou2.txt usr
boot etc lib media opt root sbin sys test1 test4 tou1.tx tou3.txt var
rm删除/移动目录
作用:移除/删除文档
语法:#rm 选项 需要移除的文档路径 [ 一般带上-rf ]
选项:
-f:force,强制删除,不提示是否删除
-r:表示递归 删除目录时必须用到-r
[root@localhost /]# rm /test02
rm: 无法删除"/test02": 是一个目录
[root@localhost /]# rm tou1.tx
rm:是否删除普通空文件 "tou1.tx"?y
[root@localhost /]#
[root@localhost /]# rm /test3
rm: 无法删除"/test3": 是一个目录
[root@localhost /]# rm -r /test3
rm:是否进入目录"/test3"? y
rm:是否删除目录 "/test3/test31"?y
rm:是否删除目录 "/test3"?
#注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除确认询问,所以移除目录的时候一般需要使用-rf选项。
[root@localhost /]# rm -rf /test4
[root@localhost /]#
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv test02 test3 tou2.txt usr
boot etc lib media opt root sbin sys test1 tmp tou3.txt var
#删除多个文档
[root@localhost /]# rm -rf /test02 /test3
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test1 tmp tou2.txt tou3.txt usr var
#要删除一个目录下有公共特性的文档,其中*称之为通配符,意思表示任意的字符
[root@localhost /]# rm -rf /test*
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp tou2.txt tou3.txt usr var
[root@localhost /]#
vim 编辑
语法:#vim 文件的路径
作用:打开一个文件(可以不存在,也可以存在)
退出打开的文件:在没有按下其他命令的时候,按下shift+英文冒号,输入q,按下回车即
插入时 点击insert进行书写
完成时 点击esc退出编辑
输入:wq 保存 :q 不保存 退出
输出结果 保存(重定向)
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
**>:**覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
语法:#正常执行的指令 > / >> 文件的路径
注意:文件可以不存在,不存在则新建
[root@localhost /]# ls > ls.txt
[root@localhost /]# ls
bin boot dev etc home lib lib64 ls.txt media mnt opt proc root run sbin srv sys tmp tou2.txt tou3.txt usr var
[root@localhost /]# ls >> ls.txt
[root@localhost /]#

cat 打开文件
作用1:cat有直接打开一个文件的功能。
语法1:#cat 文件的路径
[root@localhost /]# cat ls.txt
作用2:cat还可以对文件进行合并
语法2:#cat 待合并的文件路径1 文件路径n > 合并之后的文件路径
[root@localhost /]# cat /ls.txt /tou2.txt > tou3.txt
df 查看磁盘空间/free 内存
语法:#df -h -h表示以可读性较高的形式展示大小
语法:#free -m -m表示以mb为单位查看

剩余的真实可以用的内存为652mb。
Swap:用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存
head /tail 查看文件前/后n行
作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
语法:#head -n 文件路径 【n表示数字】


less 查看文件
作用:查看文件,以较少的内容进行输出,
按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
【可以上下左右滑动】
#less 需要查看的文件路径
在退出的只需要按下q键即可。

wc 统计文件信息
作用:统计文件内容信息(包含行数、单词数、字节数)
语法:#wc -lwc 需要统计的文件路径
-l:表示lines,行数
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数
[root@localhost /]# wc -lwc /tou3.txt
44 44 220 /tou3.txts
date 时间
作用:表示操作时间日期(读取、设置)
语法1:#date 输出的形式:2018年 3月 24日 星期六 15:54:28
语法2:#date +%F (等价于#date “+%Y-%m-%d” )
输出形式:2018-03-24
语法3:#date “+%F %T” 引号表示让“年月日与时分秒”成为整体
**等价操作#date “+%Y-%m-%d %H:%M:%S”**
输出的形式:2018-03-24 16:01:00
[root@localhost /]# date +%F+%T
2020-05-10+22:01:57
[root@localhost /]# date "+%F+%T"
2020-05-10+22:02:06
[root@localhost /]# date "+%F%T"
2020-05-1022:02:15
语法4:获取之前或者之后的某个时间(备份)
#date -d “**-**1 day” “+%Y-%m-%d %H:%M:%S”
符号的可选值:+(之后) 或者 - (之前)
单位的可选值:day(天)、month(月份)、year(年)
[root@localhost /]# date -d "-1day" "+%Y-%m-%d %H:%M:%s"
2020-05-09 22:03:1589032985
[root@localhost /]#
cal 操作日历
语法1**:#cal** 等价于 #cal -1 直接输出当前月份的日历
语法2**:#cal -3** 表示输出上一个月+本月+下个月的日历
语法3**:#cal -y** 年份 表示输出某一个年份的日历

clear/crtl +L清屏
语法:clear 或者快捷键:ctrl + L
需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息
管道| (过滤)
管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。
[root@localhost /]# ls /|grep y
sys
[root@localhost /]#
#ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入
②grep指令:主要用于过滤
③扩展处理:请使用学过的命令,来统计某个目录下的文档的总个数?
答:#ls / | wc -l
②特殊用法案例:通过管道的操作方法来实现less的等价效果(了解)
之前通过less查看一个文件,可以#less 路径
现在通过管道还可以这么**:#cat 路径|less**
Last updated