linux基础学习分享记录


linux层次接口依次从下往上
系统程序-》kernel内核》运行程序》shell (人际交互 外壳)》应用
默认文件系统类型
EXT3 EXT4 ubunto 采用EXT4  SWAP类型的文件系统只在linux交换分区中被使用
linux系统至少要两个分区:根分区(EXT4)和内存交换分区(swap类型)
linux文件属性:
文件名只能字母 、数字。下划线、圆点等组成
文件类型:
普通文件 ‘ - ’代表普通文件
目录文件 ‘d’
链接文件 ‘l’ :一类特殊的文件
块设备文件 b
设备文件  c
管道文件 p
隐藏文件 . eg .progile .bashrc  等

linux的根目录结构 /    root管理员用户的家  ~ 用户家目录

linux安装 
磁盘分区意义:提升查询性能 数据安全保护  
磁盘分区工具 :fdisk 
磁盘分区的种类
主分区 /dev/sda1 sda2  一个磁盘最多只有一个扩展分区 扩展分区和主分区加起来最多为4  扩展分区里面划分逻辑分区,没有数量限制
扩展分区   扩展分区和主分区加起来最多为4 扩展分区里面划分逻辑分区,没有数量限制
逻辑分区   扩展分区里面划分逻辑分区,没有数量限制
系统安装: 设置bios启动项的优先顺序 安装的时候最好可以连接互联网 linux初始化用户登录,网络及时间配置
下载地址: 镜像文件下载 和虚拟机先下载
虚拟机下载地址:http://www.vmware.com/cn  选择免费产品 player下载
镜像文件下载    http://www.ubunto.com/download/desktop

1、命令格式 命令帮助
linux命令组成部分
命令字
命令选项参数
命令的操作参数
命令行格式
命令子 +命令选项 +命令参数
ls -l etc  后面两个可以省略
命令帮助 man man+命令  如:man ls  查看ls的帮助文档 或者命令+ --help 如 pwd --help  help主要查看系统内部命令的帮助信息ls是外部命令
ls /home
ls -l /home
type pwd   用type命令可以查看此命令是内部命令还是外部命令

2、linux的目录操作:
目录的路径概念
分绝对路径和相对路径:非以根目录(/)开始的的路径都是相对路径
目录的显示和切换:显示ls ls-l 列式文件的目录的冗长信息,ls -d 列式当前目录条目的自身信息而不是目录下的其他文件信息。
cd切换 cd ~ 切换到家目录 /home/huang  
显示当前目录 pwd 
目录的新增: mkdir -p 用于递归创建多个目录
mkdir aa bb cc     mkdir  - p dd/ee    dd ee都创建出来
目录的拷贝  cp,支持拷贝同时改名  -a 全部拷贝  -f 强制拷贝有则覆盖
cp myfile etc/hty/ 拷贝针对的是文件 如果是个目录会略过  使用cp -a 拷贝目录和文件   拷贝的时候改名 cp myexamp bb/youexample
目录的删除: rmdir 删除一个和多个目录  -p 用于递归删除多层空目录   rm -rf 用于删除非空目录 以及强制删除
rmdir cc 如果CC中有东西则或报错 rmdir -p dd/ee 删除的都是非空目录  rmdir -rf dd 删除dd及里面的所有文件  最好使用rm -ri 带提示的
目录的移动: mv 目录的移动、改名、移动的同时改名
移动比较特殊, mv a b 将a改名为b  mv  c  b/c  移动  mv c b/e  移动同时改名

