Контролируйте операции файла

«|» aka , «Трубы» .... Трубы позволяют использовать вывод программы в качестве ввода другого «. Так что если вы скажем, мы сделаем это:

user$ cat SHAHashing.java | grep main
    public static void main(String[] args)throws Exception

, как вы можете видеть, что кошка выполняется первым отображением содержимого страницы« Вывод ", а потом grep для строки main.

Теперь давайте предположим, что я messyped CAT Как это:

user$ cats SHAHashing.java | grep main
-bash: cats: command not found

Нет вывода« неправильная команда », GREP будет выполняться, но нечего делать. ... Кошки выводят первую команду прекратить статус «Выход 1».

0
07.01.2015, 11:43
2 ответа

Вы не можете видеть историю файловых операций, если вы не отслеживали и не зарегистрированы их. Есть несколько способов сделать это, например, системный вызов PTRACE () или утилита командной строки Ptrace (1129918], или, возможно, даже DTRACE , но если вы не регистрируете действия, у вас будет только файл Марки времени для работы.

0
28.01.2020, 04:57

Чтобы переместить все файлы с определенными расширениями в дереве каталогов (т.е. в каталоге и его подкаталогах рекурсивно) в один каталог, в zsh:

mv -i source/**/*.(pdf|epub) destination/

Каталог назначения уже должен существовать. Если требуется собрать файлы в текущем каталоге и его подкаталогах, можно опустить часть источник/. Если вы хотите переместить все файлы независимо от их имени, но не каталоги:

mv -i source/**/*(.) destination/

В bash:

shopt -s extglob globstar
mv -i source/**/*.@(pdf|epub) destination/

Эти команды могут пожаловаться, что командная строка слишком длинна, если у вас много файлов. В этом случае вместо рекурсивного глоббинга можно вызвать find .

find source -name '*.pdf' -o -name '*.epub' -exec mv -i -t destination/ {} +
find source -type f -exec mv -i -t destination/ {} +

Если существующая структура каталогов содержит некоторую информацию, то вместо перемещения файлов может оказаться более удобным создание жестких ссылок или символьных ссылок .

Для создания жестких каналов вызовите ln вместо mv -i . При наличии жестких ссылок каждый файл будет присутствовать сразу в обоих местах. Если удалить либо исходный, либо новый файл, остается другой: два расположения файла равны. Вы можете сказать, что файл имеет жесткие ссылки, потому что число во втором столбце в выходных данных ls -l больше 1.

Для создания символьных ссылок сначала измените каталог назначения и вызовите ln -s с помощью . (для текущего каталога) в качестве целевого объекта. Символическая ссылка - это файл, в котором написано «посмотрите на этот файл.» Если удалить символическую ссылку, это не повлияет на исходный файл. При перемещении или удалении исходного файла символьная ссылка становится висячей (т.е. она все еще находится, но больше не указывает на файл).

Для удаления пустых каталогов в каталоге можно использовать

find /some/directory -depth -type d -empty -delete
-121--105481-

Этот тип информации не регистрируется по умолчанию (это будет большой объем информации)!

Если вы хотите увидеть, что делает конкретный процесс, запустите его в strace (это утилита Linux, другие варианты Unix имеют аналогичные утилиты, такие как truss , dtrace и т. д.). По умолчанию strace регистраций все системные вызовы. Можно управлять типом информации strace дисплеев; например, параметр -file ограничивает ведение журнала системными вызовами, имеющими доступ к файлам.

strace -o myprogram.log -efile myprogram --option

При необходимости регистрации доступа ко всем файлам в определенной иерархии можно использовать FFS . См. Можно ли узнать, какая программа или сценарий создали данный файл? для примера использования. Не регистрировать каталог, в который записываются журналы!

Более распространенным механизмом регистрации является подсистема аудита Linux . Работает как root. См. Можно ли узнать, какая программа или сценарий создала данный файл? для получения инструкций по настройке и примера использования. Не регистрировать каталог, в который записываются журналы!

0
28.01.2020, 04:57

Теги

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