Linux小白菜尝试写的学习笔记(第五次更新,持续更新中。。。。)

同步跟新网址:戳这直接跳转!!!

第一章 Linux系统概述

Linux是一种广泛使用的类UNIX操作系统,是真正的多用户、多任务操作系统,具有强大的信息处理功能。

推动Linux发展的人们:
Linus —— 1991年发布
Dennis ——C语言之父
查理德 ——自由软件之父

Linux的特点:

  1. 与UNIX系统兼容
  2. 自由软件和开放源代码
  3. 便于制定和再发开
  4. 互操作性高
  5. 全面的多任务和真正64位操作系统

操作系统的功能

  1. 控制硬件
  2. 管理资源(CPU/内存/硬盘)
  3. 提供用户接口(图形界面,命令行界面)
  4. 处理输入/输出 (鼠标,键盘,显示器等)
  5. 监控系统(资源使用情况,软硬件故障报警)
  6. 通信(网络,无线)

Linux有两种版本:核心版本 发行版本

国内开发的Linux系统常见的有:普华深度麒麟

第二章 Linux常用命令

Linux目录结构
目录结构图
常用目录:

  • /bin: 这个目录存放着最经常使用的命令。
  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在 Linux 中每个用户都有一个自己的目录。
  • /lib:这个目录里存放着系统几乎所有的应用程序。
  • /dev:设备文件夹。
  • /root:超级权限者(管理员)的用户主目录。

文件类型

  1. 普通文件
    ①文本文件
    ②数据文件
    ③可执行的二进制程序文件
  2. 目录文件
    (与普通文件差别是它是有成对的“I节点号/文件名”构成的列表)
  3. 设备文件
    ①字符设备
    ②块设备
  4. 符号链接文件

总结:

  1. Linux的目录中有且只有一个根目录。
  2. Linux是以文件的形式管理我们的设备。

文件显示命令:

代码作用
cat打印输出
more/less查看文本
head打印文件开头n行
tail打印文件结尾 n行
touch修改或创建文件
clear清屏

其他一些命令:

代码作用
pwd显示当前目录
cd /跳到总目录
ls列出所在目录下文件
ls -l列出所在目录下所有文件的详细信息
cd【文件夹名字】进入文件夹
cd …退回上一级目录
mkdir 【文件夹名字】创建文件夹
rmdir 【文件夹名字】删除文件夹
cp 【A】 【B】将【A】复制成为【B】
cat 【A】查看文件内容
wc筛选统计
rm 【文件名】删除文件
mv 【A】 【B】把A的名字改成B
mv 【文件名】 xxx/(目录)移动
chmod修改权限

继续更新,今天国庆中秋双节,祝大家双节安康!!!

链接文件:
  Linux具有为同一个文件起多个名字的功能,称为链接

  1. 硬链接
      建立连接时,在其他目录或者本目录中增加目标文件的一个目录项,这样一个文件就登记在多个目录中。创建硬链接后,已存在的文件的I节点号会被多个目录文件项使用。
    ①不能对目录文件创建硬链接
    ②链接文件和被链接文件必须位于同一个文件系统
  2. 符号链接
    符号链接也称为软链接,是将一个路径名链接到一个文件。
    ①删除源文件或目录,只删除数据,不会删除链接。
    ②号链接的大小是链接文件的路径名的字节数。
    ③当查看文件信息时,可看到符号链接有一个箭头指向原文件或目录。
... 920  2120  /etc/cfx->/king_file

硬链接和软连接之间的区别:

  1. 硬链接不可链接目录,软连接可以链接目录
  2. 硬链接删除后会保存原有内容,软链接不会

文件权限管理

  文件/目录所有者:

  • u:文件主
  • g:组用户
  • o:其他用户
  • a:所有人

  文件类型:

  • 普通类型
  • d:目录
  • l:软连接
  • c:字符设备【键盘、鼠标等】
  • b:块文件【硬盘】

  rwx权限详解:

rwx作用到文件:

  • r:可读。读取查看。
  • w:可以修改。但不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
  • x:可以被执行。

rwx作用到目录:

  • r:可以读取,ls查看目录内容。
  • w:可以修改,目录内创建+删除+重命名目录。
  • x:可执行,可以进入该目录。
    文件权限表示

修改权限 chmod

修改文件或者目录的权限

  • +:添加权限
  • -:取消权限
  • =:赋予给定权限并取消其他

例:

$chmod u=rwx,g=rx,o=x 【文件目录名】   分别赋予权限
$chmod o+w 【文件目录名】    给其他人都增加写的权限
$chmod a-x 【文件目录名】    给所有的用户都减掉执行权限

通过数字变更权限
规则:r=4 w=2 x=1 rwx=4+2+1=7

$chmod u=rwx,g=rx,o=x 【文件目录名】 
$chmod 751 【文件目录名】
两种方式相同

更改权限:chown

