Linux OS Fundamental - 190527 - Linux OS Series #001_Linux操作系统基础知识

Linux OS 基础

1 Linux操作系统基础概览

1.1、操作系统基础概念

  • Windows与Linux的关系
    OS、symbian、linux/unix
    Windows:傻瓜式、好学习、工资低
    Linux:每一个用户都是专业人士,操作麻烦,学习比较难,免费的、开源的,linux性能好,可移植性好,好的设计
    Android:移动操作系统,android基于linux
    ios:很优秀,创造性,走钢丝
    嵌入式操作系统:linux + WinCE
    当前:消费电子Android,工业linux

1.2、多机开发:双系统与虚拟机

开发嵌入式程序,需要linux环境。但是因为:windows中有许多很好用的软件,如notepad++ SourceInsight,所以也需要windows。
既需要windows,又需要linnux。
第一种:双系统 不方便
第二种:虚拟机 方便,损失性能,与真机微小差异
第三种:两台电脑,不方便
现实中:
个人开发者:虚拟机
大公司:服务器 + 虚拟机

1.3、搭建开发环境

涉及到两个东西:虚拟机软件+Linux操作系统
虚拟机软件: 就是一个单纯地在windows中运行的软件,跟word、360没有本质区别。现在主流的虚拟机软件有VMWARE和VirtualBox
虚拟机软件在Windows系统中运行,运行后它会模拟出来一个电脑,所以叫虚拟机。然后我们可以在该虚拟机中安装别的操作系统。
当前,可以先使用事先安装好的aston_ubuntu,密码是root。自己上网搜索安装教程。

1.4、隐藏文件与非隐藏文件

windows中:文件隐藏与不隐藏通过设置文件属性实现的。查看隐藏文件方法:文件夹选项-查看->显示所有文件和文件夹
linux中:linux中隐藏文件特点是文件名以. 开头,跟文件属性无关。查看隐藏文件方法:用ls -a命令(普通显示ls)

1.5、相对路径 与绝对路径

  • 什么是路径:路径是用来标识一个文件在操作系统的文件系统中存储位置的。
    pathname

  • 举例:
    D: \winshare\enum.c 全路径 pathname
    D: \winshare 路径 path
    enum.c 文件名 name

  • 绝对路径:路径是从绝对位置开始的。譬如windows中从某一个盘符开始 C:\
    linux中从根目录/开始

  • 测试:
    /abc/123/def.txt 是linux绝对路径
    abc/123/def.txt 不是linux绝对路径
    F:\abc\123\def.txt 是windows绝对路径
    abc\123\def.txt 不是windows绝对路径

  • 相对路径:指明路径的时候,是从当前所在的位置开始的。 ./下一层 …/上一层

  • 举例:
    D:\我的文档\123\123.txt
    D:\我的文档\abc\abc.txt
    当前在123.txt,但要去abc.txt
    方式1:采用绝对路径。
    D:\我的文档\abc\abc.txt
    方式2:采用相对路径。…/abc/abc.txt
    从当前路径开始,往上走一层,再往下走一层abc就到了

2、linux基础知识与技能

2.1、linux内核、发行版

linux本身指的是一个操作系统内核,只有内核是无法直接使用的。我们需要的,可以使用的操作系统是一个包含了内核和一批应用的应用程序的一个集合体,这个就叫linux发行版。
ubantu、redhat就是 Linux的不同的发行版。

2.2、GUI 图形用户界面 和cmdline 命令行

GUI:graphics user interface 图形用户界面
cmdline :command line 命令行
例:windows中dir列出当前文件夹中所有文件。 cd … 退回上一层目录
人机交互:人和机器(计算机)进行交互、常用的有命令行和GUI。
windows下既有GUI,又有命令行。linux中也是既有GUI,又有命令行。
但是,在linux中常用命令行,在windows中常用GUI

2.3、linux常用命令:

  1. ls (list,列表)
    使用列表把当前文件夹下所有文件显示出来
    ls -a 显示所有文件,包括隐藏文件
    ls -l 以详细信息显示
    ls -a -l
    ls -l -a
    ls -la
    ls -al 四种方式都是可以的
  • cd (change directory,更改目录)
    作用:用来切换目录
    涉及到相对路径和绝对路径
    cd … …代表上一层目录,.代表当前目录
    cd ~ 切换到root目录
    cd …/ 退到上一层目录
    ./a.out 执行当前a.out程序

  • pwd (print work directory,打印工作目录)
    作用:打印出当前的绝对路径

  • mkdir (make directory,创建文件夹)
    作用:创建空文件夹
    mkdir -p 级联创建文件夹
    mkdir d1/d2/d3

  • mv(move,移动)
    作用:在目录间移动文件,重命名文件
    mv 源文件pathname 目的文件pathname
    pathname:路径+文件名,即全路径

  • touch
    作用:创建空文件
    touch pathname

  • cp(copy,复制)
    作用:复制文件或文件夹
    cp 源文件pathname 目标文件pathname
    cp -r 用来复制文件夹
    cp -f 强制复制
    实际操作,一般都是cp -f,
    cp -rf 复制文件夹 -f避免有重名文件夹导致复制失败

  • rm(remove,去除,删除)
    作用:用来删除文件
    rm 文件pathname
    rm -r 文件夹pathname
    有无-f影响返回值的情况,-f就算文件不存在也执行成功不会返回错误

  • cat
    作用:直接在命令行下显示内容的文件内容
    也可以用来向文件输入,暂时不管

  • rmdir (remove directory,删除文件夹)
    作用:删除空文件夹
    rmdir和

  • ln(link,连接文件)
    基础:windows中快捷方式,实际上快捷方式和它指向的文件是独立的两个文件、两国都占硬盘空间,只不过用户访问快捷方式时,其效果等同于访问指向的文件。
    linux中有两种连接文件:
    一种叫软连接(符号连接),等同于windows中快捷方式
    一种叫硬连接
    创建软连接文件:
    ln -s 源文件名 符号连接文件名
    举例:ln -s src.c linker.c
    linker.c就是src.c的一个符号连接文件
    硬连接:ln 源文件名 连接文件名
    硬连接实际上和源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上,在我们看来有好多个文件一样。每次删除一个文件时,只要他还有其他的硬连接存在,这个文件就不会被真正删除。只有等所有的连接文件都删除掉了,这个文件才会被真正从硬盘上删除。

  • man
    作用:查询man手册,获取帮助信息
    man 1 ls 1表示查询的是linux命令
    man 2 xxx 2表示查询的是linux 的api
    man 3 xxx 3表示查询的是C 库函数

  • apt-get
    作用:在ubuntu中用来在线安装、卸载软件的程序
    apt-get install vim
    apt-get remove vim
    注意,安装和卸载都是在线的,也就是说ubuntu必须能上网才能使用apt-get
    说明:apt-get 安装软件的原理和必要性。
    linux操作系统的发行版,内核版本,定制性,造成了linux中软件的不兼容性。
    在linux中安装软件是一件困难的事情,装了软件能不能用不一定。Ubuntu解决了这个问题,ubuntu就适合某个发行版(ubuntu10.04)的所有软件做了一个列表,然后用户通过apt-get install的方式安装软件,就会实时连接到服务器,服务器会根据你的ubuntu版本,给你下载合适的软件来安装,这样确保了软件的兼容性。

3、编辑器vi的使用(vi和vim的联系)

什么是编辑器,编辑器就是一款软件,它的主要作用就是用再来编辑。譬如编写文件,编写代码。
windows中的常用编辑器,如自带的notepad。比较好用的notepad++,UltraEditor,SlickEditor
Linux中常用编辑器,自带的最古老的vi。比较好用的vim,gedit。
注:vi和vim的关系,vim是vi的升级版,推荐使用vim。
vi是一个符号链接文件,指向vim。
我们在后面提到vi时,其实都是指vim。

3.1、vi基础使用

