linux初识
-
什么是操作系统
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
向上能支持微信这种程序的运行 向下控制我们的硬件
- 常见的OS
-
windows
-
mac
-
linux
-
ios
-
android
-
chromeOS
-
windowsPhone
- linux发展史
(Unix的发展史)
1965年时,贝尔实验室(Bell Labs)加入一项由通用电气(General Electric)和麻省理工学院(MIT)合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的MULTICS操作系统。
直到1969年,因MULTICS计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson(后被称为UNIX之父)已经有一个称为"星际旅行"的程序在GE-635的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的电脑,他想把星际旅行的游戏移植到闲置的电脑上去,因此他花了一个月的时间开发unix原型(因为汇编语言对于硬件的依赖性,因此只能针对特定硬件; 只是为了移植一款“太空旅游”的游戏;)
1972年 由于之前用的B语言跨平台性能比较差,为了让其他的电脑也可以运行这个非常棒的unix操作系统,Dennis Ritchie和Ken Thompson从B语言的基础上开发了一个新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是大名鼎鼎的C语言
1973年初,C语言的主体完成,Thompson和Ritchie迫不及待地开始用完全重写了unix操作系统
Minix
在1979年的版权声明中(通用电气决定把unix源代码私有化),影响最大的是在学校教 UNIX 相关知识的教授。想一想,如果没有核心源码,如何教学生认识 UNIX,这对于 Anderw Tanenbaum(谭邦宁)教授来说,实在很伤脑筋,不过,学校的课程还要继续,谭邦宁教授自己动手写了 Minix。并强调他的 minix 能够与 UNIX 兼容。在 1984 年开始编写核心程序,直到 1986 年终于完成,并于 1987 年出版 MINIX 相关书籍。
Linux
Linux诞生于1991年,是一个免费使用和自由传播的开源的(UNIX Like)类unix操作系统。全称叫做GNU/Linux。Linux的出现,最早开始于一个叫 李奥斯,托马斯(Linux Torvalds) 的芬兰大学生。他对当时为教学而设计的 Minix 操作系统提供的功能不满意,于是他决定自已写比 Minix 更强大的的类 UNIX 操作系统来取代 Minix,后来这个类 UNIX 操作系统就是 Linux
为什么linux的图标会是一直企鹅,事实上Torvalds只是被澳大利亚国家动物园的一只小企鹅轻轻地咬了一下,但这个想法就这样提出来了
操作系统发展史
linux的初识
- 认识linux:
- 一切皆文件
- LINUX中的大小写是非常敏感的
- 所有的系统给管理都通过配置文件来控制
-
linux目录
在windows的平台下我们打开电脑会看到一个一个的盘符
在每个盘符下面会目录结构 如下图所示:
但是在linux里面没有盘符这个概念的,我们只有一个根目录/ 所有文件都在它的下面
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
ls /var/log
相对路径
从当前位置开始描述的路径为相对路径,如:
cd ../../
cd /var #绝对路径
cd log #在var这个目录进入log 就是相对路径
.和..
每个目录下都有.和..
. 表示当前目录
.. 表示上一级的目录,既父目录
根目录下的.和.. 都表示当前目录 因为/目录上面没有父目录了
自动补全
在敲出命令的前几个字母的时候,可以按下tab键,系统会自动帮我们补全命令
历史命令
当系统执行过一些命令之后,可按上下键翻看以前的命令,history讲执行过的命令列举出来
history --查看命令历史
history -c --清空命令历史
history -w --把命令历史写入默认文件中($HOME/.bash_history)
看2个例子
文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
访问用户
通过设定权限可以从以下三种访问方式限制访问权限:
- 只允许用户自己访问(所有者) 所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
- 允许一个预先指定的用户组中的用户访问(用户组) 用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
- 允许系统中的任何用户访问(其他用户) 用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类
访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r) 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
- 写权限(w) 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
- 可执行权限(x) 对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意: 通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
lrwxrwxrwx. 1 root root 56 Jan 16 2014 favicon.png -> /usr/share/icons/hicolor/16x16/apps/system-logo-icon.png
-rw-r--r--. 1 root root 64 Oct 2 2013 filesystems
drwxr-xr-x 4 root root 4096 Nov 11 2010 fonts
-rw-r--r--. 1 root root 711 Jan 16 2014 fstab
-rw-r--r--. 1 root root 0 Nov 21 2013 gai.conf
drwxr-xr-x. 2 root root 4096 Oct 24 2013 gcrypt
drwxr-xr-x. 2 root root 4096 Oct 24 2013 gnupg
-rw-r--r-- 1 root root 544 Jan 12 2017 group
-rw-------. 1 root root 533 Jan 16 2014 group-
lrwxrwxrwx. 1 root root 22 Jan 16 2014 grub.conf -> ../boot/grub/grub.conf
---------- 1 root root 441 Jan 12 2017 gshadow
-rw-------. 1 root root 433 Jan 16 2014 gshadow-
-rw-r--r--. 1 root root 801 Jul 19 2011 gssapi_mech.conf
-rw-r--r--. 1 root root 9 Oct 2 2013 host.conf
-rw-r--r--. 1 root root 158 Jan 12 2010 hosts
-rw-r--r--. 1 root root 370 Jan 12 2010 hosts.allow
-rw-r--r--. 1 root root 460 Jan 12 2010 hosts.deny
-rw-r--r--. 1 root root 3581 Feb 22 2013 idmapd.conf
drwxr-xr-x. 2 root root 4096 Jan 16 2014 init
lrwxrwxrwx. 1 root root 11 Jan 16 2014 init.d -> rc.d/init.d
-rw-r--r--. 1 root root 884 Jan 16 2014 inittab
-rw-r--r--. 1 root root 942 Jan 12 2010 inputrc
drwxr-xr-x. 2 root root 4096 Jan 16 2014 iproute2
drwxr-xr-x. 2 root root 4096 Jan 16 2014 iscsi
-rw-r--r--. 1 root root 47 Dec 1 2013 issue
-rw-r--r--. 1 root root 46 Dec 1 2013 issue.net
drwxr-xr-x 3 root root 4096 Aug 10 05:11 java
drwxr-xr-x 2 root root 4096 May 10 2016 jvm
drwxr-xr-x 2 root root 4096 May 10 2016 jvm-commmon
-rw-r--r-- 1 root root 449 Nov 22 2016 krb5.conf
-rw-r--r-- 1 root root 27337 Aug 10 09:27 ld.so.cache
-rw-r--r--. 1 root root 28 Jul 24 2013 ld.so.conf
drwxr-xr-x. 2 root root 4096 Jan 16 2014 ld.so.conf.d
-rw-r-----. 1 root root 191 Mar 1 2012 libaudit.conf
-rw-r--r--. 1 root root 2293 Apr 5 2012 libuser.conf
第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
第一组权限控制访问自己的文件权限,即所有者权限。
第二组权限控制用户组访问其中一个用户的文件的权限。
第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
linux命令
我们常常在好莱坞电影大片里面看到超级黑客高手,在电脑面前“黑”进别人的安全系统的场景.看他们快速的输入一大堆复杂的代码,就完成了破解的工作
Linux的redhat和centos默认就是没有图形界面的跟我们看到的电影里面破解密码的界面一模一样,充满了神秘和晦涩
Linux在生产环境中一般是不使用图形化界面的,因为图形化要占用系统资源,而且命令行界面运行软件速度要快
Linux提供了大量的命令,利用它可以有效的完成大量的工作,如磁盘操作,文件存取,目录操作,文件权限设定等,Linux发型版本最少的命令也有200多个,我们一般只介绍比较重要和使用频率最多的命令
命令使用方法
Linux命令格式:
command [-options] [parameter1] …
说明:
- command: 命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选 parameter1 …:传给命令的参数:可以是零个一个或多个
2. 查看帮助文档
- --help
一般是linux命令自带的帮助信息
如: ls --help -
man(有问题找男人,manual)
man是linux提供的一个手册包含了绝大部分的命令,函数使用说明
该手册分成很多章节,使用man时可以指定不同的章节来浏览
例:
- man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 向下翻一页 |
Enter键 | 一次滚动手册页的一行 |
b | 向上翻一页 |
f | 向下翻一页 |
q | 退出man命令 |
h | 列出所有功能键 |
/string | 向下搜索string 这个字符串 |
?string | 向上搜索string 这个字符串 |
n,N | n继续下一个搜寻,N进行反向搜寻 |