认识bash shell

    技术2024-07-18  61

    查看有哪些shell可以使用:查看/etc/shells

    ~/.bash_history 记录上次登录执行的指令

     

    alias 查看、设置命令别名  unalias取消设置

    alias lm='ls -al'

     

    type 命令名:查看某一命令是否为shell内建的命令

    / 命令换行继续写

    echo $PATH 或 echo ${PATH}   显示变量PATH的内容

    myname=bing    设定变量myname的值为bing

    ""中的特殊字符可以保有变量特性,''内的特殊字符仅为一般字符,/转义

    ``数字键1左边的按键或$(),里面的命令先执行,返回输出

    export PATH 使变量变为环境变量

    unset 变量名   取消变量

     

    bash  进入子shell,父shell的变量失效,除非设为环境变量

    exit  离开子shell   

     

    env   列出所有环境变量,其中的:

    HOME:家目录      SHELL:shell程序名      PATH:执行文件搜寻路径

    LANG:语系编码    RANDOM:随机数,0~32767

    windows下一般是gbk,而linux是utf-8,所以有时会看见乱码。可通过设定LANG来解决

    iconv -f GBK -t UTF-8 file1 -o file2 转换文件的编码

    unix2dos dos2unix dos文件行结尾/r/n(^M$),unix为/n,可用此转换

     

    set  设定环境,无参数则将系统和自己的变量显示出来,其中:

    PS1:提示字符的设定  '/[/u@/h /W/]/$' 显示为 [root@linux ~]# 具体含义见鸟哥的菜

    echo $-   $-变量是set的所有设定,预设himBH

     

    echo $$:本shell的pid

    echo $?:上个执行指令的回传码

    OSTYPE,HOSTTYPE,MACHTYPE:主机硬件与核心的等级

    locale -a:列出支持的语系,语系文件放在/usr/lib/locale/目录下

     

    read:从键盘读入变量,-p 提示语,-t 等待时间

     

    declare [+-aixr] 变量名    宣告变量属性 +取消 -设置

    -a 数组  -i 整形  -x 环境变量  -r 只读

     

    history列出历史命令

    !n 执行第n条命令  !! 执行上条命令

     

    登录信息显示数据:/etc/issue,/etc/motd

     

    系统设定值

    /etc/sysconfig/i18n:LANG 等

    /etc/profile PATH,USER,HOSTNAME等  HISTSIZE设成50,较小较安全

    /etc/inputrc 键盘热键  

    /etc/profile.d/*.sh 针对bash及C-shell规范了一些数据,如alias之类

    /etc/bashrc:umask,PS1

    /etc/man.config:MANPATH man的搜索路径

     

    个人设定值

    先~/.bash_profile,然后 ~/.bash_login,最后 ~/.profile。可放个人的PATH,环境变量等

    ~/.bashrc 命令别名,路径等

    ~/.bash_history 历史命令

    ~/.bash_logout  注销bash后的动作

    修改以上文件后,source ~/.bashrc或.  ~/.bashrc可让设置立即生效

     

    登录时的读取顺序

    1.先读 /etc/profile,再根据/etc/profile的内容去读取其它额外的设定档,例如/etc/profile.d与/etc/inputrc等等;  

    2.根据不同的使用者,到其家目录去读~/.bash_profile或~/.bash_login或~/.profile 等设定档;

    3.根据不同使用者,到其家目录读取~/.bashrc。

    non-login shell  登录后取得的shell,配置文件仅有~/.bashrc

     

    stty -a  列出终端设定的所有按键    ^C表示ctrl+c

    eof:End of file      erase:向后删字符     intr:发出interrupt信号给程序

    stty erase ^h    设置Ctrl+h为删除

    特殊符号,如*、#等,见鸟哥的菜

     

    标准输入(stdin):0,用<或<<   命令中-可表示标准输入或输出

    标准输出(stdout):1,用>或>>(表示追加)

    标准错误(stderr):2,用2>或2>>

    2>/dev/null  扔掉错误    > filename 2>&1 正确和错误信息写到同一文件

    cat > filename    从键盘输入信息到文件,按下Ctrl+d离开

    cat > filename <<eof   从键盘输入信息到文件,键入eof离开

    cat > filename < file  将file的内容送到filename中

     

    ; 多个命令间分隔

    ls file1 && touch file2  若file1存在则创建file2。ls命令返回值在$?中

    ls file1 || touch file2  若file1不存在则创建file2。指令一个接一个执行,注意顺序

     

    cut  对一行数据进行分解  -d'分隔字符' -f 第几段  -c以字符为单位取出固定字符区间

    echo $PATH | cut -d ':' -f 3,5

    export | cut -c 12-   取第十二个字符后的所有字符

     

    grep  搜寻字符串  -a搜二进制文件 -c出现次数 -i忽略大小写 -n行号 -v反选

    grep aaa filename

     

    sort 预设以第一个数据来排序,以文字型态来排序的 

    unip 剔重

    wc 字符计数,输出顺序:行,字数,字符数

    tee 双重导向  -a以累加的方式

      ls -l /home | tee /homefile | more     将ls的数据存到homefile中,并输出屏幕

    tr -d删除字符  -s替换字符

      last|tr '[a-z]' '[A-Z]' 将输出中所有小写字母换成大写

      last|tr -d abp  删掉abp    last|tr -s abp 123 将abp换成123

    col -x 将tab转换为对等的空格

    join 文档内容合并

      join -t ':' file1 file2  两文件第一列字段相同的行内容合并,字段间以:分隔

      join -t ':' -1 4 file1 -2 3 file2   file1的第4个字段和file2的第3个字段若相同,则合并其他字段内容,以:分隔

    paste file1 file2 file3 将文件同一行直接合并,以tab间隔,-d指定分隔符

    expand file  将文件中tab键换为空格,-t可指定空格数

    split file PREFIX   分割文件,-b大小,可加单位b、k、m,-l 行数,分割后文件名PREFIXaa,PREFIXab……   合并文件 cat PREFIX* >> file

    xargs 将输入分割成其他程序的入参,以空格或断行符作为分隔符 -p 需确认 -n 次数

    tar -tvf file.tar 查看file内容 tar -cvf file.tar file 打包 tar -xvf file.tar 解包

    最新回复(0)