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

2)linux命令与文件名补齐      -> 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手册查询  -> 返回命令功能、命令参数

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

其实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

以上两个命令是等价的

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

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。

原文地址:https://www.cnblogs.com/zjlbk/p/11209440.html

时间: 2024-11-06 09:38:48

2019年7月18日星期四(linux基础)的相关文章

2019年7月18日星期四(交叉工具链)

一.交叉工具链? 1.什么是交叉工具链? 我们已经学习过的编译器是gcc编译器,gcc可以将高级语言转换目标程序. gcc编译器特点:在Ubuntu编译,在Ubuntu运行.  -> 在同一个平台上编译运行,这个gcc编译器又称之为本地编译. 这个gcc编译器是Ubuntu中自带,gcc所的路径:/usr/bin/gcc. 其实交叉工具链就是一个编译器,但是交叉工具链在Ubuntu中是没有的,所以想使用交叉工具链,就必须要自己移植. 交叉工具链面向平台不是Ubuntu,而是ARM平台.交叉工具链

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

2019年8月15日星期四 一. 线程互斥方式 - 互斥锁. 1. 什么是互斥锁?特点如何? 互斥锁是专门用于处理线程互斥的一个方式,它有两种状态:上锁状态/解锁状态. 特点:如果处理上锁状态,则不能再上锁,直到解锁为止才能再上锁.如果是处于解锁状态,则不能再解锁了,直到上锁了才能再解锁. 2. 关于线程互斥锁API函数接口? 0)定义互斥锁的变量(pthread_mutex_t-> 互斥锁的数据类型) pthread_mutex_t mutex; 1)初始化互斥锁  -> pthread_m

2019年5月18日-linux就该这么学-第8课

第6章 存储结构与磁盘划分 6.2 物理设备的命名规则(1) SCSI/SATA/U盘---/dev/sd[a-p]:可挂16块硬盘或硬件设备.(2) 主分区或扩展分区的编号:1-4:逻辑分区比编号5开始.(3) 首扇区信息:主引导记录:446字节:分区表:64字节,单分区表16字节,共4个:结束符2字节.6.3 文件系统与数据资料(1)文件系统:RHEL5---ext3;RHEL6---ext4+1EB;RHEL7---xfs+18EB; (2) VFS架构:用户界面(用户进程-)--内核(系

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

一.RTC(实时时钟) 1.背景 时间在计算机系统中是一个非常重要的参数,在很多应用场景下都需要使用时间.RTC就是一个专门记录时间的设备,本质上是一个1Hz定时器. 为了计时准确,计时系统掉电也要能够正常计时.为了到达这个目的,RTC需要独立的时钟源,独立的供电电源 stm32f407的RTC的时钟源是低速晶振(LSE---32.768KHz),使用纽扣电池单独供电 2.stm32f407的RTC RTC进行2次预分频,一次7位异步和15位的同步,最终得到1hz的时钟,为了降低功耗,异步预分频

2019年7月11日星期四

一.复杂指针定义 1.简单指针   -> 指向基本数据类型  char int long.. 复杂指针   -> 指向非基本数据类型  指针/数组/函数/结构体 2.二级指针? 指向指针的指针. int a; int *pa = &a;   pa就是一级指针 int **p = &pa;  p就是二级指针 3.数组指针? 指向整个数组的基地址指针就是“数组指针” 1)如何定义数组指针? 方法与定义简单指针一致. int a; int *p = NULL; p = &a;

2019年8月22日 星期四(总结重要的)

WebSocket 比如A,B,C3人同时在一个页面上浏览,A对B进行了评论,并且提到了C.传统的架构,B,C将无法感知到,只有B,C再次拉取内容时,才会得到此信息.显然B ,C错过了与A交互的最佳时机,而且得知信息的时间延后了很多. 传统的PULL模式,也可以通过定时轮询的方式来尝试拉取数据.但这种技术 1是并不是实时的,信息还是需要到了一定时间间隔才可以得到. 2,这种方式可能大部分请求是无效的,白白浪费了一次网络请求.还造成了web Server的负载大大增高. 真正的PUSH技术目前有3

2019年8月22日 星期四(怎样成为PHP大牛)

1.服务器方面,各种PHP部署方案烂熟,Lvs,keepalived,nginx,apache,docker,换句话说其战力值相当于一个高级运维,迅速定位并排除PHP运行中的各种问题. 2.数据库方面,mysql,red is,memcache,mongodb等常见PHP有关的数据库通杀,性能调优方案信手拈来,大数据高并发处理方案如数家珍. 3.编程能力上,除PHP外,还至少精通C语言.有开源PHP扩展贡献.各种设计模式精通,代码精炼无懈可击.熟悉各种算法.写个PHP框架不在话下.熟悉常见的PH

2019年8月22日 星期四(杂谈)

用学物理.数学的方法学编程语言是行不通的,编程需要的是实践. Java 学Java的目的很明确,为了找一份好工作. 面向对象.J2EE.Java设计模式.SSH的书买了好几本.最后还是没能够入门. 原因我后来分析主要是2点, 1.Java太复杂了,根本就不适合初学者.2.犯了和学习C语言同样的错误,读书太多,实践太少(主要是不会搭建Java的开发环境). 原文地址:https://www.cnblogs.com/liang-peng-zhan/p/11395949.html

原程序员的算法课(1)-算法概述2019年08月18日 17:58:49 十步杀一人_千里不留行 阅读数 11更多所属专栏: 程序员的算法课编辑

[算法之美]数据结构+算法=程序. 前言 数据结构只是静态的描述了数据元素之间的关系.高效的程序需要在数据结构的基础上设计和选择算法. 高效的程序=恰当的数据结构+合适的算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出.如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题.不同的算法可能用不同的时间.空间或效率来完成同样的任务.一