【从零开始学习Linux】常用命令及操作

 哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ  


本期给大家带来的是 Linux 常用命令及操作,主要有三个分类:文件操作,目录操作,网络操作,创建文件 touch , 创建目录 mkdir  , 删除文件或目录 rm , 文本编辑器 vim , 查看文件内容 cat , 文件覆盖写入 echo ,  文件目录复制 cp , 文件目录移动或重命名 mv,以及网络相关命令,ps + grep 命令,查看指定进程,netstat +  grep 查看进程的端口号及使用指定端口号的进程,sudo 执行特殊权限的任务,我们可以配合其他的一些指令来释放端口~ 更多指令操作,还请阅读下文呐~


本期收录于博主的专栏Linux_保护小周ღ的博客-CSDN博客

适用于编程初学者,感兴趣的朋友们可以订阅,查看其它 “JavaEE基础知识”。

更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*

Linux 操作系统不像 windows 那样是图形化操作界面,而是操作的时候需要靠输入命令或一些快捷键进行的。Linux 也拥有自己的图形化操作界面,但是在实际的工作中,一般不会使用。

图形化操作界面的优势是,更适合大众上手,操作简单。

命令行操作系统的优势在于,执行更为高效,也是各大企业的生产工具。

  1. 命令行数据传输带宽占用非常低,图形化界面本质上背后还是对接指令。
  2. 系统资源占用非常低,不需要支持图形处理。
  3. 命令行适合通过脚本语言来实现批量重复的操作。

接下来,给大家带来的是 Linux 上常使用的命令。

使用终端软件 Xshell 登录云服务器后:

注意:对于 Linux 操作系统来说有时候输入命令没有提示就意味着操作成功!!! 


一、目录操作

1.1  ls (list 列出当前所有文件)

语法:ls [选项] [目录或文件]

功能:list 列出当前目录/指定目录中有那些文件,在Windows 中相当于双击了某个文件夹。

常用选项:

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
  • -l 列出文件的详细信息。
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -R 列出所有子目录下的文件。(递归)

这些选项,也叫做 “命令行参数” 参数和参数之间,至少需要一个空格来分割。

因为博主这里是新的服务器,没有创建多余的文件。

ls 后面跟着一个具体的目录,就可以看出指定目录中的内容。

 蓝色表示的是目录,白色表示的是文件,红色一般是压缩包或一些特殊的文件

 ls - l 能够查看目录的详细信息:

Linux 也提供了 ll 操作,等价于 ls -l 


1.2 cd (change directory 切换目录)

在Linux 系统中,磁盘上的文件和目录是一个树,每个节点都是目录或文件。这一点更 Windows 一样。

语法:cd [目录名]

功能:改变工作目录,将当前工作目录改变到指定的目录下。(Win 双击其他文件夹)

cd 后面跟着需要切换的目录/ 路径(可以使用相对路径也可以使用绝对路径)

Linux 上的绝对路径是以 “/” 开头的路径

举例:

cd ..  : 返回上级目录

cd~  或直接 cd : 回到 home 目录

cd- :返回最近访问的目录

几个特殊的目录:

  • /  称为根目录
  • . 称为当前目录
  • .. 称为当前目录的上级目录

绝对路径 vs 相对路径
形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.
形如: ./xiaohu 以 . 或者 .. 开头的,称为相对路径(通常 ./ 省略不写)

拓展快捷键:

使用 tab 键可以实现自动补全。

例如,我敲命令 cd  /xiao , 然后点击  tab ,就会自动补全为 cd  /xiaohu 

我们所有的 Linux 命令,都可以使用 tab 来尝试补全,加快效率。

使用 ctrl + c 重新输入

如果命令或者目录敲错了,就可以使用此快捷键取消当前的命令。

在xshell 中可以使用 ctrl + l 进行清屏,或者直接敲 clear 命令


 1.3 pwd (显示当前绝对路径)

显示用户当前所在的目录

有的时候  cd 的次数太多了,记不清当前处于那个路径当中,就可以使用 pwd 查看当前的完整路径。


1.4 mkdir (创建目录)

语法:mkdir [选项] dirname

功能:在当前目录下创建一个名为 “dirname”的目录

常用选项:

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将
自动建立好那些尚不存在的目录,即一次可以建立多级目录

例如:

 也可以单纯的创建一个目录


1.5 rm (删除目录或文件)

语法:rm [选项]  [dirname / dir]

功能:删除文件或目录

