linux中 bash命令,linux bash shell命令及应用

命令参数

bash特殊参数

command !$ 执行后!$把上个命令最后的参数作为输入

bash shell命令

切换目录命令cd

cd [目录名] :切换当前目录至dirName (Change the current directory to DIR) 1. cd / 进入系统根目录 2. cd .. 返回上一级目录 3. cd ~ 或cd 当前用户主目录 (注意:“当前用户主目录”和“系统根目录”是两个不同的概念) 4. cd - 返回进入此目录之前所在的目录

创建文件命令touch

touch myproject/settings/{__init.py,dev.py,prod.py,test.py}

Note:{...}可以创建多个文件

echo命令

echosh是Linux Bash和C Shell最常使用的内置命令资源,通常用在脚本语言或批处理文件在标准输出或者文件显示一行文本或者字符串。

find命令

Linux grep命令

linux vi vim命令、快捷键

GCC 命令详解

bash命令的应用

将当前文件夹中的所有子文件夹中的文件剪切到当前文件夹中

for dir in $(ls)

do

#    echo $dir

if [ -d $dir -a "$(ls -A $dir)" ];then

mv ./$dir/* .

fi

done

Note:

1. [ ]内每个组件之间都要有空格,包括[ -d 和 " ]

2. 判断dir文件是否为目录 && 判断dir文件夹是否为空

将当前文件夹中所有子文件夹中的.bak文件全部删除

find . -name "*.bak" -exec rm {} \;

Note:

1. find参数只支持通配符,不支持正则表达式

2. -name参数可以用'', 即'*.bak'

把该文件夹下的所有jpg文件转成png格式

普通青年用for循环 (代码未测试)

forfn in *.jpg; doconvert "$fn" `echo $fn | sed 's/jpg$/png/'`; done

文艺青年用xargs来写(代码未测试):

ls *.jpg | xargs -I{} convert "{}" `echo {} | sed 's/jpg$/png/'` 好像没什么区别?

现在你的电脑有8个核,想要同时转换格式。for或者一般的shell就傻逼了,难道要用python/multiprocessing甚至开C++/OpenMP写段小程序?

xargs有个逆天的参数-P:

ls *.jpg | xargs -I{} -P 8 convert "{}" `echo {} | sed 's/jpg$/png/'` 执行的效果是,电脑会自动读前8个文件进来,转换格式。这8个进程里任何一个执行结束后,会自动读取下一个文件,保证始终有8个进程在执行,直到所有任务执行完毕。这简直是各种并行处理的大杀器。

如果有多台机器怎么办呢?xargs可以在多台机器上自动并行吗?穿个马甲就好啦。

ls *.jpg | parallel -I{} -S 32/m{1..4} convert "{}" `echo {} | sed 's/jpg$/png/'` 这个的意思是在名字是m1, m2, m3和m4的4台机器上并行处理,每个机器跑32个进程。这样parallel就会自动监视每个机器的运行情况,谁家CPU负载低了就自动分配给它其他任务,保证吞吐量。(当然parallel还没有智能到自动传输数据的程度,但这个可以用NFS等轻松解决)

效果:

0818b9ca8b590ca3270a3433284dd417.pngAWS上面只要1美元一小时,用我的脚本5分钟轻松搞出来128核cluster

[http://www.zhihu.com/question/29257300/answer/43814464?utm_source=weibo&utm_medium=weibo_share&utm_content=share_answer&utm_campaign=share_button]

Note:还有一种方法(未测试)

find . -name "*.txt" -type f -exec rename 's/.txt$/$/g' {} \;

提取某个文件夹下所有文件的文件名

cd /c/Users/pi/Desktop

ls /e/mine/java_workspace/AMC_master/Data/Input/1000Reviews/Electronics > filenames.txt

Note:相应windows下的命令为

@echo off

dir /b E:\mine\java_workspace\AMC_master\Data\Input\1000Reviews\Electronics > filenames.txt

exit

windows下执行linux shell命令和脚本文件

可以使用git bash(下载安装git)

亲测可以执行sh脚本文件

Note:命令行工具Git Bash还集成到了Windows的资源管理器中,在文件夹上右键,可以点击Git Bash Here和Git GUI Here快速启动Git并自动切换到指定的文件夹.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值