目录
在了解Linux基本操作之前,我们首先要了解Linux的一些最基本的文件知识,首先Linux的文件分为两种,一种是目录,一种是普通文件,目录和普通文件都可以为空,但是空目录和空文件指的都是他们的内容为空,并不是说他们就不占磁盘空间了,因为文件除了内容,还有属性,而属性也是要存储在相应的位置的。 对于目录,我们经常也称为路径,我们一般要用路径来标识一个文件,在同一个目录下,文件名是不能相同的,但是在不同的目录下是可以存在同名文件的。 目录的组织结构本质上就是一棵多叉树,路径节点都是我们所说的目录,而叶子节点却不一定是我们的普通文件,也有可能是空目录。 在Windows中我们的路径分隔符是 \ ,而在Linux下,路径分隔符是 / 。从根目录开始的一串路经被称为绝对路径,绝对路径在任意位置都适用,而相对于我们当前所处的路径来定位我们的文件叫做相对路径。
1.ls
ls [选项] [目录或文件]
ls的功能就是罗列出当前目录或所选目录下的所有文件和目录,默认是显式当前目录下的文件和目录
当然,我们也可以在 ls 后面接我们想要罗列的目录。
我们上面用了个一个其他的指令 pwd ,pwd指令能够显示当前所在的路径
ls 的常用选项
1.1 -l
显示当前目录或所选目录下的文件和目录的更详细的属性信息
我们要注意,指令与选项之间,指令与参数之间是需要空格间隔的。
同时 ls -l 命令我们可以简写为 ll
1.2 -a
显示当前目录或所选目录下的所有文件。在Linux系统中,文件分为可见文件和隐藏文件,隐藏文件有一个前缀 . ,比如在 5-6 目录下创建一个隐藏目录和一个隐藏文件,我们使用 ll 是显示不出来的,
如果要显示隐藏文件和隐藏目录,我们就要用到 -a 选项
但是单纯用 -a 选项就只显示文件和目录名,如果要显示更详细的信息比如文件的属性,我们就需要再加上面的 -l 选项。
而对于这种普通的没有位置要求的选项,我们既可以分开写,也可以写在一起,注意各选项的顺序要求就行了,如果没有顺序要求,那么就什么顺序都行。同时由于ls -l可以简写为ll,所以我们还可以用ll -a
-R
前面我们发现,ls显示出来的只有这一级的文件和目录,而不会将目录展开来,将这个目录下的目录里面的所有内容都罗列出来,就需要 -R选项 。 R就是递归的意思,也就是将这一棵子树递归遍历一遍。
2. cd
cd指令的功能就是切换路径
语法就是: cd 要切换的路径
我们当然可以用 cd 后面接绝对路径或者相对路径来切换我们想要去的路径,但是相对路径与绝对路径写起来都太麻烦,所以我们一般使用下面的一些快捷路径表示方法
2.1 . 和 ..
. 当前路径
.. 上级路径
我们一般切换上一级路径都是直接用 cd ..来切换
2.2 ~
~表示家目录或者说工作目录,就是特定的用户登陆时所任所处的路径。对于普通用户而言,一般会在 /home目录下创建一个与用户名字相同的目录,比如 xxx 用户登陆时默认就是在 /home/xxx路径下。而对于root用户,家目录就是/root 。 在这里要提到一个概念就是 / , / 是Linux的根目录。
2.3 -
cd - 跳到上一次的目录,这里的上一次所在的目录与上一级目录的概念是不一样的,我们连续使用cd - 就能在两个目录之间来回切换。
3. tree
tree目录可以将以树状结构显示当前目录或者所选目录下的文件和目录
tree默认是显示当前目录,我们也可以用 tree . 来显示当前目录,可以tree ..显示上一级目录。也可以tree 指定目录来显示指定目录的内容
不过一般默认是没有安装tree命令的文件的,我们可以用 yum install -y tree 来安装
4. touch
touch是Linux下创建普通文件的命令 ,注意是创建普通文件,而不能创建目录
我们也可以在后面再加一个路径来指定要创建的文件的位置。
我们上面使用的touch都是加一个指定目录或者当前目录下不存在的文件名来创建一个文件,而touch还可以加一个已存在的文件名,它的功能就是更新文件时间。
文件是有时间概念的,我们能够用 stat指令 加文件名来查看
我们可以看到文件是有三个时间的,access 表示的是最近访问时间,modify 表示最近修改文件内容的时间,而 change 表示最近文件状态(属性)改变时间。
而 touch 加已存在的文件名能够将这三个时间都更新为当前时间
5.mkdir / rmdir
mkdir
mkdir 指令用于在当前路径下创建一个空目录。我们可以批量创建空目录,目录名中间间隔一个空格就行了,我们也可以以绝对路径的方式来创建目录,前提是路径都存在
我们可以注意到 ll 显示出来的目录名是带颜色的,而普通文件是白色的
注意mkdir 只能创建一个空目录,而不能创建一连串的目录,比如
mkdir a/b/c/d
要想这样创建一串新目录,我们就要用到下面的选项
-p
使用-p选项就能创建一串目录,当某个目录的父目录不存在时会优先创建这个父目录。
rmdir
rmdir用于删除一个空目录
rmdir是与mkdir对应的指令,用于删除一个空目录,注意,rmdir是不能删除普通文件的。
但是rmdir也是只能删除一层或者说一个,而如果要删除一串空目录,如果我们使用rmdir的话,默认就是删除最后的那一个空目录,而前面的一串就相当于一条相对路径,如果想要把这一串空目录全部删除,我们就需要与mkdir一样用到 -p选项
6.rm
rm指令默认是用来删除普通文件,默认不能删除目录
但是我们更常使用的是直接删除一个目录中的所有文件,或者说直接删除一整个目录,这时候我们就可以用递归删除 也就是选项 -r
-r
递归删除一个目录,将以这个目录为根节点的子树删除
-f
有时候我们以root身份删除一些文件时系统会出现一些提示
会提示我们是否确认删除文件
如果我们不想让系统提示我们的话,就可以用 -f 选项,f表示强制(force)的意思,就是强制删除。我们可以 与 -r配合来强制删除一整个目录
但是由于linux系统下,删除一个文件就是真的删除了,而不像Windows系统一样会先将删除的文件保存在回收站中,在linux中去找回删除的文件时十分十分复杂的,所以我们在使用-f指令的时候一定要慎重。
-i
对于有些情况,我们删除整个目录的时候,我们想要系统提示我们是否删除文件时,我们就可以用 -i选项,使用 -i选项会在删除每一个文件时都询问我们
-i选项主要是为了防止我们误操作将一些重要文件删除了
7.man
Linux的指令有很多的选项,我们不可能全部记住,于是我们就可以通过联机手册来获取帮助,而man命令用来访问Linux手册的
语法: man 选项 命令
man命令是一个查找命令、系统调用和C接口手册。
其中他的手册有多个,我们可以用man man来查看手册
他们在第一个手册中。如果我们想要指定在某个手册中查找,可以在man 后面加一个手册序号,比如我们想要去 3 号手册查找C语言的scanf函数,就可以这样查找
退出手册按 q 就行。
如果我们不指定手册的话,就会默认从第一个手册开始找,如果找不到再依次去后面的手册找,只要找到了就会停下来。
如果没有man手册,我们可以通过下面的指令来安装
yum install -y man-pages
8.find which whereis
语法
find 选项 路径 -name 文件名
find的功能就是去指定的路径下通过文件名去查找指定的文件。如果我们不知道文件所处的路径,那就直接指定家目录下搜索,但是如此一来,find的效率就会慢上很多。find的选项我们目前还不好去学习,在之后用到的时候在了解
which
语法
which 命令
which命令的作用是查找指定命令所在的路径
where
语法:
whereis 命令
whereis命令的查找范围比which大,比find小。用来在特定的路径下查找指定的文件名对应的指令或者文档。whereis配合他的指令还可以查找指定的可执行文件、源文件等的路径。
在使用which的时候我们发现,有的找出来是这样的,比如ll
这里的alias命令是用来对命令重命名或者说是起别名的指令。
语法
alias 别名=原指令
9.cat more less
这三个指令都是用于查看文本的
cat 选项 文件名
用于打印文件内容。选项 -n 就是在打印的时候带上行号。
cat是直接打印文件的全部内容,不适合用来查看大文本,适合查看小文本或者代码片段
对于大文本的查看,我们一般使用more 和less
more
more命令会打印满我们的显示器,如果我们要继续往下翻,可以用回车来乡下桂东。
more命令也支持 -n 选项,但是more的-n表示的是显示 n 行文本,如果我们想要看后面的内容,也是要长按回车滚动查看
more中途退出也是用q 。
more还有一个功能就是查找,我们可以发现再执行more命令之后,左下角就有光标显示,这时候我们按 / 再加我们想要筛选的内容,more就会将匹配的第一行内容以及它的前后几行显示出来,同时光标会跳到这部分内容的后面,再按/ 查找就是查找这之后的内容了。
less
less指令与more指令差不多,但是less上下滚动可以用键盘的上下键来控制,比more方便很多。同时,less指令在查找指定内容时不会跳到这部分内容的后面,只会匹配第一个找到的内容,然后将其显示在显示屏顶端并标识出来
head/tail
head命令就是提取文件的前几行打印,默认是十行,可以加 -n 指定行数
tail命令就是提取文件的最后几行打印,默认是十行,也可以加 -n 选项指定行数
如果我们想要提取中间的几行打印应该怎么办呢?
比如我们要打印 990-1000这十行,该怎么办呢?
我们可以用head和tail指令配合管道来进行
head 默认是把前n行打印在我们的显示器上,而如果后面是管道 | 的话,就相当于将提取出来的数据重定向到管道中,然后tail 再从管道中去提取后 x 行,而 tail后面没有接管道了,意思就是到了管道的出口,于是就打印到他的默认的位置也就是显示器中了。
对于管道,我们可以与生活中的管道联系起来,他有两个特点,1 都是用来传输资源的 2. 都要有一个入口,一个出口 。上面的head指令就是在向管道的入口输送数据,而tail就相当于在管道的出口拿数据。
管道在Linux中是一个很重要的内容,他能够对数据进行批量处理,可以想象成我们日常生活中的流水线操作,可以逐步对数据进行处理
tac
tac指令就是与cat指令相反,倒着打印。
10 date cal
date指令显示的时间是格林威治时间。
而如果我们想要以一定的格式来显示时间的话可以自己规定格式,其中年要用 %Y 表示,月用%m表示,日用%d表示,时分秒分别用%H %M %S表示,我们可以自己选择间隔符,但是不能是空格,如果是空格的话,Linux会将其认为是指令来处理。在格式的前面要有一个+ 。
而 %s格式显示出来的是时间戳
那么如果我们有一个时间戳,想要将其转换为格式化的时间该怎么做呢,
date +%Y-%m-%d-%H:%M:%S -d@时间戳
cal指令
cal指令则是显示日历,也没什么特殊的用法。
cal 选项 日 月 年
如果只写了一个数字就是年,两个就是月和年
默认是显示当前月的日历
选项 有 -n ,表示显示指定的月份的上下 n 个月
11.grep
grep 选项 指定字符串 文件名
文本内容过滤,默认情况下会匹配文本中的关键字,如果匹配上就会进行显示。他的功能就是把文本中包含指定字符内容的文本行全部显示出来,指定字符我们用单引号括起来
grep的常用选项:
-n 输出的时候把行号也输出
-i 忽略指定字符传的大小写(grep默认匹配的时候是区分大小写的)
-v 反向选择,即显示不包含指定字符串的内容的文本行
wc
如果我们想要知道匹配上的有多少行,我们可以用wc指令来计数。首先将 grep匹配到的内容输送到管道中求,然后用wc来统计管道中数据的文本的行数,会同时显示总的行数,以及匹配到的个数还有总的字符数
如果只想统计行数,可以用wc的 -l选项
12.sort uniq
sort是对文本进行排序并打印,以行为单位,以字符的ASCII码值大小来排序
而uniq的功能就是进行去重,如果相邻的行的内容完全一样,就会只保留一行而把其他的重复的行删除
uniq默认只会对相邻的行进行去重,如果我们想要将文本中的所有内容一起去重,相同的内容只保留一行,我们可以先 sort 排序,再 uniq 去重
13.zip/unzip
这两个命令的功能很简单,就是zip格式的压缩与解压缩指令。
语法
zip 压缩文件名.zip 要压缩的文件或目录
压缩文件名.zip表示的是 形成的压缩之后文件的文件名,最好是带zip后缀,更方便用户使用,虽然不带zip也可以
unzip
对一个zip格式的压缩文件进行解压缩操作。 注意,压缩和解压缩形成的文件默认都是创建在当前目录下,且解压缩形成的文件名就是压缩之前的文件名
在压缩的时候我们要注意,如果我们压缩一个目录的话,默认只会单纯压缩这个目录,而不会将里面的文件和子目录等压缩进来,如果想要将目录中的文件都压缩,则需要用到 -r 选项,也就是递归压缩
-d 能够指定解压缩形成的文件的路径,对于压缩形成的文件,我们可以直接用路径来指定位置,而不需要用到-d
14 tar
tar指令也是用于压缩和解压缩的,但是tar指令的选项和zip区别很大。
打包压缩的选项: -czf
-c : 创建文件
-z:按tgz格式压缩
-f :使用文档名 ,注意,-f选项后面不能再接其他的选项了,要接压缩形成的文件名
tar命令可以直接打包目录,默认就会将目录下的所有文件都打包压缩。
还有一个选项 -v ,能够把打包压缩的过程也显示出来
语法: tar -czf 形成的文件名(一般用.tgz后缀) 要打包压缩的文件或目录
解压缩选项:-xzf
-x:按对应格式解压缩
tar指令相对于zip/unzip指令有一个优势就是,可以在不解压缩的情况下查看压缩文件的呢内容
-t 查看tarfile文件的内容,我们可以用-tf 不解压直接查看.tgz压缩包里面的内容
tar解压缩的时候,我们再文件的后面加上-C再加上指定的目录来指定目录解压缩
15.bc
bc指令就是调出计算器
但是用起来很不习惯,没什么用
16.uname
uname指令用来查看操作系统相关的信息,默认只显示Linux
-a 选项,显示更详细的系统信息,将所有的信息都显示出来
分别表示
内核名称 主机名 内核版本号 内核版本 硬件名 处理器类型 硬件平台类型 操作系统名称
-r 选项显示系统的体系结构和内核版本,包括cpu架构
17.热键
tab 自动补齐或者查询命令,这是我们最常用的热键
比如我们可以输入 wh ,然后连续按tab 键,就能将wh匹配的命令显示出来
如果能够匹配的只有一个命令,就会自动补齐,比如我们输入 cle ,再按tab键,就会自动补齐为clear
ctrl c :ctrl c可以终止在前台的异常程序,比如我们程序的死循环,或者终止我们错误输入的命令
上下键:在命令输入时我们可以按上下键,来获取历史命令
ctrl r :搜索历史命令,我们可以ctrl r之后输入我们曾经输入的历史目录中的片段,按下回车之后就显示匹配上的历史命令,然后用左右键来选取
ctrl d:退出当前用户,默认是推出一层。当用户都退出之后,再按ctrl d就是退出xshell程序
补充
lscpu 可以查看cpu
我们也可以用top指令查看cpu的使用情况
lsmem 查看内存
df -h 查看磁盘使用情况
who 查看当前有谁登录了Linux系统