Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >掌握基本的命令行,迈向 Linux 第一步

掌握基本的命令行,迈向 Linux 第一步

作者头像
云水木石
发布于 2020-06-09 03:55:48
发布于 2020-06-09 03:55:48
60500
代码可运行
举报
运行总次数:0
代码可运行

当年我接触计算机时,微软的 Windows 系统还没有出现,所使用的操作系统是一张 5.25 吋软盘(容量 1.2MB)就能装下的 DOS 系统,自然没什么图形界面。所以,我是从学习各种命令,开始进入计算机世界的。拜技术的飞速发展所赐,Windows 很快取代 DOS,人们再也不用记那些繁杂的计算机命令,通过点点鼠标就可以操作电脑。Windows系统其实也带了一个命令行程序(包括最新的 Windows 10 系统),估计绝大多数人从来都没有打开过。

然而,在这个世界上,Windows 系统并没有主宰整个电脑世界,特别是对于程序员群体来说,Linux 系统和苹果的 Mac OS 系统也得到广泛使用。特别是人工智能、系统开发、云计算等领域,Linux 系统下环境的配置反而更简单。我经常会建议程序员尝试用 Linux 系统作为软件开发环境。现代 Linux 系统其实也有着非常友好的 GUI(图形用户界面),甚至有的 Linux 发行版本借鉴了 Mac OS,有着非常炫酷的用户界面。但对于程序员而言,不断改进并提高生产力是第一要务,这个时候使用命令行反而更加高效。

说起来记住各种命令,然后通过简陋的控制台用户接口输入命令,似乎有点反人性。但这是 Linux 系统的精髓。其实 Mac OS 虽然最早拥抱 GUI,但它也有强大的命令行系统。Windows 系统似乎也意识到这个需求,最近发布了一款全新的命令行应用程序:Windows Terminal。有数据表明,相对于使用鼠标在 GUI 中点击,在终端中完成完全相同的工作,速度更快。江湖中一直有传说,一流的程序员只使用 Vim 或 Emacs,编程完全不用鼠标,只听见啪啪啪的键盘声。我们也不要把自己当作大神,只用记一些简单的命令,为日常工作提升一点效率。下面我就总结一下最基础的 Linux 命令,助你进入 Linux 世界。

1. pwd

注意,这个命令并不是 password 的缩写,而是 print working directory 的缩写。pwd命令输出当前工作目录的完整系统路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~$ pwd
/home/alex

这个命令如此简单,也是最常用的命令之一,通常情况下我们并不需要传递命令行参数。如果你要查看完整的命令行参数,请输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~$ man pwd

:对后面的命令也是如此,如果你要了解更详细的命令用法,都可以使用 man + <命令> 查看帮助。

2. cd

这也是最常用的命令之一。cd 是 change directory 的缩写,顾名思义,此命令用来更改当前工作目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~$ cd Downloads/
alex@alex-MS-7C22:~/Downloads$

当然我们也可以进入到其它的工作目录,而且可以进入多个层级里面。

在以下示例中,我们将当前目录切换至 Pictures 文件夹中的 myimages 子文件夹。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Downloads$ cd ~/Pictures/myimages
alex@alex-MS-7C22:~/Pictures/myimages$

在目录操作中,有几个特定的符号代表某个目录。

  • ~ : 用户主目录,通常为 /home/,比如在第一个命令示例中,pwd显示 ~ 的全路径为 /home/alex
  • .. : 父目录,比如执行如下命令,将当前目录切换到父目录的父目录。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures/myimages$ cd ../..
alex@alex-MS-7C22:~$
  • . : 当前目录。
3. ls

ls 是 list 的缩写,此命令列出目录中的所有文件。您可以指定要列出文件的目录。如果未指定目录,则使用当前工作目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ ls
myimages  Selection_001.png  Selection_008.png  Selection_009.png  Selection_010.png  tmp

该命令有几个非常有用的选项。例如 -a 选项,可以列出隐藏文件。-l 选项则可以显示更多的文件信息,其中包含文件大小和权限等。更酷的是,这些选项可以组合起来使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ ls -la
total 244
drwxr-xr-x  4 alex alex  4096 511 09:31 .
drwxr-xr-x 65 alex alex  4096 530 06:35 ..
drwxrwxr-x  2 alex alex 24576 1211 09:26 myimages
-rw-rw-r--  1 alex alex 30180 1111  2019 Selection_001.png
-rw-rw-r--  1 alex alex 64302 1120  2019 Selection_008.png
-rw-rw-r--  1 alex alex 92592 1125  2019 Selection_009.png
-rw-rw-r--  1 alex alex 19035 1125  2019 Selection_010.png
drwxrwxr-x  2 alex alex  4096 12 10:08 tmp
4. cp 和 mv

