第零部分 前言
本文内容定义为适合快速入门使用,内容不够严谨但方便理解,适合会用windows系统但从没接触过linux系统的新手快速上手。
如果你对linux有一定的了解了,但对于某一命令不解或者需要查找某一功能相关命令,请移步 linux第二篇 命令
中间内容如有错误,还望指出。欲知更多详实内容和复杂问题,请移步后续篇章。
第一部分 linux简介。
简单废话两句,尽量说实用的。
Linux 是一种操作系统。相比于大众熟知的windows,主要特点是:
1 免费、开源。
2 字符界面为主(windows是图形界面为主)。
通俗的说字符界面就是你通过键盘输入字符命令并按下回车来操作这个电脑。不同于图形界面,它没有鼠标,只能通过键盘输入来进行操作,类似于windows的cmd。
初来可能会觉得字符界面粗糙且繁琐生硬。但其实熟练之后很多操作将比使用图形界面更加快捷,准确。
3 一切都是文件
第二部分 基础命令
为了方便理解,我会类比着举一些windows中的例子。
当你在linux机器上/使用远程终端连接到linux机器上时。你会处在个人目录下 /home/username, 这类似于你处在“我的电脑”的D盘下。这时你可以使用一些命令来操作文件或是做些你想做的事比如:
现在你的目录下应该是空空如也,你可以先创建两个文件夹,起名为 "d1","d2" 和"d3" 吧 命令为:
mkdir d1 d2 d3
1 mkdir 这个命令就是用于创建文件夹
2 后面跟着的是若干个你要创建的文件名,以空格隔开即可。大多命令的格式也都是类似如此
3 这在windows下你需要 右键->新建文件夹->输名字->回车 重复3次
接下要查看我是否创建成功了,即查看当前目录下有哪些文件
ls
1然后终端就会返回给你结果,你就可以看到 当前目录下有哪些文件/目录了。
2 如果想查看这些文件更详细的内容,请尝试增加参数-l 即输入一行 "ls -l"
接下来我们想在目录d1下新建文档 那么我们首先要移动到子目录d1下面 (相当于windows打卡d盘下的一个文件夹)
cd d1
然后我们可以再试下ls 来查看目录/d盘/d1下 有哪些文件
当然 下面是没有文件的 终端也就不会返回内容,只会继续等待你输入命令。
我们来创建一个新文件 ,名字为"hello" 吧
touch hello
这时我们可以再用ls检查一下下面的文件
这是就能看见有hello 这个文件了。
这时你可以给hello 改个名字 改成 world 吧
mv hello world
再用ls查看一下,可以看到,文件名更改成功了 文件的内容却是空空如也
不防给它加点内容。
再次之前我们可以先看下这个电脑现在的时间(就像windows右下角的时钟,只不过它不会常驻,只有你问它,它才会告诉你时间)
date
这时 date的内容是显示在终端的,也就是给你看的。接下我们要把这个时间的内容打印到这个文件里,使用 > 操作符
date > world
注意单词和字符之间有空格 且所有字符区分大小写 不可混用
这时我们的文件应该就有内容了,我们可以查看这个文件的内容
cat world
就会把这个文件的内容打出来。
接下来我们尝试把这个文件复制一份 副本名就叫world2好了
cp world world2
可以看到 world2的内容和world一样
这时我想查看我现在的目录是怎样的
pwd
并且我想把这个内容打印到world3
pwd > world3
也就是任意输出到终端的内容 都可以用> 重定向的输入到文件中。并且 这个文件可以之前不存在 会帮你新建好一个空的文件。
这时我们再试一下打印到world2
注意到world2中原有的时间信息被覆盖掉了 这也是> 符号的作用。如果不想覆盖掉这个文件的内容 只是在末尾追加 可以使用>>
>>
举一反三 我们可以把world的内容追加到world3的末尾
这时如果说我想打印一句自己想说的话 到这个文件末尾
echo "hello world" >> world3
如果我想对这个文件进行增删改查的文本编辑操作呢
那你就需要使用编辑器来打开这个文件 (就像你在windows下 需要用记事本来打开这个文件) 类似的 linux自带了vi 来打开文件 或者使用升级版本的vim。相比记事本 vim要强大的多。但上手的难度也大得多。 你可以通过:
vim world3
打开文件之后 再按i 键 进入编辑模式 然后可以通过上下左右键 来移动光标 退格键删减 回车键换行 也就是和不能用鼠标的记事本相类似了。 最后文件报存的时候需要按Esc键 进入命令模式 在输入:wq 来进行保存并退出 或者 :q! 来进行不保存退出。因为vim本身非常复杂,所以如果你想更高效的编辑文档,可以移步至vim学习。
然后是删除功能
rm world3
这时系统可能会询问你是否删除,输入y+回车就是同意 n+回车就是不同意
如果不想被询问 可以增加参数 rm -f world3 就不会再询问啦
这时我们想返回上一层目录 即回到"d盘"下
cd ..
之后我们想把d1下的world移动到d2下
mv d1/world d2/
注意到这里的mv更之前更改文件名是同一个命令
也就是mv这个命令兼有 移动和重命名的功能 并且也可以同时进行
mv d2/world d3/hello_world
注意到 ls 这个命令 默认是查看当前目录下的 文件/子目录 当后面跟随一个路径 时 就会显示该路径 (也就是实例中的子目录)下的内容
mv 可以用于移动文件夹 或者文件夹的改名
连同着文件夹中的内容也会一并移动
如果要删除一个文件夹 及其子内容 可以用:
rm -r d2
这时会逐个询问你每个文件/文件夹 是否删除 如果不想被询问 还是如上所说 使用-f
rm -rf d2
注意 rm -rf 是稍有风险的 删除的内容很难恢复。
d3之前移动到d2下面了 d2又删除掉了,现在只剩下d1了 我们进入d1目录下 可以看到d1下面还有这两个world文件
我们重写着两个文件内容 并新增not_world3
类似的cat 可以一并查看多个文件
有共性的文件名一个一个输入很麻烦,所以命令的后面是可以直接接正则表达式的 如
正则表达式的具体规则 请移步正则表达式篇
很多时候 文件的内容过大 cat直接查看文件会导致屏幕一直滚动。 这时可以使用:
head 查看头部几行 head -n 100 加上n参数 查看头部前100行
tail 类似head 查看尾部
cat filename | less 类似用 用vi查看这个文件。
这里引入了 | 符号 前面的命令执行完的结果不在输出到终端上 改为下一个命令的输入。
文件查找:
按名字查找文件
find -name "world*"
会查找当前目录 及其子孙目录 world* 也是正则表达式的形式 意味以world开头 后面任意数量任意字符
查找文件中的内容
grep test world1
会输出所有包含test的行。
可以用-n 参数显示行数 用-r参数查找改目录下所有子孙文件。
文件的操作就告一段落了。
接下来介绍一些其他常用的
ssh ip 连接到其他服务器
top 查看当前内存占用等信息
ps 查看当前正在运行的进程
tar 打包、压缩
awk 数据处理