2017-07-27
Server-Side
Linux 常用目录、命令

# 常用目录

一切的目录均从 / 开始,这是根目录,文件树的起始。
00/bin  # 可执行文件  binary的缩写 
01/dev  # 设备特殊文件 device 的缩写 
02/etc  # 杂七杂八的配置文件 http://blog.csdn.net/haiross/article/details/13018335
03/home # 用户主目录 
04/lib  # 程序库
05/tmp  # 临时文件
06/root # root 的主目录
07/mnt  # mount 的缩写  用于挂载其他文件系统 
08/proc # peocess 的缩写 是虚拟目录,里面是系统内存映射。可以在里面看到系统信息。
09/usr  # 重要目录,要用到的程序几乎都在这里

# Linux Bash Cli

Linux 之所以好用,原因就在于 Bash,它是 Linux 命令行的主要体现者,可以看成是命令行版的资源管理器i,可以访问执行各种文件/文件夹。
Bash 被设计成与内核交互的一门语言。以下是它的 Hello, World :
00echo "Hello, World"
除此之外,bash 还可以使用变量、if 和循环。 本人也没有深入学习,故不做介绍。

# 环境变量

bash 在执行命令的时候,其实就执行磁盘上这个命令对应的程序,比如执行 ping 命令实际上是执行了某个叫做 ping 的程序,并把命令后面的参数传递进去:
00$ ping localhost
内核在接受上述指令后会转而寻找 ping 在哪。
至于去哪里找,内核会去 $PATH 里面找,而 $PATH 是定义在系统配置文件里面的变量,可以按照如下方法查看:
00$ echo $PATH
然后命令行会打印诸如这样的字符串: /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
这些用 : 隔开的就是路径,内核会在这些目录寻找命令对应的程序。

# 自定义一个自己的命令行程序

从上面的讨论可以知道,内核是在 $PATH 里面寻找命令的,也就是说,我们把我们编制好的程序放进去就可以了,下面演示一个 sayHello 命令的编写过程 (C 语言)。

# 编写源程序 sayHello.c

00#include <stdio.h>
01
02int main() {
03    printf("Hi eczn 菌\n"); 
04	return 0;
05}
注意 我留空了 main 函数的参数,实际上这个参数就由命令行那边传递进来,可能有两个,一个是 argv 还一个是 args

# 利用 gcc 编译连接 sayHello.c 得到可执行程序

00$ gcc ./sayHello.c -o ./sayHello
(注 -o 指的是 output 后面跟上输出的可执行的二进制文件的名字)

# 进行测试

上一步会得到文件 sayHello
首先加上执行权限:
00$ chmod +x sayHello
这样 sayHello 就可以被执行了: (利用 ./ 来执行文件)
00$ ./sayHello
正常执行。

# 把 sayHello 移动到 $PATH 下

00$ mv ./sayHello /usr/local/bin
然后就可以在任意目录执行 sayHello 命令了。
如果你还希望处理:
00$ ./sayHello --name=eczn
诸如上面这样可以处理传入的字符串参数,则需要改写 main 函数,main函数有两个参数,用于处理 bash 这方面传入的参数。

# 常用命令

知道了 linux 执行命令的原理之后,现在再来学习使用其他命令就能理解了。
常用命令一览:
00$ ls           # 列出当前工作路径下的文件 list
01$ cd           # 改变工作路径 change directory
02$ mkdir        # 创建文件夹 make directory 
03$ mv           # 移动 move 
04$ rm           # 删除 remove
05$ wget         # 可以用来做 http 文件下载
06$ curl         # 可以用来做 http 请求 
07$ pwd          # print working directory
08$ echo         # 打印字符串 输出可以重定向
09$ vim          # 打开 vim 编辑器 
10$ tar          # 解压缩 tar 
11$ zip          # 解压缩 zip 
12$ ping         # ping
13$ yum          # CentOS 软件管理器 
14$ screen       # 多 bash 工具
15$ cat          # 显示文件内容 
16$ touch        # 创建新文件 
17$ reboot       # 重启
重在平时积累和谷歌搜索。

# 关于配置

由于 Linux 的命令行传统,很多软件是没有图形界面的,安装它们总是需要自己安装,而配置这些软件通常使用配置文件的方式。

# 安装

知道了命令行的原理之后,就清楚应该把软件的可执行文件放在 $PATH 里面。
而软件的安装有两种:
  1. 二进制安装
  2. 源码编译安装
二进制安装需要把相关程序放在 $PATH 即可,而编译安装还需要自行编译成二进制文件才可以安装,通常会有自动脚本或者官方教程。




回到顶部