1

I am trying to modify my ace/ext-modelist.js using a shell script, the code is as follows:

#!/bin/bash

# This script will prepare ace for running properly

RM_EXTENSIONS=(elastic_tabstops_lite chromevox emmet statusbar error_marker keybinding_menu old_ie textarea themelist static_highlight split spellcheck settings_menu)
RM_LANG=(abap cobol forth mushcode vbscript tcl velocity pascal powershell asciidoc apache_conf ada soy_template verilog vhdl autohotkey batchfile c9search)

# Sed like command using perl
# We need this because on OS X, sed does not support ignoring case
function PSED {
    perl -C -e 'use utf8;' -i -pe $1 $2
}

# Remove useless extensions
for ext in ${RM_EXTENSIONS[*]}
do
    echo "Remove extension $ext"
    rm -f ace/ext-$ext.js
done

# Remove languages
for lang in ${RM_LANG[*]}
do
    echo "Remove language $lang"

    # Remove the files
    rm -f "ace/mode-$lang.js" "ace/snippets/$lang.js" "ace/worker-$lang.js"

    # Remove any references in ext-modelist

    # Remove extension mapping
    PSED "s/,?${lang}\:\[\"[^\"]+?\"\]//gi" ace/ext-modelist.js

    # Remove readable name mapping
    PSED "s/,?${lang}\:\"\w+\"//gi" ace/ext-modelist.js
done

# Cleanup our previous replaces
# Remove any bad comas left over from modelist
PSED "s/\{,/{/gi" ace/ext-modelist.js
PSED "s/,\}/{/gi" ace/ext-modelist.js

# Detect empty snippets
# using the value of their 'snippetText' variable
SREGEX="snippetText=(\"\"|\'\')"

# Remove empty snippet files
find ./ace/snippets -name "*.js" -print | \
xargs grep -E ${SREGEX} -l | \
xargs rm -f


# Remove useless themes
echo "Removes themes"
rm -rf ace/theme-*.js

The problem is this all works except when I try to modify ace/ext-modelist.js I receive the file is busy skipping file error.

I know it is an issue with running the VM in Windows as on Mac and Linux it works fine, I have already ran all the files through dos2unix so the error is not with the shell script itself, possibly the commands?

Edit:

After running with bash -x and outputting to a logfile, here is error:

