哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ
本期给大家带来的是 Linux 常用命令及操作,主要有三个分类:文件操作,目录操作,网络操作,创建文件 touch , 创建目录 mkdir , 删除文件或目录 rm , 文本编辑器 vim , 查看文件内容 cat , 文件覆盖写入 echo , 文件目录复制 cp , 文件目录移动或重命名 mv,以及网络相关命令,ps + grep 命令,查看指定进程,netstat + grep 查看进程的端口号及使用指定端口号的进程,sudo 执行特殊权限的任务,我们可以配合其他的一些指令来释放端口~ 更多指令操作,还请阅读下文呐~
本期收录于博主的专栏:Linux_保护小周ღ的博客-CSDN博客
适用于编程初学者,感兴趣的朋友们可以订阅,查看其它 “JavaEE基础知识”。
更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*
Linux 操作系统不像 windows 那样是图形化操作界面,而是操作的时候需要靠输入命令或一些快捷键进行的。Linux 也拥有自己的图形化操作界面,但是在实际的工作中,一般不会使用。
图形化操作界面的优势是,更适合大众上手,操作简单。
命令行操作系统的优势在于,执行更为高效,也是各大企业的生产工具。
- 命令行数据传输带宽占用非常低,图形化界面本质上背后还是对接指令。
- 系统资源占用非常低,不需要支持图形处理。
- 命令行适合通过脚本语言来实现批量重复的操作。
接下来,给大家带来的是 Linux 上常使用的命令。
使用终端软件 Xshell 登录云服务器后:
注意:对于 Linux 操作系统来说有时候输入命令没有提示就意味着操作成功!!!
语法:ls [选项] [目录或文件]
功能:list 列出当前目录/指定目录中有那些文件,在Windows 中相当于双击了某个文件夹。
常用选项:
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
- -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
- -l 列出文件的详细信息。
- -r 对目录反向排序。
- -t 以时间排序。
- -R 列出所有子目录下的文件。(递归)
这些选项,也叫做 “命令行参数” 参数和参数之间,至少需要一个空格来分割。
因为博主这里是新的服务器,没有创建多余的文件。
ls 后面跟着一个具体的目录,就可以看出指定目录中的内容。
蓝色表示的是目录,白色表示的是文件,红色一般是压缩包或一些特殊的文件
ls - l 能够查看目录的详细信息:
Linux 也提供了 ll 操作,等价于 ls -l
在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 命令
显示用户当前所在的目录
有的时候 cd 的次数太多了,记不清当前处于那个路径当中,就可以使用 pwd 查看当前的完整路径。
语法:mkdir [选项] dirname
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将
自动建立好那些尚不存在的目录,即一次可以建立多级目录
例如:
也可以单纯的创建一个目录
语法:rm [选项] [dirname / dir]
功能:删除文件或目录
常用选项:
- -f 即使文件为只读属性,也可以直接删除
- -i 删除前逐一确认是否删除
- -r 删除目录及其下所有文件(递归)
注意,删除文件可以直接 rm test.txt,但是不可以直接删除目录。删除目录需要使用 rm -r 递归删除,需要同时删除目录中所有的文件和子目录。
这是在目录中文件较少的情况下,如果目录中的文件成百上千,那真的是删的手酸,此时我们可以使用 rm -rf [dirname] 此处的 f 表示强制删除,不需要确认。
也可以使用 rm -rf * 此处的 * 代表的是通配符,能够匹配到当前目录中的所有文件,就是全选。
注意事项 !!!:Linux 上没有回收站的概念,所以删除文件的时候请务必小心谨慎,还有千万不要运行 rm - rf / , "/" 代表的是整个文件系统中最顶级的节点了,此命令一出操作系统都能给你删了,尤其是以后在公司服务器上!!!
语法: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 文本文件。
语法:cat [选择] [文件]
常用选项:
-n 对输出的所有行编号
cat test1.txt
cat 命令适合针对简单短小的文件进行读取,cat 是 concatenate 的缩写不是猫的意思~
事例的话,因为还没有写入数据所以在写入的命令再演示~
echo 命令适合针对简单的文件进行操作 ,如果文件过于复杂其实是不方便的。
语法 :echo "内容" > [文件名]
echo + > 是重定向的意思,将内容写入到某某文件,如果把 “>” 忘记了那么他就会把要写入的内容在控制台打印。
此外,对同一文件多次使用 echo + > 重定向,会覆盖掉原有的内容,不能够追加。
小结:echo 和cat 这样的命令只适合针对简单的文件进行操作,如果文件过于复杂就不合适了,echo 和 cat 命令在编写自动化脚本批量处理这样的操作就比较合适。
vim 适合针对复杂的文件进行编辑处理,可以理解为 windows 的记事本~
这里给大家介绍3个最基本的用法:
1. 创建文件/ 打开文件
vim [文件名]
以下是输入:vim test1.txt 的页面展示
可以看到也是展现出我们前面使用 echo 插入的 “hello”。现在是普通模式无法编辑~
2. 进入插入模式
默认vim 处于 normal mode (普通模式),普通模式下键盘的按键表示一些特殊功能的快捷键,想要正确的编辑文件,使用 i 键(inset)进入插入模式,然后就可以像记事本那样编辑文本了~~
3. 保存
在插入模式下不能保存文件,需要先回到普通模式,按下 ESC 可以回到普通模式,在在普通模式下输入 :w , 再按下回车, 即可保存文件。
4. 退出
在插入模式下不能退出, 需要先回到 普通模式。
在普通模式下输入 :q , 再按下回车, 即可退出。
也可以直接使用 :wq 同时执行保存和退出。
cp- copy 复制的意思
语法:cp [选项] 源文件或目录 复制到:目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
举例,将 test1.txt 文件复制到当前目录下并命名为 test2.txt
拷贝操作,有时候是比较危险的,如果拷贝的目标文件,已经存在,就会发生“覆盖”的情况!!!
这个时候我们可以添加选项 -i , cp -i 源文件 目标文件,如果有覆盖情况会询问用户。
cp 命令在复制目录的时候,必须加上 -r 选项,表示递归复制。
语法:mv [选项] 源文件或目录 移动到目标文件或目录
功能:
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移
至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目
录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源
文件均移至目标目录中。
常用选项 :
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
语法:grep [参数]... [文件]...
功能:用于查找文件中是否包含指定字符串, 并显示对应的行.
选项:
- -n<行数> 显示的行数
- -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
- -r 递归查找. 可以搜索多级目录下的所有文件.
- --color 高亮查找到的结果
- --include 指定查找某些文件
- --exclude 指定排除某些文件
举例查询: test目录下 test1.txt 文件中的 “hello”
grep 字符串匹配可以快速的在某个文件中是否包含了某个特定的字符串。
grep 也可以同时在很多文件中进行搜索: grep - n "hello" * -R
* 表示当前目录下的所有文件, - R 表示递归搜索,如果当前目录下还有目录,就会自动进入目录中进行搜索。
grep 命令不仅仅能搜索文件中的内容,还可以和其他命令配合使用。
语法:ps [参数]...
功能:用于查看当前系统上运行的进程
选项:
- a 显示一个终端的所有进程
- u 以用户为主的格式来显示程序状况
- x 显示所有程序,不以终端机来区分
直接使用 ps 命令查看的内容非常有限,所以ps 命令常常搭配一些固定的选项。
使用 ps aux 可以列出系统上所有的进程:
但是更多的时候我们不会关心所有的进程,而是只关心我们想要的进程,这个情况下就需要配合 grep 命令就可以进行快速筛选了。ps aux | grep [要查询的进程]
管道是 Linux 中非常经典的方式~
语法:netstat [参数]...
功能:查看系统上的网络状态.
选项:
- -a 显示所有正在或不在侦听的套接字
- -n 显示数字形式地址而不是去解析主机、端口或用户名
- -p 显示套接字所属进程的PID和名称
举例:
- netstat -anp
- netstat -anp | grep "进程名"
- netstat -anp | grep "端口号"
但是更多的是我们只需要关注部分信息, 这个就需要搭配 grep 命令来进行查询了~~
每一个联网的应用程序启动时会绑定一个端口号,作为本机的应用程序的标识~
例如:
查询 mysql 服务的端口号:
查询 3306 端口是否被其他进程占用了~~
我们在项目部署的时候可能会遇到某些特殊端口被占用的情况下,释放占用的端口:
1. 查找占用8080端口的进程ID:
sudo lsof -i :8080
2. 结束占用端口的进程,您可以使用 kill
命令来结束该进程。例如,如果上一步的输出显示进程ID为1234,则可以使用以下命令结束该进程:
sudo kill 1234
3. 确认端口被释放,可以再次使用lsof
命令验证端口是否已被释放。
sudo lsof -i :8080
好了,到这里,【从零开始学习Linux】常用命令及操作 博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。
感谢每一位观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*
遇见你,所有的星星都落在我的头上……