作为一名程序员,相信大家对Linux操作系统都不会陌生。但是Linux系统那些繁杂的操作命令通常让我们很头疼,我也在网上查阅了很多资料,做了一些总结。这里将常用的一些Linux操作命令(主要是与文件相关的操作命令)整理如下:
sudo
这个SuperUserDo(简写成”sudo”)是Linux新手要使用的最重要的命令。需要根权限的每一个命令都需要这个sudo
命令。你可以在需要根权限的每个命令之前使用sudo
1 | $ sudo su |
pwd
1 | ~/Documents$ pwd |
ls(list)
借助ls
(list)命令,终端就会显示你正在处理的那个目录里面的所有文件和文件夹。假设我在Home目录(也就是”~”)里面,想查看当前目录下的文件夹和文件。相应的命令如下图所示:
1 | ~$ ls |
上面是ls
命令最基本的使用方式,下面我们再看看ls
命令其他的使用方式。
1 | ~$ ls -l |
1 | ~$ ls -a |
1 | ~$ ls -lh |
1 | ~$ ls --help |
cd
更改目录(cd
)是始终在终端中使用的主要命令。它是最基本的Linux命令之一。使用这个命令很简单。只要输入你想要从当前目录进入到的那个文件夹的名称(如果是多层,中间用”/“进行分隔)。如果想要返回上一级,只要将双圆点(..)作为参数。
假设我在Home目录(也就是”~”)中,想进入到在Home目录里面的Documents子目录。下面是我可以使用cd
命令的方法:
1 | ~$ cd Documents/ |
若果要想返回到上一级目录,只用将双圆点(..)作为相应的参数即可。如下图所示:
1 | ~/Documents$ cd .. |
除了上面两个基本的命令之外,还有一些有趣的,我们来看看。
1 | ~$ cd Documents/Folder1/ |
1 | ~/Documents/Folder1$ cd - |
1 | ~/Documents/Folder1$ cd ../../ |
1 | ~/Documents/Folder1$ cd ~ |
touch
touch
命令的意思的新建,它的使用很简单。我们先去往 Documents 的文件夹, 里面已经有了 folder1 和 file1, 如果我们想新建一个 file2 使用下面的语句就好(可以指定文件的扩展名)。一个空文件就这样建立好了。(注意:如果创建的文件不存在,则会创建一个空白文件;如果文件已经存在,可以修改文件的末次修改日期)
1 | ~/Documents$ touch file2.txt |
如果你想同时建立多个文件,输入多个文件的名字,以空格分开。
1 | ~/Documents$ touch file3.txt file4.txt file5.txt |
tree
tree
命令的意思的新建,可以以树状图列出文件目录结构.
1 | ~/Documents$ tree [目录名] |
1 | ~/Documents$ tree -d [目录名] |
cp
拷贝粘贴是我们为了组织整理文件而需要完成的重要任务。使用cp
将帮助你从终端拷贝粘贴文件。首先,你确定想要拷贝的那个文件,然后输入目的地位置,即可粘贴文件。cp
(copy) 是复制文件或者文件夹的指令, 常用的方式是复制 “源文件” 到 “目标文件”。即:
1 | ~$ cp 源文件 目标文件 |
注意: 如果你将文件拷贝到任何新文件都需要根权限的目录,那么你就需要使用sudo
命令。
下面是cp
命令的一些常见操作。
1 | ~/Documents$ cp file1 file1copy |
1 | ~/Documents$ cp -i file1 file1copy |
1 | ~/Documents$ cp file1 Folder1/ |
1 | ~/Documents$ cp -R Folder1/ Folder2/ |
1 | ~/Documents$ cp file* Folder1/ |
1 | ~/Documents$ cp file2.txt file5.txt Folder1/ |
mv
知道了 cp
, mv
就好理解多了, 基本是一样的。mv
是剪切(移动)的命令。mv
命令可以用来移动文件或目录,也可以给文件或目录重命名。
下面是mv
命令的一些常见操作。
1 | ~/Documents$ mv file1 Folder1/ |
1 | ~/Documents$ mv -i file1 file1rename |
1 | ~/Documents$ mv -f file1 Folder2/ |
最后还是想要提一句, 如果想要查看使用说明, 直接在指令后面打上 --help
就能查看.
mkdir
仅仅会更改目录还不全面。有时候,你想要创建一个新的文件夹或子文件夹。可以使用mkdir
命令来做到这一点。只要在终端中将你的文件夹名称放在mkdir
命令的后面即可。mkdir
(make directory) 就是创建一个文件夹的意思, 使用起来很简单。(注意:新建目录的名称不能与当前目录中已有的目录或文件同名)
以下是mkdir
命令的一些常见操作。
1 | ~/Documents$ mkdir Folder2/ |
1 | ~/Documents$ mkdir Folder2/folder |
1 | ~/Documents$ mkdir -p A/B/C/D |
rmdir
rmdir
(remove directory) 也就是字面的意思,即移除文件夹。不过这有一个前提条件. 这些要移除的文件夹必须是空的,不然会失败。所以如果想刚刚建立的那个 Folder2 就不能被移除, 因为里面有个 folder 文件夹。那么怎么移除有文件的文件夹呢?这里需要用到我们后面讲的rm
命令。
要移除个空文件夹, 比如我在新建一个 Folder3, 然后移除。
1 | ~/Documents$ rmdir Folder3 |
rm
rm
这个命令可以移除你的文件,甚至移除你的目录。如果文件需要根权限才能移除,可以使用-f
(强制删除)。你还可以使用-r
来进行递归移除,从而移除你的文件夹。
注意: 执行了 rm
以后是不能进行返回操作的, 请确保别执行像这样的操作 rm /
(或者在根目录下进行rm -rf *
),这会清空你的电脑。
1 | ~/Documents$ rm file1 |
1 | ~/Documents$ rm -i file2 |
1 | ~/Documents$ rm -f file1 |
1 | ~/Documents$ rm -r Folder1/ |
rm
命令其他的特点和cp
命令差不多,比如用带相应的前缀或者后缀(或者不带,这样会清空当前文件夹下所有文件)加’*’来一次性删除多个文件。
nano
nano
是 linux 的一款文字编辑工具. 我们可以拿它来做最基本的 terminal 端的文本编辑, 甚至可以写代码。下面我们用 touch
创建一个 Python 脚本。如果大家不懂Python
也没关系,你就知道我们可以拿 nano
来编辑文字或者脚本就好了。
1 | ~/Documents$ touch p1.py |
然后用 nano 执行这个 p1.py 文件,如下图所示:
1 | ~/Documents$ nano p1.py |
它就会变成一个文本编辑器, 你在里面可以写上一些脚本。
然后按 “Ctrl + x” 来保存和退出。如果提示你保存, 你就按一下 “y” 键, 然后回车, 你的文件就被保存下来了。
接着如果你在 terminal 中输入相关的执行python文件的命令,你就能看到 terminal 执行了你的 python 文件。
cat
作为用户,你常常需要查看来自脚本的一些文档或代码。同样,其中一个Linux基本命令是cat
命令。它会为你显示文件里面的文本。
cat
(catenate) 可以用来显示文件内容,创建文件,文件合并, 或者是将某个文件里的内容写入到其他文件里。cat
会一次性的显示所有的内容,适合查看内容较少的文本文件。详细的操作见下面。
1 | ~/Documents$ cat -b p1.py |
1 | ~/Documents$ cat p1.py > p2.py |
1 | ~/Documents$ cat p1.py p2.py > p3.py |
1 | ~/Documents$ cat p2.py >> p3.py |
more
和上面的cat
命令类似,more
命令可以用于分屏显示文件内容,每次只显示一页内容。
适合于查看内容较多的文本文件。
1 | ~/Documents$ more p1.py |
head
查看文件的前几行(默认查看前10行)
1 | ~/Documents$ head -n 5 p2.py |
tail
查看文件的后几行(默认查看倒数后10行)
1 | ~/Documents$ tail -n 6 p3.py |
grep
你需要找到一个文件,但是又记不得它的确切位置或路径。grep
可以帮助你解决这个问题。你可以使用grep
命令,根据给定的关键字帮助找到文件。
grep
命令是Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
常用的两种正则表达式查找:
^a
行首,搜寻以 a 开头的行ke$
行尾,搜寻以 ke 结束的行
1 | $ grep [-acinv] [--color=auto] 搜寻字符串 filename |
1 | ~/Documents$ grep hello p1.python |
范例:把含有 the 字符串的行提取出来(注意默认会有 –color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串)
1 | $ grep -n 'the' regular_express.txt |
因为 {
和 }
在 shell
是有特殊意义的,因此必须要使用转义字符进行转义。
1 | $ grep -n 'go\{2,5\}g' regular_express.txt |
grep
还有很多更强大的用法,后续会继续更新。当然,具体的用法可以通过grep --help
进行查看。
echo
echo
会在终端中显示参数指定的文字,通常会和重定向联合使用。
重定向>
和>>
:
- Linux 允许将命令执行结果重定向到一个文件
- 将本应显示在终端上的内容 输出/追加到指定文件中
其中:
>
表示输出,会覆盖文件原有的内容。>>
表示追加,会将内容追加到已有文件的末尾。
1 | ~/Documents$ echo Hello World > 1.txt |
管道 |
- Linux允许将一个命令的输出可以通过管道做为另一个命令的输入
- 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里
|
的左右分为两端,左端塞东西(写),右端取东西(读)
常用的管道命令有:
more
: 分屏显示内容grep
: 在命令执行结果的基础上查询指定的文本
1 | ~/Documents$ ls -lha | more |
apt-get
就不同的发行版而言,这个命令各不相同。在基于Debian的Linux发行版中,想安装、移除和升级任何软件包,我们可以使用高级包装工具(APT)软件包管理器。apt-get
命令可帮助你安装需要在Linux中运行的软件。这是个功能强大的命令行工具,可以执行安装、升级、甚至移除软件这类任务。
在其他发行版(比如Fedora和Centos)中,有不同的软件包管理器。Fedora过去有yum
,但现在它有dnf
。
1 | ~ sudo apt-get update |
1 | ~ sudo dnf update |
1 | ~ sudo apt-get install <package name> |
poweroff
有时候,你需要直接从终端来进行关机。这个命令就能完成这项任务,别忘了在命令的开头添加sudo
,因为它需要根权限才能执行poweroff
。
1 | ~$ sudo poweroff |
结束语
好了,基本的Linux
命令大概就这么多。它会帮助你在这个早期阶段开始使用Linux
,借助这些基本的Linux
命令,开始使用Linux
,并且定个目标:每天学会使用1个至3个命令。后续我也会继续更新~