+ RM_EXTENSIONS=(elastic_tabstops_lite chromevox statusbar emmet error_marker keybinding_menu old_ie textarea themelist static_highlight split spellcheck settings_menu)
+ RM_LANG=(abap cobol forth mushcode vbscript tcl velocity pascal powershell asciidoc apache_conf ada soy_template verilog vhdl autohotkey batchfile c9search)
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension elastic_tabstops_lite'
Remove extension elastic_tabstops_lite
+ rm -f ace/ext-elastic_tabstops_lite.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension chromevox'
Remove extension chromevox
+ rm -f ace/ext-chromevox.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension statusbar'
Remove extension statusbar
+ rm -f ace/ext-statusbar.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension emmet'
Remove extension emmet
+ rm -f ace/ext-emmet.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension error_marker'
Remove extension error_marker
+ rm -f ace/ext-error_marker.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension keybinding_menu'
Remove extension keybinding_menu
+ rm -f ace/ext-keybinding_menu.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension old_ie'
Remove extension old_ie
+ rm -f ace/ext-old_ie.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension textarea'
Remove extension textarea
+ rm -f ace/ext-textarea.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension themelist'
Remove extension themelist
+ rm -f ace/ext-themelist.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension static_highlight'
Remove extension static_highlight
+ rm -f ace/ext-static_highlight.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension split'
Remove extension split
+ rm -f ace/ext-split.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension spellcheck'
Remove extension spellcheck
+ rm -f ace/ext-spellcheck.js
+ for ext in '${RM_EXTENSIONS[*]}'
+ echo 'Remove extension settings_menu'
Remove extension settings_menu
+ rm -f ace/ext-settings_menu.js
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language abap'
Remove language abap
+ rm -f ace/mode-abap.js ace/snippets/abap.js ace/worker-abap.js
+ PSED 's/,?abap\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?abap\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?abap\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?abap\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language cobol'
Remove language cobol
+ rm -f ace/mode-cobol.js ace/snippets/cobol.js ace/worker-cobol.js
+ PSED 's/,?cobol\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?cobol\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?cobol\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?cobol\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language forth'
Remove language forth
+ rm -f ace/mode-forth.js ace/snippets/forth.js ace/worker-forth.js
+ PSED 's/,?forth\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?forth\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?forth\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?forth\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language mushcode'
Remove language mushcode
+ rm -f ace/mode-mushcode.js ace/snippets/mushcode.js ace/worker-mushcode.js
+ PSED 's/,?mushcode\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?mushcode\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?mushcode\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?mushcode\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language vbscript'
Remove language vbscript
+ rm -f ace/mode-vbscript.js ace/snippets/vbscript.js ace/worker-vbscript.js
+ PSED 's/,?vbscript\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?vbscript\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?vbscript\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?vbscript\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language tcl'
Remove language tcl
+ rm -f ace/mode-tcl.js ace/snippets/tcl.js ace/worker-tcl.js
+ PSED 's/,?tcl\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?tcl\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?tcl\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?tcl\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language velocity'
Remove language velocity
+ rm -f ace/mode-velocity.js ace/snippets/velocity.js ace/worker-velocity.js
+ PSED 's/,?velocity\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?velocity\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?velocity\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?velocity\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language pascal'
Remove language pascal
+ rm -f ace/mode-pascal.js ace/snippets/pascal.js ace/worker-pascal.js
+ PSED 's/,?pascal\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?pascal\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?pascal\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?pascal\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language powershell'
Remove language powershell
+ rm -f ace/mode-powershell.js ace/snippets/powershell.js ace/worker-powershell.js
+ PSED 's/,?powershell\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?powershell\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?powershell\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?powershell\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language asciidoc'
Remove language asciidoc
+ rm -f ace/mode-asciidoc.js ace/snippets/asciidoc.js ace/worker-asciidoc.js
+ PSED 's/,?asciidoc\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?asciidoc\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?asciidoc\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?asciidoc\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language apache_conf'
Remove language apache_conf
+ rm -f ace/mode-apache_conf.js ace/snippets/apache_conf.js ace/worker-apache_conf.js
+ PSED 's/,?apache_conf\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?apache_conf\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?apache_conf\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?apache_conf\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language ada'
Remove language ada
+ rm -f ace/mode-ada.js ace/snippets/ada.js ace/worker-ada.js
+ PSED 's/,?ada\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?ada\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?ada\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?ada\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language soy_template'
Remove language soy_template
+ rm -f ace/mode-soy_template.js ace/snippets/soy_template.js ace/worker-soy_template.js
+ PSED 's/,?soy_template\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?soy_template\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?soy_template\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?soy_template\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language verilog'
Remove language verilog
+ rm -f ace/mode-verilog.js ace/snippets/verilog.js ace/worker-verilog.js
+ PSED 's/,?verilog\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?verilog\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?verilog\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?verilog\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language vhdl'
Remove language vhdl
+ rm -f ace/mode-vhdl.js ace/snippets/vhdl.js ace/worker-vhdl.js
+ PSED 's/,?vhdl\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?vhdl\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?vhdl\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?vhdl\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language autohotkey'
Remove language autohotkey
+ rm -f ace/mode-autohotkey.js ace/snippets/autohotkey.js ace/worker-autohotkey.js
+ PSED 's/,?autohotkey\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?autohotkey\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?autohotkey\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?autohotkey\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language batchfile'
Remove language batchfile
+ rm -f ace/mode-batchfile.js ace/snippets/batchfile.js ace/worker-batchfile.js
+ PSED 's/,?batchfile\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?batchfile\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?batchfile\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?batchfile\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ for lang in '${RM_LANG[*]}'
+ echo 'Remove language c9search'
Remove language c9search
+ rm -f ace/mode-c9search.js ace/snippets/c9search.js ace/worker-c9search.js
+ PSED 's/,?c9search\:\["[^"]+?"\]//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?c9search\:\["[^"]+?"\]//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,?c9search\:"\w+"//gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,?c9search\:"\w+"//gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/\{,/{/gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/\{,/{/gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ PSED 's/,\}/{/gi' ace/ext-modelist.js
+ perl -C -e 'use utf8;' -i -pe 's/,\}/{/gi' ace/ext-modelist.js
Can't remove ace/ext-modelist.js: Text file busy, skipping file.
+ SREGEX='snippetText=(""|\'\''\'\'')'
+ xargs rm -f
+ xargs grep -E 'snippetText=(""|\'\''\'\'')' -l
+ find ./ace/snippets -name '*.js' -print
+ echo 'Removes themes'
Removes themes
+ rm -rf ace/theme-ambiance.js ace/theme-chaos.js ace/theme-chrome.js ace/theme-clouds.js ace/theme-clouds_midnight.js ace/theme-cobalt.js ace/theme-crimson_editor.js ace/theme-dawn.js ace/theme-dreamweaver.js ace/theme-eclipse.js ace/theme-github.js ace/theme-idle_fingers.js ace/theme-katzenmilch.js ace/theme-kr.js ace/theme-kuroir.js ace/theme-merbivore.js ace/theme-merbivore_soft.js ace/theme-mono_industrial.js ace/theme-monokai.js ace/theme-pastel_on_dark.js ace/theme-solarized_dark.js ace/theme-solarized_light.js ace/theme-terminal.js ace/theme-textmate.js ace/theme-tomorrow.js ace/theme-tomorrow_night_blue.js ace/theme-tomorrow_night_bright.js ace/theme-tomorrow_night_eighties.js ace/theme-tomorrow_night.js ace/theme-twilight.js ace/theme-vibrant_ink.js ace/theme-xcode.js
Otis Wright
  • 1,980
  • 8
  • 31
  • 53
  • You should first identify which exact line in this script giving you this error. Running script via bash -x might be very helpful to debug it – mvp Sep 24 '14 at 05:29
  • What would be the syntax to do that? (sorry) – Otis Wright Sep 24 '14 at 09:26
  • Execute script as `bash -x myscript.sh`, or edit shebang line to read `#!/bin/bash -x`. This will force shell interpreter to print every line before executing it – mvp Sep 24 '14 at 09:44
  • possible duplicate of [linux: how find out which process is using a file?](http://stackoverflow.com/questions/24554614/linux-how-find-out-which-process-is-using-a-file) – Paul Sweatte Jan 23 '15 at 15:41
  • Not a duplicate as only happens on windows linux VM's that is the problem here, it is not generic. – Otis Wright Jan 23 '15 at 23:43

0 Answers0