Linux常用命令
[root@VM-8-13-centos ~]# cd libai
[root@VM-8-13-centos libai]#
语法: cd 路径名
1.路径分为两种
绝对路径:绝对路径就是从根目录开始出发,每一次切换目录都要从根开始。不需要知道当前这个用户所在位置,直接从根访问到目标目录。
相对路径:相对路径是从当前用户所在位置开始出发,每一次切换目录都必须要从当前的目录开始出发,访问到目标目录。
2. cd . 代表当前目录
cd … 代表返回上一级
cd 后面不跟任何目录名 默认返回自己家目录
[root@VM-8-13-centos ~]# mkdir demo
1.mkdir 目录名 --> 创建单个目录
[root@VM-8-13-centos ~]# mkdir demo
2.mkdir 目录名1 目录名2 --> 创建多个同级目录
[root@VM-8-13-centos ~]# mkdir demo1 demo2
3.mkdir 目录名1/目录名2 -p --> 创建递归层级目录
参数: -p 代表递归创建
[root@VM-8-13-centos ~]# mkdir demo1/demo2 -p
[root@VM-8-13-centos ~]# ls demo1
语法:ls 参数
参数:
-a: 显示所有文件及目录(包括以“.”开头的隐藏文件)
-l: 以列表的形式显示文件详细信息
-h:显示出文件所占大小
[root@VM-8-13-centos ~]# ls -l
total 2189988
-rw-r–r-- 1 root root 321528 Mar 4 15:36 access.log
drwxr-xr-x 3 root root 4096 Mar 27 19:36 demo1
[root@VM-8-13-centos ~]# rm -rf demo
语法:rm -rf 文件名 *号代表所有
参数:
-r:递归删除
-f:强制删除
[root@VM-8-13-centos ~]# touch demotxt
语法:touch 文件名
说明:touch普通文件,普通文件没有层级关系,所以不能存在: touch 文件名/文件名
语法:pwd
[root@VM-8-13-centos ~]# pwd /root
说明: 双&& 代表前面和后面的命令按顺序依次执行,先执行前面的命令,后执行后面的命令。但是命令之间没有任何关系。
[root@VM-8-13-centos ~]# mkdir a/a1/abc/cba a/a2 b c/c1/mn d/d1/d2/food -p && touch b/b1 c/c1/mm d/d1/d2/game
语法:tree 参数
说明:tree命令默认是没有的,需要手动进行在线下载: yum -y install tree、
[root@VM-8-13-centos ~]# tree
.
|-- aaa
|-- abc
|-- access.log
|-- bbb
|-- demo1
| `-- demo2
|-- fanmao2g
|-- libai
|-- xss
`-- ZenTaoPMS.16.5.beta1.zbox_64.tar.gz
3 directories, 7 files
1. 复制普通文件
语法: cp (路径)被复制的文件 (路径)新文件名
[root@VM-8-13-centos ~]# cp ./a/b/c/mm ./
[root@VM-8-13-centos ~]# ls
a mm
[root@VM-8-13-centos ~]# cp ./a/b/c/mm ./mn
[root@VM-8-13-centos ~]# ls
a mm mn
注意: 一般复制是不会在当前目录下操作的
例子:当前我在家目录,将me复制到b目录下起新名为me1
[root@VM-8-13-centos ~]# cp ./a/b/c/me ./a/b/me1
如果当前目录下重名,会提示用户是否覆盖当前目录下的文件,然而普通文件不能覆盖目录。但是如果不在同一目录下,文件是可以重名的。
2. 复制目录
语法: cp -r (路径)被复制的目录名 (路径)新目录名
[root@VM-8-13-centos ~]# cp -r ./a/b/c ./
[root@VM-8-13-centos ~]# ls
a c mm mn
[root@VM-8-13-centos ~]# cd c
[root@VM-8-13-centos c]# ls
mm
1. 剪切
语法: mv (带路径)被剪切的文件名 已存在的路径
[root@VM-8-13-centos ~]# mv ./a/b/c/mm ./a/b/c/
2. 重命名
语法: mv (带路径)被剪切的文件名 不存在的路径
[root@VM-8-13-centos ~]# mv ./a/b/c/mm ./a/b/c/mn
说明:区分文件类型 ll命令,查看文件的第一位 如果是 d : 代表目录 如果是 - : 代表普通文件
说明:vim命令可以编辑普通文件中的内容,可写成自己任何想输入或者保存的内容。
操作步骤:
[root@VM-8-13-centos ~]# vim demo
快捷键:
6. dd 快速删除一行
7. gg 快速跳转到第一行
8. shift + g 快速跳转到最后一行
9. 快速查找文件中的关键字 :/输入想要查找的内容
10. 取消高亮 :nohl
定义:输出重定向就是把一个含有输出的命令结果,写入到一个文本中,如果这个文本存在,则编辑;如果不存在则新建。
什么叫做有输出的命令结果: 再执行了一个命令之后,下方会显示一些通过命令打印出的内容,这种命令叫做有输出的命令,例如: ls pwd
语法:带有输出的命令 > (可以带路径)文件名 如果是一个> 那么代表覆盖,新重定向的内容会覆盖之前的内容
带有输出的命令 >> (可以带路径)文件名 如果是两个>> 那么代表追加,保留之前文件中的内容,在下方进行追加
[root@VM-8-13-centos ~]# pwd >> demo
语法: cat 普通文件名
说明: 一次性查看文件中所有内容。一般都是文件体积较小的情况下会用cat
[root@VM-8-13-centos ~]# cat aaa
total 4
drwxr-xr-x 3 root root 4096 Mar 22 16:40 a
-rw-r--r-- 1 root root 0 Mar 22 17:12 aaa
语法: less 文件名
说明: 翻页的时候可以按回车, 也可以按 page up/page down 进行翻页,翻页到最后的内容时候,按q退出
[root@VM-8-13-centos ~]# less abc
hello world hello world abc(END)
语法: more 文件名
[root@VM-8-13-centos ~]# more abc
语法: head 文件名
说明:说明如果不想查看文件的前10行,想要看前15行怎么办?
[root@VM-8-13-centos ~]# head -5 abc
You were my everythingthis goes out to
someone that was once the most impo
rtant person in my life i didn’t realize it
at the time i can’t forgive myself for the way i
treated you so i don’t really expect you to either
语法: tail 文件名
说明:如果想查看文件的后5行内容, 同理上面的head , tail -5 文件名
[root@VM-8-13-centos ~]# tail -5 a
那时我绝不知道,我将怎样错误地对待你
我真的想抱着你 我真的想知道你比其他所
有人都要理解我 你永远都在我心里占据着
重要的地位 我永远也不相信我们的爱就这
样被割裂了。
tail的第二种用法: 实时查看文件最新被增加的内容(实时监控)
语法: tail -f 文件名
[root@VM-8-13-centos ~]# tail -f a
应用场景: 查看服务器日志文件
说明: linux是服务器的操作系统,服务器里面会存在你做的项目的代码。
一个项目:是由开发人员经过编码得来的,开发编写的代码如果在用户使用的时候,出现bug了,或者崩溃了。开发人员会怎么去排查问题呢?
开发会排查自己编写的代码,用户在操作哪个模块的时候出错了?哪个功能出错了?怎么个操作顺序导致出错的?
服务器会将开发编写的代码,生成一个日志文件,日志文件中会记录每一个用户的操作习惯和操作点。以及非常详细的报错信息。
具体操作: 开启两个窗口,左边实时接受内容,右边模拟用户重定向到日志文件中打印内容,左侧实时接收。
在工作中,需要问开发 我现在负责的模块日志文件叫什么? 在哪个路径下?
一般日志文件都是以.log结尾的 例如: order.log
测试看日志文件的目的,是为了协助开发帮助他们定位问题所在,提高工作效率
语法: find 路径 -name 文件名
说明: 这个路径,代表的是从哪里开始找。代表范围,最终找到的是有关于这个文件的绝对路径
如果从根目录开始找,也不是不可以,但是效率非常低,相当于从最底层开始全盘扫描。
[root@VM-8-13-centos ~]# find /root -name mm /root/a/b/c/d/mm
语法: find 路径 -type 类型 -name 文件名
文件类型: d 代表目录 - 代表普通文件 l 代表链接文件
注意: 如果想要通过类型来查找文件的路径,如果文件是普通文件的话,需要用 “f”,有且仅有在这个地方用f,其他时候都是 -
[root@VM-8-13-centos ~]# find ./ -type f -name mm
./a/b/c/d/mm
[root@VM-8-13-centos ~]# find ./ -type d -name mm
./a/b/c/mm
说明: 链接文件就是相当于一个源文件的快捷方式,这个快捷方式指向源文件。可以代替源文件进行打开,编写操作。
语法: ln -s (只能是绝对路径)被链接的文件名 (只能是绝对路径)快捷方式名
[root@VM-8-13-centos ~]# ln -s /root/supermarket/food/apple/fruit.txt /root/mm
[root@VM-8-13-centos ~]# ls mm supermarket
[root@VM-8-13-centos ~]# ll
total 4
lrwxrwxrwx 1 root root 38 Mar 23 15:34 mm -> /root/supermarket/food/apple/fruit.txt
drwxr-xr-x 3 root root 4096 Mar 23 15:12 supermarket
说明: 管道符就是把两个命令连接起来,把上一个命令的输出结果,当做下一个命令的输入。 (前面命令的结果是后面命令的前置条件)
例子:查看abc文件的10-15行内容?
正确答案:
head -15 abc | tail -6
注意:head -15 abc && tail -6 abc 如果这样写会有两个结果,一个是前15行 一个是后6行 不符合题意
head -15 abc | tail -6 abc 如果这样写求出来的还是整个abc文件的后6行,不符合题意
语法: 前面是一段文字的输出 | grep “关键字”
[root@VM-8-13-centos ~]# tail -10 abc | grep "害怕"
当我们外出的时候,我真的很害怕让你看到
说明: && 和 | 有什么区别?
&&连接符是连接两个命令之间,命令之间是不存在任何的逻辑关系的,只有先后的顺序关系。
而| 管道符 前面的命令结果是需要拿到后一个命令上作为条件来使用的,是存在逻辑关系的。
语法: wc 文件名 参数
例子:统计abc文件的10-15行中有多少个单词?
[root@VM-8-13-centos ~]# head -15 abc | tail -6 | wc -w 6
参数:-l: line 统计文件的行数
-w: word 统计文件的单词数 (单词数是以文件中空格或者换行当做一个单词,而不是一个字符当做一个单词)
语法:ps -ef
[root@VM-8-13-centos ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD root
1 0 0 Mar01 ? 00:05:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 Mar01 ? 00:00:02 [kthreadd]
说明: 正在运行的程序,叫做进程。进程可以查看到当前在你的系统中都有哪些程序或者软件正在运行。
需要了解: PID代表的就是进程id也就是进程号。
语法: kill -9 PID (强制杀)
说明:PID代表上面进程信息中的进程号
[root@VM-8-13-centos ~]# kill -9 PID
为什么要压缩?
1. 如果需要一次性发送很多个文件,可以进行整体的压缩,变成一个压缩包后再次发送
2. 如果需要发送的文件体积较大,可以通过压缩的方式使得文件的体积缩小,以便于发送。
压缩语法: tar -zcvf 压缩包的名字(可以随便取).tar.gz 被压缩文件的名字
[root@VM-8-13-centos ~]# tar -zcvf fanmao.tar.gz fanmao fanmao/
[root@VM-8-13-centos ~]# ls
fanmao fanmao.tar.gz school student teacher
[root@VM-8-13-centos ~]# tar -zcvf all.tar.gz student teacher student/ student/student93/ teacher/laozhang/mm
[root@VM-8-13-centos ~]# ls all.tar.gz fanmao fanmao.tar.gz school student teacher
附加:tar --help 寻求帮助,查看每个参数的用法含义
说明:
tar -zcvf fanmao.tar.gz fanmao
fanmao.tar.gz 是压缩好的压缩包名
[root@VM-8-13-centos ~]# tar -zcvf ./aa/bb/aa.tar.gz aa aa/bb/cc/
[root@VM-8-13-centos ~]# ls
a aa
[root@VM-8-13-centos ~]# cd aa/bb
[root@VM-8-13-centos bb]# ls
aa.tar.gz cc
[root@VM-8-13-centos ~]# tar -zcvf ./a/b/cc.tar.gz ./aa/bb/cc ./aa/bb/cc/
[root@VM-8-13-centos ~]# cd a/b
[root@VM-8-13-centos b]# ls
c cc.tar.gz
如果想跨路径压缩一个文件, 也就是说上面例子的 ./aa/bb/cc,压缩的时候会把前面路径的目录一并压缩进去,而不是只压缩cc文件。
总结:只有压缩包可以有路径,也就是说可以把一个压缩包指定到任何的地方。但是后面的被压缩文件不能有路径,否则会连带路径一并压缩。
解压缩语法: tar -zxvf 压缩包的名字.tar.gz
这个解压缩的方法就是都在当前路径下,压缩包在当前, 解压缩完也在当前。
如果想要跨路径解压缩文件:
语法 tar -zxvf (路径)压缩包的名字.tar.gz -C 路径
压缩: zip 压缩包的名字.zip 被压缩的文件名
[root@VM-8-13-centos ~]# zip liming.zip liming
adding: liming/ (stored 0%)
[root@VM-8-13-centos ~]# ls
abc chenggong liming liming.tar.gg liming.zip libai libai.tar.gz
解压缩:unzip 压缩包的名字.zip
[root@VM-8-13-centos ~]# ls
abc chenggong liming.tar.gg liming.zip libai libai.tar.gz
[root@VM-8-13-centos ~]# unzip liming.zip
Archive: liming.zip creating: liming/
[root@VM-8-13-centos ~]# ls
abc chenggong liming liming.tar.gg liming.zip libai libai.tar.gz
上传: 命令 rz
1.rz 回车,会弹出让你上传的窗口。
2.选定文件进行上传(只能传文本文档类型)
3.上传好后会在当前目录下显示已上传的文件,可以查看内容。
下载: 命令 sz
语法: sz 文件名
[root@VM-8-13-centos ~]# sz libai.tar.gz