使用vi打开/创建一个文件,vi pathname
vi的两种模式:
命令模式:当vi打开时默认为命令模式,要准入输入模式,需要按a或者i键。在命令模式下,此时键盘上输入的所有东西都被vi当作命令来对待。
在命令模式下,最好不要乱输入。此时应该输入相应的命令,来让vi做相应的事。
输入模式:输入模式用来向文件输入内容。可以从命令模式中按a或者i进入输入模式。进入输入模式后,就可以随意按键盘进行输入了。输入完成后如果要保存,要先退回到命令模式(因为保存也是一种命令)。在输入模式下按ESC键退回到命令模式。
注:注意看屏幕的左下角,当命令模式时无提示信息或者提示文件名等信息,当处于输入模式时,提示 --INSERT–
在命令模式下如何保存:
:wq 保存并退出
:w 只保存不退出
:q 不保存退出
:q! 不保存强制退出
:wq! 保存并强制退出

3.2、vi的高级使用

  • 查找
    在命令模式下,输入/xxx,就可以查找到xxx
  • 快速切换行
    在命令模式下,输入:num,就可以快速切换到num行
  • 设置显示行号
    在命令模式下,输入:set nu,就可以显示行号
    注:设置不显示行号,命令模式输入:set nonu
    设置永久显示行号,需要修改vi的配置文件,打开vi的配置文件~/.vimrc,在其中输入set nu即可。
  • 行删除
    在命令模式下,先将光标移动到要删除的行,然后输入dd
    如果要删除连续的多行,譬如要删除连续的3行,使用3dd
  • 行复制粘贴
    复制:命令模式下,nyy
    粘贴:命令模式下,p
    细节:复制时要把光标放到多行的第一行,粘贴时,实际粘贴到当前光标所在的下一行

3.3、linux中权限表示&切换

3.3.1、普通用户与特权用户 su命令切换用户

  • windows中有普通用户和特权用户,特权用户是Administrato人,普通用户可以有很多个。

  • 特权用户是系统的管理员,对系统内所有文件具有操作权限。每个普通用户只能处理自己的文件,不能访问其他用户的文件,更不能随意处理操作系统的文件。

  • Linux也有普通用户和特权用户的区别。特权用户就是root用户。普通用户权限受到限制,譬如说普通用户不能cd /root,普通用户不能使用apt-get install来安装软件。

  • 可以使用su 用户名在不同用户间切换。譬如从普通用户切换到root,可以 su root,然后输入root用户的密码即可转入root。从root要切换到普通用户,则su gec即可。

  • su root用户可以简写su

3.3.2、rwx与权限表示

  • ls -l显示详细信息
  • d rwxr-xr-x 10个字符,第一个表示文件类型。剩下的9个分成三组,表示文件权限。
    文件类型:
  • 表示普通文件。普通文件指文本文件和二进制文件,如a.c 1.txt a.out都是普通文件
    d 表示文件夹,d是directory的缩写
    l 表示符号连接文件,后面会用->打印出它指向的文件
    s 表示socket文件
    p 表示管道文件 pipe

前三个表示此文件的属主对文件的权限
中间三个表示此文件属主所在的组对文件的权限
最后三个表示其他用户对文件的权限

  • rwx怎么解析:r代表可读,w代表可写,x代表可执行
    rwx 可读可写可执行
    r-x 可读不可写可执行
    r-- 可读不可写不可执行

3.3.3、使用sudo暂时获取root权限

这是ubuntu的一个特点,在ubuntu中可以使用sudo命令让普通用户暂时获取root用户的权限,而不必进行用户切换。

3.4、虚拟机linux上网问题

3.4.1、VMWare中虚拟机网络的三种设置

第一种:桥接(bridged)
第二中:NAT
第三种:Host only。该模式下仅主机可以上网,虚拟机不能上网。

3.4.2、虚拟机上网方式1:NAT

设置步骤:

  • 第一步:在菜单栏->虚拟机->设置->硬件->网络适配器,右侧选择NAT模式
  • 第二步:vi /etc/network/interfaces,打开该文件,在开头增加编辑内 容:

