linux基础笔记

linux 系统的内核空间:系统调用,系统内部,硬件设备管理,驱动管理,文件系统,进程管理,内存管理,网络管理.

linux文件系统:一切皆文件

linux 中磁盘的表示 /dev/sda 第一块磁盘 sd 表示这个硬盘是stat接m.2

盘分区1:/dev/sda1磁盘

磁盘分区2:/dev/sda2磁盘

磁盘分区查看命令

sudo fdisk -l

isk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0c1d422e

设备       启动    Start   末尾   扇区 Size Id 类型
/dev/sda1  *        2048 75493375 75491328  36G 83 Linux
/dev/sda2       75493376 83886079  8392704   4G  5 扩展
/dev/sda5       75495424 83884031  8388608   4G 83 Linux    虚拟的

linux的根目录结构

/bin 存放二进制文件 系统命令等

/dev 设备目录 存储系统设备文件等

/home 用户加目录的总目录

/root 管理员用户的家目录

/etc 系统配置目录 存放系统或软件的一些配置文件

/proc 虚拟文件系统 存放系统中的一些进程或系统属性

/lib 存放库文件

/opt 存放第三方库软件安装包

/usr 用户相关的文件

/mnt 系统挂载目录

文件系统的类型:存储方式分 本地文件系统  网路文件系统 虚拟机文件系统(内存文件系统)

文件的路径:找到一个文件的字符串位置

windows:D:\Workspace\linux\5子琪.rar

linux:/home/xwq/C基础

相对路径:相对于某个位置的路径  ../  ~/c基础  在某些情况下 路径才是正确的

绝对路径:从目录开始的一个路径 /home/xwq/c基础 在当前计算机中任何位置都可以使用绝对路径

访问文件

linux与window文件系统区别:

文件命名:linux区分大小写 window不区分大小写

linux中有些类型文件 在window中不支持

shell命令:用于方便使用者使用 更好的使用linux操作系统 而设计一些的命令,这些命令,通过shell解释器进行解释

格式:各个部分之间至少有一个空格分隔 选项和参数可以有也可以没有

命令名 选项 参数

选项:以“-”开头的 通常为单个字母 用于选择以些额外的功能和结构

:参数:一般给定 操作目标或对象

使用man手册 查看命令

ls -a 显示当前目录中的所有文件包括隐藏文件的名字

ls ../ 显示../录中的文件名

ls -l a显示当前目录中所有包含隐藏文件的 详细列表信息

ls -l a.txt 显示当前目录中名叫a.txt文件的详细信息

shell命令 中的特殊符号:

1.通配符: 通用的通配符 来描述一系列有相似结构的文件名

* 代指任意长度任意字符

*.c代指所有.c结尾的文件

for*.txt代指所有以for开头以.c结尾的文件

? 代指一个长度 任意字符

[]中间给定一些字符,表示该位置匹配[]中的字符 区分大小写

[123]*.txt 表示所有1或2或3开头以.txt结尾的文件

[-]表示给定的空间 字符,不区分大小写

[^]表示匹配去除给定区间的其它字符

2.管道符 | 作用连接两个命令 将上一个命令的输出作为下一个命令的输入

wc 命令用于统计输入的字符 -l行数 -w单词数

grep 命令用于字符串筛选 可以对输入的字符串进行规则筛选(正则表达式)

ls -l | grep -E " ^d" |wc -l 统计目标中多少个目录

3.转译字符\作用:将一个普通字符转译为特殊字符 转译为其本身的含义

4.目录分隔符/根目录符 一个不能被转译的字符

5.输入输出重定向符

>以新建模式输出重定向

>>以追加模式 输出重定向

<输入重定向

6.命令置换符 (shell脚本中有使用)

``将一个命令的输出作为另一个命令的参数

关于查找:

   查找文件名 find 指定路径 -name 文件名

在多个文件中查找文件的内容

grep -rn “hello”./

