一、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