Shell的基础知识

一、初学Shell的常见问题

1. sh,csh,tcsh和bash有什么区别?

  • sh全称 Bourne Shell,是UNIX最初使用的shell,平且在每种UNIX上都可以使用。
  • bash全称 Bourne Again Shell,是sh的扩展,增强了一些特性。
  • csh是sh的变种语法,语法类似于C,方便学习使用。
  • tcsh是csh的扩展,增强了csh的一些特性。

2. shell脚本最上方的   #! /bin/csh   是什么意思?

#!是特殊表示符,/bin/csh 表示用bin目录下的csh解释器来执行程序。

所以也可以写   #!/bin/tcsh

3. source  test.sh和 ./test.sh 直接执行脚本有什么区别?

source会将脚本的内容直接影响到父进程的(因为它不开辟新线程,可以说是直接在当前进程中加入脚本的执行内容)。所以你source之后,里面配置的变量都会加入到当前环境中,你可以在该shell中调用脚本中的变量!

而./test.sh以及test.sh是在当前进程下新开一个子shell进程运行这个脚本,当脚本运行完毕了,sh中设置的变量和子进程一起被销毁了!

4. shell脚本中$0 $1 $# $@ $* $? $ 分别有什么含义?

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表

$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

$$ 是脚本运行的当前进程ID号

$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

二、好用但是难记的指令

1. 删除 .nfx000xxxxxxx文件

Step1: lsof .nfx000000xxxxx获取进程ID

Step2: kill -9 <ID>

2. 查看文件夹大小

du -h --max-depth=1

3. 批量修改文本

例:将一个文件夹下面所有.sv文件中的clks全部替换成clk

sed -i s/clks/clk/g *.sv *.v *.svh

sed -i "s/clks/clk/g" `grep clks -rl ./path` 

4. 更改Linux窗口的分辨率

xrandr -s 1920x1080

5. 批量删除文件夹和子文件夹中的文件或者文件夹

find . -name '.svn' -exec rm -rf {} \;

6. 批量修改文件名称

rename 'old_string' 'new_string' *.sv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值