1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
a.相对路径与绝对路径
因为我们在Linux系统中,常常要涉及到目录的切换,所以我们必须要了解 “路径” 以及 “相对路径” 与 “绝对路径” 的概念。
在之前的学习中,就反复的强调了Linux的目录是 “树状目录” 。假设我们需要在任意一个目录下切换到另一个目录下,通常是使用的是 cd 这个命令,此时在写切换的目录名时就有两种书写方式,也就是我们常说的使用 “相对路径” 与 “绝对路径” 来书写.
绝对路径:路径的写法【一定由根目录 / 写起】,例如: /usr/share/doc 这个目录。
相对路径:路径的写法【不是由 / 写起】,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: 【cd../man】这就是相对路径的写法。相对路径意指相对于当前的工作目录
我们知道,在Linux的系统中完整的文件路径名的长度最大可以达到4096个字符,所以一个文件路径名太长的话,此时写绝对路径时就非常的麻烦,而且可能写错,所以此时选择使用相对路径来写就会简单一些。
但是,对于文件的正确性来说,绝对路径是比较好的。当我们在写 shell scripts 时,请务必使用绝对路径。虽然可能写绝对路径会稍显麻烦,但是这种写法是绝对不会有问题的。
- 目录管理命令:
pwd
查看当前所在目录
ls(list):列出目录的内容
格式:ls [OPTION]… [FILE]…
参数:
-a:显示所有文件包括隐藏文件
-A:显示除.和..之外的所有文件
-l,–long:显示文件的详细属性信息
-h:对文件大小进行单位换算,可能影响精度
-d:查看目录本身而非其内部的文件
-r:逆序显示文件
-R:递归显示文件
示例:
[root@ada-dog home]# ls
abc ada docker mogilefs openstack
[root@ada-dog home]# ls -al
total 4
drwxr-xr-x. 7 root root 75 Jun 30 08:35 .
dr-xr-xr-x. 17 root root 224 Jun 29 14:57 ..
drwx——. 3 docker testgrp 78 Jun 29 15:30 abc
drwx——. 14 ada ada 4096 Jun 29 22:59 ada
drwx——. 3 docker docker 78 Jun 29 22:50 docker
drwx——. 3 mogilefs mogilefs 78 Jun 30 08:35 mogilefs
drwx——. 3 openstack openstack 78 Jun 30 08:30 openstack
[root@ada-dog home]# ls -R
.:
abc ada docker mogilefs openstack
./abc:
./ada:
Desktop Documents Downloads Music Pictures Public Templates Videos
./ada/Desktop:
./ada/Documents:
./ada/Downloads:
./ada/Music:
./ada/Pictures:
./ada/Public:
./ada/Templates:
./ada/Videos:
./docker:
./mogilefs:
./openstack:
cd 改变当前目录
cd [dirName]
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd – 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/”;”..”为上级目录的意思);
cd ../.. 返回上两级目录;
mkdir 创建目录
mkdir [OPTION]… DIRECTORY…
-p:如果要建立目录的父级目录当前尚未创建,则一起建立父级目录;
-m:建立目录时,同时设置目录的权限;
-v:显示创建目录的详细信息;
[root@ada-dog tmp]# mkdir -pv /tmp/test/test1/test2
mkdir: created directory ‘/tmp/test’
mkdir: created directory ‘/tmp/test/test1’
mkdir: created directory ‘/tmp/test/test1/test2’
[root@ada-dog test2]# mkdir -m 711 test3
rmdir 删除空目录(rmdir – remove empty directories)
-p:假如删除目录之后其父目录为空,则一起删除,使用此参数需小心;
[root@ada-dog test2]# rmdir -pv /tmp/test/test1/test2/test3/
rmdir: removing directory, ‘/tmp/test/test1/test2/test3/’
rmdir: removing directory, ‘/tmp/test/test1/test2’
rmdir: removing directory, ‘/tmp/test/test1’
rmdir: removing directory, ‘/tmp/test’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy
- 文件管理命令
cp 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
-a:此参数的效果和同时指定”-dpR”参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
[root@ada-dog tmp]# cp -r /home/ada/ /tmp/ 将home目录下的ada目录全部复制到tmp目录下;
mv 重命名或者移动文件
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
–backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
–strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
–target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
[root@ada-dog ada]# mv -v /tmp/ada/Music/ music
‘/tmp/ada/Music/’ -> ‘music’
rm 删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
rm [OPTION]… FILE…
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
–preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
删除时加上-i确认没误删除文件:
[root@ada-dog ada]# rm -ri music/
rm: remove directory ‘music/’? y
cat
cat [OPTION]… [FILE]…
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
[root@ada-dog sysconfig]# cat -En /etc/issue
1 \S$
2 Kernel \r on an \m$
3 $
tail 读取文件后几行数据
tail [-n number] 文件
-n :后面接数字,代表显示几行的意思;
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测;
[root@ada-dog bin]# tail -n 4 /etc/netconfig
tcp6 tpi_cots_ord v inet6 tcp – –
rawip tpi_raw – inet – – –
local tpi_cots_ord – loopback – – –
unix tpi_cots_ord – loopback – – –
head 读取文件前面几行数据
head [OPTION]… [FILE]…
-n :后面接数字,代表显示几行的意思
[root@ada-dog bin]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
more 一页一页翻动读取文件数据
more [options] file […]
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
less 类似more的命令,但略有不同;
空白键:向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
touch 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
-a 或–time=atime或–time=access或–time=use 只更改存取时间
-c 或–no-create 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
执行状态返回值成功:0
执行状态返回值失败:1~255
[root@ada-dog ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@ada-dog ~]# echo $?
0
[root@ada-dog ~]# ls /etce
ls: 无法访问/etce: 没有那个文件或目录
[root@ada-dog ~]# echo $?
2
[root@ada-dog ~]# cdd /etc/
bash: cdd: 未找到命令…
相似命令是: ‘cd’
[root@ada-dog ~]# echo $?
127
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@ada-dog tmp]# mkdir -pv /tmp/{a_c,a_d,b_c,b_d}
mkdir: 已创建目录 “/tmp/a_c”
mkdir: 已创建目录 “/tmp/a_d”
mkdir: 已创建目录 “/tmp/b_c”
mkdir: 已创建目录 “/tmp/b_d”
[root@ada-dog tmp]# tree /tmp/
/tmp/
├── a_c
├── a_d
├── b_c
└── b_d
(2)、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
[root@ada-dog tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc{/rc.d/init.d,/sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
mkdir: 已创建目录 “/tmp/mylinux”
mkdir: 已创建目录 “/tmp/mylinux/bin”
mkdir: 已创建目录 “/tmp/mylinux/boot”
mkdir: 已创建目录 “/tmp/mylinux/boot/grub”
mkdir: 已创建目录 “/tmp/mylinux/dev”
mkdir: 已创建目录 “/tmp/mylinux/etc”
mkdir: 已创建目录 “/tmp/mylinux/etc/rc.d”
mkdir: 已创建目录 “/tmp/mylinux/etc/rc.d/init.d”
mkdir: 已创建目录 “/tmp/mylinux/etc/sysconfig”
mkdir: 已创建目录 “/tmp/mylinux/etc/sysconfig/network-scripts”
mkdir: 已创建目录 “/tmp/mylinux/lib”
mkdir: 已创建目录 “/tmp/mylinux/lib/modules”
mkdir: 已创建目录 “/tmp/mylinux/lib64”
mkdir: 已创建目录 “/tmp/mylinux/proc”
mkdir: 已创建目录 “/tmp/mylinux/sbin”
mkdir: 已创建目录 “/tmp/mylinux/sys”
mkdir: 已创建目录 “/tmp/mylinux/tmp”
mkdir: 已创建目录 “/tmp/mylinux/usr”
mkdir: 已创建目录 “/tmp/mylinux/usr/local”
mkdir: 已创建目录 “/tmp/mylinux/usr/local/bin”
mkdir: 已创建目录 “/tmp/mylinux/usr/local/sbin”
mkdir: 已创建目录 “/tmp/mylinux/var”
mkdir: 已创建目录 “/tmp/mylinux/var/lock”
mkdir: 已创建目录 “/tmp/mylinux/var/log”
mkdir: 已创建目录 “/tmp/mylinux/var/run”
[root@ada-dog tmp]# tree /tmp/
/tmp/
└── mylinux
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
25 directories, 0 files
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
元数据:metadata,表示的是文件属性信息;大小,时间戳(最近访问、最近更改、最近改动)
查看命令stat –文件名
touch –m 文件名
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
1)alias 新的命令=’原命令 -选项/参数’;alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。
[root@ada-dog tmp]# alias cls=’clear’
2)通过管道命令可以引用另一个命令的结果;
[root@ada-dog tmp]# tree /var/log/ >/tmp/a.txt | ls
a.txt
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@ada-dog tmp]# ls -d /var/l[0-9]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@ada-dog tmp]# ls -d /etc/[0-9][^0-9]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@ada-dog tmp]# ls -d /etc/[^a-z][a-z]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@ada-dog tmp]# touch /tmp/ tfile-$(date +%Y-%m-%d-%H-%M-%S)
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@ada-dog tmp]# cp -r /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@ada-dog tmp]# cp -r /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@ada-dog tmp]# cp -r /etc/[lmn]*.conf /tmp/mytest3
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102013