3、文件操作
文件的显示和过滤
cat 默认 输出输入的东西  cat test.c 查看文件内容存在缓冲区里面 cat -t tes.c 显示里面的特殊字符
more 分屏显示 空格往下查看 
less 上下键上下滚屏查看 
head 默认开头前10行  head -n 指定开头多少行信息
tail   tail -n  尾部查看 tail -f 显示尾部最新的信息
过滤
grep -v  反向筛选出不含指定关键词的行 : grep - v iotexk myexamp.desktop  筛选出myexamp.desktop中不含iotexk的行
grep -i 将以忽略大小的方式来赛选  grep - i UBUNTU myexamp.desktop
文件的新增和拷贝
touch aa.txt 文件存在则不创建  存在的话更新文件的时间 cp -a 文件目录都可以拷贝  cp -i 可以提示拷时是否覆盖
文件的删除
rm -i 提示  rm -r 递归  rm- f强制
文件的查找
find -name / “cc”  从根目录查找所有名为cc的目录的路径
文本文件的编辑 vi/vim
三种状态模式
命令模式 vi +文件名  默认进入是命令模式  通过命令模式i 在当前光标处进入插入状态 或a在当前光标后进入插入状态 进入可编辑模式
可编辑模式   在这个模式按住esc 进入命令模式
末行模式 :q 退出 :wq 保存退出  文件保存 打开 退出 一种非编辑的操作
vim的命令编辑操作
复制 粘贴 一行
在命令模式下(先按esc)在光标处按 y  光标移动到你想粘贴的位置按下p进行粘贴
复制 粘贴 多行
在命令模式下(先按esc)在光标处按 ny  光标移动到你想粘贴的位置按下p进行粘贴
删除
在命令模式下(先按esc)在光标处按 dd  删除多行 按ndd
增行
在命令模式下(先按esc)在光标处按 o 
vim的查找和行替换和全本替换·
在命令模式下(先按esc)输入/+待查找的字符,按n切换到下一个匹配串
替换光标当前行的字符 比如io 替换成IO  在命令模式下(先按esc) :s/io/IO/gc
替换全文 %s/io/IO/gc
显示行号 命令模式下输入  :set nonu  显示 :set no
编辑多个文件  vi aa.c bb.c cc.c   :args 查看有哪些文件 :next  切换    :prev  上一个文件    :first 第一个文件     :last最后一个文件

文件的压缩解压
文件归档 tar  默认仅仅打包归档,不进行压缩 -c 创建文档归档 -x 释放归档文件包 -t查看归档文件包 -v显示归档操作过程信息 -f指定归档包文件名
将当前目录下的所有.c .h 文件进行归档,不压缩
tar cvf yasuobao.tar *.c *.h
释放压缩包到aa目录下 指定具体目录加大C 不指定加载当前目录
tar xvf yasuobao.tar -C aa
文件打包压缩命令 tar   -z   文件包以*.tgz格式压缩  -j文件包以bz2格式压缩
tar czvf yasuobao.tgz *.h *.c   打包的同时压缩 tzvf查看  xzvf 释放解包
tar cjvf yasuobao.bz2 *.h *.c                     tjvf      xjvf
其他文件压缩命令 zip
压缩文件包为*.zip格式   兼容多平台,压缩率不高
zip yasuobao.zip *.c *.h  压缩当前目的额所有.c .h文件
文件解压缩命令  unzip 解压*.zip的压缩包
unzip yasuobao.zip    不等指定目录

文件压缩命令 7z 跨平台的 压缩比最高的压缩软件 包括*.rar,*.iso 在内的多种压缩文件格式的解压支持
7z a yasuo.7z *.c *.h 
7z l yasuo.7z  显示压缩包里面的文件
7z e yasuo.7z  只能解压到当前目录

文件内容的全屏显示命令:ar
-r 添加目标代码文件到静态库文件中
-x提取目标文件从静态库中
-t 查看静态库文件中的目标代码列表
-v 显示更细致的繁冗信息
-d 删除目标代码文件从静态库中

ar tv libsunpp.a  查看静态库由哪些文件构成 
ar xv libsunpp.a 提取里面的.o文件
ar rv libsunpp.a my.o x.o  将.o文件合成.a文件

设备挂载 和卸载  挂载就是提供一个访问的方式而已。
挂载目录类似于windows中的盘符 /mnt/usb  linux提供的目录而不是盘符

mount.ntfs  ntfsU盘挂载
设备卸载   linux中设备用设备文件来表示
光盘设备文件挂载
mount -t iso9660 /dev/cdrom  /mnt  (iso是格式)cdrom这个设备挂载到mnt目录下
光盘iso镜像文件挂载
mount -o loop -t iso9660 mycd.iso /media    (iso是文件而不是设备文件不能直接挂载,需要借助loop虚拟光驱,将ios文件刻录在loop上,然后进行挂载)挂载目录自选,
u盘设备挂载
FAT32  mount -t vfat /dev/sdb1  /mnt  不能挂载到根目录
NTFS   mouunt.ntfs /dev/sdb1  /mnt 

设备卸载
两种方式 1、 umount  /mnt  卸载目录  2、卸载设备  umount /dev/sdb1
软件包升级
软件包在线升级 apt -get download vim  只下载不安装  apt - get install vim 下载安装好 apt -get upgrade vim 升级 apt -get updata 跟新软件包列表
软件包离线安装 dpkg -i  idnent*.deb  软件包安装

