【搬运】Linux新手快速入门指南
更新时间 | 来源 | 作者 |
---|---|---|
2017/06/05 07:25:24 | segmentfault.com | zhangwang |
转载者注:
本文来源于segmentfault.com,后转载至m.linuxidc.com,因前者原文已失传,后者排版过于垃圾,故而搬运至此,方便查阅 ,也利于保护视力 。搬运完成后,本文将持续更新,加入个人见解,直至形成原创文章。
我以前经常在网上查类似于:
- “在Ubuntu下如何让某个用户对某个文件夹拥有可读可写的权限?”
- “Mac上如何通过命令行启动某个程序?”
- “在Linux中如何彻底卸载某个软件?”
这类的问题。
当然这类问题都可以较容易的在网上找到解决方案,但是每次解决我都是知其然不知其所以然,所以当下次我碰到类似的问题时,我还是要花一定的时间去查,这让我有一种挫败感;开发相关的知识大多变得特别快,但是有些知识特别经典,其实比起某些库或框架也许更值得系统的了解。
这也是本文的写作初衷,一方面是自己对近两个月来看的相关资料做一个总结,另一方面也希望可以帮助Linux初学者更好的理解,运用这个系统。
先决条件
Linux安装
在学习Linux之前,你需要拥有一台搭载Linux的设备,这里推荐使用常见的Linux发行版之一Ubuntu 20.04。
你可以在这里找到其安装方法。
Linux配置
由于各类Linux发行版不像Windows那样可以开箱即用,安装完成之后需要进行各类配置,可以参考这篇文章。
Linux快速开始
图形界面
在Windows下,我们习惯于使用各种具有完善图形界面的软件,毫无疑问,图形界面大大降低了普通人使用电脑的成本,甚至个人计算机的普及,图形界面都功不可没。
在Linux下也有图形界面(俗话说的桌面),我们可以先看看实验楼《Linux基础入门》中对此的描述:
相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,而 Linux 上的这套软件以前是 XFree86,现在则是 xorg(X.Org),而这套软件又是通过 X 窗口系统(X Window System,也常被称为 X11 或 X)实现的,X 本身只是工具包及架构协议,而 xorg 便是 X 架构规范的一个实现体,也就是说它是实现了 X 协议规范的一个提供图形界面服务的服务器,就像实现了 http 协议提供 web 服务的 Apache 。如果只有服务器也是不能实现一个完整的桌面环境的,当然还需要一个客户端,我们称为 X Client,像如下几个大家熟知也最流行的实现了客户端功能的桌面环境 KDE,GNOME,XFCE,LXDE 。
命令行,终端,Shell和Console
对Linux图形界面的有关描述中,总是不乏提及命令行,可见其重要性。
命令行(CLI)
引自维基百科-命令行界面:
命令行界面是相对于图形界面而言的,较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。命令行中,可以使用脚本语言和宏语言,以其提供更加丰富的控制与自动化的系统管理能力。
终端(Terminal)
终端特指计算机或通信网络中输入或输出信息的装置,通常由键盘和显示器等组成。但是使用Mac或者安装好了Ubuntu的童鞋会发现有一个程序也叫终端(Terminal),在某种意义上,终端还是我们与系统交互的窗口,严格来讲,我们现在在系统中运行的终端程序只是终端模拟器(常见的终端模拟器有以下几个: gnome-terminal,kconsole,xterm,rxvt,kvt,nxterm 和 eterm),更多关于终端的描述,可以参考这篇文章。
这里还得插一句:终端本质上是对应着 Linux 上的 /dev/tty
设备(设备稍后详述),Linux 的多用户登陆就是通过不同的 /dev/tty
设备完成的.
shell
英语好的同学一下子就可以看出shell是壳的意思,有壳就有核,核指的是 UNIX/Linux 内核,Shell之所以叫Shell 是因为它隐藏了操作系统底层的细节。我们可以换个大家一下就能懂的词来理解Shell:命令解析器。
当我们在终端中输入node,按回车,会启用node解释器,输入python按回车会启动Python解释器,之后就可以在里面输入并执行对应语言的代码啦。
在 UNIX/Linux 中比较流行的常见的 Shell 有 bash、zsh(用没用过美美的oh my zsh)、ksh、csh 等等,Ubuntu 终端默认使用的是 bash。本文后面对shell命令的讲解也大多基于bash。
console
从字面上来讲,console是控制台的意思,现在的console一般与终端在外表上没什么区别,不过其在功能上却大不相同,console的出现有其历史原因,简单的说来,就是在以前电脑还是很稀缺的物件的年代,一台电脑是会陪伴多套终端的,这时候就需要专门的系统管理员利用console来管理系统。目前对一般人来说console的作用可能没有那么大了,不过可能其还是会在一些特殊场景下有很大的作用,具体我也不是很清楚,在此就不阐述了。
终端分字符终端和图形终端。字符终端(Character Terminal)也叫文本终端(Text Terminal),是只能接收和输出文本信息的终端。图形终端(Graphics Terminal)不但可以接收和输出文本信息,也可以输出图形图像。
一般说来字符终端的的标准是DEC公司1978制造的型号为VT100的终端。而图形终端的标准是X Window,它是大多数Unix-like系统GUI界面的基础,xterm是Unix世界里最著名的图形终端模拟程序。
以Ubuntu具体说来,它默认提供七个终端,其中第一个到第六个虚拟控制台是全屏的字符终端,第七个虚拟控制台是图形终端,用来运行GUI程序,按快捷键Ctrl+Alt+F1
,Ctrl+Alt+F2
…,Ctrl+Alt+F6
,Ctrl+Alt+F7
可完成对应的切换。
shell的使用
shell可能是我们在Linux下使用最多的工具了,本小节我们我们以bash为例,当然zsh下以下命令也是适用的,我们先熟悉一下shell的基本操作。
输入和输出
命令行的操作分为输入和输出两个方面:
-
输入:打开终端,按键盘输入,按回车结束输入并执行;
-
输出:输出会返回你想要的结果,比如你看的是文件,就会返回文件的内容。如果是执行的程序,执行失败会告诉你哪里错了,如果施行成功会没有输出,这是linux的哲学:没有结果就是最好的结果。
提高输入效率
合理的使用快捷键确实可以明显的提高工作效率,尤其是类似Tab
这样的补全键,对shell常用快捷键的总结如下:
-
Tab
:点击Tab
键可以实现命令补全,目录补全、命令参数补全; -
Ctrl+C
: 强行终止当前程序(常用); -
Ctrl+D
: 键盘输入结束或退出终端(常用); -
Ctrl+S
: 暂停当前程序,暂停后按下任意键恢复运行; -
Ctrl+Z
: 将当前程序放到后台运行,恢复到前台为命令fg
; -
Ctrl+A
: 将光标移至输入行头,相当于Home
键; -
Ctrl+E
: 将光标移至输入行末,相当于End
键; -
Ctrl+K
: 删除从光标所在位置到行末,常配合Ctrl+A
使用; -
Alt+Backspace
: 向前删除一个单词,常配合Ctrl+E
使用; -
Shift+PgUp
: 将终端显示向上滚动; -
Shift+PgDn
: 将终端显示向下滚动; -
方向键
↑
和↓
: 浏览历史输入记录;
熟练运用上述的操作技巧将大大提升我们命令行的操作效率。
常见的bash命令
真正解决问题需要应用各种bash命令。
文件相关
-
ls
: 列出某文件夹下的文件,添加参数可实现更细致的功能, -
ls -a
: 列出所有文件,包括隐藏文件 -
ls -l
: 列出文件及其详细信息 -
cd
: 切换目录,cd
到不存在的目录时会报错 -
pwd
: 打印当前目录 -
cat
: 读取某一个文件内的内容 -
wc
: 获取某一个文件的行数和字数,如:1
2$ wc package.json
# 79 175 2712 package.json -
cp
: 复制某文件 -
mkdir
: 创建目录 -
rmdir
: 删除目录 -
rm -rf
:r
表示删除内部所有文件,f
参数表示强制,rm -r junk
可用来删除/junk
目录及其下面的所有文件; -
mv
移动:mv photos.jpg Photos
可将将photos.jpg
移动到文件夹/Photos
下 -
sort
: 排序 -
diff
: 比较两个文件的异同
系统相关
-
date
: 获取当前时间 -
uname
: 返回系统名称 -
hostname
: 返回系统的主机名称
网络相关:
-
host xx.xxx.com
: 显示某域名相关托管服务器/邮件服务器 -
ping 8.8.8.8
: 检测到地址8.8.8.8
的连接
搜索相关命令:
-
whereis
:这是一个搜索速度很快的命令,因为它并没有从硬盘中依次查找,而是直接从数据库中查询。
whereis
只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s),可以这样使用它:1
$ whereis who
-
locate
:一个快而全的搜索指令。它通过/var/lib/mlocate/mlocate.db 数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。
locate
命令可带参数,如-i 参数可以忽略大小写进行查找。可以用来查找指定目录下的不同文件类型。你可以使用以下命令查找
/etc
下所有以sh
开头的文件1
$ locate /etc/sh
查找
/usr/share/
下所有后缀为jpg
的文件,注意*
前面要添加反斜杠\
来转义,否则会找不到文件:1
$ locate /usr/share/\*.jpg
-
which
:我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令,如:
1
$ which man
-
find
:find
可以说是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。find
命令的格式为:1
$ find [path] [option] [action]
如:
1
2
3$ sudo find /etc/ -name interfaces/
$ sudo find /etc/ -name \*.list
其它:
-
--version/-V
: 查看某个程序的版本 -
history
: 显示历史 -
echo
: 返回你给的值,可以简单理解为js中的console
或python中的print
-
man
使用一个叫做less
的程序,查看某个命令的帮助文档
…未完待续