Acabo de actualizar mi Ubuntu 16.04 a 17.04 y encontré un pequeño problema con el cdcomando.
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 cden Ubuntu 17.04 como cden Ubuntu 16.04?
command-line
bash
cd-command
Hidayats
fuente
fuente

cddos 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
cdcomando 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
cdsin argumentos:Después de haber ingresado esta línea arriba en su terminal, verifique si
cdahora 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~/.bashrcarchivo. 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
cdcomando incorporado Bash real en lugar de esta función personalizada, simplemente puede llamarlo con encommand cdlugar de sin formatocd.fuente
.sharchivo 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.hen Bash-4.4 se actualizó para agregar la siguiente opciónY se
builtins/cd.defrefiere a su error aquí:¿Qué puedo hacer a largo plazo ?:
Podrías compilar la tuya
bashsin los nuevos CD_COMPLAINS , pero eso sería tedioso. Puede redefinir lacdfuncionalidad 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 literal1al 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 alTabcuá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 UnTabseguido por TabTabproduce
fuente
Esto parece un error en Bash: según
man builtinsel comportamiento anterior es el correcto.Puede informar el error en la
bug-bashlista 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.hpara cambiar esto (debe ser la línea 32)a esto
Edite
debian/changelogy agregue una entrada como esta en la parte superior (también puede usar el comandodch -i):Los puntos más importantes son agregar
+fooal número de versión actual (foopuede 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 (artfulaquí). Finalmente, corredpkg-source --commit.A continuación, puede ejecutar el
debuildcomando y, si todo va bien (debsignse pueden ignorar los errores ), debe tener algunos.debs en el directorio principal, que puede instalar como de costumbre (no es necesario instalarlos todos, solo los que tener ahora; usardpkg -l | grep bashpara 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