声明:内容来源于网络,本人只是在此稍作整理,如有涉及版权问题,归传智播客官方所有。
认识Linux
1.什么是操作系统
答:操作系统是****
2.现实⽣活中的操作系统
答:win7、Mac、Android、iOS等等。
3. 操作系统的发展史(了解)
Unix
1965年之前的时候,电脑并不像现在⼀样普遍,它可不是⼀般⼈能碰的起的,除⾮是军事 或者学院的研究机构,⽽且当时⼤型主机⾄多能提供30台终端(30个键盘、显示器),连 接⼀台电脑。
为了解决数量不够⽤的问题,1965年左后由⻉尔实验室、麻省理⼯学院 以及 通⽤电⽓共同发起了Multics项⽬,想让⼤ 型主机⽀持300台终端。
1969年前后这个项⽬进度缓慢,资⾦短缺,⻉尔实验室退出了研究。
1969年从这个项⽬中退出的Ken Thompson当时在实验室⽆聊时,为了让⼀台空闲的电脑 上能够运⾏“星际旅⾏”游⾏,在8⽉份左右趁着其妻⼦探亲的时间,⽤了1个⽉的时间编写出了Unix操作系统的原型。
1970年,美国⻉尔实验室的Ken Thompson,以BCPL语⾔为基础,设计出很简单且很 接近硬件的B语⾔(取BCPL的⾸字⺟),并且他⽤B语⾔写了第⼀个UNIX操作系统。
因为B语⾔的跨平台性较差,为了能够在其他的电脑上也能够运⾏这个⾮常棒的Unix操作系统,Dennis Ritchie和Ken Thompson从B语⾔的基础上准备研究⼀个更好的语⾔。
1972年,美国⻉尔实验室的 Dennis Ritchie在B语⾔的基础上最终设计出了⼀种新的语 ⾔,他取了BCPL的第⼆个字⺟作为这种语⾔的名字,这就是C语⾔。
1973年初,C语⾔的主体完成。Thompson和Ritchie迫不及待地开始⽤它完全重写了现在 ⼤名鼎鼎的Unix操作系统。
Minix
因为AT&T(通⽤电⽓)的政策改变,在Version 7 Unix推出之后,发布新的使⽤条款,将 UNIX源代码私有化,在⼤学中不再能使⽤UNIX源代码。Andrew S. Tanenbaum(塔能鲍 姆)教授为了能在课堂上教授学⽣操作系统运作的实务细节,决定在不使⽤任何AT&T的源 代码前提下,⾃⾏开发与UNIX兼容的操作系统,以避免版权上的争议。他以⼩型 UNIX(mini-UNIX)之意,将它称为MINIX。
Linux
因为Minix只是教学使⽤,因此功能并不强,因此Torvalds利⽤GNU的bash当做开发环 境,gcc当做编译⼯具,编写了Linux内核-v0.02,但是⼀开始Linux并不能兼容Unix,即 Unix上跑的应⽤程序不能在Linux上跑,即应⽤程序与内核之间的接⼝不⼀致,因为Unix 是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应⽤程序与内核的接⼝规范);⼀开始Linux只适⽤于386, 后来经过全世界的⽹友的帮助,最终能够兼容多种硬件。
操作系统的发展
Minix没有⽕起来的原因
Minix的创始⼈说,MINIX 3没有统治世界是源于他在1992年犯下的⼀个错误,当时 他认为BSD必然会⼀统天下,因为它是⼀个更稳定和更成熟的系统,其它操作系统 难以与之竞争。因此他的MINIX的重⼼集中在教育上。四名BSD开发者已经成⽴了 ⼀家公司销售BSD系统,他们甚⾄还有⼀个有趣的电话号码1-800-ITS-UNIX。然⽽ 他们正因为这个电话号码⽽惹⽕上身。美国电话电报公司因电话号码⽽提起诉讼。 官司打了三年才解决。在此期间,BSD陷于停滞,⽽Linux则借此⼀⻜冲天。他的 错误在于没有意识官司竟然持续了如此⻓的时间,以及BSD会因此受到削弱。如果 美国电话电报公司没有起诉,Linux永远不会流⾏起来,BSD将统治世界。
Linux的不同版本以及应⽤领域
1.Linux内核及发⾏版介绍
<1>Linux内核版本
内核(kernel)是系统的⼼脏,是运⾏程序和管理像磁盘和打印机等硬件设备的核⼼程序, 它提供了⼀个在裸设备与应⽤程序间的抽象层。
Linux内核版本⼜分为稳定版和开发版,两种版本是相互关联,相互循环:
稳定版:具有⼯业级强度,可以⼴泛地应⽤和部署。新的稳定版相对于较旧的只是修 正⼀些bug或加⼊⼀些新的驱动程序。
开发版:由于要试验各种解决⽅案,所以变化很快。
内核源码⽹址:http://www.kernel.org所有来⾃全世界的对Linux源码的修改最终都会汇总 到这个⽹站,由Linus领导的开源社区对其进⾏甄别和修改最终决定是否进⼊到Linux主线 内核源码中。
<2>Linux发⾏版本
Linux发⾏版(也被叫做GNU/Linux发⾏版) 通常包含了包括桌⾯环境、办公套件、媒体播 放器、数据库等应⽤软件。
2.应⽤领域
<1>个⼈桌⾯领域的应⽤
此领域是传统linux应⽤最薄弱的环节,传统linux由于界⾯简单、操作复杂、应⽤软件少的 缺点,⼀直被windows所压制,但近些年来随着ubuntu、fedora等优秀桌⾯环境的兴起, 同时各⼤硬件⼚商对其⽀持的加⼤,linux在个⼈桌⾯领域的占有率在逐渐的提⾼.
典型代表:ubuntu、fedora、suse linux
在Ubuntu中玩QQ
<2>服务器领域
linux在服务器领域的应⽤是其重要分⽀
linux免费、稳定、⾼效等特点在这⾥得到了很好的体现,但早期因为维护、运⾏等原因同 样受到了很⼤的限制,但近些年来linux服务器市场得到了⻜速的提升,尤其在⼀些⾼端领 域尤为⼴泛
典型代表:
Red Hat公司的AS系列
完全开源的debian系列
suse EnterPrise 11系列等
<3>嵌⼊式领域
近些年来linux在嵌⼊式领域的应⽤得到了⻜速的提⾼。
linux运⾏稳定、对⽹络的良好⽀持性、低成本,且可以根据需要进⾏软件裁剪,内核最⼩ 可以达到⼏百KB等特点,使其近些年来在嵌⼊式领域的应⽤得到⾮常⼤的提⾼。
主要应⽤:机顶盒、数字电视、⽹络电话、程控交换机、⼿机、PDA、等都是其应⽤领 域,得到了摩托罗拉、三星、NEC、Google等公司的⼤⼒推⼴。
⽂件和⽬录
Windows和Linux⽂件系统区别
在windows平台下,打开“计算机”,我们看到的是⼀个个的驱动器盘符,每个驱动器都有⾃⼰的根⽬录结构,这样形成了多个树并列的情形。
在Linux下,我们是看不到这些驱动器盘符,我们看到的是⽂件夹(⽬录):
类Unix系统⽬录结构
ubuntu没有盘符这个概念,只有⼀个根⽬录/,所有⽂件都在它下⾯
Linux⽬录
/:根⽬录,⼀般根⽬录下只存放⽬录,在Linux下有且只有⼀个根⽬录。所有的东⻄都是从这⾥开始。当你在终端⾥输⼊“/home”,你其实是在告诉电脑,先从/(根⽬录)开始,再进⼊到home⽬录。
/bin、/usr/bin: 可执⾏⼆进制⽂件的⽬录,如常⽤的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时⽤到的⼀些⽂件,如Linux的内核⽂件:/boot/vmlinuz,系统引导管理器:/boot/grub。
/dev:存放linux系统下的设备⽂件,访问该⽬录下某个⽂件,相当于访问某个设备, 常⽤的是挂载光驱 mount /dev/cdrom /mnt。
/etc:系统配置⽂件存放的⽬录,不建议在此⽬录下存放可执⾏⽂件,重要的配置⽂件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的⽤户家⽬录,新增⽤户账号时,⽤户的家⽬录都存放在此⽬录下,~ 表示当前⽤户的家⽬录,~edu表示⽤户edu的家⽬录。
/lib、/usr/lib、/usr/local/lib:系统使⽤的函数库的⽬录,程序在执⾏过程中,需要调⽤⼀些额外的参数时需要函数库的协助。
/lost+fount:系统异常产⽣错误时,会将⼀些遗失的⽚段放置于此⽬录下。
/mnt: /media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不⼀定,可以选 择任意位置进⾏挂载。
/opt:给主机额外安装软件所摆放的⽬录。
/proc:此⽬录的数据都在内存中,如系统核⼼,外部设备,⽹络状态,由于数据都存 放于内存中,所以不占⽤磁盘空间,⽐较重要的⽬录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员root的家⽬录。
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使⽤的可执⾏命令,如fdisk、 shutdown、mount 等。与 /bin 不同的是,这⼏个⽬录是给系统管理员root使⽤的命令,⼀般⽤户只能"查看"⽽不能设置和使⽤。
/tmp:⼀般⽤户或正在执⾏的程序临时存放⽂件的⽬录,任何⼈都可以访问,重要数 据不可放置在此⽬录下。
/srv:服务启动之后需要访问的数据⽬录,如www服务需要访问的⽹⻚数据存放在 /srv/www内。
/usr:应⽤程序存放⽬录,/usr/bin存放应⽤程序,/usr/share存放共享数据,/usr/lib 存放不能直接运⾏的,却是许多程序运⾏所必需的⼀些函数库⽂件。/usr/local:存放软件升级包。/usr/share/doc:系统说明⽂件存放⽬录。/usr/share/man:程序说明⽂件存放⽬录。
/var:放置系统执⾏过程中经常变化的⽂件,如随时更改的⽇志⽂件 /var/log,/var/log/message:所有的登录⽂件存放⽬录,/var/spool/mail:邮件存放 的⽬录,/var/run:程序或服务启动后,其PID存放在该⽬录下。
⽤户⽬录
位于/home/user,称之为⽤户⼯作⽬录或家⽬录,表示⽅式:
/home/user
~
绝对路径
从/⽬录开始描述的路径为绝对路径,如:
cd /home
ls /usr
相对路径
从当前位置开始描述的路径为相对路径,如:
cd ../../
ls abc/def
.和..
每个⽬录下都有.和..
. 表示当前⽬录
.. 表示上⼀级⽬录,即⽗⽬录
根⽬录下的.和..都表示当前⽬录
⽂件权限
⽂件权限就是⽂件的访问控制权限,即哪些⽤户和组群可以访问⽂件以及可以执⾏什么样 的操作。
Unix/Linux系统是⼀个典型的多⽤户系统,不同的⽤户处于不同的地位,对⽂件和⽬录有 不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对⽤户权限作了严格的界定外,还在⽤户身份认证、访问控制、传输安全、⽂件读写权限等⽅⾯作了周密的控制。
在Unix/Linux中的每⼀个⽂件或⽬录都包含有访问权限,这些访问权限决定了谁能访问和 如何访问这些⽂件和⽬录。
访问⽤户
通过设定权限可以从以下三种访问⽅式限制访问权限:
- 只允许⽤户⾃⼰访问(所有者)所有者就是创建⽂件的⽤户,⽤户是所有⽤户所创建⽂件的所有者,⽤户可以允许所在的⽤户组能访问⽤户的⽂件。
- 允许⼀个预先指定的⽤户组中的⽤户访问(⽤户组)⽤户都组合成⽤户组,例如,某⼀类或某⼀项⽬中的所有⽤户都能够被系统管理员归为⼀个⽤户组,⼀个⽤户能够 授予所在⽤户组的其他成员的⽂件访问权限。
- 允许系统中的任何⽤户访问(其他⽤户)⽤户也将⾃⼰的⽂件向系统内的所有⽤户开放,在这种情况下,系统内的所有⽤户都能够访问⽤户的⽬录或⽂件。在这种意义上,系统内的其他所有⽤户就是other⽤户类。
访问权限
⽤户能够控制⼀个给定的⽂件或⽬录的访问程度,⼀个⽂件或⽬录可能有读、写及执⾏权限:
- 读权限(r)对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览⽬录的 权限。
- 写权限(w)对⽂件⽽⾔,具有新增、修改⽂件内容的权限;对⽬录来说,具有删除、移动⽬录内⽂件的权限。
- 可执⾏权限(x)对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录了来说该⽤户具有进⼊⽬录的权限。
注意:通常,Unix/Linux系统只允许⽂件的属主(所有者)或超级⽤户改变⽂件的读写权限。
示例说明
第1个字⺟代表⽂件的类型:“d” 代表⽂件夹、“-” 代表普通⽂件、“c” 代表硬件字符设 备、“b” 代表硬件块设备、“s”表示管道⽂件、“l” 代表软链接⽂件。 后 9 个字⺟分别代表三 组权限:⽂件所有者、⽤户者、其他⽤户拥有的权限。
每⼀个⽤户都有它⾃身的读、写和执⾏权限。
第⼀组权限控制访问⾃⼰的⽂件权限,即所有者权限。 第⼆组权限控制⽤户组访问其中⼀个⽤户的⽂件的权限。 第三组权限控制其他所有⽤户访问⼀个⽤户的⽂件的权限。
这三组权限赋予⽤户不同类型(即所有者、⽤户组和其他⽤户)的读、写及执⾏权限就构 成了⼀个有9种类型的权限组。
常⽤基本命令
1.命令使⽤⽅法
Linux命令格式:
command [-options] [parameter1] …
说明:
command:命令名,相应功能的英⽂单词或单词的缩写 [-options]:选项,可⽤来对命令 进⾏控制,也可以省略, []代表可选parameter1 …:传给命令的参数:可以是零个、⼀个或多个。
2.查看帮助⽂档
<1>--help
⼀般是linux命令⾃带的帮助信息。
如:ls --help
<2>man
man是linux提供的⼀个⼿册,包含了绝⼤部分的命令、函数使⽤说明。
该⼿册分成很多章节(section),使⽤man时可以指定不同的章节来浏览。
例:man ls ; man 2 printf
man是按照⼿册的章节号的顺序进⾏搜索的。
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示⼿册⻚的下⼀屏 |
Enter键 | ⼀次滚动⼿册⻚的⼀⾏ |
b | 回滚⼀屏 |
f | 前滚⼀屏 |
q | 退出 |
man | 命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
3.⾃动补全
在敲出命令的前⼏个字⺟的同时,按下tab键,系统会⾃动帮我们补全命令。
4.历史命令
当系统执⾏过⼀些命令后,可按上下键翻看以前的命令,history将执⾏过的命令列举出来。
Linux命令-⽂件、磁盘管理
1.⽂件管理
<1>查看⽂件信息:ls
ls是英⽂单词list的简写,其功能为列出⽬录的内容,是⽤户最常⽤的命令之⼀,它类似于 DOS下的dir命令。
注意:Linux⽂件或者⽬录名称最⻓可以有265个字符,“.”代表当前⽬录,“..”代表上⼀级⽬录,以“.”开头的⽂件为隐藏⽂件,需要⽤-a参数才能显示。
ls常⽤参数:
参数 | 含义 |
---|---|
-a | 显示指定⽬录下所有⼦⽬录与⽂件,包括隐藏⽂件 |
-l | 以列表⽅式显示⽂件的详细信息 |
-h | 配合-l以⼈性化的⽅式显示⽂件⼤⼩ |
图中列出的信息含义如下所示:
与DOS下的⽂件操作类似,在Unix/Linux系统中,也同样允许使⽤特殊字符来同时引⽤多 个⽂件名,这些特殊字符被称为通配符。
通配符 | 含义 |
---|---|
* | ⽂件代表⽂件名中所有字符 |
ls te* | 查找以te开头的⽂件 |
ls *html | 查找结尾为html的⽂件 |
? | 代表⽂件名中任意⼀个字符 |
ls ?.c | 只找第⼀个字符任意,后缀为.c的⽂件 |
ls a.? | 只找只有3个字符,前2字符为a.,最后⼀个字符任意的⽂件 |
[] | [”和“]”将字符组括起来,表示可以匹配字符组中的任意⼀个。“-”⽤于表示 字符范围 |
[abc] | 匹配a、b、c中的任意⼀个 |
[a-f] | 匹配从a到f范围内的的任意⼀个字符 |
ls [a-f]* | 找到从a到f范围内的的任意⼀个字符开头的⽂件 |
ls a-f | 查找⽂件名为a-f的⽂件,当“-”处于⽅括号之外失去通配符的作⽤ |
\ | 如果要使通配符作为普通字符使⽤,可以在其前⾯加上转义字 符。“?”和“*”处于⽅括号内时不⽤使⽤转义字符就失去通配符的作⽤ |
ls *a | 查找⽂件名为*a的⽂件 |
<2>输出重定向命令:>
Linux允许将命令执⾏结果重定向到⼀个⽂件,本应显示在终端上的内容保存到指定⽂件中。
如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )
注意: >输出重定向会覆盖原来的内容,>>输出重定向则会追加到⽂件的尾部。
<3>分屏显示:more
查看内容时,在信息过⻓⽆法在⼀屏上显示时,会出现快速滚屏,使得⽤户⽆法看清⽂件的内容,此时可以使⽤more命令,每次只显示⼀⻚,按下空格键可以显示下⼀⻚,按下q 键退出显示,按下h键可以获取帮助。
<4>管道:|
管道:⼀个命令的输出可以通过管道做为另⼀个命令的输⼊。
管道我们可以理解现实⽣活中的管⼦,管⼦的⼀头塞东⻄进去,另⼀头取出来,这⾥“ | ”的左右分为两端,左端塞东⻄(写),右端取东⻄(读)。
<5>清屏:clear
clear作⽤为清除终端上的显示(类似于DOS的cls清屏功能),也可使⽤快捷键:Ctrl + L
<6>切换⼯作⽬录: cd
在使⽤Unix/Linux的时候,经常需要更换⼯作⽬录。cd命令可以帮助⽤户切换⼯作⽬ 录。 Linux所有的⽬录和⽂件名⼤⼩写敏感。
cd后⾯可跟绝对路径,也可以跟相对路径。如果省略⽬录,则默认切换到当前⽤户的主⽬录。
命令 | 含义 |
---|---|
cd | 切换到当前⽤户的主⽬录(/home/⽤户⽬录),⽤户登陆的时候,默认的⽬录 就是⽤户的主⽬录。 |
cd ~ | 切换到当前⽤户的主⽬录(/home/⽤户⽬录) |
cd . | 切换到当前⽬录 |
cd .. | 切换到上级⽬录 |
cd - | 可进⼊上次所在的⽬录 |
注意:如果路径是从根路径开始的,则路径的前⾯需要加上 “ / ”,如 “ /mnt ”,通常进⼊某个 ⽬录⾥的⽂件夹,前⾯不⽤加 “ / ”。
<7>显示当前路径:pwd
使⽤pwd命令可以显示当前的⼯作⽬录,该命令很简单,直接输⼊pwd即可,后⾯不带参数。
<8>创建⽬录:mkdir
通过mkdir命令可以创建⼀个新的⽬录。参数-p可递归创建⽬录。
需要注意的是新建⽬录的名称不能与当前⽬录中已有的⽬录或⽂件同名,并且⽬录创建者必须对当前⽬录具有写权限。
<9>删除⽬录:rmdir
可使⽤rmdir命令删除⼀个⽬录。注意:必须离开⽬录,并且⽬录必须为空⽬录,不然提示删除失败。
<10>删除⽂件:rm
可通过rm删除⽂件或⽬录。使⽤rm命令要⼩⼼,因为⽂件删除后不能恢复。为了防⽌⽂件误删,可以在rm后使⽤-i参数以逐个确认要删除的⽂件。
常⽤参数及含义如下表所示:
参数 | 含义 |
---|---|
-i | 以进⾏交互式⽅式执⾏ |
-f | 强制删除,忽略不存在的⽂件,⽆需提示 |
-r | 递归地删除⽬录下的内容,删除⽂件夹时必须加此参数 |
<11>建⽴链接⽂件:ln
Linux链接⽂件类似于Windows下的快捷⽅式。
链接⽂件分为软链接和硬链接。
软链接:软链接不占⽤磁盘空间,源⽂件删除则软链接失效。
硬链接:硬链接只能链接普通⽂件,不能链接⽬录。
使⽤格式:
ln 源⽂件 链接⽂件
ln -s 源⽂件 链接⽂件
如果 没有-s
选项代表建⽴⼀个硬链接⽂件,两个⽂件占⽤相同⼤⼩的硬盘空间,即使删除了源⽂件,链接⽂件还是存在,所以-s选项是更常⻅的形式。
注意:如果软链接⽂件和源⽂件不在同⼀个⽬录,源⽂件要使⽤绝对路径,不能使⽤相对路径。
<12>查看或者合并⽂件内容:cat
<13>⽂本搜索:grep
Linux系统中grep命令是⼀种强⼤的⽂本搜索⼯具,grep允许对⽂本⽂件进⾏模式查找。 如果找到匹配模式, grep打印包含模式的所有⾏。
grep⼀般格式为:
grep [-选项] ‘搜索内容串’⽂件名
在grep命令中输⼊字符串参数时,最好引号或双引号括起来。例如:grep ‘a’ 1.txt。
常⽤选项说明:
选项 | 含义 |
---|---|
-v | 显示不包含匹配⽂本的所有⾏(相当于求反) |
-n | 显示匹配⾏及⾏号 |
-i | 忽略⼤⼩写 |
grep搜索内容串可以是正则表达式。
正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些 特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。
grep常⽤正则表达式:
参数 | 含义 |
---|---|
^a | ⾏⾸,搜寻以a开头的⾏;grep -n '^a' 1.txt |
ke$ | ⾏尾,搜寻以ke结束的⾏;grep -n 'ke$' 1.txt |
[Ss]igna[Ll] | 匹配 [] ⾥中⼀系列字符中的⼀个;搜寻匹配单词signal、signaL、 Signal、SignaL的⾏;grep -n '[Ss]igna[Ll]' 1.txt |
. | (点)匹配⼀个⾮换⾏符的字符;匹配e和e之间有任意⼀个字符, 可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt |
<14>查找⽂件:find
find命令功能⾮常强⼤,通常⽤来在特定的⽬录下搜索符合条件的⽂件,也可以⽤来搜索特定⽤户属主的⽂件。
常⽤⽤法:
命令 | 含义 |
---|---|
find ./ -name test.sh | 查找当前⽬录下所有名为test.sh的⽂件 |
find ./ -name '*.sh' | 查找当前⽬录下所有后缀为.sh的⽂件 |
find ./ -name "[A-Z]*" | 查找当前⽬录下所有以⼤写字⺟开头的⽂件 |
find /tmp -size 2M | 查找在/tmp⽬录下等于2M的⽂件 |
find /tmp -size +2M | 查找在/tmp⽬录下⼤于2M的⽂件 |
find /tmp -size -2M | 查找在/tmp⽬录下⼩于2M的⽂件 |
find ./ -size +4k -size -5M | 查找当前⽬录下⼤于4k,⼩于5M的⽂件 |
find ./ -perm 777 | 查找当前⽬录下权限为777的⽂件或⽬录 |
<15>拷⻉⽂件:cp
cp命令的功能是将给出的⽂件或⽬录复制到另⼀个⽂件或⽬录中,相当于DOS下的copy 命令。
常⽤选项说明:
选项 | 含义 |
---|---|
-a | 该选项通常在复制⽬录时使⽤,它保留链接、⽂件属性,并递归地复制⽬录,简单⽽⾔,保持⽂件原有属性。 |
-f | 已经存在的⽬标⽂件⽽不提示 。 |
-i | 交互式复制,在覆盖⽬标⽂件之前将给出提示要求⽤户确认。 |
-r | 若给出的源⽂件是⽬录⽂件,则cp将递归复制该⽬录下的所有⼦⽬录和⽂件,⽬标⽂件必须为⼀个⽬录名。 |
-v | 显示拷⻉进度。 |
<16>移动⽂件:mv
⽤户可以使⽤mv命令来移动⽂件或⽬录,也可以给⽂件或⽬录重命名。
常⽤选项说明:
选项 | 含义 |
---|---|
-f | 禁⽌交互式操作,如有覆盖也不会给出提示。 |
-i | 确认交互⽅式操作,如果mv操作将导致对已存在的⽬标⽂件的覆盖,系统会询问是否重写,要求⽤户回答以避免误覆盖⽂件。 |
-v | 显示移动进度 |
<17>归档管理:tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常⽤的备份⼯具,此命令可以把⼀系列⽂件归档到⼀个⼤⽂件中,也可以把档案⽂件解开以恢复数据。
tar使⽤格式tar [参数]打包⽂件名⽂件
tar命令很特殊,其参数前⾯可以使⽤“-”,也可以不使⽤。
常⽤参数:
参数 | 含义 |
---|---|
-c | ⽣成档案⽂件,创建打包⽂件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案⽂件名称,f后⾯⼀定是.tar⽂件,所以必须放选项最后 |
-t | 列出档案中包含的⽂件 |
-x | 解开档案⽂件 |
注意:除了f需要放在参数的最后,其它参数的顺序任意。
<18>⽂件压缩解压:gzip
tar与gzip命令结合使⽤实现⽂件打包、压缩。tar只负责打包⽂件,但不压缩,⽤gzip压缩tar打包后的⽂件,其扩展名⼀般⽤xxxx.tar.gz。
gzip使⽤格式如下:
gzip [选项] 被压缩⽂件
常⽤选项:
选项 | 含义 |
---|---|
-d | 解压 |
-r | 压缩所有⼦⽬录 |
tar这个命令并没有压缩的功能,它只是⼀个打包的命令,但是在tar命令中增加⼀个选项(z)可以调⽤gzip实现了⼀个压缩的功能,实⾏⼀个先打包后压缩的过程。
压缩⽤法:tar cvzf 压缩包包名 ⽂件1 ⽂件2 ...
-z :指定压缩包的格式为:file.tar.gz
解压⽤法: tar zxvf 压缩包包名
解压到指定⽬录:-C (⼤写字⺟“C”)
<19>⽂件压缩解压:bzip2
tar与bzip2命令结合使⽤实现⽂件打包、压缩(⽤法和gzip⼀样)。
tar只负责打包⽂件,但不压缩,⽤bzip2压缩tar打包后的⽂件,其扩展名⼀般⽤ xxxx.tar.gz2。
在tar命令中增加⼀个选项(-j)可以调⽤bzip2实现了⼀个压缩的功能,实⾏⼀个先打包后压 缩的过程。
压缩⽤法:tar -jcvf 压缩包包名 ⽂件...(tar jcvf bk.tar.bz2 *.c)
解压⽤法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
<20>⽂件压缩解压:zip、unzip
通过zip压缩⽂件的⽬标⽂件不需要指定扩展名,默认扩展名为zip。
压缩⽂件:zip [-r] ⽬标⽂件(没有扩展名) 源⽂件
解压⽂件:unzip -d 解压后⽬录⽂件 压缩⽂件
<21>查看命令位置:which
Linux命令-系统管理
<1>查看当前⽇历:cal
cal命令⽤于查看当前⽇历,-y显示整年⽇历:
<2>显示或设置时间:date
设置时间格式(需要管理员权限):
date [MMDDhhmm[[CC]YY][.ss]] +format
CC为年前两位yy为年的后两位,前两位的mm为⽉,后两位的mm为分钟,dd为天,hh为 ⼩时,ss为秒。如: date 010203042016.55。
显示时间格式(date '+%y,%m,%d,%H,%M,%S'):
format格式 | 含义 |
---|---|
%Y,%y | 年 |
%d | 日 |
%H | 时 |
%M | 分 |
%S | 秒 |
<3>查看进程信息:ps
进程是⼀个具有⼀定独⽴功能的程序,它是操作系统动态执⾏的基本单元。
ps命令可以查看进程的详细状况,常⽤选项(选项可以不加“-”)如下:
选项 | 含义 |
---|---|
-a | 显示终端上的所有进程,包括其他⽤户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运⾏的进程 |
<4>动态显示进程:top
top命令⽤来动态显示运⾏中的进程。top命令能够在运⾏后,在指定的时间间隔更新显示 信息。可以在使⽤top命令时加上-d 来指定显示信息更新的时间间隔。
在top命令执⾏后,可以按下按键得到对显示的结果进⾏排序:
按键 | 含义 |
---|---|
M | 根据内存使⽤量来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运⾏时间的⻓短来排序 |
U | 可以根据后⾯输⼊的⽤户名来筛选进程 |
K | 可以根据后⾯输⼊的PID来杀死进程 |
q | 退出 |
h | 获得帮助 |
<5>终⽌进程:kill
kill命令指定进程号的进程,需要配合ps使⽤。
使⽤格式:
kill [-signal] pid
信号值从0到15,其中9为绝对终⽌,可以处理⼀般信号⽆法终⽌的进程。
kill 9133 :9133 为应⽤程序所对应的进程号。
有些进程不能直接杀死,这时候我们需要加⼀个参数“ -9 ”,“ -9 ” 代表强制结束。
<6>关机重启:reboot、shutdown、init
命令 | 含义 |
---|---|
reboot | 重新启动操作系统 |
shutdown –r now | 重新启动操作系统,shutdown会给别的⽤户提示 |
shutdown -h now | ⽴刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:25 | 系统在今天的20:25会关机 |
shutdown -h +10 | 系统再过⼗分钟后⾃动关机 |
init 0 | 关机 |
init 6 | 重启 |
<7>检测磁盘空间:df
df命令⽤于检测⽂件系统的磁盘空间占⽤和空余情况,可以显示所有⽂件系统对节点和磁 盘块的使⽤情况。
选项 | 含义 |
---|---|
-a | 显示所有⽂件系统的磁盘使⽤情况 |
-m | 以1024字节为单位显示 |
-t | 显示各指定⽂件系统的磁盘空间使⽤情况 |
-T | 显示⽂件系统 |
<8>检测⽬录所占磁盘空间:du
du命令⽤于统计⽬录或⽂件所占磁盘空间的⼤⼩,该命令的执⾏结果与df类似,du更侧重于磁盘的使⽤状况。
du命令的使⽤格式如下:du [选项]⽬录或⽂件名
选项 | 含义 |
---|---|
-a | 递归显示指定⽬录中各⽂件和⼦⽬录中⽂件占⽤的数据块 |
-s | 显示指定⽂件或⽬录占⽤的数据块 |
-b | 以字节为单位显示磁盘占⽤情况 |
-l | 计算所有⽂件⼤⼩,对硬链接⽂件计算多次 |
<9>查看或配置⽹卡信息:ifconfig
如果,我们只是敲:ifconfig,它会显示所有⽹卡的信息:
<10>测试远程主机连通性:ping
Linux命令-⽤户、权限管理
⽤户是Unix/Linux系统⼯作中重要的⼀环,⽤户管理包括⽤户与组账号的管理。
在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有⼀个账号, 并且对于不同的系统资源拥有不同的使⽤权限。
Unix/Linux系统中的root账号通常⽤于系统的维护和管理,它对Unix/Linux操作系统的所有 部分具有不受限制的访问权限。
在Unix/Linux安装的过程中,系统会⾃动创建许多⽤户账号,⽽这些默认的⽤户就称为“标 准⽤户”。
在⼤多数版本的Unix/Linux中,都不推荐直接使⽤root账号登录系统。
<1>查看当前⽤户:whoami
whoami该命令⽤户查看当前系统当前账号的⽤户名。可通过cat /etc/passwd查看系统⽤户信息。
由于系统管理员通常需要使⽤多种身份登录系统,例如通常使⽤普通⽤户登录系统,然后再以su命令切换到root身份对传统进⾏管理。这时候就可以使⽤whoami来查看当前⽤户的身份。
<2>查看登录⽤户:who
who命令⽤于查看当前所有登录系统的⽤户信息。
常⽤选项:
选项 | 含义 |
---|---|
-m或am I | 只显示运⾏who命令的⽤户名、登录终端和登录时间 |
-q或--count | 只显示⽤户的登录账号和登录⽤户的数量 |
-u或--heading | 显示列标题 |
<3>退出登录账户: exit
如果是图形界⾯,退出当前终端;
如果是使⽤ssh远程登录,退出登陆账户;
如果是切换后的登陆⽤户,退出则返回上⼀个登陆账号。
<4>添加⽤户账号:useradd
在Unix/Linux中添加⽤户账号可以使⽤adduser或useradd命令,因为adduser命令是指向 useradd命令的⼀个链接,因此,这两个命令的使⽤格式完全⼀样。
useradd命令的使⽤格式如下:useradd [参数] 新建⽤户账号
参数 | 含义 |
---|---|
-d | 指定⽤户登录系统时的主⽬录,如果不使⽤该参数,系统⾃动在/home⽬录下建⽴与⽤户名同名⽬录为主⽬录 |
-m | ⾃动建⽴⽬录 |
-g | 指定组名称 |
相关说明:
- Linux每个⽤户都要有⼀个主⽬录,主⽬录就是第⼀次登陆系统,⽤户的默认当前⽬ 录(/home/⽤户);
- 每⼀个⽤户必须有⼀个主⽬录,所以⽤useradd创建⽤户的时候,⼀定给⽤户指定⼀ 个主⽬录;
- ⽤户的主⽬录⼀般要放到根⽬录的home⽬录下,⽤户的主⽬录和⽤户名是相同的;
- 如果创建⽤户的时候,不指定组名,那么系统会⾃动创建⼀个和⽤户名⼀样的组名。
命令 | 含义 |
---|---|
useradd -d /home/abc abc -m | 创建abc⽤户,如果/home/abc⽬录不存在,就⾃动创建这个⽬录,同时⽤户属于abc组 |
useradd -d /home/a a -g test -m | 创建⼀个⽤户名字叫a,主⽬录在/home/a,如果主⽬录不存在,就⾃动创建主⽬录,同时⽤户属于test组 |
cat /etc/passwd | 查看系统当前⽤户名 |
<5>设置⽤户密码:passwd
在Unix/Linux中,超级⽤户可以使⽤passwd命令为普通⽤户设置或修改⽤户⼝令。⽤户也可以直接使⽤该命令来修改⾃⼰的⼝令,⽽⽆需在命令后⾯使⽤⽤户名。
<6>删除⽤户:userdel
命令 | 含义 |
---|---|
userdel abc(⽤户名) | 删除abc⽤户,但不会⾃动删除⽤户的主⽬录 |
userdel -r abc(⽤户名) | 删除⽤户,同时删除⽤户的主⽬录 |
<7>切换⽤户:su
可以通过su命令切换⽤户,su后⾯可以加“-”。su和su –命令不同之处在于,su -切换到对应的⽤户时会将当前的⼯作⽬录⾃动转换到切换后的⽤户主⽬录:
注意:如果是ubuntu平台,需要在命令前加“sudo”,如果在某些操作需要管理员才能操作,ubuntu⽆需切换到root⽤户即可操作,只需加“sudo”即可。sudo是ubuntu平台下允许系统管理员让普通⽤户执⾏⼀些或者全部的root命令的⼀个⼯具,减少了root⽤户的登陆和管理时间,提⾼了安全性。
命令 | 含义 |
---|---|
su | 切换到root用户 |
su root | 切换到root用户 |
su - | 切换到root⽤户,同时切换⽬录到/root |
su - root | 切换到root⽤户,同时切换⽬录到/root |
su 普通⽤户 | 切换到普通⽤户 |
su - 普通⽤户 | 切换到普通⽤户,同时切换普通⽤户所在的⽬录 |
Ubuntu下切换到root的简单命令:
<8>查看有哪些⽤户组
方法一:
cat /etc/group
方法二:
groupmod +三次tab键
<9>添加、删除组账号:groupadd、groupdel
groupadd 新建组账号;groupdel 删除组账号 ;cat /etc/group 查看⽤户组。
<10>修改⽤户所在组:usermod
使⽤⽅法:usermod -g ⽤户组 ⽤户名
<11>查看⽤户在哪些组
groups + 用户名
<12>为创建的普通⽤户添加sudo权限
新创建的⽤户,默认不能sudo,需要进⾏⼀下操作
sudo usermod -a -G adm ⽤户名
sudo usermod -a -G sudo ⽤户名
<13>usermod -g与-G的区别
-g ⽤来制定这个⽤户默认的⽤户组
-G ⼀般配合'-a'来完成向其它组添加
<14>修改⽂件权限:chmod
chmod 修改⽂件权限有两种使⽤格式:字⺟法与数字法。
字⺟法:chmod u/g/o/a +/-/= rwx ⽂件
[ u/g/o/a ] | 含义 |
---|---|
u | user表示该⽂件的所有者 |
g | group表示与该⽂件的所有者属于同⼀组( group)者,即⽤户组 |
o | other表示其他以外的⼈ |
a | all表示这三者皆是 |
[ +-= ] | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx | 含义 |
---|---|
r | read 表示可读取,对于⼀个⽬录,如果没有r权限,那么就意味着不能通过 ls查看这个⽬录的内容。 |
w | write 表示可写⼊,对于⼀个⽬录,如果没有w权限,那么就意味着不能在 ⽬录下创建新的⽂件。 |
x | excute 表示可执⾏,对于⼀个⽬录,如果没有x权限,那么就意味着不能通 过cd进⼊这个⽬录。 |
数字法:“rwx” 这些权限也可以⽤数字来代替
字母 | 说明 |
---|---|
r | 读取权限,数字代号为"4" |
w | 写⼊权限,数字代号为"2" |
x | 执⾏权限,数字代号为"1" |
- | 不具任何权限,数字代号为 "0" |
如执⾏:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename
chmod 751 file:
- ⽂件所有者:读、写、执⾏权限
- 同组⽤户:读、执⾏的权限
- 其它⽤户:执⾏的权限
注意:如果想递归所有⽬录加上相同权限,需要加上参数“-R ”。 如:chmod 777 test/ -R 递归test⽬录下所有⽂件加777权限。
<15>修改⽂件所有者:chown
<16>修改⽂件所属组:chgrp
gedit编辑器
gedit是⼀个Linux环境下的⽂本编辑器,类似windows下的写字板程序,在不需要特别复 杂的编程环境下,作为基本的⽂本编辑器⽐较合适
sublime编辑器
Sublime Text 是⼀个代码编辑器(Sublime Text 2是收费软件,但可以⽆限期试⽤)。
Sublime Text是由程序员Jon Skinner于2008年1⽉份所开发出来,它最初被设计为⼀个具有丰富扩展功能的Vim。
Sublime Text具有漂亮的⽤户界⾯和强⼤的功能,例如代码缩略图,Python的插件,代码段等。
还可⾃定义键绑定,菜单和⼯具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API,Goto功能,即时项⽬切换,多选择,多窗⼝等等。
Sublime Text 是⼀个跨平台的编辑器,同时⽀持Windows、Linux、Mac OS X等操作系统。
编辑器之神-vim
vi简介
vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上⼀样。它可以 执⾏输出、删除、查找、替换、块操作等众多⽂本操作,⽽且⽤户可以根据⾃⼰的需要对其进⾏定制。Vi不是⼀个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进⾏编排,它只是⼀个⽂本编辑程序。 vi没有菜单,只有命令,且命令繁多。
Vi有三种基本⼯作模式:
- 命令模式
- ⽂本输⼊模式
- 末⾏模式
命令⾏模式
任何时候,不管⽤户处于何种模式,只要按⼀下ESC键,即可使Vi进⼊命令模式;我们在 shell环境(提示符为$)下输⼊启动Vi命令,进⼊编辑器时,也是处于该模式下。在该模式下,⽤户可以输⼊各种合法的Vi命令,⽤于管理⾃⼰的⽂档。此时从键盘上输⼊的任何字符都被当做编辑命令来解释,若输⼊的字符是合法的Vi命令,则Vi在接受⽤户命令之后完成相应的动作。但需注意的是,所输⼊的命令并不在屏幕上显示出来。若输⼊的字符不是 Vi的合法命令,Vi会响铃报警。
⽂本输⼊模式
在命令模式下输⼊插⼊命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进⼊⽂本输⼊模式。在该模式下,⽤户输⼊的任何字符都被Vi当做⽂件内容保存起来,并将其显示在屏幕上。在⽂本输⼊过程中,若想回到命令模式下,按键ESC即可。
末⾏模式
末⾏模式也称ex转义模式。在命令模式下,⽤户按“:”键即可进⼊末⾏模式下,此时Vi会在显示窗⼝的最后⼀⾏(通常也是屏幕的最后⼀⾏)显示⼀个“:”作为末⾏模式的提示符,等待⽤户输⼊命令。多数⽂件管理命令都是在此模式下执⾏的(如把编辑缓冲区的内容写到⽂件中等)。末⾏命令执⾏完后,Vi⾃动回到命令模式。
vim基础操作
vim是从vi发展出来的⼀个⽂本编辑器。代码补完、编译及错误跳转等⽅便编程的功能特别丰富。
进⼊插⼊模式:
i: 插⼊光标前⼀个字符
I: 插⼊⾏⾸
a: 插⼊光标后⼀个字符
A: 插⼊⾏未
o: 向下新开⼀⾏,插⼊⾏⾸
O: 向上新开⼀⾏,插⼊⾏
进⼊命令模式:
ESC:从插⼊模式或末⾏模式进⼊命令模式
移动光标:
h: 左移
j: 下移
k: 上移
l: 右移
M: 光标移动到中间⾏
L: 光标移动到屏幕最后⼀⾏⾏⾸
G: 移动到指定⾏,⾏号 -G
w: 向后⼀次移动⼀个字
b: 向前⼀次移动⼀个字
{: 按段移动,上移
}: 按段移动,下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻⼀屏
Ctr-b: 向上翻⼀屏
gg: 光标移动⽂件开头
G: 光标移动到⽂件末尾
删除命令:
x: 删除光标后⼀个字符,相当于 Del
X: 删除光标前⼀个字符,相当于 Backspace
dd: 删除光标所在⾏,n dd 删除指定的⾏数 D: 删除光标后本⾏所有内容,包含光标所在字符
d0: 删除光标前本⾏所有内容,不包含光标所在字符
dw: 删除光标开始位置的字,包含光标所在字符
撤销命令:
u: ⼀步⼀步撤销
Ctr-r: 反撤销
重复命令:
.: 重复上⼀次操作的命令
⽂本⾏移动:
⽂本⾏右移:>>
⽂本⾏左移:<<
复制粘贴:
yy: 复制当前⾏,n yy 复制 n ⾏
p: 在光标所在位置向下新开辟⼀⾏,粘贴
可视模式:
v: 按字符移动,选中⽂本
V: 按⾏移动,选中⽂本可视模式可以配合 d, y, >>, << 实现对⽂本块的删除,复制,左右移动
替换操作:
r: 替换当前字符
R: 替换当前⾏光标后的字符
查找命令:
/: str查找
n: 下⼀个
N:上⼀个
替换命令:
把abc全部替换成123
末⾏模式下,将当前⽂件中的所有abc替换成123 :%s/abc/123/g
末⾏模式下,将第⼀⾏⾄第10⾏之间的abc替换成123 :1, 10s/abc/123/g
vim⾥执⾏ shell 下命令:
末⾏模式⾥输⼊!,后⾯跟命令