История изменений
Исправление firkax, (текущая версия) :
Во-первых, в баше и команды перемещения нет. mv это внешняя программа, она не часть шелла. Вы (всмысле, не только ты, а ещё много кто) достали называть башем всё что связано со скриптами, перестаньте так делать.
Во-вторых, да, ты прав, стандартной проги для переименования нет, сам был в недоумении когда она понадобилась. А у mv совершенно плохой синтаксис запуска, надо постараться чтоб он не сделал что-то не то в непредвиденной ситуации - то есть это программа скорее для интерактивного использования (в шелл-приглашении, да) чем для скриптов.
Ну я по-быстрому написал её, чего там возиться то? К сожалению я не помню где именно она мне была нужна и соответственно где исходник, но вот он примерно такой:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char **argv) {
int j, verbose;
j = 1; verbose = 0;
if(j+2<argc && !strcmp(argv[j],"-v")) { j++; verbose = 1; }
if(argc!=j+2) { fprintf(stderr, "Usage: %s [-v] /path/to/source /path/to/target\n", argv[0]); return -1; }
if(rename(argv[j], argv[j+1])<0) {
fprintf(stderr,"rename \"%s\" -> \"%s\" error %d (%s)\n", argv[j], argv[j+1], errno, strerror(errno));
return -1;
}
if(verbose) printf("renamed \"%s\" -> \"%s\"\n", argv[j], argv[j+1]);
return 0;
}
Исходная версия firkax, :
Во-первых, в баше и команды перемещения нет. mv это внешняя программа, она не часть шелла. Вы (всмысле, не только ты, а ещё много кто) достали называть башем всё что связано со скриптами, перестаньте так делать.
Во-вторых, да, ты прав, стандартной проги для переименования нет, сам был в недоумении когда она понадобилась. А у mv совершенно плохой синтаксис запуска, надо постараться чтоб он не сделал что-то не то в непредвиденной ситуации - то есть это программа скорее для интерактивного использования (в шелл-приглашении, да) чем для скриптов.
Ну я по-быстрому написал её, чего там возиться то? К сожалению я не помню где именно она мне была нужна и соответственно где исходник, но вот он примерно такой:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char **argv) {
int j, verbose;
j = 1; verbose = 0;
if(j<argc && !strcmp(argv[j],"-v")) { j++; verbose = 1; }
if(argc!=j+2) { fprintf(stderr, "Usage: %s [-v] /path/to/source /path/to/target\n", argv[0]); return -1; }
if(rename(argv[j], argv[j+1])<0) {
fprintf(stderr,"rename \"%s\" -> \"%s\" error %d (%s)\n", argv[j], argv[j+1], errno, strerror(errno));
return -1;
}
if(verbose) printf("renamed \"%s\" -> \"%s\"\n", argv[j], argv[j+1]);
return 0;
}