常用选项:

  • -f   即使文件为只读属性,也可以直接删除
  • -i  删除前逐一确认是否删除
  • -r  删除目录及其下所有文件(递归)

注意,删除文件可以直接 rm  test.txt,但是不可以直接删除目录。删除目录需要使用 rm -r 递归删除,需要同时删除目录中所有的文件和子目录。

这是在目录中文件较少的情况下,如果目录中的文件成百上千,那真的是删的手酸,此时我们可以使用  rm -rf [dirname] 此处的 f 表示强制删除,不需要确认。

也可以使用 rm -rf * 此处的 * 代表的是通配符,能够匹配到当前目录中的所有文件,就是全选。

注意事项 !!!:Linux 上没有回收站的概念,所以删除文件的时候请务必小心谨慎,还有千万不要运行 rm - rf / "/" 代表的是整个文件系统中最顶级的节点了,此命令一出操作系统都能给你删了,尤其是以后在公司服务器上!!!


二、文件操作

2.1 touch (创建一个空的文件 )

语法:touch [选项]  文件

功能:touch 命令参数可更改文档或目录的日期时间,包括存储时间和更改时间,或者新建一个不存在的文件。

[root@iZ0jlcqjnf4x7vvdkcnu6wZ ~]# ls
usr  xiaohu
[root@iZ0jlcqjnf4x7vvdkcnu6wZ ~]# mkdir test
[root@iZ0jlcqjnf4x7vvdkcnu6wZ ~]# ll
total 12
drwxr-xr-x 2 root root 4096 Jul 20 10:00 test
drwxr-xr-x 3 root root 4096 Apr 25 12:43 usr
drwxr-xr-x 3 root root 4096 May 27 16:04 xiaohu
[root@iZ0jlcqjnf4x7vvdkcnu6wZ ~]# ll
total 12
drwxr-xr-x 2 root root 4096 Jul 20 10:00 test
drwxr-xr-x 3 root root 4096 Apr 25 12:43 usr
drwxr-xr-x 3 root root 4096 May 27 16:04 xiaohu
[root@iZ0jlcqjnf4x7vvdkcnu6wZ ~]# cd test/
[root@iZ0jlcqjnf4x7vvdkcnu6wZ test]# ll
total 0
[root@iZ0jlcqjnf4x7vvdkcnu6wZ test]# touch test1.txt
[root@iZ0jlcqjnf4x7vvdkcnu6wZ test]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 20 10:00 test1.txt
[root@iZ0jlcqjnf4x7vvdkcnu6wZ test]# 

上述命令中我在根目录下使用 mkdir 命令创建了 test 文件夹,随后在test 文件夹内创建了 test1.txt 文本文件


2.2 cat (读取文件内容)

语法:cat [选择] [文件]

常用选项:

-n 对输出的所有行编号

cat test1.txt

 cat 命令适合针对简单短小的文件进行读取,cat 是 concatenate 的缩写不是猫的意思~

事例的话,因为还没有写入数据所以在写入的命令再演示~ 


2.3 echo (写文件)

echo 命令适合针对简单的文件进行操作 ,如果文件过于复杂其实是不方便的。

语法 :echo "内容"  > [文件名]

echo  +  >  是重定向的意思,将内容写入到某某文件,如果把 “>” 忘记了那么他就会把要写入的内容在控制台打印。

此外,对同一文件多次使用 echo + > 重定向,会覆盖掉原有的内容,不能够追加。

小结:echo 和cat 这样的命令只适合针对简单的文件进行操作,如果文件过于复杂就不合适了,echo 和 cat 命令在编写自动化脚本批量处理这样的操作就比较合适。


2.3 vim (文本编辑器)

vim 适合针对复杂的文件进行编辑处理,可以理解为 windows 的记事本~

这里给大家介绍3个最基本的用法:

  1. 打开文件
  2. 编辑文件
  3. 保存退出

1. 创建文件/ 打开文件

vim [文件名]

以下是输入:vim test1.txt 的页面展示 

可以看到也是展现出我们前面使用 echo 插入的 “hello”。现在是普通模式无法编辑~ 

2. 进入插入模式 

默认vim 处于 normal mode (普通模式),普通模式下键盘的按键表示一些特殊功能的快捷键,想要正确的编辑文件,使用 i 键(inset)进入插入模式,然后就可以像记事本那样编辑文本了~~

3. 保存

在插入模式下不能保存文件,需要先回到普通模式,按下 ESC 可以回到普通模式,在在普通模式下输入 :w , 再按下回车, 即可保存文件。

