⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0220filemanager.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		<div class=block2>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rmdir [-p] 目录名称</span>
<span class=term_say>参数∶
-p ∶连同上层『空的』目录也一起删除
范例∶</span>
[root@linux tmp]# <span class=term_command>ls -l</span>
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@linux tmp]# <span class=term_command>rmdir test</span>
[root@linux tmp]# <span class=term_command>rmdir test1</span>
rmdir: `test1': Directory not empty
[root@linux tmp]# <span class=term_command>rmdir -p test1/test2/test3/test4</span>
[root@linux tmp]# <span class=term_command>ls -l</span>
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
<span class=term_say># 瞧!利用 -p 这个参数,立刻就可以将 test1/test2/test3/test4 一次删除~
# 不过要注意的是,这个 rmdir 仅能『删除空的目录』喔!</span>
</pre></td></tr></table>

		如果想要建立删除旧有的目录时,就使用 rmdir 吧!例如将刚刚建立的 test 杀掉,使用 
		rmdir test 即可!请注意呦!目录需要一层一层的删除才行!而且
		<span class=text_import2>被删除的目录里面必定不能还有其他的目录或档案!</span>
		这也是所谓的空的目录 (empty directory) 的意思啊!那如果要将所有目录下的东西都杀掉呢?!
		这个时候就必须使用 rm -rf test 棉!不过,还是使用 rmdir 比较不危险!不过,你也可以尝试以 -p 
		的参数加入,来删除上层的目录喔!
		</div>
	</div>

	<hr><a name="dir_path"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>关于执行档路径的变数∶ $PATH</span>
	<div class=block2>
		在提过了绝对路径、相对路径与指令的下达方式之后,您应该会稍微注意到一件事情,那就是∶『
		<span class=text_import2>为什么我可以在任何地方执行 /bin/ls 这个指令呢?</span> 』对呀!
		为什么我可以直接执行 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢?
		<span class=text_import1>这是因为环境变数 PATH 的帮助所致呀</span>!当我们在执行一个指令的时候,
		系统会依照 PATH 的设定去每个 PATH 定义的路径下搜寻执行档,先搜寻到的指令先被执行之!现在,请下达 
		echo $PATH , echo 有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变数,所以即会显示出目前的 PATH 了!<BR>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>echo $PATH</span>
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
</pre></td></tr></table>

		注意到了吗?对啦! /bin 在 PATH 的设定之中,所以自然就可以找的到 ls 啦!
		PATH 对于执行档来说,是个很重要的『变数』,他主要是用来规范指令搜寻的目录。
		而每个目录是有顺序的,每个目录中间以冒号『:』来分隔,就如同上面范例中提到的棉!
		那么 PATH 这个变数还有什么地方重要呢?<ul>

		<li>如果你将 ls 移动到 /root 底下的话 (mv /bin/ls /root) ,然后你自己本身也在 /root 底下 (cd /root)
			,但是当你执行 ls 的时候,他就是不理你?怎么办?这是因为 PATH 这个变数没有 /root 
			这个目录,而你又将 ls 移动到 /root 底下了,自然系统就找不到可执行档了,因此就会告诉你, 
			command not found !那么该怎么克服这种问题呢?有两个方法,其一∶直接将 
			/root 的路径加入 PATH 当中!如何增加?可以使用∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>PATH="$PATH":/root</span>
</pre></td></tr></table>

			这种方式来增加 PATH 搜寻目录即可!另一种方式则是使用完整档名来下达指令,
			亦即直接使用相对或绝对路径来执行,例如∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/root/ls</span>
[root@linux ~]# <span class=term_command>./ls</span>
</pre></td></tr></table>

			因为在同一个目录中,而我们又知道在同一个目录中的目录符号为『 . 』,因此,就以上面的 
			./ls 来执行也可以!这种执行方式以后您应该会很常见到才对!<br /><br />

		<li>如果我有两个 ls 档案在不同的目录中,例如 /usr/local/bin/ls 底下与 /bin/ls 那么当我下达 ls 
			的时候,哪个 ls 会被执行?那还用说,就找出 PATH 里面哪个目录先被查询,则那个目录下的档案就会被先执行了!<br /><br />

		<li>咦!既然如此的话,那么为何不要在 PATH 里面加入 . 这个目录,如此一来的话,
			不就可以直接在所在目录执行档案了吗?因为 . 代表所在目录嘛!是这样没错!但是有没有想过,如果某天,
			某个怪怪的使用者在 /tmp 里面写了一个 ls 的档案,偏偏他是有害的档案,那么当你在 /tmp 底下执行 ls 
			时,怎么办?!没错,可能会『中标』,所以棉,<span class=text_import2>为了安全起见,不建议将『 .
			 』加入 PATH 的搜寻当中!</span>
		</ul>
		关于更多的 PATH 与相关的『变数』及『环境变数』概念,我们会在第三篇 bash shell 时,
		再更深入的介绍棉~而经过上面的说明,您应该也能够比较了解的是∶『
		<span class=text_import1>为什么绝对路径下达指令的方法比相对路径要正确的多</span> 』这句话的意义棉~ ^_^
		因为是直接找到该指令来执行,而不是透过 PATH 这个变数的内容去搜寻的啊!
	</div>
</div>

<hr><a NAME="file_dir_manage"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">档案与目录管理∶</span><br />
<div class=block1>
	谈了谈目录与路径之后,再来讨论一下关于档案的一些基本管理吧!档案与目录的管理上,不外乎『显示属性』、
	『拷贝』、『删除档案』及『移动档案或目录』等等,由于档案与目录的管理在 Linux 当中是很重要的!
	尤其是每个人自己家目录的资料也都需要注意管理!由于我们在执行程式的时后,系统预设有一个搜寻的路径顺序,
	如果有两个以上相同档名的执行档分别在不同的路径时,呵呵,就需要特别留意棉!
	这里我们来谈一谈有关档案与目录的一些基础管理部分吧!<br /><br />

	<hr><a name="ls"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>档案与目录的检视∶ ls</span>
	<div class=block2>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ls [-aAdfFhilRS] 目录名称</span>
[root@linux ~]# <span class=term_command>ls [--color={none,auto,always}] 目录名称</span>
[root@linux ~]# <span class=term_command>ls [--full-time] 目录名称</span>
<span class=term_say>参数∶
-a  ∶全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~
-A  ∶全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~
-d  ∶仅列出目录本身,而不是列出目录内的档案资料
-f  ∶直接列出结果,而不进行排序 (ls 预设会以档名排序!)
-F  ∶根据档案、目录等资讯,给予附加资料结构,例如∶
      *∶代表可执行档; /∶代表目录; =∶代表 socket 档案; |∶代表 FIFO 档案;
-h  ∶将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i  ∶列出 inode 位置,而非列出档案属性;
-l  ∶长资料串列出,包含档案的属性等等资料;
-n  ∶列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
-r  ∶将排序结果反向输出,例如∶原本档名由小到大,反向则为由大到小;
-R  ∶连同子目录内容一起列出来;
-S  ∶以档案容量大小排序!
-t  ∶依时间排序
--color=never  ∶不要依据档案特性给予颜色显示;
--color=always ∶显示颜色
--color=auto   ∶让系统自行依据设定来判断是否给予颜色
--full-time    ∶以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} ∶输出 access 时间或 改变权限属性时间 (ctime) 
                       而非内容变更时间 (modification time)
范例∶</span>
</pre></td></tr></table>

		在 Linux 系统当中,这个 ls 指令可能是最常被执行的吧!因为我们随时都要知道档案或者是目录的相关资讯啊~
		不过,我们 Linux 的档案所记录的资讯实在是太多了, ls 没有需要全部都列出来呢~
		所以,当您只有下达 ls 时,预设显示的只有∶<span class=text_import2>非隐藏档的档名、
		以档名进行排序及档名代表的颜色显示</span>;如此而已。举例来说,
		您下达 ls /etc 之后,只有经过排序的档名以及以蓝色显示目录及白色显示一般档案,如此而已。<br /><br />

		那如果我还想要加入其他的显示资讯时,可以加入上头提到的那些有用的参数呢~
		举例来说,我们之前一直用到的 -l 这个长串显示资料内容,以及将隐藏档也一起列示出来的 -a 参数等等。<br />

<table class="term"><tr><td class="term"><pre>
<span class=term_hd>范例一∶将家目录下的所有档案列出来(含属性与隐藏档)</span>
[root@linux ~]# <span class=term_command>ls -al ~</span>
total 252
drwxr-x---   9 root root  4096 Jul 16 23:40 <font color=darkblue>.</font>
drwxr-xr-x  24 root root  4096 Jul 16 23:45 <font color=darkblue>..</font>
-rw-------   1 root root  1491 Jun 25 08:53 anaconda-ks.cfg
-rw-------   1 root root 12543 Jul 18 01:23 .bash_history
-rw-r--r--   1 root root    24 Dec  4  2004 .bash_logout
-rw-r--r--   1 root root   191 Dec  4  2004 .bash_profile
-rw-r--r--   1 root root   395 Jul  4 11:45 .bashrc
-rw-r--r--   1 root root 68495 Jun 25 08:53 install.log
-rw-r--r--   1 root root  5976 Jun 25 08:53 install.log.syslog
drwx------   2 root root  4096 Jul  4 16:03 <font color=darkblue>.ssh</font>
-rw-------   1 root root 12613 Jul 16 23:40 .viminfo
<span class=term_say># 这个时候您会看到以 . 为开头的几个档案,以及目录档 ./../.ssh 等等,
# 不过,目录档都是以深蓝色显示,有点不容易看清楚就是了。</span>

<span class=term_hd>范例二∶承上题,不显示颜色,但在档名末显示出该档名代表的类型(type)</span>
[root@linux ~]# <span class=term_command>ls -alF --color=never  ~</span>
total 252
drwxr-x---   9 root root  4096 Jul 16 23:40 ./
drwxr-xr-x  24 root root  4096 Jul 16 23:45 ../
-rw-------   1 root root  1491 Jun 25 08:53 anaconda-ks.cfg
-rw-------   1 root root 12543 Jul 18 01:23 .bash_history
-rw-r--r--   1 root root    24 Dec  4  2004 .bash_logout
-rw-r--r--   1 root root   191 Dec  4  2004 .bash_profile
-rw-r--r--   1 root root   395 Jul  4 11:45 .bashrc
-rw-r--r--   1 root root 68495 Jun 25 08:53 install.log
-rw-r--r--   1 root root  5976 Jun 25 08:53 install.log.syslog
drwx------   2 root root  4096 Jul  4 16:03 .ssh/
-rw-------   1 root root 12613 Jul 16 23:40 .viminfo
<span class=term_say># 注意看到显示结果的第一行,嘿嘿~知道为何我们会下达类似 ./command 
# 之类的指令了吧?因为 ./ 代表的是『目前目录下』的意思啊!至于什么是 FIFO/Socket ?
# 请参考前一章节的介绍啊!</span>

<span class=term_hd>范例三∶完整的呈现档案的修改时间 *(modification time)</span>
[root@linux ~]# <span class=term_command>ls -al --full-time  ~</span>
total 252
drwxr-x---   9 root root  4096 2005-07-16 23:40:13.000000000 +0800 .
drwxr-xr-x  24 root root  4096 2005-07-16 23:45:05.000000000 +0800 ..
-rw-------   1 root root  1491 2005-06-25 08:53:37.000000000 +0800 anaconda-ks.cfg
-rw-------   1 root root 12543 2005-07-18 01:23:33.000000000 +0800 .bash_history
-rw-r--r--   1 root root    24 2004-12-04 05:44:13.000000000 +0800 .bash_logout
-rw-r--r--   1 root root   191 2004-12-04 05:44:13.000000000 +0800 .bash_profile
-rw-r--r--   1 root root   395 2005-07-04 11:45:16.000000000 +0800 .bashrc
-rw-r--r--   1 root root 68495 2005-06-25 08:53:34.000000000 +0800 install.log
-rw-r--r--   1 root root  5976 2005-06-25 08:53:28.000000000 +0800 install.log.syslog
drwx------   2 root root  4096 2005-07-04 16:03:24.000000000 +0800 .ssh
-rw-------   1 root root 12613 2005-07-16 23:40:13.000000000 +0800 .viminfo
<span class=term_say># 请仔细看,上面的『时间』栏位变了喔!变成较为完整的格式。
# 一般来说, ls -al 仅列出目前短格式的时间,有时不会列出年份,
# 藉由 --full-time 可以查阅到比较正确的完整时间格式啊!</span>
</pre></td></tr></table>

		其实 ls 的用法还有很多,包括查阅档案所在 i-node 的 ls -i 参数,以及用来进行档案排序的 -S 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -