2019年7月18日星期四(linux基础)

Posted zjlbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年7月18日星期四(linux基础)相关的知识,希望对你有一定的参考价值。

一、linux文件种类

1、如何查看linux下文件类型?如何决定文件类型?

使用"ls -l"查看文件的详细属性,其中第一个字母就是文件类型,是由创建方式来决定文件的类型。例如:使用mkdir命令来创建,就一定是目录文件。

2 linux下,一共有多少种文件类型

7种。分别是:

文件类型        创建方式       字母

======================================

普通文件   ->    touch          -

目录文件   ->    mkdir          d

链接文件   ->                   l

管道文件   ->                   p

套接字文件 ->                   s

块设备文件 ->                   b

字符设备文件 ->                    c

二、linux下根目录下有哪些文件?

[email protected]:~$ ls /

bin   cdrom  etc   initrd.img  lost+found  mnt  proc  run   selinux  sys  usr  vmlinuz

boot  dev    home  lib         media       opt  root  sbin  srv      tmp  var

常见目录(记住)

bin: 存放linux常用命令与可执行程序

etc: 配置文件

mnt: 系统挂载目录,一般存放共享目录,U盘,SD卡..

usr: 第三方程序的安装目录

      /usr/bin   -> 第三方程序的可执行文件

      /usr/include  -> 第三方程序的头文件

      /usr/lib   -> 第三方程序的库文件

      /usr/share -> 第三方程序的帮助文档

boot: 存在系统的镜像文件

       每一个系统都会有三个镜像:

       uboot引导程序  ->  memtest86+_multiboot.bin

       kernel内核     ->  vmlinuz-3.5.0-23-generic

       fs文件系统     ->  initrd.img-3.5.0-23-generic 

dev: 硬件设备的驱动文件

home:普通用户的家目录

lib: 系统自带的库文件

root:超级用户root的家目录

sbin: 超级用户才能使用的linux命令

不常见目录(了解)

cdrom:光驱挂载目录

lost+found:系统强制退出时产生一些碎片文件,重启系统,就会修复碎片。

proc:存放linux进程的相关信息 

run:系统运行时产生信息存放的目录

selinux:加固系统安全目录

sys:系统中设置的一些参数

media:VGA口连接的设备

opt:存放者一些可选的程序

srv:系统服务日志     

tmp:系统临时文件,创建文件重启无效

var:存放系统运行时需要修改的数据

三、环境变量

1、什么是linux环境变量?

linux下,环境变量就是提前设置的一些值,当我们以后使用到某些值,就会在环境变量下寻找值究竟是多少?

2、如何查看当前系统的环境变量?

[email protected]:~$ env

SHELL=/bin/bash  -> linux命令的解析器

OLDPWD=/proc   -> 刚刚去过的目录

USER=gec      -> 当前用户的用户名

PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin    -> 系统可执行程序的路径

PWD=/home/gec   -> 当前的工作路径

HOME=/home/gec   -> 家目录的路径

SHELL、OLDPWD..是环境变量的变量名,我们可以赋一些值给这些变量。

3、从环境变量中推断出几个结论。

1)为什么"cd -"可以切换到刚刚去过的路径?

OLDPWD这个环境变量可以保留一次去的过的目录。所以“cd -”等价于 cd OLDPWD等于的路径。

2)为什么"cd"可以直接切换到/home/gec

HOME这个变量可以保存当前用户的家目录路径,所以“cd”等价于 cd HOME等于路径。

3)为什么新打开一个终端,会默认在家目录下?

打开终端时,系统就会将HOME赋值给PWD。

4、环境变量PATH究竟是干嘛用?

1)明明ls/bin下,但是为什么用户可以在任何路径下直接使用ls

因为ls所在的路径在环境变量PATH下。

PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin

机制: 用户输入ls命令  -> 系统就去PATH中所有路径寻找有没有这个ls  -> 有   -> 可以在任何的目录下使用ls。

      用户输入abcdefg命令  -> 系统就去PATH中所有路径寻找有没有这个abcdefg  -> 没有  -> abcdefg不生效。

2)能不能修改环境变量PATH的值?

能。使用命令export修改。

例子1: 假设abcdefg这个程序在家目录下,想环境变量PATH只等于家目录,然后执行abcdefg,看看能不能执行。

1. 修改PATH命令: export PATH=/home/gec

2. 直接输入abcdefg,就出来结果。

例子2: 假设环境变量弄丢,linux命令全部都用不了,怎么办?

1. 直接写export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

2. 命令就恢复了。

例子3: 想在原来PATH环境变量值前提下,添加一个新的目录/home/gec,如何添加?

1. 输入修改命令: export PATH=$PATH:/home/gec

2. 查看环境变量: env

PATH=/usr/local/bin:/usr/local/sbin/:/usr/bin:/usr/sbin:/bin:/sbin:/home/gec

练习1: 自己写一个程序print_name,这个程序放在家目录下project/,实现打印自己的名字缩写,要求在任何的路径下都可以直接输入print_name,都可以运行,要求命令可以永久使用。

  将"export PATH=$PATH:/home/gec/project"  -> 加入到.bashrc中。

四、linux shell命令功能

1)将所有输入过的命令保存在一个文件中   ->  方向键""/""查看已经输入过命令。

命令保存在文件: ~/.bash_history

[email protected]:~$ history  -> 将该文件中最近的1000条命令显示出来

 1630  cd /

 1631  print_name

 1632  cd

 1633  ls

 1634  ls -a

 1635  history

 1636  ls - a ~

 1637  ls -a ~

 1638  gedit .bash_history

 1639  history

2linux命令与文件名补齐      -> Tab

Tab键按一下就是补齐。

Tab键按二下就是列出所有匹配的关键词。

3)给linux命令取新的别名      ->  alias命令

linux系统启动脚本中已经存在的别名:

# some more ls aliases

alias ll=‘ls -l‘

alias la=‘ls -la‘

alias l=‘ll‘

alias c=‘clear‘   -> 右值的命令是单引号,不是双引号

练习2:‘p’替代 ‘pwd‘

五、man手册

1、什么是man手册?

man手册就是提供用户查询linux语法一本书,当我们遇到一些不懂的函数/命令,不需要刻意记住参数,只需要记住怎么查询该函数/命令用法即可。

不懂函数  -> 通过查询man手册查询  -> 返回函数的功能、函数头文件、函数原型、函数参数、函数返回值。

不懂命令  -> 通过查询man手册查询  -> 返回命令功能、命令参数

2man手册是如何管理内容?

其实man手册分开9个手册管理。(只需要记住前3个手册即可)

[email protected]:~$ man man

         -> 第一个man,是man命令,代表用户想查询内容。

         -> 第二个man,是查询内容,代表用户想查man这个命令怎么用。

 手册数

   1     Executable programs or shell commands  -> 存放着一些linux命令

   2     System calls (functions provided by the kernel)  -> 系统调用函数

   3     Library calls (functions within program libraries)  -> 库调用函数

3、如何通过man命令查看内容

使用格式: man [[section] page ...] ...

         man  需要查看的手册数     需要查询的内容

例子1 mkdir命令我不懂?怎么办?

输入命令: man 1 mkdir

---------------------------------------------

NAME  -> 对查询的内容进行简单的概括。

mkdir - make directories  -> 可以创建多个目录

---------------------------------------------

SYNOPSIS  -> 该内容使用格式

mkdir [OPTION]... DIRECTORY...

[]: 如果出现括号,说明该项是可以省略的。

[OPTION]...  -> mkdir的选项可以不写,也可以写多个

DIRECTORY  -> 目录路径必须写,而且可以写多个。

---------------------------------------------

