Visión general
La especificación incorrecta de un argumento en una herramienta de línea de comandos (detalles a continuación) ha dado lugar a la creación de un archivo literalmente nombrado ".". Ya he descubierto que intentar eliminarlo directamente en Finder provocará la eliminación de todo el contenido de la carpeta que lo contiene (afortunadamente, esta es una carpeta temporal), pero aún no elimina el archivo "." en sí. Además, no se pueden eliminar con éxito las carpetas que contienen este archivo, ya sea con Finder o desde la terminal de bash/zsh.
¿Cómo se puede eliminar (o cambiar el nombre) realmente un archivo así?
Intentos de eliminar desde zsh
Por ejemplo:
mytmp % ls -hal
total 65
drwx------ 1 user staff 16K Aug 21 11:20 .
-rwx------ 1 user staff 0B Aug 21 09:51 .
drwx------ 1 user staff 16K Aug 16 16:30 ..
mytmp % ls -aB
. . ..
mytmp % rm -rf '.'
rm: "." y ".." no pueden ser eliminados
mytmp % cd ..
scratch % rm -rf mytmp
rm: mytmp: Permiso denegado
scratch % sudo rm -rf mytmp
rm: mytmp: Permiso denegado
También he intentado variaciones sin -r
, ya que realmente es la versión no directiva la que se debe eliminar.
También probé la sugerencia de @bmike de usar el nodo-i. Aunque podemos identificar el nodo-i, la eliminación no parece funcionar:
scratch % ls -ila mytmp
total 65
8056451580272514705 drwx------ 1 user staff 16384 Aug 21 11:20 .
8652239633868421122 -rwx------ 1 user staff 0 Aug 21 09:51 .
2 drwx------ 1 user staff 16384 Aug 21 11:43 ..
scratch % find mytmp -inum 8652239633868421122 -delete
## no hay cambios
scratch % ls -ila mytmp
total 65
8056451580272514705 drwx------ 1 user staff 16384 Aug 21 11:20 .
8652239633868421122 -rwx------ 1 user staff 0 Aug 21 09:51 .
2 drwx------ 1 user staff 16384 Aug 21 11:43 ..
¿Realmente se llama "."?
@nohillside propuso delimitar las listas con x
y y
para ver si realmente se llama ".". Desde bash
:
bash-3.2$ for i in .*; do echo x${i}y; done
x.y
x.y
x..y
Parece que sí.
@fd0 sugirió imprimir caracteres no imprimibles con cat -vet
. Desde bash
:
bash-3.2$ ls -1a | cat -vet
.$
.$
..$
Nuevamente, parece que se llama de manera idéntica.
@nohillside sugirió ejecutar un servidor de Python desde el directorio y mostrar su lista de directorios:
¿Es "." realmente ese punto?
Podemos imprimir en octal para ver que es lo mismo que el punto que representa "este directorio":
bash-3.2$ ls -a | od -cb
0000000 . \n . \n . . \n
056 012 056 012 056 056 012
0000007
Además, el comportamiento reportado arriba de Finder debería indicar que se interpreta como ese punto.
Antecedentes adicionales
La carpeta está en un Volumen de red, formato SMB (OS X).
La herramienta que resultó en esto fue haplogrep
, una CLI basada en Java. Se puede instalar a través de Conda mediante
conda install -c conda-forge -c bioconda haplogrep
La suborden utilizada fue haplogrep classify
, que tiene las siguientes opciones:
mytmp % haplogrep classify
mtDNA Haplogroup Classifiction v2.4.0
https://github.com/seppinho/haplogrep-cmd
(c) Sebastian Schönherr, Hansi Weissensteiner, Lukas Forer, Dominic Pacher
sebastian.schoenherr@i-med.ac.at
[classify]
Opciones requeridas faltantes: '--input=', '--output=', '--format='
Uso: haplogrep classify [--chip] [--extend-report] [--rsrs]
[--skip-alignment-rules] [--write-fasta]
[--write-fasta-msa] --format=
[--hetLevel=] [--hits=] --in=
[--lineage=] [--metric=] --out=
[--phylotree=]
--chip Datos VCF de un chip de genotipo
Por defecto: false
--extend-report Agrega una bandera para una salida final extendida
Por defecto: false
--format= Especificar formato de archivo de entrada: vcf, fasta o hsd
--hetLevel= Agrega heteroplasmias con un nivel > X del archivo VCF
al perfil (por defecto: 0.9)
--hits= Calcular los mejores n resultados
--in, --input= Archivo de entrada VCF, fasta o hsd
--lineage= Exportar información de linaje como archivo de puntos, \n0=no
árbol, 1=con SNPs, 2=solo estructura, sin SNPs
--metric= Especificar otros métricos (hamming o jaccard) que
no sean el predeterminado (kulczynski)
--out, --output= Ubicación del archivo de salida
--phylotree= Especificar versión de phylotree
--rsrs Usar versión de RSRS
Por defecto: false
--skip-alignment-rules
Omitir arreglos de nomenglatura de mtDNA basados en reglas para
importación de FASTA
Por defecto: false
--write-fasta Escribir resultados en formato fasta
Por defecto: false
--write-fasta-msa Escribir alineación múltiple de secuencias (_MSA.fasta)
Por defecto: false
Interpreté incorrectamente la descripción de "Ubicación del archivo de salida" del argumento --out
como que pedía una ruta, lo que me llevó a usar --out .
y así resultar en la creación de un archivo llamado ".".
Cambio de nombre
El archivo mismo no se puede cambiar de nombre en Finder o con mv
, sin embargo, la carpeta que lo contiene se puede cambiar de nombre.