энергия: создайте файл с битом +x

Попробуйте sort и uniq инструменты:

sort -k3,3nr infile |
awk '{ print $1" " $3" " $2 }' | 
uniq -f2 | awk '{ print $1" " $3" " $2 }' > outfile
14
04.06.2012, 12:16
3 ответа

Я не вспоминаю, где я нашел это, но я использую следующее в своем ~/.vimrc

" Set scripts to be executable from the shell
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod +x <afile> | endif | endif

Команда автоматически устанавливает исполняемый бит, если первая строка запускается с "#!" или содержит "/мусорное ведро /".

23
27.01.2020, 19:50
  • 1
    Ничего себе, это - большая вещь. Btw, кажется, что можно присоединиться два ifв одного if getline(1) =~ "^#!/bin/". Так или иначе это удивительно.Спасибо. –  rush 04.06.2012, 16:39
  • 2
    Это не "или". Я предпочитаю использовать просто первое условие, au BufWritePost * if getline(1) =~ "^#!" | silent !chmod +x % | endif –  vault 17.02.2016, 16:39
  • 3
    @rush причины двойного, если операторы к к контрольным строкам где /bin сразу не следует за хижиной, как #!/usr/bin/env. Путь вокруг этого состоит в том, чтобы, конечно, использовать подстановочный знак: getline(1) =~ "^#!.*/bin/". –  Harald Nordgren 02.04.2016, 17:47
  • 4
    Аккуратный прием, но я получаю следующий каждый раз, когда я сохраняю: written/bin/bash: endif: command not found /bin/bash: endif: command not found –  StevieD 10.02.2017, 23:36
  • 5
    это фиксирует его: au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent execute "!chmod a+x <afile>" | endif | endif –  StevieD 10.02.2017, 23:44

Я нашел этот сценарий по http://vim.wikia.com. Не идеальное решение, а приемлемое, я думаю.

function! SetExecutableBit()
  let fname = expand("%:p")
  checktime
  execute "au FileChangedShell " . fname . " :echo"
  silent !chmod a+x %
  checktime
  execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()

Можно теперь установить выполнить бит с командой :Xbit. Весь кредит Max Ischenko по vim.wikia.com

4
27.01.2020, 19:50

Я использую это в MacVim Custom Version 8.0.648 (134)

" if file is executable just exit

au BufWritePost *.sh if FileExecutable("%") | if getline(1) =~ "^#!" | silent !chmod u+x % | endif | endif

" Determines if file is already executable 

function! FileExecutable(fname)

    execute "silent! ! test -x" a:fname
    return v:shell_error

endfunction
0
27.01.2020, 19:50

Теги

Похожие вопросы