• 2.bash


    1.检查可以使用的shell和预设使用的shell


            $ cat /etc/shells

            $ cat /etc/passwd

            $ cat /etc/shells 

            # /etc/shells: valid login shells

            /bin/sh

            /bin/dash

            /bin/bash

            /bin/rbash

            $ cat /etc/passwd |grep nologin

            sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin

    2.查看前一次登录使用的指令


          $ cat ~/.bash_history

    3.制定别名

       


         $ alias                ----查看已经设置的命令别名

            $ alias lm='ls -al'  ----设置命令别名

            $ unalias lm        ----取消lm这个别名 

    4.查看可执行命令的类型


           $ type ls

            ls 是 `ls --color=auto' 的别名

            $ type -t ls

            alias

            $ type -a ls

            ls 是 `ls --color=auto' 的别名

            ls 是 /bin/ls

    5.变量与环境变量


    env                  ----查看所有环境变量

    export              ----查看所有环境变量     

    echo $HOME                              ----查看这个环境变量的值

    HOME="/home/anderson"            ----设置环境变量的值

    注:  1.双引号("")内的特殊字符人保持原有特性,单引号(' ')内的特殊字符只作为普通文本对待

             2.跳脱字符()可以将特殊字符(Enter &Space&&' 等)变成一般字符

             3.$(指令)或反单引号(` 指令`)可获得其他指令的信息

             4.扩增变量内容示例:PATH="$PATH":/home/bin或PATH="${PATH}":/home/bin

             5.将普通变量变为环境变量:export PATH,这样以来在子shell中可以共享这个变量

             6.取消变量的设置:unset PATH

    6.进入当前系统核心模块目录


    cd /lib/modules/`uname -r`/kernel或cd /lib/modules/$(uname -r)/kernel

    7.查找相关文档并列出属性


    ls -al `locate keyword`

    8.处理常去的工作目录


    workspace="/home/anderson/Workspace"

    cd $workspace

    注:修改bash的配置文件更加方便

    9.产生0-9之间的随机数


    $ declare -i num=$RANDOM*10/32768;echo num 

    10.特殊变量


          1.  PS1 命令提示字符 (非操作系统的环境变量)      

            anderson@anderson-Sailing-Series:/usr/java$ cd ~

            anderson@anderson-Sailing-Series:~$ PS1='[u@hwA##]$'

           2.$ 当前sheel的PID

            $ echo $$

            

           3. ? 上一操作的返回值

            $echo $?

    11.影响显示结果的语系变量

      


          $ locale -a

          $ locale 

    12.read


            $ read -p "Enter your name in 30s:" -t 30 named

            Enter your name in 30s:nemo

            $ echo $named

            nemo

     

    13.指定数据类型命令 declare


    $ declare -i num=10+5    ----指定num为整数类型

    $ declare -r num             -----指定num只读(注销再登入才能恢复)

    $ declare -p num             ----查看num类型(export | grep num)

    $ declare -x num             -----将num变为环境变量(全局变量)

    $ declare +x num            ----将num变为自定义变量(局部变量)

    $ declare -a arr               -----指定arr为数组类型

     

    14.ulimit 


    $ ulimit -a          ----列出当前身份受到的限制

    $ ulimit -f 10240   -----限制用户只能创建10M以下的档案

    15.变量的设定方式


    [15]

    16.history


    $ history                 ----列出本次登录后的所有指令记录

    $ history 5              ----列出最近5次记录

    $ !!                        ----执行上一个命令

    $ !5                       ----执行地指令记录中第5个命令

    $ !al                      ----执行最近以al开头的指令

    17.bash的进站欢迎信息设置


    $ cat /etc/issue

     [18-0]

    18.login shell 和nologin shell


    $ surce ~/.bashrc    <==>$ . ~/.bashrc

     [18-1] 

    配置文件:

    ~/.bashrc

    /etc/man.config

    ~/.bash_history    

    !/.bash_logout

            终端机的环境设定:

            bash默认的组合键:

            通配符:

    [18-2]

            

            bash下特殊符号汇总:

    [18-3]

    [18-4]

    19.数据流重导向


    stdout和stderr

    $ find -name /home .bashrc   > list_right 2> list_error          ----标准信息写到list_right ,标准错误信息写到list_err

    $ find -name /home .bashrc   > list_right 2> list_error          ----标准信息写到list_right ,标准错误信息丢进“黑洞”

    $ find -name /home .bashrc   &> list

    or

    $ find -name /home .bashrc   > list 2>&1          ----标准信息写到和标准错误信息都写进list

    stdin

    $ cat > catfile                             ----利用cat创建一个新档案,^d结束输入

    $ cat > catfile <<"eof"                 ----利用cat创建一个新档案,输入"eof"后结束输入

    $ cat  > cattest <~/.bashrc          ----将~/.bashrc的内容写入到cattest中

    20.命令执行的判断依据[ ;  && ||]


    不考虑指令的相关性连续执行:

    $ sudo sync; sync; shutdown -h now

    [20-0]

    $ ls /tmp/abc && touch /tmp/abc/hehe     ----如果存在/tmp/abc就创建/tmp/abc/hehe,否则不创建

    $ ls /tmp/abc || mkdir /tmp/abc                ----如果不存在/tmp/abc就创建/tmp/abc

    $ ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe     ----如果存在/tmp/abc,创建/tmp/abc/hehe;否则先创建/tmp/abc,再创建/tmp/abc/hehe

    $ ls /tmp/newtest && echo "exit" || echo "no exit"     ----如果有/tmp/newtest就输出" exit",否则"no exit"

    [20-1]

    21.管线命令


    less,more,head,tail

    cut,grep,sort,uniq,wc,,tee

    [21-0]

    $ ls -al /etc | less

    $ ps -ef | grep sshd

    $ echo $PATH | cut -d ':'  -f 5              ----将path变量取出,找出第五个路径,以“:”作为分隔

    $ echo $PATH | cut -d ':'  -f 3,5           ----将path变量取出,找出第三到第五个路径,以“:”作为分隔

    $ export | cut -c 12-                            -----将export输出的信息每行都切掉前12个字符

    $ export | cut -c 12-20                        ----截取每行第12-20个字符

    $ last | cut -d ' ' -f 1                            ----查看这个月的登录信息,以' '作为分割,截取第一段字符(登录帐号)

    $ last | grep 'reboot'  <==> $ last | grep reboot <==>$ last | grep "reboot"           ----取出其中含有“reboot”的行

    $ last | grep reboot | cut -d ' ' -f 1         ----取出带有reboot字串的行的第一栏

    $ grep MANPATH /etc/manpath.config    ----单独使用grep举例

    $ cat /etc/passwd | sort -t ':' -k 3          ----用以':'分隔的第三栏排序

    $ last | cut -d ' ' -f 1 | sort |uniq -c                    ----输出第1栏并排序,然后去掉重复项并新显示没一项重复的次数

    $ cat /etc/manpath.config | wc            ----行数 字数 字符数

    $ last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l              ----计算这个月登录的次数

    $ last | tee -a last.list | cut -d ' ' -f 1    ----tee使数据流双重导向到文件后还可以交给后面的管道处理

    22.字符转换命令


    tr,col,john,paste,expand,-

    $ last | tr [a-z] [A-Z]                  -----将last输出信息中所有小写改为大写

    $ cat  /etc/passwd | tr -d ':'        -----将cat出的信息中所有“:”删除

    # cp /etc/passwd /root/passwd && unix2doc /root/passwd         ---复制并转换

    # file /etc/passwd /root/passwd      ----查看上一操作后的文件状态

    # cat /root/passwd | tr -d ' ' > /root/passwd.linux             ----去掉' '

    $ cat  /etc/manpath.config | col -x | cat -A | more            ----col -x会将tab转换成对等的空格键

    # man col | col -b  > /root/man.col              ----转存为纯文本文档

    $ john -t ':' /etc/passwd /etc/shadow            ----将两个文件地一个字段相同的行合成一行

    $ john -t ':' -1 4 /etc/passwd -2 3 /etc/group    ----将第一个文件的第4个字段与第二个文件第3个字段相同的行合并在一起

    $ paste /etc/passwd /etc/shadow                  ----简单地同行贴在一起,中间用[tab]分隔

    $ cat /etc/passwd | paste /etc/shadow /etc/group - | head -n 3            ----stdout和两个其他文件paste并且只显示前三行

    $ grep '^MANPATH' /etc/manpath.config  | head -n 3 | expand -t 6 - | cat -A   ----将[tab]替换为6个空格

    $ cd /tmp;split --b 300k /etc/termcap termcap            ----将/termcap分割成300k一个的小档案

    $ cat termcap* >> termcapback        ----将那些小档案合在一起

    $ ls-al | split -l 10 - lsroot               ----每10行记录成一个小档案,档案的名字前缀为lsroot

    $ cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs -p -n 5 -e 'lp' finger          ----用最后一个管道之前产生的数据流最为参数执行finger指令,并询问是否执行,一次查询5个,分析到'lp'结束

    $ find /sbin -perm +7000 |xargs ls -l                ----找出特殊档名并列出属性

    $ tar -cvf - /home | tar vaf -              ---- '-'代表stdout和stdin

  • 相关阅读:
    NC13950 Alliances(LCA)
    NC13884 Paint Box(容斥原理)
    Gym102174B 炼金术(AC自动机)
    CF301D Yaroslav and Divisors(树状数组)
    CF1443D Extreme Subtraction(思维)
    Gym102174L 旅行的意义(期望dp)
    Gym102220F Mini-game Before Contest(博弈论)
    Gym102220D Master of Data Structure (虚树)
    用random.simple来解决从0-99这100个数中随机取10个不重复的数
    一个栈的输入序列为1,2,3,4,5,则下列序列中不可能是栈的输出序列的是()
  • 原文地址:https://www.cnblogs.com/eli01/p/3559643.html
Copyright © 2020-2023  润新知