pwd命令

来源:互联网 发布:闪电式一个网络嘛 编辑:程序博客网 时间:2024/05/08 02:06

Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。 

在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。

1.命令格式:

pwd [选项]

2.命令功能:

查看”当前工作目录“的完整路径

3.常用参数:

一般情况下不带任何参数

如果目录是链接时

格式:pwd -P  显示出实际路径,而非使用连接(link)路径。 

4.常用实例:

       实例1:用 pwd 命令查看默认工作目录的完整路径

命令:

pwd 

输出:

[root@localhost ~]# pwd

/root

[root@localhost ~]#

 

实例2使用 pwd 命令查看指定文件夹

命令:

pwd

输出:

[root@localhost ~]# cd /opt/soft/

[root@localhost soft]# pwd 

/opt/soft

[root@localhost soft]#

 

实例三:目录连接链接时,pwd -P  显示出实际路径,而非使用连接(link)路径pwd显示的是连接路径

命令:

pwd -P

输出:

[root@localhost soft]# cd /etc/init.d 

[root@localhost init.d]# pwd

/etc/init.d

[root@localhost init.d]# pwd -P

/etc/rc.d/init.d

[root@localhost init.d]#

实例4:/bin/pwd

命令:

/bin/pwd [选项]

选项:

-L 目录连接链接时,输出连接路径

-P 输出物理路径

输出:

[root@localhost init.d]# /bin/pwd 

/etc/rc.d/init.d

[root@localhost init.d]# /bin/pwd --help

[root@localhost init.d]# /bin/pwd -P

/etc/rc.d/init.d

[root@localhost init.d]# /bin/pwd -L

/etc/init.d

[root@localhost init.d]#

实例五:当前目录被删除了,而pwd命令仍然显示那个目录

 输出:

[root@localhost init.d]# cd /opt/soft

[root@localhost soft]# mkdir removed

[root@localhost soft]# cd removed/

[root@localhost removed]# pwd

/opt/soft/removed

[root@localhost removed]# rm ../removed -rf

[root@localhost removed]# pwd

/opt/soft/removed

[root@localhost removed]# /bin/pwd

/bin/pwd: couldn't find directory entry in “..” with matching i-node

[root@localhost removed]# cd 

[root@localhost ~]# pwd

/root

[root@localhost ~]#


c语言实现这个命令。
要实现这个功能,需要用到下面的一个系统调用:

#include <unistd.h>
 
char *getcwd(char *bufsize_t size);

该系统调用返回当前的工作目录的绝对路径,绝对路径的值保留在size大小的buf中,如果这个缓冲区太小,则返回NULL,并且errno被设置为ERANGE, 如果buf等于NULL,则行为是未定义的。如果函数调用成功,返回值是buf, 如果调用失败,则返回NULL,失败原因可以查看errno。

另外,还要用到一个函数:

#include <string.h>
 
char *strerror(int errnum);

该函数吧错误代码errnum转换为错误描述字符串并返回。

程序很简单,完整代码如下:

下载: pwd.c
  1. /* pwd.c */
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <errno.h>
  6.  
  7. #define BUF_SIZ    2048
  8. int main()
  9. {
  10.     char buf[BUF_SIZ];   
  11.    
  12.     if ( getcwd(bufBUF_SIZ) )
  13.         printf("%s/n"buf);
  14.     else
  15.         fprintf(stderr"error occured : %s"strerror(errno));
  16.     exit(0);
  17. }
0 0