shell中常用的命令:

cd 

ls

mkdir

rmdir

du -shm目录 用于查看目录的存储大小

tree 用于树状结构查看目录

mv 移动+改名字

cp 复制加改名字 -r 递归删除 目录及目录中的文件

编辑:

vim gedit echo“hello” >文件中

查看文件内容

cat(全看)    head(开头)    tail(末尾)    more(翻页) less(换行看)

文件目录的文件设置:

-rw-rw-r-- 1 xwq xwq 422 7月 31 10:33 main.c

权限码:110 110 100=0664

修改文权限   chmod 0666 main.c

修改文件的所有者 sudo chgrp 用户名 文件或组名

改变文件或目录所属组 sudo chgrp 组名 文件或目录名

sudo 在命令行前添加 表示该命令 暂时使用管理员权限运行

root 用户 管理员 上帝

linux 中的链接文件:

ln命令 来创建链接文件:

软链接:ln

用户相关:

用户名:用于登录一个计算机的凭证

口令:密码 用户登录的密码

家目录:用户的初始工作目录

用户id(uid)一个值 唯一标记一个用户

用户组id

用户相关命令:管理员身份运行

adduser 添加一个用户到linux中

deluser 删除一个用户

su 用户名 切换用户身份

passwd 修改当前用户自己的密码

管理员修改其他用户的密码

usermod -p 123456 username

进程相关命令:

进程:一个运行起来的程序 程序运行结束进程消失

PID:进程的id号,在系统中是一个唯一的数

前台进程:占用中端,中端的输入将会传输给前台进程

后台进程:没有占用中端,在后台运行的进程 输出会在中端显示 依附中端存在

服务进程:通常没有中端输入输出

查看系统中所有的进程

ps -aux

ps -aux | grep./a.out 筛选指定名字的进程

2.给指定进程发送杀死信号

3.top 命令 动态显示进程

4.更改运行中的进程的优先级

renice +/-n -p pid

进程的状态:

D:    不可中断的静止        
R:    正在执行中 
S:    阻塞状态 
T:    暂停执行 
Z:    不存在但暂时无法消除 
W:  没有足够的内存分页可分配 
<:    高优先级的进程 
N:    低优先级的进程 
L:    有内存分页分配并锁在内存中

# jobs      //查看任务,返回任务编号n和进程号
# bg  %n   //将编号为n的任务转后台运行
# fg  %n   //将编号为n的任务转前台运行
# ctrl+z    //挂起当前任务  前台转后台  
# ctrl+c    //结束当前任务  结束前台进程 
    

运行程序时 就在后台运行 ./a.out &

Ubuntu软件包的管理:

本地软件包管理:dpkg

在线软件包的管理:apt_get 应用商店

软件包:格式

Windows.exe

linux:deb软件包:Ubuntu 系统专用

.rpm软件包:Redhat系统通用型

示例:              次版本号
    sogoupinyin_2.2.0.0108_amd64.deb
    软件包名    主版本号   体系架构

1.查看系统中的所有软件包

dpkg -l 列出本地所有的软件包

2.本地安装与卸载软件包

sudo dpkg - r 软件包名 卸载指定软件包

sudo dpkg -p 软件包名 移除已经卸载文件的配置文件

sudo dpkg -i 软件安装包.deb

dpkg:

1.无需网络,本地安装

2.无法自动解决依赖问题

apt-get:联网安装 有网/源上要有该软件包

1.可以自动解决依赖问题

软件源:apt-get 工具会服从服务器(软件源)上去搜索指定软件包

sudo apt-get update 更新源

1.在线按装一个软件包

sudo apt-get install 软件包名

软件源列表文件 /etc/apt/sources.list

Ubuntu网络相关:IP地址:计算机在网络中的唯一ID 用于在网络中的逻辑位置

格式:点分法 显示 192.168.124.9 本质是一个32bit的数0-255

