[Video] v20.5. Переименование и удаление файлов или директорий в Ubuntu. Команды touch(ещё раз), mv, rm.


Это пятое видео о написании скриптов в коммандной оболочке – bash scripting.

Команда touch служит для изменения данных о последней дате и времени пользования файлом (какая-либо дата меняется на текущую). Иногда полезно использовать в скриптах и отслеживать состояние какого-либо файла и тп.
Также можно создавать пустые файлы, если не указывать ключь ” -c “.

~$ touch testfile

touch – change file timestamps
SYNOPSIS touch [OPTION]… FILE…
DESCRIPTION
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h is supplied.
A FILE argument string of – is handled specially and causes touch to change the times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.

В моей текущей директории есть только созданный мной файл testfile:
~$ ls -lh
-rw-rw-r-- 1 alexander alexander 0 Nov 5 16:33 testfile

Я хочу переименовать файл testfile в newtestfile. Это можно сделать с помощью команды mv.
Команда mv служит для переноса файла из одного места в другое, также для переименования имени файла.
~$ mv testfile newtestfile

~$ ls -lh
-rw-rw-r-- 1 alexander alexander 0 Nov 5 16:33 newtestfile

Это также работает для переименования и переноса директорий.
mv – move (rename) files

Удаление файлов.
Удалить файл можно с помощью команды rm
~$ ls -lh
total 0
-rw-rw-r-- 1 alexander alexander 0 Nov 5 17:01 newtestfile

~$ rm newtestfile
~t$ ls -lh
total 0
~$

Создание директорий.
Как я уже писал создать директорию можно командой mkdir.
~$ ls -lh
total 0

~$ mkdir dirtest
~$ ls -lh
total 4.0K
drwxrwxr-x 2 alexander alexander 4.0K Nov 5 17:15 dirtest

Удалить директорию просто с помощью команды rm не получится:
~$ rm dirtest/
rm: cannot remove ‘dirtest/’: Is a directory

нужно использовать ключь -r (remove directories and their contents recursively). В директории будет удалён весь контент и с этим нужно быть аккуратным!
~$ rm -r dirtest/
~$ ls -lh
total 0
~$

Можно воспользоваться также командой rmdir для удаления директории, но если в директории есть какие-либо файлы, то будет выдана ошибка о невозможности удаления и нужно будет воспользоваться командой “rm -r filename”.

~$ ls -lh
total 4.0K
drwxrwxr-x 2 alexander alexander 4.0K Nov 5 17:24 dirtest
~$ ls -lh dirtest/
total 0
-rw-rw-r-- 1 alexander alexander 0 Nov 5 17:24 testfile

~$ rmdir dirtest/
rmdir: failed to remove ‘dirtest/’: Directory not empty

~$ rm -r dirtest/
~$ ls -lh
total 0
~$