1 简介
Linux哲学思想:
- 一切皆文件(硬件设备亦表现为文件)
在Linux中,把几乎所有资源都被视为文件,包括硬件设备,如网络接口、磁盘等,都组织为文件格式,都可以通过访问文件的方式来实现对硬件资源的访问。
- 由众多目的单一的小程序组成;一个程序只做一件事,并且要做好;
linux中提供的程序和可执行文件一般都是功能单一,短小精悍,保证了linux的高速运行。
- 组合小程序完成复杂任务;
因为每个linux命令都功能简单,如果要实现复杂任务时,可以通过连接多个简单程序实现复杂的功能,这样可以保证在单个程序的高效性,也可以保证复杂程序也是高效的
- 尽可能避免跟用户交互;
目标:实现脚本编程,以自动完成默写功能;
- 使用纯文本文件保存配置信息;
目标:一款使用的文本编辑器即能完成系统配置工作
- 提供机制,而非策略;
这是linux思想中的一条,所谓机制,就是“提供什么功能”,策略就是“实现什么功能”,这种独特的设计思想为设计者提供了更大的空间使其更好的实现它。所以,自由一直都是linux的核心思想
2 简单介绍Linux的文件系统
在Linux中绝对起始位置为根(/),称之为根文件系统;Linux的路径是一个倒置的树状结构,使用层次化结构表示文件路径;在指明路径的时候一定有一个起始的位置,如果指定一个起始位置后,再也没有其他可存在的位置了,那么这个起始位置就是绝对起始位置。
目录是什么?
目录只是个路径映射方式而已,一个目录:就是一个名称空间,目录是个特殊的文件。
文件是什么?
文件必定有名字,文件内容是占据了磁盘空间。
Linux中一个文件有两类数据
元数据:metadata,元数据是文件的属性信息,不是文件数组成部分,元数据指向文件的数据;
数据:指的是普通文件中的实际数据;
Linux文件名严格区分字符大小写
文件名可以使用除/以外的任意字符,但不建议使用特殊字符,文件名称长度最长不能超过255个字符,所有.开头的文件,都为隐藏文件。
说明:/为根目录,也为路径分隔符
路径
在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置。
例如, /home/file 就表示的是 file 文件所存放的位置。只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。
我们知道,Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构,如图所示。
绝对路径:
绝对路径一定是由根目录 / 开始写起。例如,使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin
相对路径
和绝对路径不同,相对路径不是从根目录 / 开始写起,而是从当前所在的工作目录开始写起。使用相对路径表明某文件的存储位置时,经常会用到两个特殊目录,即当前目录(用 . 表示)和父目录(用 .. 表示)。
示例:
当我们使用 root 身份登录 Linux 系统时,当前工作目录默认为 /root,如果此时需要将当前工作目录调整到 root 其他子目录中,当然可以使用绝对路径。比如root目录下有一个data子目录,使用绝对路径进入子目录方法如下:
root@ubuntn:~# pwd <-- 显示当前所在的工作路径 /root root@ubuntn:~# cd /root/data/ root@ubuntn:~/data# pwd /root/data root@ubuntn:~/data# |
注意:这里所使用的 pwd 和 cd 命令,目前只需知道它们的功能即可,具体用法会在后续文章中作详细讲解。
可以看到,通过使用绝对路径,我们成功地改变了当前工作路径。但除此之外,使用相对路径的方式会更简单。因为目前处于 /root 的位置,而 data 就位于当前目录下,所以:
root@ubuntn:~# pwd <-- 显示当前所在的工作路径 /root root@ubuntn:~# cd ./data/ root@ubuntn:~/data# pwd /root/data root@ubuntn:~/data# |
此示例中./data 表示的就是data文件相对于 /root 所在的路径。这里在root目录下进入其目录下的其他子目录时./是可以省略的。
总之,绝对路径是相对于根路径 / 来讲的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件的相对路径不是固定不变的。
3 Linux命令
学习Linux首先需要知道命令的基本格式和使用方法,以及相应的查询命令的帮助,因为Linux主要是以命令的方式来实现各种操作的,并且命令条目很多,学会如何得到命令的帮助也非常重要。
Linux命令主要分为两种
内部命令:由shell程序自带的命令,而且通过某命令形式提供;
外部命令:有独立的可执行程序文件,位于文件系统某目下,文件名即命令名。
(1)外部命令可以使用which或whereis 命令可以查看到命令的路径
(2)区别内部或外部命令,在命令提示符下输入type 命令查看,如下:
# type COMMAND
如:
运行命令:
命令运行格式:
COMMAND [OPTIONS...] [ARGUMENTS...] |
选项(option):用于启用或关闭命令的某个或某些特殊功能
选项有短选项和长选项
短选项:-c,例如-l,-h
长选项:--directory
多个短选项可合并使用,例如:-l,-h,可为:-lh
3.1、查看bash内部命令的帮助
help command
例如:
root@ubuntu:~# help history history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] Display or manipulate the history list.
Display the history list with line numbers, prefixing each modified entry with a `*'. An argument of N lists only the last N entries.
Options: -c clear the history list by deleting all of the entries -d offset delete the history entry at position OFFSET. Negative offsets count back from the end of the history list
-a append history lines from this session to the history file -n read all history lines not already read from the history file and append them to the history list -r read the history file and append the contents to the history list -w write the current history to the history file
-p perform history expansion on each ARG and display the result without storing it in the history list -s append the ARGs to the history list as a single entry
If FILENAME is given, it is used as the history file. Otherwise, if HISTFILE has a value, that is used, else ~/.bash_history.
If the HISTTIMEFORMAT variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each displayed history entry. No time stamps are printed otherwise.
Exit Status: Returns success unless an invalid option is given or an error occurs. root@ubuntu:~# |
3.2 外部命令
都有一个可执行程序,位于文件系统某目录下:
(1)、COMMAND --help
例如:
(2)、使用手册(manual)
格式为:man # command (命令)
手册:有章节之分,man1---man9,man9一般没有什么用
手册页路径:/usr/share/man/
man1:用户命令,查看命令的帮助
man2:系统调用,查看可被内核调用的函数的帮助
man3:程序库调用,查看函数和函数库的帮助
man4:设备及特殊文件,查看特殊文件的帮助(主要是/dev目录下的文件)
man5:配置文件格式,查看配置文件的帮助
man6:游戏
man7:杂项,惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
man8:管理类的命令,查看系统管理员可用的命令的帮助
man9:内核内部指令,查看内核相关文件的帮助
注意:有些关键在不止一个章节中存在帮助手册;
要看指定章节手册:man # COMMAND
man命令的配置文件:/etc/man.config
MANPATH /PATH/TO/SOMEWHERE 指明新的手册文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND :到指定位置下搜索COMMAND命令的手册页并显示
如何查看指定命令在哪些章节下有帮助:
whatis COMMAND
注意:
如果使用whatis无法找到,这是因为whatis是根据数据库执行查找操作的,此库为系统定期更新;可使用makewhatis手动更新,
如果提示无法找到makewhatis这条命令,那么这是因为安装的版本不同或者没有安装,这时输入mandb更新。
帮助中命令语法的一些符号说明
[] :表示的是可选
…: 表示的可以存在多个参数
|:表示是可选的
<>:必填
{}:表示作为一个整体存在的
使用man查看命令手册示例:
root@ubuntu:~# man ip
3.3 man的使用机制:
man 命令中常用按键及其作用
(1)翻屏:
键盘按键 | 作用 |
空格键、Ctrl+f、Ctrl+V | 向文件尾部翻一屏 |
b、Ctrl+B | 向文件首部翻一屏 |
回车键 | 向文件尾部翻一行 |
k | 向文件首部翻一行 |
Ctrl+d | 向文件尾部翻半屏 |
Ctrl+u | 向文件首部翻并屏 |
q | 退出 |
#(为输入数字) | 跳转至第#行 |
1G | 回到文件首部 |
G | 翻至文件尾部 |
(2)字串搜索:
/keyword: 从文件首部向尾部进行搜索
n: 显示找到的下一个
N:显示找到的上一个
?keyword: 从文件尾部向首部进行搜索
n: 显示找到的下一个
N:显示找到的上一个
3.4 使用man查看
root@ubuntn:~# help hash hash: hash [-lr] [-p pathname] [-dt] [name ...] <-----使用格式 Remember or display program locations.
Determine and remember the full pathname of each command NAME. If no arguments are given, information about remembered commands is displayed.
Options: <----选项 -d forget the remembered location of each NAME 删除一个指定命令的缓存记录 -l display in a format that may be reused as input -p pathname use PATHNAME is the full pathname of NAME -r forget all remembered locations 删除所有命令的缓存记录 -t print the remembered location of each NAME, preceding each location with the corresponding NAME if multiple NAMEs are given Arguments: NAME Each NAME is searched for in $PATH and added to the list of remembered commands.
Exit Status: Returns success unless NAME is not found or an invalid option is given. root@ubuntn:~# |