Linux教程

linux+ubuntu

本文主要是介绍linux+ubuntu,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux和ubuntu的关系

linux简介:

生日:1991年10月5日

类unix操作系统

遵循posix标准

信仰:一切皆文件

linux与unix的关系:

ios与android都是基于unix开发出来的,linux是基于unix开发出来的。

linux是一个内核,最开始是没有图形化界面的。随着时代的发展在linux的基础上开发了debian,再到现在的ubuntu。

linux基本命令的使用

shell是什么?

shell是操作系统的用户界面,提供了用户和内核进行交互操作的一种接口。

shell实际就是一个命令解释器,它接受,解释用户输入的命令并它送到内核执行

shell作为命令语言,能交互地解释和执行用户输入的命令

作为程序设计语言,定义各种变量和参数,提供循环,分支等控制结构

对shell的使用熟练程度直观地反映出你对linux使用的熟练度

shell的工作模式:

交互式:一条一条地解释并执行用户的命令

批处理:一次性执行脚本里的命令

几种常见的shell:

-bash:linux默认使用的shell

-sh:steve bourne开发,最初的unix shell

-ash:由Kenneth almquist编写,只有24个命令

-csh:以william joy为代表47为作者编写

-ksh:korn shell 的缩写

常见的shell命令:

cd 切换目录

ls             显示文件

ls  -a        显示隐藏文件(一般隐藏文件是系统文件以及一些配置文件,格式:".+文件名")

ls   -l         以列表的形式显示文件

pwd           查看当前的目录

mkdir+文件名         创建一个目录

touch+文件名          创建一个文件

cat+文件名             查看文件的内容

gedit+文件名          编译文件(gedit相当于windows下的text文件编译工具)

more+文件名          分屏显示文件的内容

head +3                  查看文件的头三行(看第几行就+几)

tail +3                      查看文件的最后三行(看倒数第几行就+几)

cp  文件名a  文件名b    将a文件的内容复制给文件b

mv   文件名a   文件名b    将文件a重命名为文件b(mv还有一个作用就是移动文件)

rm  文件名a      将文件a删除

如果想连续执行两个命令,可以再命令之间使用;分割

软链接和硬链接:

软链接使用场景:当我们需要在不同的目录用到相同的文件,不需要在每个目录下都放一个相同的文件,只需要在某个固定目录放上该文件,然后在其他的目录下使用软链接链接该文件,不需要重复占用磁盘空间。

1.软链接文件有点类似于windows的快捷方式

2.在符号链接中,文件实际上是一个文本文件,其中包含的是所需文件的位置信息

软链接的使用方式:

ln  -s  被链接的源文件    链接文件

硬链接:

硬链接会在选定的位置上生成一个和源文件大小相同的文件

硬链接的使用格式:

ln   被链接的源文件   链接文件

wc -lwc  文件名        查看文件的行数,字符数,单词数 (-lwc 分别是line  word  character)

whatis:命令的简单说明

whereis:命令的源程序或手册的位置

which:可执行程序的路径和它的别名

文件的压缩与解压命令:

1.当压缩文件为tar格式时:

tar   xvf    test.tar  (解压test.tar文件)

tar   cvf    test.tar    /dir1/dir2  file3 (将file3文件压缩为test.tar)

2.当压缩文件为tar.gz格式时:

tar   xzvf    linux.tar.gz (解压linux.tar.gz文件)

tar   czvf    test.tar.gz    /dir1/dir2  file3  (将file3文件压缩为test.tar.gz)

3. 当压缩文件为 .gz/.z/.Z/.tgz格式时:

gzip    file1   file2      (压缩文件file1 和file2)

gzip    -d   file1.gz  (将file1.gz解压为file1.gz)

gzip    -r    /dir    (将dir目录下的文件全部压缩)

gzip    -rd  /dir      (将dir目录下的文件全部解压)

time+指令     查看该指令运行了多少的时间

date  查看系统的时间

uname 查看内核

du   -sh   统计文件和目录所占磁盘空间 

dmesg   显示内核状态信息

uptime    显示时间,系统运行时间,用户连接,负载

who/w    查看登录的用户

whoami/host name  查看登录的用户

cal   日历

bc    计算器

top   查看cpu使用率(查看进程)

free  查看内存和交换空间

ping  检测网络连接

ifconfig   配置网络

netstat    

shell高级命令简单使用

1.查找命令:

find  -name hello.c(通过名字查找hello.c文件)

grep "hello world"  (检索字符串hello wolrd)

