Linux 档案管理

目录与档案管理

Linux虽然现在distributions也提供了桌面程序,但在开发中不可能直接在Linux主机上操作,Linux主机一般都在千里之外的机房,而我们一般通过Xshell等工具来连接Linux主机的终端操作,因此如何使用指令在不同的目录间切换、建立与删除目录、建立与删除档案、查找档案、查询编辑档案内容则尤为重要。

相对路径与绝对路径

  • 绝对路径:路径的写法由根目录/写起,例如: /root
  • 相对路径:以相对于当前目录的写法
    • .:代表当前目录
    • ..:代表上一层目录
    • -:代表前一个工作目录
    • ~:代表当前用户的家目录
    • ~yutao:代表yutao这个用户的家目录(/home/yutao)

目录相关操作

ls(list):列出目录清单

语法:
ls [OPTION]... [FILE]...

OPTION:

  • -a :全部的档案,连同隐藏档(开头为.的档案)一起列出来(常用)
  • -A :全部的档案,连同隐藏档,但不包括. 与.. 这两个目录
  • -d :仅列出目录本身,而不是列出目录内的档案资料(常用)
  • -f :直接列出结果,而不进行排序(ls 预设会以档名排序!)
  • -F :根据档案、目录等资讯,给予附加资料结构,例如:*:代表可执行档; /:代表目录; =:代表socket 档案; |:代表FIFO 档案;
  • -h :将档案容量以人类较易读的方式(例如GB, KB 等等)列出来;
  • -i :列出inode 号码;
  • -l :长资料串列出,包含档案的属性与权限等等资料;(常用)
  • -n :列出UID 与GID 而非使用者与群组的名称
  • -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
  • -R :连同子目录内容一起列出来,等于该目录下的所有档案都会显示出来;
  • -S :以档案容量大小排序,而不是用档名排序;
  • -t :依时间排序,而不是用档名。
  • –color=never :不要依据档案特性给予颜色显示;
  • –color=always :显示颜色
  • –color=auto :让系统自行依据设定来判断是否给予颜色
  • –full-time :以完整时间模式(包含年、月、日、时、分) 输出
  • –time={atime,ctime} :输出access 时间或改变权限属性时间(ctime) 而非内容变更时间(modification time)

mtime,ctime与atime

mtime(modification time):档案内容资料变更时更新这个时间
ctime(status time):档案的状态(权限和属性)变更时更新这个时间
atime(access time):档案的内容被取用(读取)时更新这个时间

touch(修改mtime,atime)

语法:
touch [OPTION]... FILE...

OPTION:

  • -a:仅修改access time
  • -c,–no-create:仅修改档案的时间,若该档案不存在则不建立新档案
  • -d ,–date=STRING:解析STRING并使用它修改日期时间,修改atime,mtime
  • -m :仅修改mtime
  • -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]

touch仅只能修atime和mtime,当修改atime和mtime时会更新ctime到当前时间
touch

cd(change directory):进入某个目录

cd

pwd(Print Working Directory):显示当前所在目录

语法:
pwd [OPTION]...

OPTION:

  • -P,–physical:显示出确实的路径,而非连接(link) 路径

pwd
CentOS 7 将/bin作为连接档链接到/usr/bin

basename And dirname:档案档名与目录名

basename用于取目录的最后档名,dirname则与basename相反,取档名前的目录。

basename

语法:
basename NAME[SUFFIX]
basename OPTION... NAME...

OPTION:

  • -a,–multiple:支持多个参数并且每个作为一个NAME
  • -z,–zero:使用NUL替代换行作为输出分隔符

dirname

语法:
dirname [OPTION] NAME...

OPTION:

  • -z,–zero:使用NUL替代换行作为输出分隔符

basename dirname

mkdir(make directory):建立一个新的目录

语法:
mkdir [OPTION]... DIRECTORY...

OPTION:

  • -m,–mode=MODE:设定目录的权限
  • -p,–parents:多层目录时,不存在的目录递回建立
  • -v,–verbose:对于每个创建的目录输出一条信息

mkdir

rmdir(remove directory):删除一个空的目录

语法:
ls [OPTION]... DIRECTORY...

OPTION:

  • -p,–parents:移除一个目录及递回移除它的祖先目录
  • -v,–verbose:移除每个目录都输出相关信息

