文章目录
- ls指令
- pwd指令
- 小知识
- cd 指令
- 小知识
- touch 指令
- mkdir指令
- rm指令
- 小知识
- man指令
- cp指令
- mv指令
- cat,more,less指令
- 小知识 (echo)
- head 和 tail指令
- 小知识 (管道)
- date指令
- 小知识 (时间戳)
- find指令
- 小知识 (which) 揭秘指令
- 小知识 alias (去别名)
- grep指令
- zip/unzip 指令
这里和windows系统做个过渡:
Windows中文件对应的就是linux中的文件,文件夹 --> linux的目录。
同时:linux中一切皆为文件。(小知识)
ls指令
罗列当前目录下的指定文件或目录。
如上图红色标记出,我们的ls指令还可以带有选项,这里我们只列举了
l
s
−
l
ls -l
ls−l 和
l
s
−
a
ls -a
ls−a 这两个常用的。
语法格式: ls [空格] - [选项]
同时这些选项可以组合一起使用,顺序没有关系。
l
s
−
a
:
ls -a:
ls−a: 罗列当前目录的隐藏文件。
l
s
−
l
:
ls -l:
ls−l: 罗列出文件的详细信息。
至于其他的则是文件的属性
文件 = 文件内容 + 属性。
pwd指令
显示当前所在的目录位置
这里顺便说一下,在linux中有 root(超级用户) 和 普通用户 之分,普通用户默认是在家目录的字目录下,并不能进入 root 的目录。
如上图,此时我们就在 root目录下。
小知识
在windos中我们使用 ’ \ '来做目录分隔符。
而在linux中我们是以 ’ / '来做目录分隔符
cd 指令
进入指定目录
同时 cd 也可以进行切换路径的作用。
- c d cd cd . . / ../ ../ [点点] 表示上一级目录
- c d cd cd . / ./ ./ [点] 表示当前目录
当然这里的路径分隔符也可以不加。
小知识
linux 的目录结构其实是一块多叉树。
由于我们 cd …/ 返回上一级父目录,而父目录只有一个,那也就说明我们呢根目录 -> 指定目录路径唯一。
由于路径具有唯一性,这也是为什么我们可以 cd 进入指定目录的原因。
同时 linux还提供了一种方法验证目录结构为多叉树。
touch 指令
在windows中我们可以创建各种类型的文件,那么在Linux中也不例外。
mkdir指令
创建目录(文件夹)
那如何创建多级目录呢?这就需要用到 mkdir指令的选项了
- mkdir -p 递归创建多级目录
- rm -r 递归删除非空 (这里只是适合删除多级目录)
如果想要删除单个空目录,我们就使用 r m d i r rmdir rmdir,如果这个目录里面有文件或者子目录,就需要用到 rm -r (递归删除)
这里需要注意: 当我们在root用户下执行上述操作的时候,每次递归都会询问是否删除,这里我是在普通用户下执行的所以不存在这种问题。
rm指令
有上述例子我们可以直到 rm 可以删除多级目录,虽然 rm 不可以删除单个空目录,但是rm 直接删除文件确实可以的。
同时 rm 还有一个选项 -f
- rm -rf (递归强制删除文件或者目录)这里就不做演示了 [doeg]
小知识
linux中按
T
a
b
Tab
Tab 建可以进行不全,同时快速按两下Tab键可以补全路径
如上图,当我们cd想要进入某个指定目录但是我们却忘了当前目录有啥的时候,就可以快速按两下Tab键,可以显示当前目录的内容。
man指令
man指令可以看作是指令的词典,哪个忘了或者不会直接查就可以了。
- 语法格式: m a n man man + 指令 指令 指令
- 甚至可以查看 c语言的 p r i n t f ( ) printf() printf()
退出的话直接按q就可以了。
如何直到自己有没有安装man呢?
如果没有的话直接运行如下指令即可:
-
y
u
m
yum
yum [空格]
i
n
s
t
a
l
l
install
install [空格]
−
y
-y
−y [空格]
m
a
n
−
p
a
g
e
s
man-pages
man−pages
cp指令
语法:cp [选项] 源文件 目标文件或目录
这里我们演示拷贝文件到指定目录下。
mv指令
- 剪切文件、目录
- 重命名
cat,more,less指令
这三个都是查看文件内容的指令。
cat [选项] [文件]
区别:cat不适合查看大文件,因为 cat是把文件的内容一次性输出到屏幕上的,所以如果文件内容太多就会出现刷屏的效果。
m o r e more more: 一次只输出以页(屏幕大小),然后按 e n t e r enter enter 可以向下移动,不过只能按 e n t e r enter enter建。
l e s s less less:(常用),也是一次只输出以页(屏幕大小),不过可以按上下建调整,同时输入 / + 内容可以进行查找内容。
同时,此时我们按
小写
n
小写n
小写n,可以继续向下匹配,
大写
n
大写n
大写n 向上匹配。退出直接按q就可以了
小知识 (echo)
在我们linux中,一切皆对象,例如键盘、屏幕,其实都是一个文件。在C语言和C++中,我们使用
p
r
i
n
t
f
printf
printf 和
c
o
u
t
cout
cout 其实就是打印内容到显示器上 --> 向显示器文件中写入数据。
s c a n f scanf scanf 和 c i n cin cin 读取键盘内容 --> 读取键盘文件的数据。
这里有一个指令 e c h o echo echo
echo “hello world” 就是向显示器文件中写入 “hello world”。这里的echo默认会加一个换行。
同时我们的echo还可以向文件中写入数据。
所以现在我们其实就可以使用
>
>
> + 文件名来创建文件了 [doeg]。
那我如果就想往里面追加内容呢?
有输出那就有输入。
如果 cat 后面什么都不加的话,就默认从显示器文件读取,推出的话直接按
c
t
r
l
ctrl
ctrl + D,或者
c
t
r
l
ctrl
ctrl + C
head 和 tail指令
显示指定文件的前 n 行 或 后 n 行 。n 是一个具体的数字,默认为10.
head(tail) -n(具体数字) [文件名]
小知识 (管道)
那如果我想要获取当前文件的 [ 5000 , 5020 ] [5000,5020] [5000,5020] 这一段区间的内容呢?
date指令
格式如下:
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %S : 秒(00…61) (大写)
- %X : 相当于 %H:%M:%S
- %d : 日 (01…31)
- %m : 月份 (01…12)
- %Y : 完整年份 (0000…9999)
小知识 (时间戳)
由于世界上各个地方存在时差,那么在互联网时代,人们联系日益增进,那么时差就会很烦,所以我们以一个时间为准,规定从当前时间为准,算时间戳(以秒为单位),这样我们日后进行交易等等,就不会存在时差的问题了。
格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)
当然了我们也可以利用时间戳来算出秒数对应的日期。
当然也可以转换一下格式
find指令
由于find指令功能很强大,所以选项也很多,这里我们先学一个 -name 。选项
- -name 按照文件名查找文件
语法格式: f i n d find find + p a t h n a m e pathname pathname + 选项 选项 选项
小知识 (which) 揭秘指令
查找系统命令所在位置的指令
我们发现这些我们用的指令他们都在 一个 bin目录下。
当我们进入bin目录再ls就可以看到所有的指令了。那么指令究竟是什么呢?为什么我们可以直接使用呢?
我们先自己写一个简单的程序。
如上图此时我们的
m
y
c
o
m
m
e
n
d
mycommend
mycommend 程序是一个exe文件,当我们 ./mycommend 的时候就可以直接运行这个可执行程序了,那如果我们把当前的可执行程序移动到我们的 bin目录下会发生什么呢?
如上图,当我们把我们自已写的可执行程序移动到Bin目录底下之后,发现我们不需要在使用 ./mycommend就可以直接运行我们的mycommend了,那么就说明,我们平常使用的指令其实就是一个又一个的可执行程序,并没有什么高级的。就是写好的c/c++ 的二进制文件拷贝到 bin目录下,当我们使用的时候其实是linux去相应的目录调用可执行程序。
那么我们也可以这样调用
只不过这样显得有点搓,所以linux让我们直接输入指令自动就去调用对应bin目录下的可执行程序了。
小知识 alias (去别名)
下面两段有什么不同呢?我们发现一个我们的mycmd可执行程序有颜色,一个没有?
如上图,其实我们的ls默认是给 ls --color=auto 去了个别名,这也是为什么我们直接 ls -l那个可执行程序带了颜色的原因。
那么我们也可以给指令取别名。
这个别名并不存在,当我们重启我们的linux机器的时候,ddd就失效了。
grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
选项:
- -i 忽略大小写
- -v 查找到谁就抛弃他,其他的留下来
- -n 添加行号(源文件中的)
行号示例:
zip/unzip 指令
压缩/解压缩。
zip语法:zip + filename.zip + 解压文件或目录
unzip 语法:
unzip + 解压文件
不加 -d 的话默认解压到当前目录。