Linux简单教程
Table of Contents
本wiki写于本科,主要目的是为了培训工作室里的同学学linux,对linux的基本命令做了些介绍。
1 GNU/Linux 教程之新人入坑记
1.1 Linux简介
Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。
Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu,Linux Mint),Fedora(及其相关版本Red Hat Enterprise Linux,CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器,LibreOffice办公软件,GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。
1.2 安装Linux
一般安装方法可分为实体机安装和虚拟机安装,实体机安装使用起来比较方便,但是有风险,对于新手来说,操作不当,会导致整个电脑要重新安装系统,而使用虚拟机安装的话,是随便你怎么折腾的,但是对于数据交互和体验方便不是那么理想,所以,怎么安装是看个人需求啦,我个人推荐是实体机安装的,一般都是安装双系统的,毕竟天朝大环境下完全放弃window还是有点艰难的。
对于新手来说,Ubuntu这个发行版是个非常不错选择,比较容易适应和入门,但是某种意义上来说,Ubuntu对于用户友好这上面花的时间越多,在其他方面的性能就没那么好了,毕竟Linux的强大之处不是在于用户友好的图形界面。
所以,我的建议是先用Ubuntu适应一段时间,当你感觉对Linux基本操作都了解后,可以换到其他可定制性强的发行版,比如Arch Linux, Gentoo等,定制一个属于自己的Linux。
1.3 系统结构简介
/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
/bin:bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
/boot:Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
/cdrom:这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom
/dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
/etc:etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
/home:如果建立一个用户,用户名是"xx”,那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
/lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
/lost+found:在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
/mnt:这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。可以参看/etc/fstab的定义。
/media:有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
/opt:这里主要存放那些可选的程序。
/proc:可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
/root:Linux超级权限用户root的家目录。
/sbin:这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的,凡是目录sbin中包含的都是root权限才能执行的。
/selinux :对SElinux的一些配置文件目录,SElinux可以让linux更加安全。
/tmp:临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
/usr 这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具
/usr/local:这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面、。
/usr/share :系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
var:这个目录的内容是经常变动的,看名字就知道,可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地.
1.4 目录操作
1.4.1 目录移动:cd
cd命令的基本语法为: cd [-LP] [directory | -]
directory为希望切换到的目录的名称,如果输入该命令时没有指定目录名称,那么cd默认会切换到home目录.如果用`-`代替目录名称,则会跳转到前一目录。 当然,常见的cd参数还有`..`,可跳转到父级目录。
有时在终端下疑惑当前在哪个目录时,可以使用`pwd`来显示当前目录的路径。
1.4.2 创建目录:mkdir
mkdir的语法为: mkdir [-p] directory…
1.4.3 移除目录:rmdir
rmdir的语法为: rmdir [-p] directory… 当然这个命令只能用来删除空目录,当目录里面有文件时,想要删除该目录的话,就要是`rm -r`命令了。
1.4.4 移动或重命名目录:mv
mv的语法为: mv directory target
1.4.5 显示目录内容:ls
ls的语法: ls [-参数] [目录] ls命令是linux中最重要的命令之一了,你可以`man ls`看一下它的帮助文档,你会发现居然有59个选项,当然一般人不可能用那么多的啦,下面我就将最常用的选项列出来。
1.4.6 磁盘空间使用情况:df,du
du可查看文件的大小,语法为: du -h [文件]
加-h参数会使输出结果更符合人的阅读习惯,当然你也可以不加XD,如果你数字感够强的话。
df可查看磁盘存储空间统计情况,`df -h`即可。
1.5 文件操作
1.5.1 文件权限
- 什么是文件权限
文件权限是Linux里面一个非常重要的概念了,对于文件操作来说,必须要对权限非常熟悉。
首先,什么是权限呢: 文件权限就是控制哪些用户标识可以访问文件,以及以何种方式访问文件。
文件权限分为3种,包括 读权限, 写权限, 和 执行权限. 3种权限之间彼此独立 。
使用文件权限的主要原因有两点:
- 限制其他用户的访问
- 避免自己错误使用
对于普通文件来说:
- 读权限=读取文件
- 写权限=写入文件
- 执行权限=执行文件
对于目录来说:
- 读权限=读取目录
- 写权限=创建,移动,复制或删除目录条目
- 执行权限=搜索目录
- 显示文件权限: ls -l
查看工作目录中的文件:`ls -l`
输出为:
total 64892 drwxr-xr-x 2 li users 4096 Aug 3 05:28 minecraft drwxr-xr-x 4 li users 4096 Aug 22 01:57 nikki drwxr-xr-x 5 li users 4096 Jul 24 19:06 Shank drwxr-xr-x 7 li lin 4096 Jun 28 2009 WorldOfGoo -rw-r----- 1 li lin 66428181 Sep 4 13:14 WorldOfGooSetup.1.41.tar.gz drwxr-xr-x 2 li users 4096 Jul 24 19:01 仙剑奇侠传1
输出结果中关于文件权限的信息即最左边的10个字符,含义如下:
第一个字符表示文件类型:
- d=目录
- -=普通文件
- l=链接
后面9个字符表示含义:
- r=读权限
- w=写权限
- x=运行权限
- -=没有权限
在分析文件权限时,将9个字符分为3组,从左到右分别表示文件属主,该组用户,其他用户标识的权限。比如上面的那个输出的WorldOfGooSetup文件为例,该文件的权限为-rw-r–—,分成3组即为:(表明为普通文件)- (Owner)-rw (Group)r– (Other)—, 该文件的属主为li,li用户在用户组lin里面,所以li用户对该普通文件有读取和写入权限,不可以运行,在lin用户组里的其他用户对该文件只有读取权限,其他用户对该文件即无读取权也无写入权,即无法访问该文件。
所以,通过文件权限的设定,可以很好的保证系统的安全性。
- d=目录
- 修改文件权限:chmod
该命令的语法为: chmod mode file…
其中mode为新的文件模式,file为文件或目录的名称。
只有属主和超级用户才能改变文件权限。
对于文件模式,Linux使用紧凑的3位数字来表示一个文件的权限。正如上一小节所说,一个权限集有3个字符,分别为rwx,如果对应位置有权限,则置为1, 比如上小节的那个WorldOfGooSetup的例子,该文件属主对其有读取和写入权,无运行权,所以属主对其的权限为110,该二进制化为10进制即为6, 同理剩下两组对应的文件模式为100和000即4和0, 所以该文件的文件模式为640.
使用chmod改变文件权限即通过改变文件模式即可。
练习:使一个普通文件对于属主来说,可运行,可读取,可写入,对于组中用户来说,可读取,可运行,不可写入,对于其他用户来说,可读取,不可写入,不可运行,则该文件的文件模式为多少?
- 限制其他用户的访问
1.5.2 创建文件:touch
该命令的语法为: touch [*-acm*] [*-t* time] file…
其中time是时间,格式为 [[YY]YY]MMDDhhmm[.ss].
默认情况下, touch 生成的文件的访问时间和修改时间为当前时间和日期,如果用`-t`参数,即可以修改文件的创建和修改时间。 touch 生成的文件默认的文件模式为644.
1.6 进程操作
1.6.1 学会使用ps程序
ps是Linux系统管理员必须要掌握的命令了,它能帮助查找特定进程,查看当前系统中发生的情况。
然而ps的选项也是非常复杂的,分为Unix版和BSD版,由于我经常使用BSD版本的ps,所以下面就讲讲BSD版的ps的参数及使用吧。
基本语法: ps [*ajluvx*] [*p* pid] [*U* userid]
下面介绍下主要的参数及其意义:
- ps :无参数时显示与当前用户和终端有关的进程
- ps a :显示与任何用户标识和终端有关的进程
- ps e :所有进程(包括守护进程)
- ps p pid:与指定进程有关的进程
- ps U userid:与指定用户标识有关的进程
有用的特殊组合:
- ps: 显示自己的进程
- ps ax : 显示所有进程
- ps aux : 显示所有进程,完整输出
- 学会使用kill程序
kill程序有两种应用:终止进程以及向进程发送信号。此处只讨论终止进程,对于新手来说用的比较多,特别是在终端模式下。
程序的基本语法为:
kill [*-9*] pid… | jobid…
一般我们都是通过使用`ps`or`jobs`来查看进程,当然如果进程数比较多,找起来非常麻烦的时候,可以使用`ps aux | grep 关键词`的方式来查找进程,这样比较快捷,当得到pid or jobid的时候,就可以直接`kill p(job)id`直接杀死啦。
for example:
- 监视系统进程:top
如果希望查看系统的整体运行动态情况,可以用 top 命令啦,该命令基本语法如下: top [*-d* delay] [*-n* count] [*-p* pid[,pid]…] delay是刷新间隔(s), count是刷新的总时间量,pid是进程id,表示只需要显示该进程的信息。
1.7 编辑器Vim
俗话说,宝马侍英雄,宝剑配良将,你说咱Linuxer总得有个拿得出手的编辑器嘛,所以,Vim,你值得拥有。(ps:Emacs也是非常不错的哦,只可惜我先用了vim,不想换了)
关于vim神器,短短的教程也讲不了那么多,推荐先看一个陈皓的博文呢,写的非常不错,简明vim攻略
2 小测试
1.创建一个权限为755的文件,文件内容为anything you want to say。
2.创建2个目录,一个为Video/,一个为Music/,在Music/目录里面建一个Pop/文件夹
3.使用top,ps查看系统进程
4.在用户主目录下使用pstree命令,并将结果重定向到result文件。