cp 命令是 copy 的缩写,用来复制文件和目录。第一个参数(文件或目录)是源,第二个参数是目标。在以下示例中,我们将图像复制到 Downloads 文件夹。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ cp Selection_001.png ~/Downloads/

如果是复制目录,请加上 -r 选项进行递归复制。

复制文件和目录时有很多选项。例如,我们可以将具有特定扩展名的所有文件复制到目录中。以下示例将所有带有 png 扩展名的文件复制到 Downloads 文件夹。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ cp *.png ~/Downloads/

mv 命令是 move 的缩写,与 cp 命令的工作原理类似,只是用于移动(而不是复制)文件和目录。需要注意的是,在移动目录及子目录时,不带有 -r 选项。要想浏览可用于 mv 命令的所有选项,只需键入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
man mv
5. mkdir 和 touch

mkdir 是 make directory 的缩写,该命令用于创建目录。此命令需要一个参数:新目录的名称。要验证命令是否成功执行,可以使用 ls 命令查看。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ mkdir my-new-folder
alex@alex-MS-7C22:~/Pictures$ ls
myimages  my-new-folder  Selection_001.png  Selection_008.png  Selection_009.png  Selection_010.png  tmp

创建文件与创建目录一样容易。这个时候需要用到 touch 命令来创建一个新文件。

需要注意,所创建的文件为空。如果要验证命令是否已成功执行,请使用 ls 命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ touch myfile.txt
alex@alex-MS-7C22:~/Pictures$ ls -la
total 248
drwxr-xr-x  5 alex alex  4096 63 15:24 .
drwxr-xr-x 65 alex alex  4096 530 06:35 ..
-rw-r--r--  1 alex alex     0 63 15:24 myfile.txt
drwxrwxr-x  2 alex alex 24576 1211 09:26 myimages
drwxr-xr-x  2 alex alex  4096 63 15:23 my-new-folder
-rw-rw-r--  1 alex alex 30180 1111  2019 Selection_001.png
-rw-rw-r--  1 alex alex 64302 1120  2019 Selection_008.png
-rw-rw-r--  1 alex alex 92592 1125  2019 Selection_009.png
-rw-rw-r--  1 alex alex 19035 1125  2019 Selection_010.png
drwxrwxr-x  2 alex alex  4096 12 10:08 tmp
6. rmdir 和 rm

就像有单独的用于创建文件和目录的命令,删除文件和目录也有两个单独的命令。

要删除目录,可以使用 rmdir 命令,该命令是 remove directory 的缩写。但是,此命令只能删除空目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ rmdir my-new-folder

rm 命令更强大。您可能已经猜到它是 remove 的简写。rm 命令删除指定的每个文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ rm Selection_001.png

它也可以用来删除目录,但需要带 -r 选项,它将递归删除匹配的目录、它们的子目录以及它们包含的所有文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ ls tmp/
IMG_20191205_084245-01.jpeg  IMG_20191211_081050-01.jpeg  IMG_20191222_082026-01.jpeg  IMG_20200101_090356-01.jpeg  mmexport1573967495194-01.jpeg
IMG_20191208_084017-01.jpeg  IMG_20191212_215942-01.jpeg  IMG_20191231_212811-01.jpeg  IMG_20200101_091823-01.jpeg  mmexport1573967502382_mr1573967801990-01.jpeg
IMG_20191208_084409-01.jpeg  IMG_20191213_203823-01.jpeg  IMG_20191231_213325-01.jpeg  IMG_20200101_092057-01.jpeg  mmexport1576987906954-01.jpeg
IMG_20191208_173142-01.jpeg  IMG_20191213_204007-01.jpeg  IMG_20191231_215049-01.jpeg  IMG_20200101_092254-01.jpeg
alex@alex-MS-7C22:~/Pictures$ rm -r tmp/

为了忽略不存在的文件并且在删除之前永远不会提示您,可以使用 -f 选项。

7. cat, tail 和 head

在读取文件内容时,有几种选择。第一个选项是cat命令(concatenate的缩写),其主要作用是显示文件的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ cat myfile.txt
hello world!