rmdir
rmdir只能删除一个空的目录,如果目录里有其他目录或档案则不能删除。-p删除上层目录时上层目录也必须是空的,不然会删除失败。

$PATH

在Linux中可以在任何的地方执行指令,并不会出现找不到指令,由此可以联想到在Windows中,我们在cmd中能够在任意目录执行指令则需要配置环境变量PATH,比如:JAVA_HOME,那么Linux是否也存在同样的机制呢?答案是肯定的。
使用echo $PATH可以查看PATH
path
当我们在执行一个指令的时候,系统会依照PATH定义的目录去查找这个指令的执行档,当有多个相同的指令存在时,优先搜索到的会被执行。添加目录到PATH:

将/root加入到PATHPATH=${PATH}:/root

不建议将 .(当前所在目录) 加入到PATH中,这样做会引起安全方面问题。

档案与目录相关操作

file:观察档案类型

which:寻找执行档

which只能查找执行档的完整档名,且只会去PATH规定的目录中查找,关于PATH请看后续。
语法:
which [OPTION]... command

OPTION:

  • -a:将所有由PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

whereis:到一些特定目录中查找档案档名

语法:
whereis [OPTION]... name...

OPTION:

  • -l :可以列出whereis 会去查询的几个主要目录而已
  • -b :只找binary 格式的档案
  • -m :只找在说明档manual 路径下的档案
  • -s :只找source 来源档案
  • -u :搜寻不在上述三个项目当中的其他特殊档案

cp(copy):复制档案或目录

语法:
cp [OPTION]... [-T] SOURCE DESTION
cp [OPTION]... SOURCE... DERECTORY复制多个档案到某个目录
cp [OPTION]... -t DIRECTORY SOURCE...

OPTION:

  • -a :相当于-dr –preserve=all的意思,至于dr请参考下列说明;(常用)
  • -d :若来源档为连结档的属性(link file),则复制连结档属性而非档案本身;
  • -f :为强制(force)的意思,若目标档案已经存在且无法开启,则移除后再尝试一次;
  • -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l :进行硬式连结(hard link)的连结档建立,而非复制档案本身;
  • -p :连同档案的属性(权限、用户、时间)一起复制过去,而非使用预设属性(备份常用);
  • -r :递回持续复制,用于目录的复制行为;(常用)
  • -s :复制成为符号连结档(symbolic link),亦即『捷径』档案;
  • -u :destination 比source 旧才更新destination,或destination 不存在的情况下才复制。
  • –preserve=all :除了-p 的权限相关参数外,还加入SELinux 的属性, links, xattr 等也复制了。
  • -T:目标作为一个普通档案
  • -t:复制所有SOURCE到目录中

rm(remove):删除档案或目录

语法:
rm [OPTION]... [FILE]...

OPTION:

  • -f,–force:忽略不存在的档案和参数,不会出现警告
  • -i:互动模式,每个移除之前询问是否动作
  • -I:当一次移除超过三个档案或递归移除时询问是否动作
  • –interactive[=WHEN]:WHEN有三个值:once(-I)、always(-i)、never,没有WHEN时,默认always
  • -r,-R,–recursive:移除一个目录并且递归删除它们的内容(慎用)
  • -d,–dir:移除一个空目录
  • -v,–verbose:提示正在操作的信息

rm
如果不想删除在互动时输入“n”,或者使用“Ctrl+C”中断后续操作。为了防止档案被root误杀,所以很多distributions都预设了-i选项,如果不想被询问可以在指令前加上“\”。如:\rm -d /tmp/test

mv(move):移动档案或目录,或重命名

语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

OPTION:

  • –backup[=CONTROL]:备份目标文件
  • -b,: 类似于–backup但不需要参数
  • -f,–force:覆盖一个存在的档案不会出现警告
  • -i,–interactive:覆盖一个存在的档案询问是否覆盖
  • -n,–no-clobber:不覆盖已存在的档案
  • -t,–target-directory:移动所有SOURCE到目录
  • -T,–no-target-directory:目标作为一个普通档案
  • -u,–update:当源档案比目标档案更新或目标档案不存在时移动
  • -v,–verbose:提示正在操作的信息

mv
mv rename
重命名可以使用上述的mv指令,也可以使用rename指令来更改大量档案的档名,更多具体操作使用man rename来查询。

档案查询