进程管理
进程查看  ps 默认线束shell进程及ps进程本省 -a 显示所关联终端的所有进程信息  -u 显示所有有效用户的进程关系 -x 显示没有控制终端的进程信息
ps -aux   ps -ef
进程树查看
pstree -p  显示进程号的方式来显示进程树
进程动态查看
top 默认显示当前占用cpu资源最多的所有进程信息 eg: top -p +进程号
进程终止操作
进程 终止  正常退出
进程 中止  中断退出 kill 确实发送terminal信号  -l 产看所有系统支持的信号 -9 via哦是发送中止该进程的信号  kill -9 1770  
killall +进程名

linux系统管理
清屏、重启和关机操作 clear  sudo reboot 重启 shutdown now 立刻关机   
系统内存硬件信息查看 cat /proc/meminfo  查看该文件
操作系统信息查看  uname -a
主机名查看 hostname

计划任务 按照某个时间点列行做的任务
计划任务查看与设置命令              crontab m(分) h(几点) dom mon dow(周几) cmd(命令)
步骤: 先执行contab -e 创建任务 按照 上面   /*5 *  *   *   1 tar -zcf /var/backus/home.tgz /home/*.*  每周1早上五点执行备份将其压缩打包 /*代表每隔五分钟,没有/*代表每个小时第五分钟
       在执行 重启cron服务  sudo service cron restart  
contab -ri  删除当前用户端下的计划任务

内存状态查看命令:free  -s  5  每隔五秒显示一次最新的内存信息
整个磁盘文件系统空间使用查看命令 df  df -h
具体某个文件或目录占用查看命令 :du
du -sh /home/iotek  du -sh /home/mytest/aa.txt

文件磁盘分区查看 sudo fdisk -l 

网络连接查看:ping
检测网路的联通情况
评测传输网速的质量
ping 127.0.0.1 不会停
ping -c 6 127. 0 .0 .1  ping6次后自动停止
网络地主查看  ifconfig 
设置网络接口地址等网络相关参数
eg: ifconfig -a eth0  
sudo ifconfig eth1 193.224.434.1 netmask 255.255.255.0
域名解析查询 nslookup  www.baidu.com  反向解析 nslookup 8.8.8.8 谷歌
路由信息查看 
路由信息查看及设置命令
route 
查看主机当前的路由设置信息
支持设置主机的静态路由信息
缺省检测和显示路由信息
eg: route
sudo route add default ge 192.168.248.3   route -n(增加一条路由)
sudo route del default ge 192.168.248.3  route -n  (删除一条路由)
网络统计信息 netstat 
netstat  -a  显示监听信息
netstat -t  tcp协议的监听信息

用户管理:
用户添加删除  useradd -m bencai    创建用户的同时创建该用户的家目录  userdel -r bencai 删除用户的同时删除包含用户家目录的所有文档 sudo passwd bencai  为用户指定密码
用户查看      whoami  查看当前用户  查看所有登录的用户  who  查看用户id命令 id越小越早创立 id -u bencai查看本菜用户的id  id -g bencai 查询bencai的用户组id
用户切换       su + 用户名 然后输入密码  切换到root用户的推荐方法sudo -i  密码为第一安装用户的密码  sudo -u bencai ls  不切换用户,执行本菜可以做的事
将用户添加到sudo组  sudo  gpasswd -a user01 sudo 这样新用户具有sudo权限
用户账户锁定  usermod -L bencai    usermos -U bencai 解锁
用户账户配置文件     /etc/passwd   less /etc/passwd   查看 less /etc/shadow  密码文件    采用密文

linux用户组管理
用户组添加与删除  groupadd  默认给当亲违背暂用的最小gid给新用户组 groupadd -g user01 1002    用户组删除  groupdel uerser01 
用户组查看   groups 查看当前用户所在的用户组  groups bencai  查看指定用户的用户组
用户组成员更改 gpasswd -a iotek bencai  将ioteck用户加入bencai组  删除gpasswd -d ioteck bencai
改变有效登录群组 newgrp bencai 将有效群组切换到benccai小组 
用户组的配置文件 /etc/group   etc/gshadow

文件权限属性
文件权限设置
-rw-r--r-- 1 root(所属用户)  root (所属组)  31314 dec dec17 10:23 install.log   root用户可对这个文件读写 组里面的用户可以读  其他的用户对该文件没有权限
-代表普通文件  后面9位是文件权限描述 第一段文件所有者u  第二段 文件所属组g 第三段 其他用户 rwx421 可读可写可执行
文件权限设置   chmod a+x
chmod u+x install.log
chmod g-x isntall.log
chmod o =r install.log
chmod a+x  install.log  --代表 u g o 都加上可执行权限
数字方式设置
chmod 644 install.log r = 4 w = 2 x = 1
chmod 755 install.log 
文件属主设置和属组设置
属主 chown 默认设置当前用户的所有者用户
eg: chown -R testdir  用于递归设置目录中所有文件的属主 chwon becai newdir  将newdir目录的属主改成本菜  newdir中的文件不会变更 使用chwon -R bencai newdir 目录和目录下的文件都会变更属主为bencai
文件属组设置命令 chgrp 
默认当前用户为用户组 和上面一样 
chgrp -R testdir    递归

ftp服务的启停配置
ftp服务的启动  service vsftpd start
ftp服务的停止 service  vsftpd  stop
ftp服务的重启 service vsftpd  restart
ftp服务的配置文件  /etc/vsftpd.conf
ssh服务的启动  service ssh start
ssh服务的停止  service ssh stop
ssh服务的重启  service ssh restart


shell的环境和功能
shell的概述 :shell是操作系统和用户操作的媒介 bash  /bin/bash
命令补全 按tab健 自动推导 上下键 逐条跳跃之前的命令历史
命令别名  原命令的昵称  命令别名在命令行提交时自动被字符替换 
命令别名的查看   alias  
命令别名的设置 alias myls=’ls -ld‘  在命令行下面输入myls  系统自动将myls替换成ls -ld
通配符的概念: * ls -l test*  *代表任意多个    ?ls -l test?.?  一个?对应一个字符   [] ls -l test[0-9].txt  0到9中的一个 范围中的一个
命令后台发送与作业控制: 指命令脱离命令行交互程序的控制而独立运行
eg: 一个执行命令比较长的命令不让它占用控制台 在原有命令的末端使用“&”符号即可将该命令发送至后台运行 gedit &
命令作业控制的概念: 命令作业控制是系统对于命令作业的某种任务安排
使用jobs命令可以查看当前的后台作业任务
使用bg命令可以将当前的任务命令作业切换到后台
使用fg命令可以将最近的一个后台作业切换回前台 fg %+作业号 或 fg + 作业名 fg gedit 记事本

shell变量:
shell变量的概念 是shell程序在内存中储存数据信息的容器 COLOR=red 引用 echo $COLOR
自定义变量 Day = friday eg echo "today is $Day" / echo "today is ${Day}"
环境变量 环境变零的使用方法和自定义变量一致,变量命名被约束 
env查看系统中的环境变量 export导出到子shell中具有遗传性 
用户的环境变量保存在配置文件中 ~/.bashrc中或~/.profile中   修改环境变量的值就是修改文件中环境变量的值执行 . ~/.bashrcs生效  改变用户的环境变量值只对当前用户生效
PATH 储存系统命令的所在路径,通常为绝对路径
PATH变量的使用 PATH = home/ioteck/bin:$PATH  往PATH中增加自己路径 先引用在写入
其他环境变量
PS1存储命令行提示符 echo $PS1 cmd光标前面的提示符     PS1 = '\u@:\$'  这样修只对当前shell生效,是子shell 换个用户则无法生效
PS2储存命令行的换行符 echo $PS2 > 用作一个命令没输完 手动换行
预定义变量  无需设置,只能引用 用来存储shell程序运行过程中的状态信息,由shell本身提供 $$存储进程号 $0 进程名 $?存储当前命令的返回信息成功还是失败 $!存储最近一个后台进程的进程号信息
位置变量 
位置变量是由shell程序提供的变量。可用来引用传递给程序的参数
位置变量通过程序参数在传递给程序时的位置顺序来引用
位置变量的使用
位置变量$1 , $2,....$9
位置变量的切取命令shift
eg  vim test.txt  里面插入记录  ls -ld $1 保存退出后执行 .test.txt /home  这里/home相当于传递给$1 结果显示ls -ld /home
eg  vim test.txt  里面插入记录  ls -ld $1  ls -ld $2 保存退出后执行 .test.txt /home /var  这里/home相当于传递给$1 /var传递给$2 结果显示ls -ld /home和ls -ld /var的结果


管道与重定向
标准输入文件:stdin
标准输入的设备文件未/dev/stdin  
对应的文件描述符未0
标准输出文件 stdout
标准输出的设备文件未/dev/stdout
对应的文件描述符为1
标准错误文件:stderr
标准错误的设备文件为/dev/stderrdui
对应的文件描述符未2
管道 提供命令间(进程间)信息传递的设备(进程间通信)
管道的信息传递是由前往后单向的传递
管道仅将前一命令程序的标准输出传递给后一命令
shell中使用管道符| 来进行管道操作
eg ps aux | grep "bash"  将ps aux输出作为 grep的输入
管道的级联 
eg ps aux | grep "bash"| grep -v "grep"

重定向
标准输出重定向
eg:ls -l test.* >out.txt  覆盖重定向
eg:ls -l test.*>>output.txt 追加重定向
标准出错重定向
eg ls -l test.* 2>out.txt  2 标准错误的设备文件的描述符
eg ls -l test.* 2>>out.txt

输入重定向的使用
eg cat <out.txt
标准输入重定向之here documnent技术
eg: cat <<EOF .....EOF 
合并输出重定向的使用
指 合并标准输出和标准错误的信息输出
eg:ls -l test.* sjfefe &>output.txt
管道重定向的应用
管道过滤信息的重定向输出
ls -l |grep bencai >out.txt
利用重定向拷贝文件

here document使用
cat>output3.txt<<eof
>hello huangtianyi
>hello world
hello bencai
>eof 
这样可以不用vim  输出到文件

shell脚本
脚本的额概述
以解释方式执行的程序语句集合体--以解释方式而不是编译方式
脚本的控制结构
顺序结构 分支结构  循环结构
脚本的使用 两种方式执行 1、.test.sh  2、./test.sh  第一种是当前的shell执行作为测试用  第二种是真实执行 写完脚本要加上可执行权限

分支结构:&&  || 符号级联 if then elif then else fi    switch case esac
建立脚本文件test.sh:判断文件是否可以执行
if[ -x $1]
then 
    echo "ok"
else
    echo "fail"
fi     调用传入位置变量  ./test.sh test2.sh

case语句
value = $1
case $value in
    a)
        echo "A";;
    b) 
        echo "B";;
    *)
        echo "*"
esac

循环结构
while
count = 1     count>=5时退出
while[ -x $1]
do
 [$count -ge 5] && break
 echo "$1 has exutable"
 let count++
done
until  和while相反  条件不为真才执行
until[ - x $1]
do
 echo "$1 has not ecutable"
done

for-in   in 后面有几项,循环就执行几次
count=1
for var in aa bb cc dd
do
echo " ${var}loop $count"
let count++
done

脚本程序需求
从给定的自然数开始,循环输出10个数,其皆为3的倍数
脚本实现要求
程序设计中包含输入的友好提示对于输入合法性的验证判断
#!/bin/bash

read -p "请输入一个自然数:" Input   --用read -p 将控制台输入的内容读取到Input里面
[$Input -gt 0] && echo"您输入的是自然数" || exit
Num = $Input
count = 0
while[$count -lt 10]
do
let Num2 = Num%3
    if[Num2 -eq 0]
    then
        echo "$Num"
        let count++
    fi
    Num++
done

shell函数
表达形态
1、getcount(){echo "hello iotek"}
2、function getcount{echo "hello iotek"}
shell函数的使用
使用的时候只需书写函数名即可
eg hello
hello
{
echo "hello world"
}

function nihao
{
echo "nihao"
}
hello   --调用 不需要主函数
nihao

shell函数的参数传递 依靠位置变量传递
function nihao()
{
    echo "$1 你好"
}

--调用 nihao 黄添翼

shell变量的替换
默认替换 ${Var:-value}
若Var变量未被设置,则临时设值为value,就是说Var被引用的时候还没被赋值的话就由value当默认值
强制替换${Var:+value}
若Var变量已被设置,则临时值设置为value 没被设置则不生效和上面相反
缺省赋值替换 ${Var:=value}
若Var变量未被设置,则永久设置为value 若被设置了值,不会替换
缺省错误替换${var:?string}
若Var变量未被设置,则错误输出为string 不会赋值非var 只是错误提示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值