注意,cat命令会显示整个文件的内容。如果文件内容特别多,可能只需要显示文件的前 n 行或最后 n 行,这时可用上 tail 和 head 命令。tail 命令输出文件的最后 10 行,而 head 命令输出文件的前 10 行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ tail helloworld.txt
hello world 4!
hello world 5!
hello world 6!
hello world 7!
hello world 8!
hello world 9!
hello world 10!
hello world 11!
hello world 12!
hello world 13!

也可以使用 -n 选项指定要输出的行数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ head -5 helloworld.txt
hello world 1!
hello world 2!
hello world 3!
hello world 4!
hello world 5!
8. grep

grep 命令是 global regular expression print 的缩写,用于搜索文本。它将在文件中检索指定的字符串,并以特定的格式显示结果。

这个命令非常强大,前提是你要懂得正则表达式。如果不懂得也没有关系,可以先从基本的查找开始。

假定我们有一个包含所有国家/地区名称的文件。我们要检查 Netherlands 一词是否在该文件中。请注意,默认情况下,grep区分大小写。

我们传递的第一个参数是要查找的单词,第二个参数是我们要搜索的文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ grep Netherlands countries.txt
Netherlands

如果不想区分大小写,可以使用 -i 选项。这样,无论您要查找的是 BeL、bel还是 BEL,都一样对待。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ grep -i BeL countries.txt
Belarus
Belgium
Belize

注意,在上面的示例中,我们看到 grep 将整个匹配行输出到终端。使用 -c 选项可以打印匹配的行数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ grep -ic BeL countries.txt
3
9. find

find 命令用于快速查找文件或目录。假设我们需要找到当前目录中的所有CSS文件,就可以使用 find 命令执行此操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alex@alex-MS-7C22:~/Pictures$ find . -name "*.css"
./style.css

请注意,find 命令还会搜索所有子目录。

小结

