En estos casos, lo mejor es buscar "dot slash", que dio este resultado muy útil: linfo.org/dot_slash.html
heltonbiker
Respuestas:
29
./o simplemente .es la abreviatura de Unix para el directorio actual.
Debe especificarlo cuando el directorio actual no está en su RUTA. La RUTA es la lista de carpetas buscadas cuando ejecuta un programa. (Puede determinarlo escribiendo echo $PATH). Si un archivo ejecutable no está en su RUTA, para ejecutarlo debe especificar la carpeta en la que se encuentra. Puede hacerlo dando la ruta completa al archivo, pero si el archivo está en el directorio actual, puede usar ./como taquigrafía.
Del mismo modo, ../o simplemente ..es una forma abreviada para el directorio sobre el actual.
Alguien debería incluir en su respuesta por qué $ PATH no contiene .. Es porque usar automáticamente el directorio actual es un agujero de seguridad. Imagine que alguien más crea un programa, lo nombra a lsusted y a usted cden su directorio, luego escribals
Zan Lynx el
1
@Zan Siempre me he preguntado esto, gracias por tu respuesta a la pregunta que nadie hizo, pero alguien debería haberlo hecho.
crasic
Gran comentario / adición de @ZanLynx, debe editarse en la respuesta ya que los comentarios pueden perderse.
NSGaga
15
Cada directorio en la línea de comando tiene dos "directorios especiales" llamados .y ... Estos son abreviaturas para, respectivamente, el directorio actual y el directorio que contiene el directorio actual.
Entonces, por ejemplo, cd ./more/directory/namessolo significa "comenzar en el directorio actual y continuar en la ruta". Del mismo modo, el comando cd ..significa "cambiar un directorio hacia arriba.
Si desea el nombre de su directorio actual, puede usar el pwdcomando. Además, si usa la -abandera para ls, puede ver estos dos directorios especiales. Es decir, ls -agenerará una lista que comienza con .y ...
Otros ya han explicado qué .y qué ..significa (directorio actual y el directorio padre respectivamente). Esto se aplica a todos los nombres de ruta.
Cuando abre una terminal, generalmente comienza en su directorio de inicio: ~(que se expande a /home/username). Las siguientes rutas son todas equivalentes, siempre que su directorio de trabajo actual sea /home/username:
/home/username
.
../username
../../home/username
../../../home/username(el directorio padre de /todavía está /)
./././././. (el directorio actual en el directorio actual en el ...)
./ (se permiten barras diagonales finales para los directorios)
/home////username/// (y también lo son las barras múltiples)
No , no confundir ./programcon . program. ./programejecuta un archivo en el directorio actual con el conjunto de bits de ejecución. . ./programes una cosa bash y, alternativamente, se puede escribir como source ./programque lee los comandos bash del programarchivo en el directorio actual y los ejecuta en el shell actual.
Si se pregunta por qué solo puede ejecutar en geditlugar de /usr/bin/gedity no en programlugar de ./programo /home/username/program, consulte la pregunta relacionada:
Ok ... pero aún no entiendo. Digamos que tengo yiic adentro /home/mysuser/y que navego allí usando cd /home/myuser. Una vez dentro, creí que hacer solo yiic, debería funcionar porque llamé mientras estaba en ese directorio. Pero él dice comando no archivo. Si hago lo mismo y uso el ./ entonces, se ejecuta correctamente ... ¿Pueden aclarar un poco más?
MEM
@frabjous como respondió este comentario también.
MEM
No! siempre se verá en la directiva PATH a menos que le indique que use el directorio actual (usando ./). Mire la respuesta del usuario45: .es un archivo especial dentro de una carpeta que puede ver al hacer un ls -laen el directorio;)
Respuestas:
./o simplemente.es la abreviatura de Unix para el directorio actual.Debe especificarlo cuando el directorio actual no está en su RUTA. La RUTA es la lista de carpetas buscadas cuando ejecuta un programa. (Puede determinarlo escribiendo
echo $PATH). Si un archivo ejecutable no está en su RUTA, para ejecutarlo debe especificar la carpeta en la que se encuentra. Puede hacerlo dando la ruta completa al archivo, pero si el archivo está en el directorio actual, puede usar./como taquigrafía.Del mismo modo,
../o simplemente..es una forma abreviada para el directorio sobre el actual.fuente
.. Es porque usar automáticamente el directorio actual es un agujero de seguridad. Imagine que alguien más crea un programa, lo nombra alsusted y a ustedcden su directorio, luego escribalsCada directorio en la línea de comando tiene dos "directorios especiales" llamados
.y... Estos son abreviaturas para, respectivamente, el directorio actual y el directorio que contiene el directorio actual.Entonces, por ejemplo,
cd ./more/directory/namessolo significa "comenzar en el directorio actual y continuar en la ruta". Del mismo modo, el comandocd ..significa "cambiar un directorio hacia arriba.Si desea el nombre de su directorio actual, puede usar el
pwdcomando. Además, si usa la-abandera parals, puede ver estos dos directorios especiales. Es decir,ls -agenerará una lista que comienza con.y...fuente
Otros ya han explicado qué
.y qué..significa (directorio actual y el directorio padre respectivamente). Esto se aplica a todos los nombres de ruta.Cuando abre una terminal, generalmente comienza en su directorio de inicio:
~(que se expande a/home/username). Las siguientes rutas son todas equivalentes, siempre que su directorio de trabajo actual sea/home/username:/home/username.../username../../home/username../../../home/username(el directorio padre de/todavía está/)./././././.(el directorio actual en el directorio actual en el ...)./(se permiten barras diagonales finales para los directorios)/home////username///(y también lo son las barras múltiples)No , no confundir
./programcon. program../programejecuta un archivo en el directorio actual con el conjunto de bits de ejecución.. ./programes una cosa bash y, alternativamente, se puede escribir comosource ./programque lee los comandos bash delprogramarchivo en el directorio actual y los ejecuta en el shell actual.Si se pregunta por qué solo puede ejecutar en
geditlugar de/usr/bin/gedity no enprogramlugar de./programo/home/username/program, consulte la pregunta relacionada:fuente
Significa comenzar desde el
current directory path.Asumamos que tienes algo
pathcomo esto:y dentro
/usr/bin/hay un ejecutable llamadoyiic.Si lo emite
yiic, comenzaría el de adentro/usr/bin/.Al emitir,
./yiicle dice al sistema que busque dentro del directorio actual este ejecutable.fuente
/home/mysuser/y que navego allí usandocd /home/myuser. Una vez dentro, creí que hacer solo yiic, debería funcionar porque llamé mientras estaba en ese directorio. Pero él dice comando no archivo. Si hago lo mismo y uso el ./ entonces, se ejecuta correctamente ... ¿Pueden aclarar un poco más?.es un archivo especial dentro de una carpeta que puede ver al hacer unls -laen el directorio;)