4.  退出
在插入模式下不能退出, 需要先回到 普通模式。
在普通模式下输入 :q , 再按下回车, 即可退出。
也可以直接使用 :wq 同时执行保存和退出。

 


三、cp (复制) 和 mv (剪切)

3.1 copy

cp- copy 复制的意思

语法:cp [选项] 源文件或目录  复制到:目标文件或目录

功能: 复制文件或目录

说明:  cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息 


常用选项:

  • -f  或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i  或 --interactive 覆盖文件之前先询问用户
  • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

举例,将 test1.txt 文件复制到当前目录下并命名为 test2.txt

拷贝操作,有时候是比较危险的,如果拷贝的目标文件,已经存在,就会发生“覆盖”的情况!!!

这个时候我们可以添加选项 -i , cp -i  源文件  目标文件,如果有覆盖情况会询问用户。

cp 命令在复制目录的时候,必须加上 -r 选项,表示递归复制。


3.2 mv

语法:mv [选项] 源文件或目录  移动到目标文件或目录

功能:

1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移
至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目
录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源
文件均移至目标目录中。

 常用选项 :
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! 

  • mv 在移动的时候,可以给目标文件重命名,一边移动一边重命名,如果移动的源文件或目录跟目标文件或目录处在同一目录下,这个时候就是单纯的改名字了。
  • Linux 中没有单独的命令重命名,通过 ,mv 命令来完成。
  • mv 移动目录时不需要添加 -r 选项。
  • cp 命令在执行过程中是比较慢的,需要大规模的读写硬盘,mv 命令执行是非常高效的,几乎是瞬间完成,因为:在操作系统中的文件系统中每个文件的“路径” 就是一个简单的属性,mv 就只是单纯的修改这个路径的属性而已,时间复杂度是 O(1)。
  • Linux 没有回收站的概念,所以可以用 mv 命令来模拟回收站的效果,想删除某个东西,并不是直接 rm 命令,而是通过 mv 命令将要删除的移动到一个单独的目录中作为回收站使用。


四、网络设置

4.1 grep (字符串匹配)

语法:grep [参数]... [文件]...
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.

选项:

  • -n<行数> 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

举例查询:  test目录下 test1.txt 文件中的 “hello” 

grep 字符串匹配可以快速的在某个文件中是否包含了某个特定的字符串。

grep 也可以同时在很多文件中进行搜索:  grep  - n "hello"  *  -R 

* 表示当前目录下的所有文件, - R 表示递归搜索,如果当前目录下还有目录,就会自动进入目录中进行搜索。

grep 命令不仅仅能搜索文件中的内容,还可以和其他命令配合使用。


4.2  ps  (查看进程)

语法:ps [参数]...
功能:用于查看当前系统上运行的进程

选项:

  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分

直接使用 ps 命令查看的内容非常有限,所以ps 命令常常搭配一些固定的选项。

使用 ps aux 可以列出系统上所有的进程:

但是更多的时候我们不会关心所有的进程,而是只关心我们想要的进程,这个情况下就需要配合 grep 命令就可以进行快速筛选了。ps aux | grep [要查询的进程]

管道是 Linux 中非常经典的方式~


4.3 netstat (查询网络状态)

语法:netstat [参数]...
功能:查看系统上的网络状态.

选项:

  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称

举例:

  • netstat -anp
  • netstat -anp | grep "进程名"
  • netstat -anp | grep "端口号"

但是更多的是我们只需要关注部分信息, 这个就需要搭配 grep 命令来进行查询了~~

每一个联网的应用程序启动时会绑定一个端口号,作为本机的应用程序的标识~

例如:

查询 mysql 服务的端口号:

查询 3306 端口是否被其他进程占用了~~


4.4 sudo (执行特殊权限的任务,释放端口)

我们在项目部署的时候可能会遇到某些特殊端口被占用的情况下,释放占用的端口:

1. 查找占用8080端口的进程ID:

sudo lsof -i :8080

2. 结束占用端口的进程,您可以使用 kill命令来结束该进程。例如,如果上一步的输出显示进程ID为1234,则可以使用以下命令结束该进程:

sudo kill 1234

3. 确认端口被释放,可以再次使用lsof命令验证端口是否已被释放。

sudo lsof -i :8080


好了,到这里,【从零开始学习Linux】常用命令及操作 博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。 

感谢每一位观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

遇见你,所有的星星都落在我的头上……