Acabo de actualizar mi Ubuntu 16.04 a 17.04 y encontré un pequeño problema con el cd
comando.
Digamos que tengo dos carpetas: album-01
&album-02
En Ubuntu 16.04, si lo hago cd album*
, iré a la primera carpeta encontradaalbum-01
Pero en el nuevo Ubuntu 17.04, si lo hago cd album*
, me resultará
-bash: cd: too many arguments
¿Cómo hacer cd
en Ubuntu 17.04 como cd
en Ubuntu 16.04?
command-line
bash
cd-command
Hidayats
fuente
fuente
cd
dos ubicaciones, y de alguna manera esperas que descubra cuál quieres.Respuestas:
Todavía no pude probar esto en un sistema 17.04 real (solo verifiqué que funciona en 16.04), pero debería poder anular el
cd
comando incorporado Bash con su propia función personalizada, que descarta cualquier argumento adicional excepto el primero :Actualización: como se sugiere en el comentario de @ muru , esta versión a continuación podría funcionar mejor y admitir llamadas
cd
sin argumentos:Después de haber ingresado esta línea arriba en su terminal, verifique si
cd
ahora se comporta de la manera que desea. Si este es el caso, puede hacer que esta definición de función sea persistente agregando esa línea al final de su~/.bashrc
archivo. De lo contrario, desaparecerá tan pronto como finalice su sesión de shell actual.Tenga en cuenta que si por alguna razón necesita usar temporalmente el
cd
comando incorporado Bash real en lugar de esta función personalizada, simplemente puede llamarlo con encommand cd
lugar de sin formatocd
.fuente
.sh
archivo y luego creé un alias como:mcd="source /home/user/bin/cd.sh"
cd () { builtin cd "${@:1:1}"; }
lugar.Respuesta corta / solución alternativa
Para responder a su pregunta en este caso exacto, esto funciona
Pero probablemente no sea la funcionalidad que realmente quieres.
¿Qué cambió?
Parece que
config-top.h
en Bash-4.4 se actualizó para agregar la siguiente opciónY se
builtins/cd.def
refiere a su error aquí:¿Qué puedo hacer a largo plazo ?:
Podrías compilar la tuya
bash
sin los nuevos CD_COMPLAINS , pero eso sería tedioso. Puede redefinir lacd
funcionalidad como se sugiere aquí o puede crear un alias de una función comoProbándolo
Bash 4.4 Beta donde aún funciona
Bash 4.4 Versión estable donde no funciona
fuente
cd alb*1
, para que coincida con el literal1
al final, incluso sin los corchetes. Al principio confundí tu idea con algo más.Nunca me he encontrado con este problema, ya que siempre uso Tab Completion.
Entonces, en su caso, en lugar de tener una suposición imprecisa sobre qué directorio quiero, escribiría
cd al
Tabcuál si solo hay una coincidencia, la completa y si hay 2 o más completa hasta donde termina la coincidencia y TabTabenumera las opciones.Aquí hay un ejemplo de mi sistema:
cd Un
Tabseguido por TabTabproduce
fuente
Esto parece un error en Bash: según
man builtins
el comportamiento anterior es el correcto.Puede informar el error en la
bug-bash
lista de correo; Más detalles aquí .En realidad, el error fue reportado (hace mucho tiempo). Si desea un Bash fijo ahora, ahora, ahora , aquí le mostramos cómo hacerlo correctamente (probado en 17.10, también debería funcionar en otros).
Primero cree un directorio para trabajar, por ejemplo:
Obtenga el paquete fuente y las dependencias de compilación:
Editar
config-top.h
para cambiar esto (debe ser la línea 32)a esto
Edite
debian/changelog
y agregue una entrada como esta en la parte superior (también puede usar el comandodch -i
):Los puntos más importantes son agregar
+foo
al número de versión actual (foo
puede ser cualquier cadena de letras minúsculas; y tenga cuidado si usadch -i
, incrementará el último número, por lo que debe revertirlo al actual) y usar el nombre de lanzamiento correcto (artful
aquí). Finalmente, corredpkg-source --commit
.A continuación, puede ejecutar el
debuild
comando y, si todo va bien (debsign
se pueden ignorar los errores ), debe tener algunos.deb
s en el directorio principal, que puede instalar como de costumbre (no es necesario instalarlos todos, solo los que tener ahora; usardpkg -l | grep bash
para averiguarlo).Tenga en cuenta que el número de versión del nuevo paquete está configurado para que obtenga automáticamente cualquier actualización futura de
bash
; Si la actualización no soluciona el problema, debe repetir el proceso anterior.(Esta respuesta se publicó por primera vez en esta pregunta duplicada ).
fuente