3类IP地址:A类 B类C类

局域网:局部访问

广域网:外网 全球通用 任何地方都可以访问

IPv4地址    192.168.124.9

子网原码     255.255.255.0

默认网关   192.168.124.1

网络号:局域网中主机地址 最小的那个 192.168.124.0

主机地址:除去网络号 余下部分 作为主机地址

广播地址:局域网中主机号最大的那个IP 192.168.124.255

子网掩码:区分网络号与主机号的一个掩码

网关地址:局域网中 主机号 最小可以使用的那个 192.168.124.1

1.linux系统IP

ifconfig查看

ens33     Link encap:以太网  硬件地址 00:0c:29:2f:76:27  
          inet 地址:192.168.124.117  广播:192.168.124.255  掩码:255.255.255.0
          inet6 地址: fe80::2c6d:3b87:26bc:a3ea/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:23463 错误:0 丢弃:117 过载:0 帧数:0
          发送数据包:5686 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:7933725 (7.9 MB)  发送字节:402275 (402.2 KB)

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:3084 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:3084 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:264009 (264.0 KB)  发送字节:264009 (264.0 KB)
2.测试联通性

ping ip地址或域名 DNS域名服务器 域名-->IP

yym@yym-pc:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=1.40 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=1.13 ms

 DHCP :动态IP分配 局域网租用IP

nslookkup 勇于解析域名 访问域名服务器

Ubuntu 配置网卡:

1.图形化配置 配置THCP 动态模式

静态配置ip 手动指定一个ip

2.使用配置文件方式配置

修改配置文件:sudo vim /etc/network/interfaces

参考如下配置:                     
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto ens33

#配置网络 ens33 为DHCP模式
#iface ens33 inet dhcp

#配置网络 ens33 为静态IP模式
iface ens33 inet static
address 192.168.3.201
netmask 255.255.255.0
gateway 192.168.3.1                    
    

配置完成后重启网卡

yym@yym-pc:~$ sudo /etc/init.d/networking restart

若出现网络拖管情况

1.编辑托管配置文件

命令:sudo vim /etc/Networkmanager.ocnf