命令行往往是 Windows 程序员转向 Linux 的一个拦路虎,其实只要掌握了一些基础的命令,使用起来并不是那么难。况且现在 Linux 的 GUI 已经非常易用。Linux 系统唯一的缺点是有很多娱乐、游戏方面的应用程序没有开发 Linux 版本,转过来想,没有那些 app,我们是不是更能专注于软件开发上面呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云水木石 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python入门讲解
谢谢大家支持,可以让有兴趣的人关注这个公众号。让知识传播的更加富有活力,谢谢各位读者。 很多人问博主为什么每次的头像是奥黛丽赫本,因为她是博主女神,每天看看女神也是不错的嘛! 查看之前文章请点击右上角,关注并且查看历史消息,谢谢您的阅读支持 Python是一门动态语言 与Java,C等相对,Python不用编译,像脚本一样直接运行.这就导致了,所有错误都是运行时的!即使有语法错误,或者异常,如果程序逻辑没有执行到,就不会有错误.比如一个if分支中有语法错误,使用了未定义的函数,但如果未执行到此分支,
量化投资与机器学习微信公众号
2018/01/29
9770
嵌入式Linux高级案例-移植LVGL到Linux开发板
​ 本篇主要是记录将LVGL移植到百问网STM32MP157开发板上,并且仅是跑一下LVGL的一些例程。
韦东山
2022/06/30
4.9K0
Linux命令行:find的26个用法示例
作者 | Wray Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我们将学习如何使用 find命令以及它所提供的选项来查找文件。 在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作。如果你想在linux系统的命令行中变得特别高效,那么 find 是你必须掌握的命令之一。 find 命令的基本语法如下: $ find [path] [option] [expre
企鹅号小编
2018/01/29
2.7K0
Linux命令行:find的26个用法示例
【技术种草】云服务器就是玩,从新手到高手的第一课!真的学废了
所以第一次使用的时候,很多粉丝问我,我在自己虚拟机中部署的就可以,为啥在云服务器中部署的就死活访问不了呢?
手撕代码八百里
2021/11/30
9400
【技术种草】云服务器就是玩,从新手到高手的第一课!真的学废了
Linux 学习笔记之超详细基础linux命令 Part 1
功能:10分钟后关机,并向所有终端发送“The system is going down for system halt in 10 minutes”
授客
2019/09/12
6600
linux小知识
whoami ## 显示当前用户,不同用户权限不同 pwd ## 显示当前所在的工作目录,使用相对路径的时候正确找到文件或目录
cherishspring
2019/10/14
1.2K0
每天一个linux命令:ls命令
ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。ls 命令在日常的linux操作中用的很多!
用户7678152
2020/09/21
2.4K0
linux中20个中级命令
21. find命令 在当前目录搜索文件 rumenz@local:~# find -name *.sh ./Desktop/load.sh ./Desktop/test.sh ./Desktop/shutdown.sh ./Binary/firefox/run-mozilla.sh ./Downloads/kdewebdev-3.5.8/quanta/scripts/externalpreview.sh ./Downloads/kdewebdev-3.5.8/admin/doxygen.sh
入门笔记
2022/06/02
8630
linux中的18个tar命令示例
1. 在 Linux 中创建 tar 存档文件 下面的示例命令将创建一个tar存档文件rumenz-14-09-12.tar对于目录/home/rumenz在当前工作目录中。请参阅示例命令的操作。 # tar -cvf rumenz-14-09-12.tar /home/rumenz/ /home/rumenz/ /home/rumenz/cleanfiles.sh /home/rumenz/openvpn-2.1.4.tar.gz /home/rumenz/rumenz-14-09-12.tar /ho
入门笔记
2022/06/02
1K0
一文厘清 Linux 文件管理指令!从创建、查看,到移动、删除,如 touch、cat、mv、rm 等指令的深度剖析。
功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信 息。
逆向-落叶
2025/01/20
3100
一文厘清 Linux 文件管理指令!从创建、查看,到移动、删除,如 touch、cat、mv、rm 等指令的深度剖析。
【Linux操作系统】简学深悟启示录:Linux基本指令
本篇将开启 Linux 操作系统的全面学习,默认使用的是 CentOS 操作系统,使用 Xshell 进行远程登录服务器进行操作测试
DARLING Zero two
2025/07/14
1060
【Linux操作系统】简学深悟启示录:Linux基本指令
建议收藏 | Linux常用命令
cat,又是一个相对高频率的命令。比较官方的说法是命令用于链接文件并打印到标准输出设备上。这个文本输出命令可以用来查看文件内容,创建内容等,下面我们介绍几个比较实用的用法。命令格式 : cat [选项]... [文件]...
数字芯片社区
2020/07/23
3.1K0
Linux 基础
在linux中经常会碰到 bashrc,rc.d,rc.local等带有rc的文件或目录,一般都是启动时需要加载的。
青山师
2023/05/05
6970
Linux 基础
Linux下 ls 命令的高级用法8例
在Linux下,ls这个命令大家肯定太熟悉了,良许相信只要是Linux工程师,每天都会离不开这个命令,而且一天会使用个几百次。但是,除了ls -l以外,你还知 ls 的哪些高级用法呢?良许今天为大家介绍 ls 命令的8种高级用法。
谭庆波
2019/07/18
1.4K0
Linux下 ls 命令的高级用法8例
Linux 学习笔记之超详细基础linux命令 Part 9
---------------------------------接Part 8------------------------------
授客
2019/09/11
7710
[Linux]常用命令、组合命令以及输入输出重定向
删除非空目录,还有一种更为简单的方法:把-R(或recursive)和-f(或--force)选项结合起来使用。-r选项告诉rm命令进入到它发现的每个子目录中去删除文件,而-f选项只是告诉rm命令完成任务但不要因为些细节问题(比如文件夹非空)而烦扰用户。
祥知道
2020/03/10
1.8K0
【Linux】Linux命令行git的使用
1. Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds雷纳斯托瓦兹为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
举杯邀明月
2023/04/12
4.7K0
【Linux】Linux命令行git的使用
Linux基本指令及周边(第一弹)
Linux基础指令比较多,面对这些指令该如何去记?不需要我们去死记硬背,经常使用即可,不知道的指令可以在网上搜索或者在Linux手册中查询,更多的是去理解Linux周边知识。在学习Linux指令时,可以和Windows系统进行结合,看看Linux的某些指令对应在Windows系统中的操作如何?
南桥
2024/01/26
1750
Linux基本指令及周边(第一弹)
linux中21个中级命令
ifconfig命令用于配置网络接口信息。如配置网络接口的ip地址,默认网关地址等,以便机器能够联通互联网。
猫头虎
2024/04/07
2290
Linux基础指令与权限
一个工具 用于传输windows与linux机器通过XShell传输文件
2024/12/01
1410
Linux基础指令与权限
相关推荐
Python入门讲解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验