chown 【宿主名】 [文件名]

文件压缩与解压

  1. gzip/unzip
$cd /home/cfx/first
$gzip -dv *  fir  //将/home/cfx/first目录下所有文件压缩

$unzip fir.zip
  1. tar
tar zcvf wsyu.tgz file*   //打包、压缩
tar zxvf wsyu.tgz   //解压

第三章 文本编辑

暂时先不写,哈哈哈哈哈小白菜还不是很会!

第四章 Linux shell程序设计 (比较重要)

linux中的shell简介

  1. 什么是shell?
  • Shell是linux的一外壳,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口
  • 当用户下达指令给操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核做出相应的动作
  • 系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上
  1. 什么是shell脚本?
  • 简单的说,当命令或者程序不在命令行执行,而是通过一个程序文件来执行,这个程序就被称为shell脚本
  • 也就是在shell脚本里内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕,这种通过文件执行命令的方式称为非交互式
  1. 为什么使用shell脚本?
  • 适合处理操作系统底层的业务,有众多系统命令为其做支撑
  • 适合处理纯文本文件,linux中许多服务配置文件,启动脚本
  • linux系统脚本用shell开发更简单

查看系统的默认shell方法:

echo $shell
或者
grep root /etc/passwd         ##如果想要查询其他用户,只需要更换关键字即可
  1. shell脚本的建立
#!/bin/bash                 ## /bin/bash指定解释器:由哪个程序来执行脚本内                       
echo "Hello world"          ##注意:#!/bin/bash必须写在第一行,否则会被认为是注释。

查看所有的shell类型

cat /etc/shells        ---查看所有的shell类型命令
chsh -l                ---查看所有的shell类型命令

[root@emmmheng ex]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

[root@emmmheng ex]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

切换shell操作:
[root@emmmheng ex]# chsh
Changing shell for root.
New shell [/bin/bash]: /usr/bin/bash
Shell changed.

常用的shell类型有:
/bin/sh
/bin/dash
/bin/bash
/bin/rbsh


  1. 脚本开发规范

注释:可以命令后,也可以自成一行
脚本信息:
脚本名:最好以.sh结尾

老师讲的一些知识点:

  1. 字符串处理:sedawlc

  2. 执行脚本:

./ [脚本名]
dash [脚本名]
sourch [脚本名]
  1. 查看历史命令
    ①直接上翻按键
    ②命令:history
    ③清除历史记录:history -c
    ④若历史记录有编号:执行 ---- !+编号

  2. 关于计算:

var=123
echo $var
结果:123

echo class:$var
结果:class:123

echo 'class:$var'
结果:class:$var

echo "class:$var"
结果:class:123
var=1+1
echo $var
结果:1+1
let var=1+1
echo $var
结果:2

let var="1+1"
echo $var
结果:2
var='expr 18+2'
echo $var
结果:20
echo $[7+8]
echo $((7+8))
expr 7 + 8
结果均为:15
  1. 上课和上机实验老师出的一些题目
    ①统计用户个数
cat /etc/passwd | wc -l 
wc -l /etc/passwd

②查看文件某一行或某几行

sed -n '5p' [文件名]          --查看文件第五行
tail -1/-n [文件名]           --查看文件最后一行/最后n行
head -1/-n [文件名]           --查看文件第一行/前n行
head -5 [文件名] | tail -1    --查看文件第五行(命令组合使用)

③打印出100以内3的倍数

for i in {0..100..3};do echo $i;done
#!/bin/bash
for i in $(seq 1 100);
do
  if let "i%3==0"; then
     echo $i;
  fi
done

④编写一个显示文本名称的脚本

#!/bin/bash
echo $o,$1,$2

当参数超过十个应:

#!/bin/bash
echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9
shift     ---将参数整体左移
echo $9   ---打印第10个
shift     ---将参数第二次整体左移
echo $9   ---打印第11个

⑤获取字符串某字段
打印字符串"My name is 1990"中"1990"字段

var="My name is 1990"

echo ${var:11:4}
结果:1990

str=${var:11:4}
echo $str
结果:1990

echo ${var: -4}
结果:1990

获取字符串"My name is 1990"长度

