zoukankan      html  css  js  c++  java
  • Linux文本操作

    文本流&重定向

    man bash

    解释从命令行或者从文本读取的命令

    ls /

    echo "hello"

    echo $$

    source sh01.sh 读取当前文本文件命令

    . sh01.sh 读取当前文本文件命令

    pstree 查看bash命令关系

    bash sh01.sh 在子bash运行文件

    type yum查看文件路径

    脚本本质

    文件头加上#! /bin/bash

    chmod +x sh01.sh

    ./ sh01.sh 在启动一个子bash执行文件,在退出子bash,回到父bash。

    默认开启

    I/O 重定向

    0:标准输入

    1:标准输出

    2:错误输出

    虚拟终端

    cd /proc/13175/fd

    fd 文件描述符

    ps -ef 查看所有进程

    ls 1> aaa 标准输出到aaa文件 重定向

    ls /mnt 1>aaa 覆盖重定向

    ls /tmp 1>>aaa 追加重定向

    ls / /tmp 与 ls /tmp /

    先输出外出目录,在输出内目录,同级目录按字典序输出

    ls /aabb s>ccc

    cat ccc 错误输出

    ls / /aabb 1>ls01.out 2>ls02.out 分别重定向

    ls / /aabb 1>ls03.out 2>ls03.out 先报错在运行正确的

    ls / /aabb 1>ls06.out 2>&1

    ls / /aabb >&(&>) ls07.out也可以把两种输出写到同一个文件中

    从左到右依次绑定 '>'左边不能包含空格,右边可以

    read 输入重定向

    read aaa <<<"hello sxt" echo $aaa

    read aaa<<AABB 输出AABB结束 只输出第一行

    cat 0</etc/asd 输入重定向

    linux访问百度

    exec ls 替换bash

    exec 8<> /dev/tp/www.baidu.com/80

    cd /proc/$$/fd开启了一个socket

    echo "GET /HTTP/1.0 " 1>&8 短链接,只能发送一次请求 想要再次访问 需要重新exec 9<> /dev/tp/www.baidu.com/80

    cat 0<&8

    shell变量

    aaa=sxt

    echo aaa

    本地:当前shell(bash)拥有

    局部变量:加上local 只能用于函数内

    sxt(){

    echo sxt

    local ccc=world

    echo $ccc

    }

    位置变量:$1 ,$2,${11} 某些变量和常量一起使用时。变量用{}包起来

    bash只对空格,制表符敏感

    sxt={1 2 3} echo $sxt[1]输出2

    $#:位置参数个数

    $*:参数列表,双引号引用为一个字符串

    $@:参数列表,双引号引用为单独的字符串

    $?:上一个命令退出状态 0:成功,非0:失败

    test 条件表达式 test help [3 -gt 2] [-a passwd]

    echo "aaa04" | passwd --stdin aaa04 修改密码静默输出

    #! /bin/bash

    useradd $1

    echo $1 | passwd --stdin $1

    echo "user add success"

    流程控制

    if while for

    if test 3 -gt 2;then echo ok;fi

    if tesht 3 -eq 4;then echo ok ;elif test 3 -eq 3;then echo 3;fi

    while 命令 ; do 命令 ;done

    -le = <

    while test $a -le 5; do echo $a; ((a++));done

    for ((a=1;a<=5;a++));do echo $a;done

    for i in 1 2 3 4 5; do echo $i ;((i++));done

    seq 打印一个数字序列

    for i in `seq 5``;do echo $i;((i++));done 输出12345

    `seq 5``表示该命令提前执行实际为单反引号

    练习 找到用户指定目录中最大的文件

    du -h /tmp/ 显示文件夹内所有文件及其大小

    du -a /tmp/ | sort -nr 文件夹内所有文件(包含隐藏文件)按文件大小倒序排列

    #! /bin/bash

    oldIFS=$IFS

    IFS=$' '

    for i in `du -a $1 | sort -nr ``;do

    filename=`echo $i | awk '{print $2}'``

    if [ -f $filename ];then

    echo $filename

    break

    fi

    done

    IFS=$oldFIS

     

    #! /bin/bash

    num=0

    oldIFS=$IFS

    IFS=$' '

    for i in `cat file.txt``;do

    echo $1;

    ((num++))

    done

    echo "num:$num"

    IFS=$oldIFL

    echo "----------------------------"

    num=0

    lines=`cat file.txt | wc -l``

    for((i=1;i<=lines;i++));do

    line=`head -$i file.txt | tail -1``

    echo $line

    ((num++))

    done

    echo "num:$num"

    echo "--------------------"

    num=0

    while read line;do

    echo $line

    ((num++))

    done <file.txt

    echo "num:$num"

    echo "--------------------"

    num=0

    cat file.txt | while read line;do

    echo $line

    ((num++))

    done

    echo "num:$num"

    echo "--------------------"

    ||或(或者) &&与(并且)

     

     

    •/etc/rc.d/init.d/functions脚本介绍:

    •functions这个脚本是给/etc/init.d里边的文件使用的,提供了一些基础的功能

    •重要函数:

    –checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录)

    –daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个

    –killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个

    –status:返回一个服务的状态

    •我们可以在自己的脚本中通过source或.的方式导入

    •Filesystem Hierarchy Standard(文件系统层次化标准):跟文件系统:/

    –/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)

    –/dev: 设备文件

    –/etc:配置文件

    –/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME

    –/root:管理员的家目录;

    –/lib:库文件 :没有执行入口的应用程序

    –/media:挂载点目录,移动设备

    –/mnt:挂载点目录,额外的临时文件系统

    –/opt:可选目录,第三方程序的安装目录

    –/proc:伪文件系统,内核映射文件

    –/sys:伪文件系统,跟硬件设备相关的属性映射文件

    –/tmp:临时文件, /var/tmp

    –/var:可变化的文件

    –/bin: 可执行文件, 用户命令

    –/sbin:管理命令

  • 相关阅读:
    docker 学习
    grpc 学习
    ubuntu 完全干净的卸载docker
    numpy学习
    2020年假期sql excel文件 获取
    (a2b_hex)binascii.Error: Non-hexadecimal digit found
    数据库索引学习
    网络基础之网络协议
    Day11 进程相关
    基于socket套接字的网络通讯
  • 原文地址:https://www.cnblogs.com/huzicourenao/p/10994371.html
Copyright © 2011-2022 走看看