前言
最近因为准备重新给自己的工作站重新装系统,加之日常工作中确实还会经常地使用到linux系统,所以越发觉得对linux没有系统性的了解会造成学习曲线陡峭。准备通过看书对相关概念建立一个基础的认知,对linux的常规操作进行一个学习掌握。
概念名词汇总
swap space 交换空间
Virtual File System VFS 虚拟文件系统
GNU (GNU's Not Unix)
CLI comand line interface
vitual directory 虚拟目录
file globbing 文件扩展匹配
metacharacter wildcards 元字符通配符
第一章 初识Linux shell
1.1 什么是Linux
操作系统,包含Linux内核、GNU工具、图形化桌面环境、应用软件
1.1.1 Linux内核
linux内核负责的功能:
- 系统内存管理
- 软件程序管理(linux的init系统采用运行级)
- 硬件设备管理
- 设备驱动代码:编译进内核的设备驱动代码,可插入内核的设备驱动模块
- 设备文件分类:字符型、块设备、网络设备
- 文件系统管理 linux内核采用虚拟文件系统作为和每个文件系统交互的接口
1.1.2 GNU工具
核心GNU工具(coreutils)
用以处理文件的工具
用以操作文本的工具
用以管理进程的工具
shell
交互式工具,为用户提供启动程序、管理文件系统中的文件以及运行在linux系统上的进程的途径。其核心是 命令行提示符(输入文本命令、解释命令,并在内核执行)
shell脚本 多个shell命令放入文件作为程序执行。
linux 有多种shell可以使用,不同的shell 有不同特性。默认是 bash shell 。取名的渊源,Bourne agian shell:Bourne万的一个文字游戏。其他还有ash\korn\tesh\zsh
1.1.3 图形化桌面环境
X windows 系统(图形显示的核心部分、X.org
KDE桌面
GNOME桌面
Unity桌面 (Ubuntu 使用的)
1.2 Linux的发行版
分类:
完整的核心linux发行版(Red Hat、Debian)
特定用途的发行(CentOs、Ubuntu)
CentOs是Red hat企业linux源代码构建的免费发行版
LiveCD测试发行版
第二章 走进 shell
2.1 进入命令行
2.1.1 控制台终端
2.1.2 图形化终端
2.2 通过Linux控制台终端访问CLI
2.3 通过图形化终端仿真访问CLI
2.4~2.6 介绍了GNOME\Konsole Terminal ,xterm三个终端仿真器的基本使用
第三章 基本的Bash shell 命令
3.1 启动shell
3.2 shell 提示符
3.3 bash手册 命令:man
man xterm
man man
man 1 intro # 阅读第一部分 man section# topic
linux 手册页惯用的节名、手册页的内容区域
3.4 浏览文件系统
3.4.1 linux 的文件系统
windows pc上安装的物理驱动器决定了文件的路径名,但linux不一样, linux将文件存储在单个目录结构中,这个目录【虚拟目录】 vitual directory。
linux 用正斜线(/)在路径中划分目录,二用反斜线(\)来标记转义字符
linux的根驱动器在 linux pc 安装的第一块硬盘(根驱动器),其包含了虚拟目录的核心。
mount point挂载点是虚拟目录用于分配额外存储设备的目录。
【文件系统层级标准】filesystem hierarchy( /ˈhaɪərɑːrki/ ) standard,FHS
常见的linux目录名称(图表 待插入)
3.4.2 遍历目录
pwd #显示出shell会话的当前目录
绝对文件路径
相对文件路径
单点符号 (.)表示当前目录
双点符号 (..)表示当前目录的父目录
3.5 文件和目录列表
3.5.1 基本列表功能
ls #输出的列表是按字母排序的(列排序)
ls -F # 会在目录名后加/ ,会在可执行的文件后面加个 星号*
ls -F -R #-R 递归选项
ls -l # 显示长列表,包含目录的更多信息
ls -alF #组合参数
3.5.2 显示长列表
ls -l 可显示的信息:
- 文件类型
- 文件的权限
- 文件的硬链接数量
- 文件属主的用户名
- 文件的组名
- 文件的大小(单位 是字节)
- 文件的上次修改时间
- 文件名 或目录名
3.5.3 过滤输出列表
用户可制定特定文件的名称作为过滤器,ls命令可通过识别标准通配符,让过滤器帮助匹配 不知确切名称的文件。
ls -l my_scri?pt # 问号 ?代表一个字符
ls -l my* #星号* 代表零个或多个字符
ls -l my_scr[ai]pt #中括号表示 一个字符位置并给出多个可能的选择。
ls -l my_scr[a-i]pt # 也可以制定字符范围
ls -l f[!a]ll # 用感叹号(!)将不需要的内容排除在外
文件扩展匹配 file globbing
元字符通配符 metacharacter wildcards
3.6 处理文件
3.6.1 创建文件
touch test_one # 创建文件
ls -l test_one
ls -l test_one
touch test_one # 改变文件的修改时间
ls -l test_one
ls -l test_one
touch -a test_one # 改变文件的访问时间
ls -l --time=atime test_one # 查看文件的访问时间
3.6.2 复制文件
cp source destination # source源对象 destination目标对象
# cp命令将source复制成一个新文件,并命名为destination
# 建议加上 -i 选项,强制shell询问是否需要覆盖已有文件
cp -i /etc/NetworkManager/NetworkManger.conf .
# cp source . 单点符指的是将文件复制到当前工作目录中
cp -R Scripts/ Mod_scripts #递归地复制整个目录的内容
cp *scirpt Mod_Scripts # 通配符会将目录下所有以scirpt结尾的文件复制到指定的目录下
3.6.3 制表键自动补全
3.6.4 链接文件
文件链接:
符号链接:符号链接是一个实在的文件,指向存放在虚拟目录结构某个地方的另一个文件,这两个通过符号链接在一起的文件,彼此内容并不相同。
ln -s data_files s1_data_file # w为data_file创建符号链接,原始文件data_files必须事先存在。
ls -i *data_files # 通过ls -i 可以查询文件的inode编码,inode是文件标识的唯一数字。
硬链接 会创建独立的虚拟文件
ln code_file h1_code_file
ls -li *code_file # 链接技术
只能对于同一存储媒体的文件创建硬链接。不同存储媒体的文件只能使用符号链接。
3.6.5 重命名文件
mv 可将文件/目录移动位置 或重命名
ls -li f?ll
mv fall fzll # 重新命名
ls -li f?ll
mv fzll /home/chirisince/Pictures/ # 移动文件位置,不改变inode编号和时间戳
#类型cp 推荐 加-i参数,覆盖文件会有提示确认
mv /home/fzll /home/test/fall # 移动文件位置并同时修改文件名
# 可使用mv移动整个目录
3.6.6 删除文件
rm -i fall #rm removing 移除/删除 linux没有回收箱,用-i选项多个确认环节。
rm -i f?ll
rm -f # 删除很多文件且不受提示符的打扰
3.7 处理目录
3.7.1 创建目录
mkdir New_dir
mkdir -p /New_dir/sub_dir/under_dir #批量地创建目录和子目录
3.7.2 删除目录
rmdir # 只能删除空目录
rm -r # -r, -R, --recursive
# remove directories and their contents recursively
#推荐使用
rm -ri
rm -rf # 一口气删除目录及其所有内容,没有警告信息,没有声音提示 是一个非常危险的工具。
tree small_dir # 可以美观地展示目录、子目录及其中的文件。
apt install tree
3.8 查看文件内容
3.8.1 查看文件类型
file New_dir
#显示文件的类型 text(文本)文件,字符编码
#展示文件是否有为符号链接
#对于脚本文件,可以展示其可执行
# 对于二进制可执行程序,file命令可以确定该程序编译所面向的平台以及需要何种类型的库。
3.8.2 查看整个文件
cat #显示文本中所有数据的工具
cat -n test1 # 给文本的行加上行号
cat -b test1 # 只给有文本的行加上行号,不给空白加
cat -T test1 # 不让制表符出现
more # 命令 分页工具
less # 分页,可识别上下键以及上下翻页键
3.8.3 查看部分文件
tail -n 2 log_file #-n 参数是显示 文件最后几行
head -5 log_file #展示文件开头的那些行的内容
head -n 5 log_file
第四章 更多的bash shell 命令
4.1 检测程序
4.1.1 探查进程
监测进程process可以用ps 命令。
ps的特点:
1、功能全面,进而复杂(参数多)
2、GNU ps 支持3中类型的命令行参数:Unix、BSD、GNU
常用ps参数总结:
ps -ax # 查看全部进程
ps -u root # 根据用户过滤进程
ps -aux # 通过cpu 和内存过滤进程
ps -axjf #树形显示进程
pstree #树形显示进程
ps -eo pid,user,args # 手工筛选信息
watch -n1 'ps -aux' #使用watch实时监控进程状态
ps -aux | sort -nk 3 #查看CPU 资源的使用量对进程进行排序
ps -ef | grep ssh #查找特定进程信息
ps -aux | grep ssh #查找特定进程信息
ps -aux >ps.txt #把所有进程显示出来,并输出到ps.txt文件中
参考资料:
ps命令常用选项参数详解_kstg663294_51CTO博客
4.1.2 实时检测进程
常用命令 top 、htop
进程的详细信息类别说明:
PID、USER、PR(进程优先级)、Ni(进程的谦让度)、VIRT虚拟内存总量、RES 进程占用的物理内存总量、SHR 进程和其他进程共享的内存总量、
S进程的状态(D中断休眠\R运行\S休眠\T跟踪或停止\Z僵化)、%CPUcpu时间比例、%Mem 进程使用的内存占可用的内存的比例
4.1.3 结束进程
命令 kill
进程信号
HUP 挂起
INT 中断
QUIT 结束运行
KILL 无条件终止
SEGV 段错误
TREM 尽可能终止
STOP 无条件停止运行,但不终止
TSTP 停止或暂停,但继续在后台运行
CONT 在stop或TSTP 之后恢复执行
命令 killall 可以支持通过进程名而不是pid来结束进程,支持通配符。
killall http*
4.2 检测磁盘空间
4.2.1 挂载存储媒体
1、挂载的基本命令 mount -t type device directory
type 文件类型
vfat windows长文件系统,
ntfs window7 xp nt vista 等使用的高级文件系统
iso9660 标准CD-ROM文件系统
device 媒体的设备文件名
diretcory 挂载虚拟目录的挂载点
mount命令的参数
2、umount [directory |device]
4.2.2 使用df命令
df -h
4.2.3 使用du命令
du可以显示某个特定目录,默认是当前目录的磁盘使用情况。
du -c # 显示所有已列出文件总的大小
du -h # 按用户易读的格式输出大小
du -s # 显示每个输出参数的总计
4.3 处理数据文件
4.3.1 排序数据
sort -n files #按数字的值排序 而不是按字符
sort files #默认情况 会按照会话制定的默认语言的排序规则对文本文件的数据行排序
sort -M # 按月排序 三字符月 比如MAR
sort -t ':' -k 3 -n /etc/passwd #以':'为分隔 的第3个字段排序
4.3.2 搜索数据
grep three files1 # 在文件files1 中搜索three
grep -v t files # -v 反向搜索
grep -n t files # 显示行号
grep -e -t -e f files1 #指定多个匹配模式,可用-e参数 指定每个模式
grep -e [tf] files # [tf]正则表达式 搜索包含t或者f字符的匹配
egrep 是grep的衍生,支持POSIX扩展正则表达式。fgrep 支持将匹配模式指定为用换行符分隔的一列固定长度的字符串。
4.3.3 压缩数据
linux文件压缩工具:
bzip2、 .bz2
compress、 .Z 初代,逐渐无人用
gzip、 .gz GNU压缩工具
zip .zip windows 上PKzip工具的Unix 实现
软件包gzip 包含一下工具
gzip 压缩文件,支持通配符
gzip my*
ls -l my*
gzcat 查看压缩过的文本文件的内容
gunzip 解压文件
4.3.4 归档数据
标准归档工具 tar
tar function [options] object1 object 2 ...
tar 命令的功能
tar -cvf test.tar test/ test2/ # 创建文件
tar -tf test.tar # 列出内容 不提取文件
tar -xvf test.tar # 提取内容,如果tar文件是一个目录结构创建的,那整个目录会在当前目录下重新创建。
tar -zxvf filename.tgz #gzip压缩过的tar文件可以用该命令直接解压