var="My name is 1990"
echo ${#var}
结果:15
var="My name is 1990"
echo ${var} | wc -L
结果:15
var="My name is 1990"
echo -n "My name is 1990" | wc -c     
15                    ----c参数: 统计字符的个数
echo  "My name is 1990" | wc -c
16                    -----n参数: 去除"\n"换行符
var="My name is 1990"

expr length ${var}
15

expr $str : ".*"
15

⑥查看文件是否存在

#!/bin/bash
if  [ -f [文件名] ];then   ---这里-f 和 -e 好像都行,又是有一、、差别
echo "文件存在"
else
echo "文件不存在"
fi

⑦将123写入file文件后,再追加456进去

echo 123 > file
echo 456 >> file

⑧创建函数

格式一:
function func_1 {
        echo "This is func_1"
      }

格式二:
func_2 (){
        echo "This is func_2"
      }
  • 函数名name是用字母、数字、下划线构成,不能以数字开头,一般以函数功能去命名
  • 函数出现重名时,以最新的函数为准,后续的函数调用都会使用新定义的函数
  • 函数调用要在函数定义之后

⑨特殊符号用法

echo $*   ---打印脚本参数
echo $@   ---打印脚本参数
echo $#   ---打印脚本参数个数
echo $?   ---上次命令是否执行成功
echo $$   ---打印进程ID


|     ---表示管道,上一条命令的输出,作为下一条命令参数
||    ---表示上一条命令执行失败后,才执行下一条命令
&     ---表示任务在后台执行,如要在后台运行
&&    ---表示前一条命令执行成功时,才执行后一条命令

⑩三种循环

while 条件
do
   命令
done
for (表达式1;表达式2;表达式3)
do
   命令
done
until 条件
do
   命令
done
④for-in
⑤select-in
......

例题】分别用上述三种循环编写脚本,打印10以内的奇数。

1.while循环
#!/bin/bash
i=1
while [ $i -lt 11 ];do
[ $(($i%2)) -ne 0 ] && echo $i
((i++))
done
2.for循环
#!/bin/bash
for ((i=1;i<10;i=i+2));
do
echo $i
done
3.until循环
#!bin/bash
i=0
until [ "$i" -gt 99 ];do
    let i++
    if [ "$[i%2]" -eq 0 ];then
       continue    
    fi
    echo i=$i
done

【例】 编写一个脚本:打开某个文件或者目录,打印第1,3,5,7行内容。
在这里插入图片描述
在这里插入图片描述

第五章 Linux内核

Linux系统:(大致分为三层)

  1. 靠近硬件底层的内核
  2. 中间层是内核之外的shell层
  3. 最高层是应用层,即用户程序部分

Linux内核实现功能:

  1. 内存管理
  2. 进程管理:进程实际是某特定应用程序的一个运行实体。
  3. 文件系统 :虚拟文件系统(VFS)
  4. 设备驱动程序
  5. 网络接口(NET)

Linux shell:
  shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器

Linux 文件系统:
  各操作系统使用的文件系统并不相同,例如,Windows 98 以前的微软操作系统使用 FAT(FAT16)文件系统,Windows 2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统是 Ext2
  ext2文件系统支持标准UNIX文件类型,包括:普通文件、目录文件、特别文件和符号链接

第六章 常用开发工具

本文已gcc编译系统为主:
有的系统会自带,但是我的没有,就需要自己安装!!!

gcc安装方法:

[root@emmmheng ex]# which gcc;    ---检查Linux是否有gcc
/usr/bin/which: no gcc in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)
[root@emmmheng ex]# yum  install  gcc;    ----命令安装

预处理阶段:

#include <文件名>    ----在系统 /usr/include 下寻找文件
#include "文件名"    ----会现在当前目录寻找,找不到再去/usr/include 下寻找

静态编译:

gcc -static [文件名]   

优点:执行快
缺点:内存大

1.宏定义:
在这里插入图片描述

_FILE_            ====打印文件名
_LINE_            ====打印所在行数
_FUNCTION_        ====打印函数名
_func_            ====打印函数名

2.查看宏定义是否存在:

[root@emmmheng ex]# cat hello.c
#include <stdio.h>

int main()

{

#ifdef X32

printf("Defined X32!\n");

#else

printf("Not defined X32!!\n");

#endif

return 0;

}
[root@emmmheng ex]# gcc hello.c
[root@emmmheng ex]# ./a.out
Not defined X32!!
[root@emmmheng ex]# 

3.gcc命令:

$gcc f1.c -o f2.c
$gcc f1.c

./a/out  ===执行文件

编译会生成一个a.out的可执行文件

gcc -v    ====显示更多详细编译信息
    -g    ====调用gdb调试
    -S    ====只编译转成汇编文件以.s命名

4.makefile文件:
这个文件很神奇!!!

[root@emmmheng ex]# cat makefile
a:
	echo "this is 'a'"
b:
	echo "this is 'b'"
c:
	echo "this is 'c'"
[root@emmmheng ex]# make b
echo "this is 'b'"
this is 'b'

提前写在makefile,可直接用make+命令名执行。

注意:在编写makefile文件时,命名昵称回车 是要按Tab键自动空行,否则执行时会报错!
makefile超级菜鸟坑(Makefile:2: *** 遗漏分隔符 。 停止)

5.一些杂七杂八的知识点:

  1. ls [ab]*:查找以a或b开头的任意文件
  2. [d]:vi 调取宏定义小技巧
  3. sudo vim etc/shadow :查看特殊文件
  4. dd:快速删除一行(vim时)
  5. /+(字符)?+(字符):快速查找字符串(vim时)
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页