• 【linux】学习5


    鸟哥那本书第11章的内容

    管理整个计算机硬件的是操作系统的内核(kernel),内核是需要保护的,我们一般用户只能通过shell来跟内核通信。Shell是用户操作系统的接口

    cat  /etc/passwd   :可以查看每个账号登陆后默认的shell

    ~/.bash_history 中记录了前一次登陆以前使用过的命令

    type 可以查询命令是bash内置命令 还是 外部命令

    一下子写两行命令, 用 [Enter]转义

    变量

    1. 显示变量内容:

      echo $变量名

      echo ${变量名}   :这两种都可以查看变量的内容

    2. 设置变量    

    my_name=kuangziyu  //设置变量,直接用= 后面不能有空格
    双引号: 保留命令原有的含义   this_user="$my_name" 则显示this_user时是kuangziyu

    单引号: 字符表面的意思 this_user='$my_name' 则显示this_user时是 $my_name

    $: 使用通过其他命令获得的信息

    增加变量内容my_name="$my_name":"me"   则my_name的内容变为 kuangziyu:me

    改为环境变量export my_name

    取消变量: unset my_name

    3.查看变量

    export: 后面不接变量名时也可以显示所有的环境变量  只有环境变量会被子进程继承

    env: 查看所有环境变量

    set: 查看所有环境变量,自定义变量,其他变量

    重要的变量:

    PS1 : 提示符的设置

            PS1='[u@h w A ##]$ ' 则输入前的提示变成了[kuang@localhost ~ 11:12 #23]$

            u  目前用户的账号名称

            h 主机名小数点前第一个名字

            w 完整工作目录的信息

            A 显示时间

            # 执行的是第几个命令

    $: 当前shell的线程代号

           echo $$  显示当前shell的线程号

    :上个执行命令的回传码

           echo $?   0表示上一个命令正确,其他数字表示有错,可以用来查bug

    OSTYPE, HOSTTYPE, MACHTYPE 主机硬件与内核的等级  我的居然是i386

    语系变量

    locale -a 显示linux支持的所有语系

    locale 显示当前语系相关的一些变量

    LANG 后面的就是当前的语系,更改语系就改LANG的值

    键盘读取变量

    read [-pt] variable

    -p 接个提示符

    -t 接等待的"秒数“

    read -p "please input your name:" -t 30 named   之后变量named就变成了 输入的名字

    设置变量类型

    declare [-aixr] variable
    参数:
    -a :将后面的 variable 定义成为数组 (array)
    -i :将后面接的 variable 定义成为整数数字 (integer)

    -x :用法与 export 一样,就是将后面的 variable 变成环境变量;
    -r :将一个 variable 的变量设定成为 readonly ,该变量不可被更改内容,也不能 unset

    变量默认类型是字符串,数值运算只能是整数 1/3=0

    declare -p sum 显示sum变量的类型

    declare +x sum  加法+,表示取消 取消sum的x属性,从环境变量还原到自定义变量

    数组

    sum[0]=1

    sum[1]=2

    ...

    直接这样写就可以了,但是echo $sum 会得到1,要访问其他的变量要使用 echo ${sum[1]}, 注意,一定要有大括号

    系统限制:

    ulimit -a 可以显示所有的系统限制,比如每个用户最大的进程数... 如何修改自己man

    变量内容的选择性显示:

    sum=123:456:8910:1234

    echo ${sum#*:}   后显示 456:8910:1234

    echo ${sum##*:} 后显示 1234   但实际上并没有删除,只是没有全部显示而已

    # 表示从前向后删除符合条件最短的

    ## 表示从前向后删除符合条件最长的

    % 表示从后向前删除符合条件最短的

    %% 表示从后向前删除符合条件最长的

    替换

    echo ${sum/:/#} 显示123#456:8910:1234   

    echo ${sum//:/#}  显示123#456#8910#1234

    两个斜杠中间的是被替换字,后面的是替换字,前面用//表示全部替换

    变量的选择性设置

    命令别名

    alias 显示所有的命令别名

    alias rm='rm -i'  设置命令别名

    unalias 名称  取消命令别名

    历史命令

    history 查看所有的历史命令

    history [n] 
    history [-c]
    history [-raw] histfiles
    参数:
    n :数字,意思是『要列出最近的 n 笔命令列表』的意思!
    -c :将目前的 shell 中的所有 history 内容全部消除
    -a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles , 则预设写入 ~/.bash_history
    -r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
    -w :将目前的 history 记忆内容写入 histfiles 中

    !number
    !command
    !!
    参数:
    number :执行第几笔指令的意思;
    command :由最近的指令向前搜寻『指令串开头为 command』的那个指令,并执行;
    !! :就是执行上一个指令(相当于按↑按键后,按 Enter)

    通配符:

    *  代表0到无穷多个任意字符

    代表一定有一个任意字符

    [] 代表一定有1个在括号内的字符,如 [abcd]表示一定有一个字符时abcd中的一个

    [-] 如[0-9]表示0-9的所有数字

    [^]  如[^abc]一定有一个字符,只要是非abc中的一个就接受

    数据流重定向

    1.  标准输入(stdin) :代码为0 ,使用< 或<< ;
    2.  标准输出(stdout):代码为1 ,使用> 或>> ;
    3.  标准错误输出(stderr):代码为2 ,使用2> 或2>> ;

     find /home -name testing > list_right 2> /dev/null 

          正确的输出到list_right文件,错误信息丢掉 >表示把list_right文件清空后重写 >>表示在文件后面接着写

    find /home -name testing > list 2>&1

          把正确和错误的信息都输出到同一个文件list中

    cat > catfile < somefile  :把somefile的内容写入catfile

    cat > catfile <<eof :当输入eof后结束输入。相当于按了ctrl+d

    多个命令执行:

    ;  分号,不考虑命令间关系

    &&     || 考虑命令间关系

    ls /tmp/vbirding 2>> /dev/null && echo "exist" || echo "not exist"
            /tmp/vbirding存在输出exist,否则输出not exist

    管道命令:

    cut: 选取命令 对一行里的数据选取

    last | cut -d ' ' -f 1  :last显示历史登陆信息  cut以‘ ’空格为分隔符,取出每一行中的第一个信息 即登陆人

    gerp: 选取有想要的数据的那一行

    last | grep 'root' :把last输出信息中有root的行都显示出来

    grep --color=auto 'MANPATH' /etc/man.config :把 man.config文件中有 MANPATH的行显示出来 并且关键字用 任意颜色显示

    排序:

    sort: 对文件内容排序

    cat /etc/passwd|sort -t ':' -k 3 -n: 对passwd内容 以‘:’为分隔符的第3个段排序  以纯数字方法排序(-n)

    uniq: 取消重复的显示

    last | cut -d ' ' -f 1| sort | uniq -c|sort -n: 把last内容仅显示第一节内容,对第一节内容排序,取消重复显示,统计重复出现次数(-c),再按数字排序显示

    wc 显示文件中有多少行 多少字 多少字符

    tee: 双向定位 

     last | tee last.test.list | cut -d ' ' -f 1 :把last的结果存到last.test.list中,并且在屏幕上显示每行第一部分的信息

    字符转换命令

    tr 字符串删除 替换

    last |tr [a-z] [A-Z] :把last输出的内容中所有小写的改成大写

    echo "today is a nice day"|tr -d a:将句子中的a删除

    col -x: 把tab键改成对等的空格

    join file1 file2 把两个文件中相关的部分整合起来

    paste file1 file2 把两个文件对应的两行连在一起

    expand file:把file里的tab转化为空格键

    split: 将大文件切割成小文件

    xargs:参数代换

    find /sbin -perm +7000 | xargs ls -l:用ls -l列出/sbin下所有特殊属性的文件的详细属性  find不支持管道命令 要用xargs

    - :可以代替命令中的文件名

    tar -cvf - /home|tar -xvf - :最后的-代表前面命令的标准输出文件

  • 相关阅读:
    Leetcode Valid Sudoku
    Leetcode Surrounded Regions
    LeetCode Sqrt
    LeetCode POW
    LeetCode Next Permutation
    ACK-Ackermann, 阿克曼函数
    再不懂时序就 OUT 啦!,DBengine 排名第一时序数据库,阿里云数据库 InfluxDB 正式商业化!
    阿里云提供全托管 ZooKeeper
    性能压测中的SLA,你知道吗?
    第一个入驻阿里云自营心选商城,如今它已经是营收过亿的SaaS独角兽
  • 原文地址:https://www.cnblogs.com/dplearning/p/4103158.html
Copyright © 2020-2023  润新知