shell命令

常用linuxShell命令

  1. echo ${path#:} 把路径path中的第一个冒号前面的值删除
    echo ${path#
    ::} 把路径path中的第二个冒号前面的值删除,其他的同理,后面还可以跟k
    echo ${path##:} 把路径path中的最后一个冒号前面的值删除
    echo ${path%:
    } 把路径path中的倒数第一个冒号后面的值删除(从后往前裁剪直到遇到的第一个冒号)
    echo ${path%::} 把路径path中的倒数第二个冒号后面的值删除,其他的同理,后面还可以跟k
    echo ${path%%:
    } 把路径path中的第一个冒号后面的值删除(从后往前裁剪直到遇到的最后一个冒号)

  2. ${#variable} 获取变量variable长度 再用echo显示

  3. echo ${variable: -n} 显示变量最后5位

  4. ${variable:-word} 如果variable已经被设置且不为空,则代入它的置,否则代入word;

  5. ${variable:=word}如果variable已经被设置且不为空,则代入它的值,否则代入word,并且在后面variable始终为word的值。位置参量不能用这种方式赋值。
    注意 ,:-和:=和:?都是所设变量存在且非空则显示本身,否则是后面地字符串,而:+不一样,要是已设置且非空,则代入字符串,否则什么也不带入

  6. echo ${variable//pattern/replace} 显示将变量指定位置处替换后的值

  7. echo “hello shanghai” | tr ‘a-z’ ‘A-Z’ 将小写字母换成大写字母
    echo “haha 123dd” |tr -d ‘0-9’ 删除指定的数字

其他

  1. shell中写cd … 结果退出来还是在当前目录,是因为,执行.sh成功后,这个子shell结束返回了,所有都会变成父shell的状态,即我们当前的目录

  2. 本来标准输入输出都是键盘到屏幕,我们可以用> >>来重定向,但是当有一系列动作的时候,这样天天重定向很麻烦,为了简便,shell允许自动连接两个程序,即使用管道pipe,而命令序列本身成为管道栈pipeline

  3. 为了让你只关心程序本身,不用担心输入输出的各种情况,unix开发人员设计了标准I/O,包含标准输入、标准输出、标准错误三种。
    要是不想要标准,那就重定向,其中>,会覆盖,>>不会覆盖而是在文件现有的内容后追加。>前后有无空格皆可,为了程序可读性和不出错,建议都空格。

  4. 文件描述符:三个,bash中,0指标准输入,1表标准输出,2表标准错误。

    默认是把标准输出指向某个文件,也即1>。
    <默认标准输入,即,0< file
    要是想错误信息,那就2> file.


    c-shell/tcsh中,重定向标准错误基本语法:command >& outputfile,但是其实,这条命令会把标准输出和错误一起输出,c-shell家族没有办法单独重定向标准错误,碰巧有一种方法,运用子shell:
    (command > outputfile) >& errorfile

  5. 接上,要是想重定向标准输出和错误到一个地方,c-shell家族可以只用>& 或>>& ,对于bash就比较复杂,语法
    command x> outputfile y>&x
    x,y是文件描述符,举例sort 1> output 2>&1,把标准输出重定向到output,再把标准错误重定向至同样的output。注意,command y>&x > outputfile 不能工作,因为2>&1告诉shell输出和错误放到一个地方,但是没有指定文件,会重新放到默认位置即屏幕,而后半部分> outputfile,又会把输出给到文件中;
    上述有一个简便的小技巧,同时重定向标准输出和标准错误到一个地方,但只能覆盖,即使用&>或者>&,如sort &> output。要是追加,只能用上面复杂的命令。
    bash,使用管道时,同时重定向输出和错误至一个地方,语法:command1 2>&1 | command2
    c-shell,使用管道时,同时重定向输出和错误至一个地方,语法:command1 |& command2

  6. 抛弃输出或错误:重定向到/dev/null中即可,给这个地方的东西都会永远消失。

  7. 很多时候忽略<,如cat < file,一般都是cat file,这么用,不过这就失去了纯过滤器的优美和简洁.

  8. 过滤器就是能够从标准输入读取文本数据并向标准输出写入文本数据(每次一行)的程序

  9. utf-8汉字3个字节

  10. alias把ls设置为echo功能,但是又想临时用一下ls,就加\,如\ls

  11. 每轮能表示多少数就是几进制,我简单地认为,比如这个三位数,000-111,可以表示8个

  12. 文件权限更改:chmod u+x,表示为所有用户user增加x,即执行权限。u-x,表示将用户的执行权限取消。

    用户权限,就是你自己的权限。英文:user,简写:u
    用户组权限,就是和你同组的人的权限。英文:group,简写:g
    其他权限,就是不和你同组的人的权限。英文:others,简写:o
    所有人的权限,英文:all,简写:a

  13. awk编程
    关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。教程

    BEGIN{ 这里面放的是执行前的语句 }
    END {这里面放的是处理完所有的行后要执行的语句 }
    {这里面放的是处理每一行时要执行的语句}

参考:

  1. https://blog.csdn.net/chaoping315/article/details/5312464
  2. 博客-文件权限中 chmod、u+x、u、r、w、x分别代表什么
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值