四、Linux 命令
1. ls 命令
ls 目录/文件
" ls " 这个命令既可以对目录使用,又可以对文件使用。
对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件名以及其他信息。
一般来说," ls " 这个命令只用于目录。
ls 后跟选项
ls -l // 列出目录的详细信息 ls -a // 列出目录下的所有文件,包括以 . 开头的隐含文件 ls -r // 对目录进行反向排序 ls -t // 将目录以时间排序
" ls -l " 与 " ll " 用法等价。
像上面的 ls 命令后面跟的 " -l “,” -a “,” -r " 这些称为选项,这表示,这些选项基于 ls 命令下的一些衍生操作。
此外,ls 的选项可以搭配使用。
2. pwd 命令
pwd 目录
" pwd " 表示显示当前所在的目录。
3. cd 命令
cd 目录/路径
" cd " 表示改变当前的工作目录,也就说,切换文件夹。
cd . // 进入当前的目录,原地不动 cd .. // 返回上级目录 cd / // 切换至根目录 cd ~ // 切换至用户家目录
Linux 的目录 与 Windows 的文件夹
实际上,Linux 中的 " cd " 命令和 Windows 的切换文件夹是一个道理,只不过前者是基于命令行实现的,后者是基于图形化界面实现的。
下图就是用树形结构所展示出来的目录结构,或者说,Linux 和 Windows 管理文件的方式,都具有树形结构的思想。
Linux 系统:
Windows 系统:
绝对路径和相对路径
在 Linux 中,以根目录开头的,就是绝对路径。
/tomcat/logs
在 Linux 中,以 " . " 或 " … " 开头的,就是相对路径。
./logs
此外,必须明确,在 Linux 中,没有像 Windows 系统中那样盘符(C 盘、D 盘)的概念,在 Linux 中,所有的目录和文件都是起源于根目录 " / ",没错,就是一个斜杠。
所以说,使用 " cd / " 就相当于我们在 Windows 上点击了 " 此电脑 "。
什么是家目录?
当我们登录一个用户的时候,来到的一个目录,也即表示当前用户的家。
下图就是 Ron 用户的家目录。" /home/Ron " 就是 Ron 用户登录时,来到的默认目录,也就是 Ron 的家目录
4. touch / cat / echo 命令
(1) touch 命令
touch 文件
" touch " 表示创建一个文件。
(2) cat 命令
cat 文件
" cat " 表示读取文件。
(3) echo 命令
echo 文件
" echo " 表示写文件。
展示
必须明确:" touch / cat / echo " 这三个命令只能对一些简单的文件进行一些简单的操作,并不能有效地解决读写问题。这三个命令只是用来便捷操作。
5. mkdir 命令
mkdir 目录
" mkdir " 表示创建一个目录,即表示创建一个文件夹。
" mkdir " => " make directory "
6. rm 命令
" rm " => " remove "
(1) 删除文件
rm 文件 rm -f 文件
" -f " 表示强制操作,不会询问。
" rm 文件 " 表示删除单个文件,删除前会询问。
" rm -f 文件 " 表示删除单个文件,删除不会询问。
展示
y 表示 yes,n 表示 no.
(2) 删除目录
rm -r 目录 rm -rf 目录
" -r " 表示递归," -f " 表示强制操作,不会询问。
" rm -r 目录 " 表示递归指定目录,一个个删文件,删除前会询问。
" rm -rf 目录 " 表示删除指定目录以及其对应的所有文件,删除前,不会询问。
展示
我们在 test1 目录下,创建一个目录,三个文件。
使用 " rm -r " 进行递归的时候,每次遇到一个文件,都会询问你是否删除,删除输入 yes,不删除输入 no.
使用 " rm -rf " 删除的时候,不会询问,直接删除指定目录以及其下的所有文件。
注意事项 ( 重要 )
针对上面的删除操作,我们应该谨慎行之。
因为,大多数情况下,Linux 系统默认就是没有回收站的,一旦执行删除命令,就直接将数据直接从服务器上彻底删去。所以说,rm 是一个很危险的操作,只有在我们再三确认后,才能删去文件。
此外,永远不要尝试 " rm -rf / " 这个命令。
这个命令会直接将根目录下所有的数据删除掉,也就是说,系统本身预装的东西,也会因为这个命令,随之消失。特别是在公司的时候,如果执行此操作,就会带来不可逆的影响。
这个命令会导致 Linux 系统瞬间崩坏,所有数据直接消失,如果还想再次使用服务器,只能重装系统。
小伙伴们应该都知道重装 Windows 的效果,打开界面,就是新的东西。而 Linux 也是一样的,一些数据未备份,就会丢失。
7. tree . 命令
可以看到,上面的 " tree . " 命令,可以为我们展示当前目录下的树形结构。
如果系统没有预装这个功能,我们可以通过下面的命令,进行安装,而 " yum ",我们可以将其理解为 Linux 系统上的应用商店。
yum -y install tree
8. cp 命令
" cp " => " copy "
cp 文件 文件 cp 文件 路径 cp -r 目录 目录
" cp " 表示能够 复制 文件或目录。
展示
我们在 test 目录下,创建一个目录,三个文件。
(1) 复制文件并重命名
(2) 复制文件到指定路径
(3) 复制目录并重命名
复制目录需要带上 " -r ",表示递归复制的含义,即将原目录及其下的所有文件,也复制到新的目录中。
9. mv 命令
" mv " => " move "
mv 文件 文件 mv 文件 路径 mv 目录 目录
" mv " 表示能够 移动 / 重命名 文件或目录。
展示
我们在 test 目录下,创建一个目录,三个文件。
(1) 重命名文件
(2) 移动文件到指定路径
(3) 当第二个参数不是已存在的目录时,重命名目录
在这里," mv " 并不需要加上 " -r ".
(4) 当第二个参数是已存在的目录时,移动目录至存在目录下。
10. less 命令
less 文件
" less " 表示查看文件,使用 " less " 命令查看文件,通过【方向键】上下 可以实现翻页功能。键盘输入 " q ",表示退出查看文件的界面。
此外," less " 命令只能进行文件的查看,不能进行文件的编辑。
" less " 命令最大的优势在于,能够对于大文件进行 " 秒开 "。
正常的一个编辑器打开文件的时候,就是直接将文件内容都读到内存中,这就涉及到大量的磁盘 IO. 此时,如果文件很大 ( 几个G ),就会打开的很慢,甚至打开失败。比方说,我们前面介绍的 " cat " 命令,就是一下子将所有的数据读出来并显示。
然而," less " 命令只是将当前屏幕显示的这一块给加载到内存中,随着用户的手动翻页,就会不断地加载新的部分,这其实就是懒加载的思想,类似于单例模式中的懒汉模式。( 需要用到了数据,才会执行 )
综上所述,在日常开发中,若我们在服务器上需要打开一个大文件,使用 " less " 命令就是一个明智的选择。
11. head / tail 命令
head 文件 head -n (数值) 文件
" head " 默认表示查看当前文件的前 10 行,也可以通过 " -n " 选项,来控制查看的行数。如下:第二次,我就控制了前 20 行。
tail 文件 tail-n (数值) 文件
" tail " 默认表示查看当前文件的末尾 10 行,也可以通过 " -n " 选项,来控制查看的行数。如下:第二次,我就控制了末尾 20 行。
12. vim 命令
vim 文件
" vim " 命令就是 Linux 上的记事本,既能读,也能编辑。
然而," vim " 又不仅仅是一个记事本,它也能作为 " 代码开发工具 “,学习 C++ 的小伙伴,就都是用 " vim " 来写代码的。实际上,” vim " 能够支持很多的插件,通过插件,可以对 " vim " 本身进行扩展,例如:语法高亮、代码补全、变量重命名…
然而,不管 " vim " 再怎么配置,很难达到 " IDEA " 编译器那样的水准。因为," vim " 本身就是很多年前的东西了。
作为 Java 开发人员,学习 " vim ",就只需要能够使用 " vim " 在服务器上进行一个简单的文件编辑即可,后面在工作中,通过它来改一改服务器的配置文件就行了。
(1) 通过 " vim " 命令打开一个文件,若文件不存在,就创建文件。
(2) 一般情况下,通过 " vim " 打开一个文件后,是不能直接对文件进行文本编辑的。这是因为 " vim " 是分模式的,刚开始打开文件的时候,是 Normal 模式,这个模式下,暂时只能读,只有点击一些特殊快捷键的时候,才能对模式进行改变。
作为 Java 程序员,我们只需要知道点击 字母 " i ",即可进入 INSERT 模式,那么我们就可以像 Windows 的记事本进行编辑了。此时,左下角就会显示 " INSERT ".
(3) 如何退出 " vim " ?
① 先点击键盘左上角的 " Esc " 键
② w 表示 written,q 表示 quit.
如果你需要保存并退出,按下 ( :wq )
如果你需要退出但不保存,按下 ( :q ),但是一般系统会提示你未保存。
如果你需要强制退出不保存,按下 ( :q! )
如果你需要保存但不退出,按下 ( :w )
13. ps 命令
ps aux // 显示系统上所有的进程
" ps " 命令不是 photoshop,而是 process show.
顾名思义,它就是为了查看当前 Linux 系统上所有运行的进程,它和我们平时使用 " Shift + Ctrl + Esc " 打开 Windows 上的任务管理器一样,是一样的操作。
上面的命令显示了所有的进程,然而,我们可以通过下面的代码,筛选我们要找的内容," grep " 就表示按照字符串检索,它不仅可以用在当前场景下,也可以用于检索文件中的内容…说白了," grep "命令就是一个查找关键字的功能。
ps aux | grep "进程名" ps aux | grep "进程id"
而 " | " 这个竖线,在 Linux 中的术语中,叫做 " 管道 " ,就是将前一个命令,作为后一个命令的输入。解释如下:
14. netstat 命令
netstat -anp netstat -anp | grep "进程名" netstat -anp | grep "端口号"
" netstat " 可以用来查看 Linux 系统上,应用的网络状态。此外,它同样也能搭配 " grep " 进行检索。