才接触Linux系统,一些概念简直是一头雾水,那么本文的目的就是在Linux中使用终端输入命令时,常见的一些概念及技巧。
1 什么是主目录(home directory)?
Linux是一个典型的多用户操作系统,当然,Windows也是。
一个多用户操作系统,也就意味着可以允许多个用户访问在同一时刻访问该系统。
为了方便管理每个用户的数据,系统在创建登陆用户的同时,就会创建一个用户目录,这个目录就是当前用户的主目录。
主目录的名称,通常就是登陆的用户名
。
在Linux中,主目录的路径是存放在/home目录下,小编在安装linux的时候创建了一个Bruce的用户名,那么在登陆系统后,/home/bruce 就是我的的账号主目录,我对该目录有完全的控制权:
创建(Create),读取(Retrieve),修改(Update),删除(Delete),该目录下的所有文件/文件夹都可执行“CRUD”操作。
对比同样是多用户的Windows系统,在创建登录账号时,同样也会创建主目录(用户目录),路径通常默认是在 C:\Users\下, 这点和Linux在设计上是没什么区别的。
2. 如何查看当前的工作目录(present working directory)?
通常要运行Linux命令,就得打开终端,然后输入想要的命令。
那么这里就涉及到几个概念,当前目录以及用户环境变量。
每当打开Linux终端时,都是从主目录开始的,此时的工作目录就是主目录。
那么怎么知道当前的工作目录的完整路径呢?
![3d05c110d56ea3071a9d5b1284340229.png](https://i-blog.csdnimg.cn/blog_migrate/386f8bdbbd441248aefd2f01f0fee92d.png)
正如上图描述的那样,pwd命令就可以查询当前的工作目录。
3. 如何切换工作目录?
更改工作目录,使用 cd命令就可以实现, cd(Change Directory)命令需要带上一个目录名或者完整的目录路径名。
举个例子:
当前的工作目录是/home/bruce ( ~),如果想要切换目录到当前目录的Documents目录,则可输入
cd Documents
也可输入完整路径
cd /home/bruce/Documents.
从上面的例子就可以知道两种方式的具体使用场景,对于只输入目录名的方式,条件是需要目录是当前目录的子目录。
切换到其他目录,则需要输入完整的路径。
4. 如何查看目录下的文件?
使用 ls命令便可查看一个目录下的内容,包括文件,文件夹。
如果运行ls不带任何参数,那么就默认显示当前目录下的内容。
![55dcee098e9c7fc8af92f8fa717f4621.png](https://i-blog.csdnimg.cn/blog_migrate/0fa5e83ffb8130e25068b6be8a31ef4b.png)
想要列出指定目录的内容,则在ls命令后面添加目录的路径即可
![c297b983092e48738c7a1458356f1bbc.png](https://i-blog.csdnimg.cn/blog_migrate/638928627ec1d74bb4321145b1172e4d.png)
显示的结果,你会发现有颜色区别,这个什么意思?
这些不同的颜色代表不同属性的内容,比如
蓝色:
目录, 白色:文本文件, 红色:归档文件
5. 如何创建一个新文本文件?
通常在windows下,通过鼠标右键文件夹,然后新建文本文档的方式就可创建一个空白的文本文档。
在Linux的终端中,通过使用touch命令,就可以创建一个文件。
touch test.txt 便可创建一个名为test.txt的文档文件,txt后缀并不是必备的,
Linux下文件通常并不是由后缀来确定的。
只是有个后缀,便于人识别。
使用
标准流重定向 同样也能创建文件,并且在创建的同时往里面写入数据。
比如下方的命令,
ls > ls.txt
就是将ls命令的结果,通过
fd重定向到ls.txt文件中。
6. 如何重命名/复制/删除一个文件?
通过命令的方式对文件进行重命名,复制以及删除操作,通过mv, cp, rm命令,就可以快速的实现。
使用 mv命令来重命名一个文件:
要想给当前目录下的文件 test.txt 重命名为 test_new.txt。
输入如下命名
mv log.txt new_log.txt
如果文件不在当前目录,可以通过cd,跳转到目录然后执行mv命令。
也可在mv命令中直接加上文件名的完整路径。
使用cp命令复制文件:
cp命令和mv的用法基本类似,不同之处就是mv命令执行完毕后,是通过删除原文件,保留新文件的方式来达到重命名的方式。
而cp命令则是两个文件都保留。
使用rm命令来删除文件:
rm命令是比较常见使用的命令功能简单,但危害也很大,大多数没有接触过Linux或多或少听过rm -rf /*的梗。
执行上面的命令, 导致数据丢失而服务器宕机的
血案“也是时有发生的。
那么 rm -rf /* 是什么意思?
-r: 表示以递归的方式删除子目录下所有的文件和目录。
-f: 表示不需要确认,直接执行强制删除。
/*:
表示根目录下所有文件。
如果上面的命令的效果,就相当于删除磁盘上所有文件的操作,虽然有些文件不一定能删的掉。
但是让系统崩溃,还是能做到的。
所以,小编建议在执行rm命令的时候,多加小心。
7. 如果查找文件?
要搜索指定目录中的文件,可使用find命令。
该命令需要目录路径和文件名作为参数。
例如,要在/home/bruce/目录中搜索名为climate.py的文件,输入以下命令:
find /home/bruce -name climate.py
![aa395fc3541cad5232c7978e1646b6bc.png](https://i-blog.csdnimg.cn/blog_migrate/e95d25259053eec96a0a99bfa5ead4c4.png)
如果未指定目录路径,find命令则会在当前工作目录中搜索。
使用通配符与find命令可以实现模糊查找。
例如,如果要搜索/home/bruce/目录所有的py后缀的文件,那么就可以将搜索的名字换成 *.py。
这样就会匹配查找所有py后缀的文件。
"*"字符是一个通配符,可以表示任意数量的字符。
8. 如何在文件中搜索文本?
在使用Linux操作系统的过程中,小编我最爱的就是grep命令了。
要搜索文件中的文本,便可使用grep命令。
该命令需要关键字和文件名作为参数,然后会在终端显示输出包含关键字的行。
例如,要搜索文件/home/bruce/Documents/*.py所有py文件中包含关键字climate的所有行 就可使用grep 命令:
grep climate Documents/*.py
![ff92eb0f74680654a2823ab79af1a7fd.png](https://i-blog.csdnimg.cn/blog_migrate/39bb9a8396ae1db55e6f3f16b8f92e7b.jpeg)
如果希望grep在输出中显示行号,加上-n命令行选项。
同时grep不像find命令会自动搜索子目录,如果需要搜索所有文件并以递归的方式在所有子目录下查找,则需要加上-R参数。
于是搜索目录及其子目录所有文件中是否含有关键词“climate“,并返回带有行号的结果,则可输入如下命令:
grep -nR climate *
9. 什么是自动补全功能?
使用终端执行各项操作的时候,比较麻烦的一点,就是你需要对你输入的各个命名,各个文件夹都要心里有数。
如果你不记得完整的名字,可能就没法执行操作。
当然,为了解决这个麻烦事,终端上,可以通过tab自动补全的方式自动补全输入的命令或文件名。
这个功能并非Linux或macOS独有,在Windows的cmd命令提示符中,tab同样也有相同的作用。
在输入某个命令时,你并不需完整的敲完所有字母。
当你在键盘输入gre时,试试敲击tab键两次会有什么效果?
终端上会显示grep gresource 这两个命令。
如果这个时候你再在键盘上输入s,然后再按下tab,你会发现光标处会自动补全为gresource.
系统就默认以为你是想要输入gresouce这个命令,因为以gres为前缀的命令系统就自动识别gresource这一个。
![9d6a94b44874d84feec53d0146d700d8.png](https://i-blog.csdnimg.cn/blog_migrate/95f60e67d64adeba7eb738956cce0685.png)
同样,如果你想要在当前目录输入Documents这个文件名,则可在输入Doc后,按下tab键自动补全。
前提是当前目录只有一个Doc开头的文件。
否则需要按下两次tab看有几个备选项。
命令的方式执行任务会很强大,但是也是要一定的学习成本。
在学习的过程中,善于利用好搜索影响,以及多对比Windows和Linux的区别。
这样会有助于更好的玩转Linux。
电手发布,未经允许禁止转载