查询档案内容常用的指令:

  • cat:由第一行开始显示档案内容
  • tac:从最后一行开始显示,可以发现是cat倒着写的
  • nl:显示内容的时候显示行号
  • more:分页显示档案的内容
  • less:与more类似,但是比more更好的是可以向前翻页
  • head:只显示头几行
  • tail:只显示后几行
  • od:以二进位的方式读取档案内容

文字档查询

cat

语法:
tac [OPTION]... [FILE]...

OPTION:

tac

语法:
tac [OPTION]... [FILE]...

OPTION:

  • -b,–before:在取消之前附加分隔符
  • -r,–regex:将分隔符解释为正则表达式
  • -s,–separator=STRING:使用STRING作为分隔符替代换行符

tac

nl

语法:
nl [OPTION]... [FILE]...

OPTION:

  • -b,–body-numbering=STYLE:使用STYLE方式标记行号,默认t
  • -d,–section-delimiter=CC:使用CC分割逻辑页
  • -f,–footer–numbering=STYLE:使用STYLE方式标记页脚行号,默认n
  • -h,–header-numbering=STYLE:使用STYLE方式标记页头行号,默认n
  • -i,–line-increment=NUMBER:行数字递增NUMBER,默认1
  • -l,–join-blank-lines=NUMBER:作用没弄清楚,默认1
  • -n,–number-format=FORMAT:按格式插入行数字,默认rn
  • -p,–no-renumber:在逻辑页不重置行数字
  • -s,–number-separator=STRING:使用STRING分割行号数字与内容,默认TAB
  • -v,–starting-line-number=NUMBER:在每个逻辑页的第一个行数字是NUMBER,默认1
  • -w,–number-width=NUMBER:使用NUMBER列的行号宽度,默认6

默认使用了 -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn
STYLE is one of:

  • a:所有行编号
  • t:仅非空的行编号
  • n:所有行都不编号

FORMAT is one of:

  • ln:编号左对齐,无前导零
  • rn:编号右对齐,无前导零
  • rz:编号右对齐,有前导零

nl

more

语法:
more [OPTION].. FILE...

more查询档案有几个按键可以用:

  • 空白键(space):代表向下翻一页;
  • Enter :代表向下翻一行;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开more ,不再显示该档案内容。
  • b 或[ctrl]-b :代表往回翻页,不过这动作只对档案有用,对管线无用。

less

less相比于more更加有弹性,可以随意向前或向后翻看,翻看档案更加的方便,使用man指令时就是呼叫less来显示说明文件的内容的,less中可以输入的指令:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻(与/ 或? 有关!)
  • N :反向的重复前一个搜寻(与/ 或? 有关!)
  • g :前进到这个资料的第一行去;
  • G :前进到这个资料的最后一行去(注意大小写);
  • q :离开less 这个程式;

语法:
head [OPTION]... [FILE]...

OPTION:

  • -c,–bytes=[-]K:显示档案的前K个字节,带有’-‘,显示档案所有内容除去最后K个字节
  • -n,–lines=[-]K:显示前K行代替默认的显示10行,带有’-‘,显示档案所有内容除去最后K行
  • -q,–quiet,–silent:不打印出文件名的页眉
  • -v,–verbose:总是打印出文件名的页眉

head

tail

语法:
tail [OPTION]... [FILE]...

OPTION:

  • -c,–bytes=[+]K:显示档案最后K的字节,带有’+’,显示K个字节后的内容
  • -n,–lines=[+]K:显示档案最后K行,默认显示最后10行,带有’+’,显示K行后的内容
  • -f,–follow[={name|descriptor}]:侦测某个档案添加的内容,直到使用Ctrl+c才会离开tail指令的侦测

tail

二进制档案查询

od

语法:
od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

OPTION:

  • -t,–format=TYPE:使用TYPE格式输出

TYPE is one of:

  • a :利用预设的字元来输出;
  • c :使用ASCII 字元来输出;
  • d[size] :利用十进位(decimal)来输出资料,每个整数占用size bytes ;
  • f[size] :利用浮点数值(floating)来输出资料,每个数占用size bytes ;
  • o[size] :利用八进位(octal)来输出资料,每个整数占用size bytes ;
  • x[size] :利用十六进位(hexadecimal)来输出资料,每个整数占用size bytes ;

猜你喜欢

转载自blog.csdn.net/yutao_struggle/article/details/80205934