Linux基础(1)

来源:互联网 发布:开淘宝网店怎么赚钱 编辑:程序博客网 时间:2024/06/06 06:33

LINUX 基础

linux是一个操作系统,和windows是一样的操作系统就是一个程序。

AT&T MIT GE在69年旨在研究一种多任务、多用户、分时性的操作系统。这个操作系统(multics)研究失败了。

  • 什么是多用户?允许多个用户使用
  • 是多任务?宏观一次可以执行多个程序(肉眼上看到的),实际每次可能只执行一个程序
  • 是分时性(时间片)?假设一个程序从头到尾运行时间为5秒,可能每次只运行50ms。
  • 微观每次最多运行几个程序和cpu的核有关。核越多,微观每次同时运行的程序就越多。
  • 69年以前的操作系统:单任务、单用户、不具备分时性(批处理的)。

    实验室有一个人叫做肯汤普森,最初使用汇编写了一个小型的操作系统,发现当自己写的一个小游戏运行在这个系统上非常流畅。
    后来他和丹尼斯里奇,分别使用B语言和C语言分别重写了操作系统——unix。

什么是操作系统:用户软件(app、库、工具、图标)和内核

什么叫硬件裁剪?
什么叫软件裁剪?对操作系统内核功能的添加和删除

linux操作系统本身就是一个程序,运行在内存中,需要内存给操作系统分配空间。
分配的内存空间是物理空间还是虚拟空间?虚拟空间。

虚拟内存分成两个部分:
用户空间 命令 c中的可执行文件

         内核空间         系统调用         文件系统         网络协议栈         驱动        ......

硬件

我使用的ubuntu版本是12.04
现在ubuntu使用的内核版本是3.5

内核版本的规则:主版本号.次版本号.修订版本号
通常情况下,次版本号为偶数时是稳定版,所以我们在开发时大部分使用的都是次版本号为偶数的。

高级语言:1、编译型语言,使用编译器 2、解释型语言,使用解释器
无论编译器还是解释器都是将高级语言转化成二进制
shell就是解释器的统称。解释器也会有不同名称的分类(sh ksh bash …)

LINUX命令

sudo /etc/init.d/network-manager restart 重启网络服务
当作公式来记:sudo /etc/init.d/服务名称 start/stop/restart


软件的安装与卸载

软件包:应用程序、README、配置文件

   linux软件包的分类:.deb软件包 .rpm软件包     ubuntu使用的是.deb软件包    红帽使用的是.rpm软件包

主要讲的是.deb软件包:操作工具(可以是图标、可以是命令)

dpkg安装

dpkg apt我们在使用前必须要明确的知道软件包之间是有依赖性的。
假设有a、b、c三个软件包,它们之间如果有依赖性为:b > a > c
安装顺序:c a b
dpkg的使用方法:
特性:安装之前必须要知道软件包之间的依赖关系,并且不支持在线安装。
安装:sudo dpkg -i 软件包
不完全卸载:sudo dpkg -r 软件包名称
完全卸载: sudo dpkg -p 软件包名称

apt使用方法

特性:自动检查软件包依赖关系,支持在线安装

使用原理:
/etc/apt/sources.list 存放网址(存放软件包的网址,也叫做软件源)
/var/lib/apt/lists 存放的是索引文件
/var/cache/apt/archives 存放的是下载好的软件包

我们在使用apt下载一个软件包时,首先会到/var/lib/apt/lists寻找索引文件,进而索引文件会在软件源中找到
适合当前系统使用的软件包,进而下载,下载成功的软件包被存放到/var/cache/apt/archives

下载并且安装方式:sudo apt-get install 软件包名称
安装失败原因:
1、没有网络
2、索引文件太陈旧造成了根本找不到软件源
解决方案:a、更新索引文件,sudo apt-get update
b、更改软件源
3、安装过程手贱不小心中途取消了,可能会造成软件包之间的依赖关系被破坏
解决方案:修复依赖关系 sudo apt-get -f install
4、如果在终端提示:请删除某个路径下的某个文件,照做.

不完全卸载:sudo apt-get remove 软件包名称
完全卸载:sudo apt-get –purge remove 软件包名称

和软件包相关的命令就是上面这些

下载软件包源码:sudo apt-get source 软件包名称