[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=true

2.重启托管服务

命令:sudo /etc/init.d/network-manager restart

安装两个服务器:文件共享的两个服务器:tftp nfs

tftp服务器:文件传输服务 以cs(客户端与服务器模型)

客户端可以通过tftp 上传或下载文件到服务器

安装tftp客户端

tftp服务器端

1.安装软件包 atp-get

sudo atp-get install tftp//安装客户端

sudo apt-get install tftpd-hpa//安装服务器

2.配置服务器

b编辑配置文件 sudo vim /etc/default/tftpd-hpa

参考配置如下:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
# TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_DIRECTORY="/home/xwq/tftpboot"

TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure -c"

配置文件修改 
TFTP_DIRECTORY="/home/xwq/tftpboot"  // 修改了 tftp的工作目录  /home/xwq/tftpboot
TFTP_OPTIONS="--secure -c"    // 添加了-c 选项 可以上传文件 

若工作目录 /home/xwq/tftpboot 不存在, 就手动创建这个目录 
mkdir /home/xwq/tftpboot
给权限 
chmod  777 /home/xwq/tftpboot

3. 重启服务 使能配置生效 
sudo /etc/init.d/tftpd-hpa restart 
[ ok ] Restarting tftpd-hpa (via systemctl): tftpd-hpa.service.

4. 使用 tftp  
客户端 下载文件 
xwq@xwq-pc:~/tmp$ tftp 192.168.124.117
tftp> get test.txt 
Received 13 bytes in 0.1 seconds
tftp> quit
客户端 上传文件
tftp 192.168.124.117
tftp> put 1.txt
Sent 13 bytes in 0.0 seconds
tftp> quit

nfs:  目录共享服务 
1.安装服务器 
    sudo apt-get install nfs-kernel-server

2.配置 nfs
    sudo vim /etc/exports

添加一行配置 
/home/xwq/nfshome  *(ro,sync,no_subtree_check)
工作目录           *不限制ip   ro 只读  rw 可读可写 

若工作目录 /home/xwq/nfshome 不存在, 就手动创建这个目录 
mkdir /home/xwq/nfshome
给权限 
chmod  777 /home/xwq/nfshome

3. 重启服务生效 
sudo /etc/init.d/nfs-kernel-server restart 

4. 使用nfs 
    客户端使用nfs  挂载客户端提供的 目录  到本地 的 一个 目录上 
sudo  mount  192.168.124.117:/home/xwq/nfshome  /mnt/nfs

    卸载 挂载点   退出挂载点目录 
sudo umount /mnt/nfs    
    
shell脚本:  本质 shell命令的 有序集合 
    一种解释型 语言  不需要编译 
    方便操作者 对重复性的劳动进行 编程
    一种无类型语言    变量没有类型 或 字符串类型 
    
    注意事项:  对标点符号 和 格式 非常严格 特别是空格
    
创建一个shell脚本步骤: 
1. 创建一个普通文件  通常 后缀.sh 
    touch  hello.sh 
    
2. 修改权限 添加可执行权限     
    chmod 777 hello.sh    

3. 写脚本 
    vim hello.sh

第一行 #!/bin/bash 
打印 echo "hello world"

4. 运行脚本  ./hello.sh 

练习: 写一个创建脚本的  创建2.sh

变量:    多用于 代指文件名  各种名字 或参数 命令等 

用户自定义变量:    
变量定义  变量名=值     等号两边 没有空格 
变量使用  引用其值   $变量名    本质是字符替换

位置变量: 
$0   运行脚本的指令本身 
$1,$2,……$9  分别包含第一个到第九个命令行参数

预定义变量:  有终端预先定义的一些变量 
由系统保留和维护的一组特殊的变量,这些变量通常用于保存程序运行状态等
 
$#    包含命令行参数的个数
$@    包含所有命令行参数:“$1,$2,……$9”
$?    包含前一个命令的退出状态
$*    包含所有命令行参数:“$1,$2,……$9”
$$    包含正在执行进程的ID号

环境变量:  一组存储终端环境参数的 变量 

export  命令 可以打印输出 终端所有的环境变量 

PWD  存储当前工作路径 
USER 存储当前终端的登录用户
HOME 存储当前用户的家目录 
PATH 存储当前终端 的命令搜索路径 

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/gcc-4.6.4/bin:/home/xwq/esp8266/xtensa-lx106-elf/bin:/home/xwq/.local/bin

shell脚本输入输出:echo输出字符串

read 从终端读取字符串

shell中的算术运算符

expr 数学表达式 每个符号与数值 间都要有空格分开

支持 + - \* / % 但只能做算术运算 不能做小数运算

程序结构:

if结构

if [ 表达式 ]

then

         命令块1

fi

shell表达式

字符串测试:

s1==s2测试两个字符串的内容是否完全一样

s1!=s2 测试两个字符串内容是否有差异

-z s1 测试字符串的长度是否为0

-n s1 测试s1字符串的长度是否不为0

整数测试

a -eq b 测试a与b是否相等

a -ne b测试a与b是否不相等

a -gt b 测试a是否大于b

a -ge b 测试a是否大于等于b

a -lt b 测试是否小于b

a -le b 测试a是否小于等于b

-d name 测试name是否为一个目录

-e name 测试一个文件是否存在

-f name 测试name是否为普通文件

-L name 测试name是否为符号链接

-r name  测试name是否存在且可读

-w name 测试name文件是否存在且可写

-x name 测试name文件是否存在且可运行

-s name 测试name文件是否存在且长度不为0

f1 -nt f2 测试文件f1是否必文件f2更新

f1 -ot f2 测试文件f1是否必文件f2更旧

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值