auto lo
iface lo inet loopback
后面内容可以删除

  • 第三步:执行etc/init.d/networking restart 重启网卡

3.4.3、虚拟机上网方式2:桥接方式

  • 第一步:在菜单栏->虚拟机->设置->硬件->网络适配器,右侧选择桥接模式
  • 第二步:桥接到可以上网的网卡。在菜单栏->编辑->虚拟网络编辑器,选择桥接到自己windows中可以上网的网卡(一般选择wifi网络或wan网络)
  • 第三步:设置dhcp并重启网卡:
    vi /etc/network/interfaces,打开该文件,将内容编辑成:
  • 内容备注:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
address 192.168.1.141
netmask 255.255.255.0
gateway 192/168.1.1
保存退出然后命令行执行 /etc/init.d/networking restart 重启网卡

3.4.4、总结

  • 第一,NAT方式设置上网比较简单,但是不能用在嵌入式开发中。虚拟机包含在真机当中,无法和真机网络通信
  • 第二,桥接方式设置上网较繁琐,但是在嵌入式开发中比较有用。虚拟机和真机在同一个网段里面,可以和真机进行连接,可以和外部路由器或开发板进行通信。

linux高级命令

1.linux命令

1.1、 find

在linux文件系统中,用来查找一个文件放在哪里了。
find /etc -name "interfaces"
总结:

  1. 什么时候用find?
    当你指导你要找的文件名,但是你忘记了它被放在那个目录下面,要找到该文件时,用find。
  2. 怎么用find?
    find 路径 -name “文件名”
  3. 路径不太记得时直接在根目录 / 下搜索

1.2、 grep

  1. 什么时候用grep?
    当你想查找某个符号在哪些地方(有可能是一个文件,也有可能是多个文件组成的文件夹)出现过,就用grep
  2. 怎么用?
    grep -rn “要查找的符号” 要查找的目录或文件集合
    注意:-n表示查找结果中显示行号,-r表示要递归查找
    *号表示在所有文件中搜索
    举例:grep -nr “root” *
  • 高级代码编辑工具:SourceInsight

1.3、which和whereis

功能:查找一个应用程序(二进制文件)在哪里
-举例:which ls(coding下试了好像有问题,root下正常) whereis ls
区别:
which只显示二进制文件的路径
whereis显示二进制文件的路径,和其源码或man手册位置

1.4、uname

  • 功能:查看系统信息
  • 举例:uname -a 查询所q有信息
    uname -r 查找内核信息
    uname -n 网络节点信息 node
    uname -s 系统信息
    uname -m 机器信息 -p处理器 -o平台
    -a, --all print all information, in the following order,except omit -p and -i if unknown:
    -s, --kernel-name print the kernel name
    -n, --nodename print the network node hostname
    -r, --kernel-release print the kernel release
    -v, --kernel-version print the kernel version
    -m, --machine print the machine hardware name
    -p, --processor print the processor type (non-portable)
    -i, --hardware-platform print the hardware platform (non-portable)
    -o, --operating-system print the operating system
    –help display this help and exit
    –version output version information and exit

1.5、开机和关机

  • shutdown -h now 立即关机
  • init 0 关机
  • shutdown -r now 立即重启
  • reboot 重启

1.6、tree/lstree 需要安装

  • 功能:显示文件盒目录有根目录开始的树形结构

如果环境有新的修改,可以取消发布再重新发布环境!

1.7、mount/unmount

  • 功能:用来挂载磁盘到文件系统
  • 举例: mount -t nfs -o nolock 192.168.1.141:/root/rootfs/mnt
    unmount -t nfs -o nolock 192.168.1.141:/root/rootfs/mnt

1.8、磁盘空间相关

  • df -h 显示已挂载的磁盘大小
  • du -h * 列出文件或文件夹的大小,不加*包含隐藏文件
    du -h +文件名,可以列出这个文件有多大,列出的方式是以人比较好看懂的方式。不像ls -l列出的都是以字节为单位。

