Linux 初步认识
Linux的千奇百怪的版本
目前世界上主流的操作系统 –> Windows Linux Unix MacOS
Linux 严格上来说只是操作系统内核,我们所说的Linux操作系统实质上是 “GNU/Linux”
“GNU/Linux” –> GNU项目 + Linux kernel就可以组成一个类Unix的操作系统
Linux主要运行在服务器和其他大型平台上
Linux发行版 –> 在Linux kernel 加上一些件组成,不同的组合就构成了不同的发行版 如 Debian Fedora OpenSUSE
Linux四大组成部分
- Linux Kernel 内核
- GNU工具
- GUI Desktop环境
- Application
Linux Kernel
- 进程管理
- 内存管理
- 文件管理 (不同的文件系统主要是文件的读写标准不同 如Linux -> ext,ext2 Windows -> FAT32 NTFS )
- 硬件设备管理
GNU
GNU -> 理查德·斯托曼 创建的一个组织 发起了自由软件运动
“linux” 最初只是一个内核,不像Unix 有一些软件,Linux Kernel 本身没有,所以GNU 模仿 Unix 同样为 Linux 写了一些必要的软件
GNU核心
1.coreutils: 核心工具软件包
- 用来处理文件的工具
- 用来操作文本的工具
- 用来管理进程的工具
2.Shell: 提供给用户使用的软件,用户拿它使用电脑,实现人机交互
- 图形界面shell (GUI shell -> Graphical User Interface shell )
- 命令行式shell (CLI shell -> Command Line Interface shell)
传统意义上的shell指的是命令行式的shell,GNU 是为 Linux 写了 CLS
常用的shell 种类
- bash (linux 默认的shell )
- zsh (比较庞大的一种shell)
- tcsh (tcsh是csh的增强版,csh是具有c语言风格的一种shell)
- oh-my-zsh (是一款社区驱动的命令行工具,它基于 zsh 命令行)
GUI
人们使用计算机的方式
- 命令行壳层提供一个命令行界面(CLI)
- 图像壳层提供一个图形用户界面(GUI)
GUI的类型
1.Xwindows,2.KDE(一种主流的桌面设计理念 如 Windows ,Mac Os),3.GNOME,4.Unity (用于 Ubantu)
Bash shell
Linux常用命令搜索
find
find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
1 | find ~ -name "main.java" -> 精确查找文件 |
grep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。
1 | grep [options] pattern file |
管道操作符|
管道操作符可以将指令连接起来,前一个指令的输出可以作为后一个指令的输入
1 | find ~ | grep "hello world" |
使用管道注意的要点
- 只处理前一个命令正确的输出,不处理错误输出
- 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
- 常作为管道接收的命令有 -> sed,awk,grep,cut,head,top,less,more,wc,join,sort,split 等
常用的grep命令
1 | grep 'partial\[true\]' bsc-plat-al-data.info.log -> 在内容中查找包含某个字段的文件并将相关结果显示出来 |
对文件内容做统计
awk
1 | awk [options] 'cmd' file |
常用的awk命令
1 | awk '{print $1, $4}' netstat.txt -> 筛选出文件内容里的某些列的数据,其中筛选文件也可以是多个,按照空格传入多个文件即可 |
批量替换文本内容
sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed常用的命令
1 | sed 's/book/books/' file -> 替换文本中的字符串 |
参考资料