grep  "hello  world"  -r ./   (在当前目录下编译检索字符串hello world)

 grep "usb" -c -r  /drivers/usb (在drivers/usb目录下搜索字符串usb  ,-c 表示只显示行号

cscope -Rk(相当于source insight里面的检索工具)

使用说明:使用cscope -Rk指令后会在当前的目录下生成一个cscope.out文件,里面存放着符号表,当我们需要查找的时候,就是到cscope.out文件里面检索的。不单单是cscope.out文件,其他类似的搜索软件也是一样的。

2.管道:

ps   -aux   查看进程(该输出流会默认到stdout里面)

ps   -aux  |grep  usb(该输出会经过管道,在管道的末端检索字符串usb,然后输出)

cat file |grep hello(将输出的内容通过管道,在管道末端检索字符串hello,然后输出)

3.重定向:

>      输出重定向到一个文件或设备

>!     输出重定向到一个文件或设备,强制覆盖原来的文件

>>     输出重定向到一个文件或设备,追加原来的文件

<        输出重定向到一个程序

shell基本命令

示例:

新建一个test文件,在里面写入两条指令

 使用echo  $SHELL 查看shell环境变量

使用bash解释器去执行test文件里面的指令

 一般脚本文件都是已.sh结尾,这样别人就能直观的看出来是脚本文件

可以在文件中设置一个命令,默认使用某个解释器,如下:

 test文件是没有执行的权限,因此修改使用chmod修改权限

然后可以直接执行该文件

 想让文本显示一行,可以使用$()符号

 添加一个循环结构

什么是环境变量

shell下的环境变量:

----环境变量一般为大写字母,通过echo查看

----环境变量何时生成的?

     linux启动时,初始化或启动脚本会创建大量环境变量并对其赋值

     每次用户启动一个新程序,新程序会继承启动程序的环境变量

     shell启动过程中,不同登录用户会启动不同的脚本,生成一些环境变量

     环境变量根据用户不同会发生变量(eg:USER/HOME)

----提示符:

     一般用户为 $

     root用户为  #

shell启动过程1:

1--内核镜像(如/boot/vmlinux)加载内存启动

2--内核启动完毕后,开启第一个init进程

3--进程init扫描/etc/inittab,找到可用的终端及其属性,一旦找到活动的终端,mingettv将会启动login提示符和口令,提示用户输入用户名和口令

4--将用户和口令传递给login,验证是否匹配;

5--若匹配,login将会自动转到其$HOME

6--将控制权移交给所启动的任务,如在/etc/passwd文件中用户的shell为/bin/bash

shell启动过程2:

1--shell将会读取文件etc/profile和~/.profile中系统和用户定义的环境变量,给出提示符:“$”或“#”

2--其他一些用户登录时会启动一些额外脚本

3--有的系统会提供/etc/bashrc脚本(Fedora),系统中任何用户每次启动bash  shell时都会执行:系统登录用户时也会执行

4--每个用户的home目录都包含一个.bashrc脚本,用户登录或者在当前用户下启动shell时都会执行

5--脚本启动大致流程:

      /etc/profile-> ~/.profile -> /etc/bashrc -> ~/.bashrc

6--有些环境变量,你需要考虑是全局还是当前用户独享...

如何声明一个变量

修改/ect/bashrc或/etc/profile脚本

        ---对所有用户都有效

        ---注意修改profile脚本需要重新source

在~/.bashrc下用export声明全局变量

        ---linux可执行执行依靠配置文件去读取路径

        ---声明的全局变量对所有用户都有效

        ---linux下使用“:”来分割路径

示例:

新安装了一个hello程序,但在他只能在他所在的目录下运行。如果想要在其他目录下也能运行的话,需要将hello所在的目录添加到环境变量中

echo$PATH查看环境变量

 pwd查看当前目录

 修改.bashrc文件(修改的时候通过追加的方式,不能将原来的环境变量给覆盖)

 使用指令source将.bashrc生效一下

 同时可以注意到环境变量与环境变量之间使用“:”分割开来

 文件系统管理

文件系统的基本概念:

1.由文件和目录组成,用户通过路径操作文件

2.文件系统将分区划分为以块block为单位的分出空间,块大小跟文件系统版本有关

3.节点(inode):

    -----是文件系统的基本单元,每个文件或目录都由一个节点来标识

    -----所有节点都被自己记录在inode节点表中

4.目录:

    -----是一个含有目录表的文件,目录表中有一个入口项

    -----入口项中含有文件名和文件对应的节点号

 文件类型分类:

 linux目录介绍:

-----linux目录跟windows有很大的不同,不同的linux发行板,主要的目录主要包括:

/bin             二进制可执行命令

/sbin           超级管理命令,这里存放的是系统管理员使用的管理程序

/dev            设备特殊文件

/etc             启动的配置文件和脚本

/home        用户主目录的基点,比如用户user的主目录就是/home/user

/lib              标准程序设计库,又叫动态链接共享库

/tmp            公共的临时文件存储点

/mnt            系统提供这个目录是让用户临时挂载其他的文件系统

/lost+found 这个目录平时是空的,系统非正常关机的文件会存在这里

/proc           虚拟的目录,是系统内存的映射。可通过访问该目录获取系统信息(可以理解为用户和操作系统交互的接口)

/var             某些大文件的溢出区,比方说各种服务的日志文件

/usr             最庞大的目录,要用到的应用程序和文件几乎都在这个目录

-----一般而言,我们安装软件,都是默认安装在/usr目录下,该目下主要包括:

/usr/local/bin   本地新增加的命令

/usr/local/lib    本地新增加的库根文件系统

/usr/bin           众多的应用程序

/usr/sbin          超级用户的一些管理程序

/usr/include      linux下开发和编译应用程序所需要的头文件

/usr/src             源代码,linux内核的源代码就放在/usr/src/linux里面

/usr/lib               常用的动态链接库和软件包的配置文件

用户账户管理

用户和用户组:

用户:

-----管理员root:具有系统所有权限,uid为0

-----系统用户:保障系统运行的用户,uid为1-499

-----普通用户:部分权限受限,uid范围为500-60000

用户组:

-----普通用户组:可以加入多个用户

-----系统组:一般加入一些系统用户

-----私有组:创建用户时,若没有指明所属组,则会定义一个私有用户组,名称与用户名相同

                     当把其它用户加入到私有组,私有组就变成了普通用户组

用户常用的配置文件:

配置文件所在位置/etc/passwd

--格式:account:password: UID:GID:GECOS:directory:shell

--说明:

            account:用户名或账号

            password:用户密码占位符

            UID:用户的ID号

            GECOS:用户的详细信息(如姓名,年龄,电话等)

            directory:用户所在的家目录

            shell:用户所在的编程环境

密码存放的位置/etc/shadow

--格式:

account:password:最近更改密码的日期:密码不可更改的天数:密码需要重新更改的天数:

密码更改前的警告期限:密码过期的宽限时间:账号失效日期:保留

用户组配置文件:

用户组配置文件所在位置/etc/group

--格式:group name:password:GID:user_list

             group name:组名

              password:组密码

              GID:组的ID号

             user_list:以group_name为附加组的用户列表

--用户组密码存放处位置/etc/gshadow

常用操作:

-----用户操作:

 添加用户

删除用户

-----用户组操作:

添加用户组

 vi /etc/group进入用户组配置文件

移动用户到该组中

删除用户组(先要把组里面的组员删除) 

文件访问权限

文件权限:

文件访问权限:

           --每个文件都有一个所有者

           --每个文件或目录都有一个指派给它们的组

           --linux根据文件的所有者和所属组来确定谁可以访问

文件的3钟权限:

读 -------r-------4

写--------w------2

执行-----x-------1

 u------所有者

g-------同组用户

o-------其它用户

a-------所有用户

修改用户和用户组权限:

改变文件所属关系:

           chown user:group  文件名

给其它用户添加写权限:

           chmod  a+x   文件名

           chmod   666 文件名

 进程管理

进程是什么?

进程的基本概念:

                  ----进程就是运行起来的程序,使用唯一的PID来标示

                  ----操作系统基本的任务管理单元

                  ----进程状态:运行态,睡眠态,停止态,僵死态

                  ----进程的优先级

守护进程:

                  ----在linux,系统服务通常是以后台运行的进程存在

                  ----系统启动时会自动运行这种后台守护进程

                  ----一旦前台有指令或请求,守护进程即可做出相应,提供相关服务

进程管理:

1.使用proc查看进行信息,proc作为一个用户和内核进行交互的接口,proc里面存放了进程使用的内容信息

2.使用top查看cpu使用率,然后按s键进入交互模式,输入cpu使用率刷新的秒数                            (或者使用top  -d 2)

3.如果想监视具体的某个进程cpu使用率,使用指令  top -p1 -p2

4.使用kill +PID杀死进程

这篇关于linux+ubuntu的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!