1.9、用户管理

  • useradd user1 添加用户
  • userdel user1 删除用户
  • passwd user1 设置密码

尝试后只能在root下执行

1.10、权限管理

作用:用来管理系统中文件的权限。

  • chmod 修改文件的权限, change mode
  • chown 修改文件的属主, change owner
  • chgrp 修改文件所在的组, change group
  • ls -l 列出的属性
    -rwxr-xr-x
    一共10个字符,第一个表示文件属性(d表示文件夹,-表示普通文件),剩下的9个分为三组。每组三个分别表示r可读w可写x可执行。如果是字母表示有这个权限,如果是-表示没有这个权限,。三组分别表示:第一组表示文件属主的权限,第二组表示属主所在组用户的权限。第三组表示其他用户的权限。
  • 权限还有另一种表示方法,用数字来表示。
    编码规则如下:
    r 可读 4
    w 可写 2
    x 可执行 1
  • 无权限 0 如何解决-会自动翻译成格式的问题

有了这个编码规则,则 rwxr-xr-x 编码后为 755

第一种修改权限的方法:
要把权限改成 rwxr–r-- 则对应的编码值为744
修改命令为:chmod 744 文件名

第二种修改权限的方法:
在原来的权限基础上,即增加或减少某权限。
三个组用户的编码依次为:属主u 属主所在的组g 其他用户o
例如:
要属主增加可执行权限 chmod u+x 文件名
其他用户增加可写权限 chmod o+w 文件名
属主所在组用户去掉可执行权限 chmod g-x 文件名

1.11、文件打包压缩与解压缩

  • tar -czvf dir.tar.gz dir/ 将dir目录打包dir.tar.gz
  • tar -cjvf dir.tar.bz2 dir/ 将dir目录打包dir.tar.bz2
  • tar -zxvf dir.tar.gz 解压缩dir.tar.gz
  • tar -jxvf dir.tar.bz2 解压缩dir.tar.bz2

1.12、sed和awk 待研究

  • 正则表达式,匹配加替换。

1.13、格式化文件系统 待研究

  • mkfs /dev/hd1
  • mkfs -t vfat 32 -F /dev/hd1 创建一个FAT32文件系统

1.14、网络配置命令

  • ifconfig eth0 192.168.1.13 设置IP地址
  • ifconfig eth0 up 启动网卡
  • ifconfig eth0 down 关闭网卡
  • ifup eth0 同上
  • ifdown eth0
  • ifconfig eth0 192.168.1.1 netmask 255.255.255.0 同时设置IP和子网掩码

2、搭建tftp服务器

3、搭建nfs服务器

查询发行版本

  • 查看Linux系统版本的命令(3种方法):
    1、lsb_release -a,即可列出所有版本信息:
    这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。
    2、cat /etc/redhat-release,这种方法只适合Redhat系的Linux:
    [root@S-CentOS home]# cat /etc/redhat-release
    CentOS release 6.5 (Final)
    3、cat /etc/issue,此命令也适用于所有的Linux发行版。

使用技巧

  1. 使用Tab输入
  2. linux命令行中一些符号的含义:
    . 代表当前目录
    . . 代表上一层目录
    ‘-’ 代表前一个目录,我刚才从哪一个目录cd过来
    ~ 代表当前用户的宿主目录
    / 代表根目录
    $ 代表普通用户的命令行的提示符

代表root用户的命令行的提示符

  • 万能匹配符
  • 所谓宿主目录,就是操作系统为当前用户所设计的用来存放文件、工作的默认目录。如windows中的”“我的文档”目录,就是windows为我们设计的宿主目录。
    linux中每个用户都有自己的宿主目录,这个目录对于普通用户来说,在/home/username/,而对于root用户来说,在/root。
    [外链图片转存失败(img-6i4Jp0bU-1567954835431)(https://www.kernel.org/theme/images/logos/thelinuxfoundation.png)]

你可能感兴趣的:(Linux,OS)