前言

最近因为准备重新给自己的工作站重新装系统,加之日常工作中确实还会经常地使用到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?llmv 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博客

Linux ps命令常见实战用法 - 知乎

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命令的参数

参考资料    mount linux 命令 在线中文手册

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 # 按月排序 三字符月 比如MARsort -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文件可以用该命令直接解压

《Linux命令行与shell脚本编程大全》读书笔记 之一相关推荐

  1. Linux命令行与Shell脚本编程大全读书笔记

    Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab   管理系统开机时会自动启动的进程 2./etc/init. ...

  2. 《Linux命令行与shell脚本编程大全》笔记一

    第一章 初始 Linux shell Linux内核主要四种功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 shell:交互工具. 第三章 基本的bash shell ...

  3. 《Linux命令行与shell脚本编程大全》笔记3

    sed进阶 多行命令 sed的局限在于只能针对单行数据执行操作.在sed读取数据流时,它会基于换行符的位置将数据分成行. 如果你正在查找一个短语Linux System Administrators ...

  4. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  5. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  6. Linux命令行与shell脚本编程大全(第3版)

    作者:[美] 布鲁姆(Richard Blum),布雷斯纳汉(Christine Bresnahan) 著,门佳,武海峰 译 出版社:人民邮电出版社 品牌:iTuring 出版时间:2016-08-0 ...

  7. Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结

    时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...

  8. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---02

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  9. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---20

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  10. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---43

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

最新文章

  1. lucene的数据类型
  2. [snmp++]读取cisco路由交换机信息[一] - 环境搭建
  3. 【Python】Paramiko模块实现Linux服务器远程文件操作
  4. 远程控制slam小车及pid调试PC与树莓派ssh链接时出现间歇性联通段开网络故障acailable I Destination Host Unreachable_然后5s后切换了一个地图
  5. 南阳OJ 16 矩形嵌套
  6. 基于WinPcap获取设备列表
  7. 深度置信网络基础知识及程序代码
  8. MacOS版/Windows桌面版微信多开双开教程技巧以及双开代码
  9. 七种应刻意训练的顶级思维方法
  10. macbook或mac Apple ID 更新提示连接服务器出错
  11. Docker软件安装文档
  12. 【pytest】内置 fixtures 之 tmpdir:创建临时文件
  13. java安卓自动关机_android自动关机代码
  14. 菜鸟程序员成长史 --记 Github 1000+ contributions
  15. Django的MVT的思路
  16. 单目车辆3Dbox检测算法对比
  17. 入门版XNA开发套件供玩家开发X360游戏
  18. 7位随机数生成-python代码
  19. 深入理解字符串的不可变性[java]
  20. 【第183期】网友简历分析:转行没有经验,如何过HR这关?

热门文章

  1. 真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官
  2. python工程打包成可执行文件
  3. 甘超波:NLP价值观
  4. Wrapper中ge,gt,lt,le的含义
  5. 多页面实现-个人中心
  6. 单页面SPA和多页面MPA应用的区别
  7. Java的短信接口的使用
  8. 这个公式,让你的学习更高效 (L先生说-微信公众号)
  9. 微信引流最有效的方法
  10. [HDU-6578]