sudo apt-get upgrade 更新当前系统中所有已安装的软件包
sudo apt-cache pkgnames | wc -l
| 叫做管道

wc 用来统计的
-c 统计字节
-l 统计行数
-w 统计单词


   命令有三要素:命令名称 选项 参数三要素之间最少要有一个空格。通常选项和参数可以互换位置,通常带-的是选项

- history

  history显示的是当前终端历史命令  history -c 清除当前终端输入过的历史命令

如何知道一个终端最多存放多少历史命令?
vi ~/.bashrc
HISTSIZE=1000 确定了每个终端最多存放1000条历史命令
打印一个变量的内容,需要使用echo命令,并且变量前要加$

echo $HISTSIZE

如果修改了一个配置文件的内容,如果想要使配置文件生效,执行source + 指定的文件名 使配置文件重新运行一次。

  • echo

echo 普通字符串 输出结果就是原有字符串

echo hello <==> echo “hello”

echo hello world !(两个字符串)= echo “hello world”(一个字符串)

echo 使用选项时一定要将选项加在参数的前面

如:echo -n “hello”

  • alias

取别名:alias 别名=’命令’ 注意:=左右没有空格

如果上面命令单纯在终端上运行,只适用于当前终端。

如果将命令添加到某个配置文件中的最后一行(比如/etc/bash.bashrc),最后保存退出重启配置文件。永久生效。

ls -a 显示当前目录下所有内容

ls -sh s作用显示文件大小,但是不满足4K以4K为单位显示 了解
h作用是以某种单位来显示文件大小

ls -R 从当前目录递归显示所有目录下内容
很多命令的选项如果见到r或者R通常都是递归的作用

创建或删除用户

linux@linux:~$

当前用户

如何创建其它用户? sudo adduser 用户名

切换用户?su 用户名

返回原有用户?exit 千万别使用su切换

和用户相关的配置文件:/etc/passwd存放的是用户所有信息 /etc/group存放组信息 /etc/shadow存放密码

默认情况下,用户名和组名同名。通常情况下一个组内部只存放了和其同名的一个用户。

如何删除用户?但是如果直接删除用户系统会有警告(组已经空了)

1、添加一个已存在的用户到需要删除的用户对应的组中。

  • 假设现在需要删除farsight用户,将linux用户添加到farsight组中。

  • sudo usermod -a(添加) -G(指定组名) farsight(组名) linux(任意存在的用户名)

2、删除用户:sudo deluser 用户名

3、删除组:sudo delgroup 组名

更改权限

权限:r代表读 w代表写 x代表执行

如何表示权限?通常使用的是8进制

如果已知权限?0123 –x -w- -wx

对于一个文件来说,只能使用三部分的一部分。

chmod 修改文件的原有权限

  • chmod u或g或o或a+或-权限 文件名
    (注意:+ -的左右不能有空格)
  • chmod 八进制 文件名

如何确定使用哪部分?

-rw-rw-rw- 1 farsight farsight 34 Jul 8 17:22 1.c

  • 1.c文件属于farsight用户,属于farsight组

    假设我们当前使用的用户为linux,如果在linux下操作1.c文件使用的是哪部分权限?

  • 1、肯定不会使用1.c的用户位置权限,只是给1.c属于的用户使用的
  • 2、假设sudo usermod -a -G farsight linux 将linux用户添加到了farsight组中
    此时linux用户操作1.c文件使用的是组权限
  • 3、如果linux用户不属于farsight组,使用其他用户权限

对于普通文件:r代表可读 w代表可写 x代表可执行
除了可执行文件之外其他的普通文件默认权限一般为0664或者0666

对于目录文件:

  • r控制了是否能查看目录下内容
  • w控制了是否能在目录下新增文件
  • x控制能否进入目录

对于目录一般常用权限为0775或者0777

文件最后一次修改时间:也叫做时间戳 给make工程管理器使用的。

通配符

linux系统中有一些具有特殊功能的字符,被叫做通配符。

通配符:

  • 在命令行中或者在脚本文件中具有匹配任意长度字符的功能
  • ?只匹配一个长度字符
  • [afw]匹配其中的一个字符
  • [1-9]只能代表一个字符不可能出现[1-100]这里不是100、而是 1、 0 、0三个字符
  • [^123] 除了指定的字符其他均可匹配,但是要注意:操作的还是一个字节
原创粉丝点击