DESCRIPTION  -> 对内容进行详细描述

//命令功能描述

Create the DIRECTORY(ies), if they do not already exist.

//参数描述

-m, --mode=MODE

      set file mode (as in chmod), not a=rwx - umask

 

-p, --parents

      no error if existing, make parent directories as needed

例如:

mkdir dir -m 0666

mkdir dir --mode=0666

以上两个命令是等价的

mkdir aaa/bbb/ccc -p

mkdir aaa/bbb/ccc --parents

以上两个命令是等价的

例子2bzero()不会怎么办?

1)先查出bzero()函数在第几个手册。

[email protected]:~$ man -f bzero

bzero (3)            - write zero-valued bytes  -> 说明bzero()函数在第3手册

2)根据查询到第3手册,直接访问bzero()

[email protected]:~$ man 3 bzero

3)分析内容

--------------------------------------------

NAME  -> 对内容进行简单概括

bzero - write zero-valued bytes

--------------------------------------------

SYNOPSIS  -> 使用格式:得到头文件与函数原型

头文件:#include <strings.h>

函数原型:void bzero(void *s, size_t n);

看到函数原型,马上得到以下几个结论:

参数的个数:看逗号,n个逗号,就n+1个参数。

参数的名字:看下划线划住部分      s       n

参数的类型: 除了名字之外的内容。 void *  size_t

返回值的类型: 看函数名字前面的部分  void

--------------------------------------------

DESCRIPTION  -> 对参数进行描述。

怎么找到参数填什么?  ->  根据参数的位置(下划线),阅读上下文。

s:  需要处理的区域的起始地址

n:  需要处理的区域的字节数

--------------------------------------------

RETURN VALUE -> 返回值是什么

       None.

六、安装中文man手册

1、资源:manpages-zh-1.5.1.tar.gz

2、如何安装中文手册到linux系统?

1)将manpages-zh-1.5.1.tar.gz放置到共享目录

2)解压到家目录下

   tar zxvf manpages-zh-1.5.1.tar.gz -C /home/gec

3)可以看到家目录下出现了一个新的目录:manpages-zh-1.5.1/

4)为中文手册创建新的安装目录并给予权限。

   sudo mkdir /usr/local/zhman

   sudo chmod 777 /usr/local/zhman

5)切换到解压之后的目录下

   cd ~/manpages-zh-1.5.1/

   ls  -> 看到很多文件,其中有configure文件,这个就是配置文件。

6)查看配置参数是什么?

   ./configure -h

1.使用格式:

Usage: ./configure [OPTION]... [VAR=VALUE]...

2.参数

指定安装路径:

--prefix=PREFIX         install architecture-independent files in PREFIX     -> --prefix这个参数类似windows中"浏览"

                     [/usr/local]

禁用繁体字:

--disable-zhtw          do not generate manpages for zh_TW

7)进行配置

   ./configure --prefix=/usr/local/zhman --disable-zhtw

8)编译  -> 执行makefile功能

   make

9)安装

   make install

安装结果:  /usr/local/zhman/share/man/zh_CN

man1  man2  man3  man4  man5  man6  man7  man8  -> 该中文手册分开8个手册进行管理。

例子: 想查看ls的用法。

1. 查看英文: man ls

2. 查看中文: man -M /usr/local/zhman/share/man/zh_CN ls    ->  cman ls

 

 

   练习1: 安装中文手册

   练习2: "cman ls"就可以查询中文ls,永久修改cman。

以上是关于2019年7月18日星期四(linux基础)的主要内容,如果未能解决你的问题,请参考以下文章

2019年7月11日星期四

2017年7月6日 星期四 --出埃及记 Exodus 27:18

部署虚拟环境linux系统 2019年7月15日星期一 第二课

2019年8月15日星期四(系统编程)

2019年9月19日星期四(STM32)

管道符重定向与环境变量 2019年7月17日星期三 第四课