Linux学习之二:Linux目录和目录管理

一、目录与路径
1.目录的操作:
(1)切换目录:cd
一个a用户的家目录为 /home/a,而root用户的家目录为 /root
cd ~a 表示去a用户的家目录 ,即 /home/a
cd ~ 表示回到自己的家目录
cd 表示回到自己的家目录
cd - 表示回到刚才的目录
(2)显示当前所在的目录 pwd [-p]
-p 参数表示获取正确的目录名,而不是获取连接文件的路径
(3)mkdir 建立新目录
mkdir [-mp] 目录名
参数:
-m : 设置文件的权限。直接设置
-p:直接建立目录,如果存在不存在的文件夹,会直接建立多层目录
(4) rmdir 删除空目录
删除的目录必须是空的,才能使用该命令进行删除
rmdir [-p] 目录名 将上层的空目录也删除
rm -rf 目录名 所有目录下的东西都删除
(5)$PATH 执行文件路径的变量
二、管理文件和目录
1.查看文件和目录:ls 不显示隐藏目录和文件,隐藏的目录和文件:以‘.’开头
(1)ls [-aAdfFhilRS] 目录名
(2)ls [--color={none,auto,always}] 目录名
(3)ls [--full-time] 目录名
参数:
-a : 全部文件,与隐藏文件(开头为’.‘的文件)一起被列出来
-A : 全部文件,与隐藏文件,不包括‘.' 与'..'这两个目录,一起被列出来
-d : 仅列出目录本身,而不是列出目录内的文件数据,了解目录本身的信息
-f : 直接列出结果,但不进行排序
-F : 根据文件、目录等信息,附加数据结构,例如
* 表示可执行文件
/ 表示目录
= 表示套接字文件
| 表示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} :输出访问时间或改变权限属性的时间(ctime)

比如:
ls -al ~
ls -alF --color=never ~
ls -al --full-time ~
ls -dl /home/stu 把目录本身的详细信息显示出来
2.复制(复制文件和目录)
cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 ... directory
参数:
-a : 相当于 ‘ -pdr ’
-b : 如果存在重名文件,则会在复制的文件后添加‘~’来加以区分
-d : 如果源文件为连接文件的素性,则复制连接文件属性而非文件本身
-f : 强制覆盖
-i : 如果目标文件已经存在,那么在覆盖之前询问
-l :建立硬链接的连接文件,而不是复制文件本身
-p : 与文件的属性一起复制,而不是使用默认属性
-r :递归持续复制,用于目录的复制操作
-s : 复制成符号连接文件,即“快捷方式”文件
-u : 若目标文件比源文件旧,更新目标文件
注意:如果有多个源文件,那么这些源文件就会组成一个目录。
例子:
(1)将家目录下的 .bashrc 复制到 /tmp下面,并重命名为bashrc
cd /tmp
cp ~/.bashrc bashrc
(2)将/var/log/wtmp赋值到当前目录
cd /tmp
cp /var/log/wtmp . (复制到当前目录需要,最后添加一个“.”)
(3)将/etc/目录下的所有内容复制到/tmp
cd /tmp
cp -r /etc/ /tmp
(4)为范例一复制的bashrc文件建立一个符号连接文件(symbolic link)
ls -l bashrc
cp -s bashrc bashrc_slink
cp -l bashrc bashrc_hlink
ls -l bashrc*
(5)将家目录下面的.bashrc 以及 .bash_history 复制到 /tmp下面
cp ~/.bashrc ~/.bash_history /tmp
默认条件下,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。如果想要复制文件给其他用户,也要注意文件的权限,否则别的用户不能对文件进行修改
3.rm 删除文件或者目录
rm [-fir] 文件或者目录
参数:
-f : force的意思,强制删除
-i : 交互模式,删除前询问
-r : 递归删除。常用在目录的删除
4.移动文件与目录,或者重命名 mv
mv [-fiv] source destination
mv [options] source1 source2 source3 .... directory
-u : 如果目标文件已经存在,且源文件比目的文件新,才会更新
-v :
-i :移动之前询问
-f :强制移动
移动:
mv {原文件} {目标目录}
重命名;
mv {原文件} {新的名字}
多文件移动
mv {原文件1} {原文件2} {目标目录}
使用mv和cp命令的时候要注意权限问题
mv和cp接受两个以上的参数时,最后一个参数必须是目录

5.获取路径的文件名与目录名
basename /etc/sysconfig/network
==> network
dirname /etc/sysconfig/network
==> /etc/sysconfig

三、查看文件内容
1.直接查看文件内容 cat [-AEnTv]
参数:
-A : 相当于 -vET 的整合参数,可以列出一些特殊字符,比如回车,空格,tab
-E : 将结尾的换行符$显示出来
-n : 显示行号
-T : 将[tab]按键以 ^I 显示出来
-v : 列出一些看不出来的字符,

2.反向显示 tac
3.显示文件内容时添加行号 nl
nl [-bnw] 文件 【 默认空行不加行号】
参数:
-b : 指定行号指定的方式,主要有两种:
-b a : 表示不论是否为空行,也同样列出行号
-b t : 如果有空行,空行不列出行号
-n : 列出行号表示的方法,主要有3种
-n ln : 行号在屏幕的最左方显示
-n rn : 行号在字段的最右方显示,且不加0
-n rz : 行号在字段的最右方显示,且加0
-w : 行号字段占用的位数

nl -b a -n rz /etc/issue 加行号,并以六位数来表示行号,不足就补足6个0
nl -b a -n rz /etc/issue 加行号,并以三位数来表示行号,不足就补足3个0

4.翻页查看
more {文件名}
空格键 : 向下翻页
Enter : 向下翻一行
/ 字符串 : 表示在当前内容里面,向下搜索“字符串”
:f : 显示文件名以及当前显示的行数
q 表示立即离开more ,不再显示该文件内容

5.less 一页一页翻动
可以进行向前翻动,也可以向后翻动
空格键 : 向下翻页
[pageDown] 向下翻页
[pageUp] 向上翻页
Enter : 向下翻一行
/ 字符串 : 表示在当前内容里面,向下搜索“字符串”
? 字符串 : 表示在当前内容里面,向上搜索“字符串”
n : 重复前一个搜索
N 反向重复前一个搜索
q 表示立即离开less ,不再显示该文件内容

6.head命令和tail命令查看文件中的指定行
head {文件名} : 默认显示显示开头前10行
head -k {文件名} : 显示开头前k行
head -n k {文件名} : 显示开头前k行
head -n +k {文件名} : 显示开头前k行
head -q -n k file1 file2 file3 :显示多文件前k行,并且不显示文件名的文件头
head -n -k {文件名} : 除最后k行外,显示剩余全部内容
-n:后面加数字,表示显示几行的意思

7.tail命令用法与head命令相似,只是显示后面几行,默认也是显示10行
e.g.:
显示/etc/passwd的第11行到第20行
分析:可以先取前20行,再从中取后10行,所以结果就是:
head -n 20 /etc/passwd | tail -n 10
参数:
-n : 与head相似
-f : 使tail不停地去读最新的信息,因此有实时监视的效果,可以使用Ctril+c来进行中止

8.od处理非纯文本文件
以上的命令都是用来查看文本文件(ASCII的文件),执行文件都是二进制的文件,使用前面的命令会产生乱码。
od [-t TYPE] 文件
参数:
-t : 后面可以接各种类型的输出,例如
a : 使用默认的字符输出
c : 使用ASCII字符输出
d[size] : 使用十进制来进行输出数据,每个整数占用size字节
f[size] : 使用浮点数值来输出数据,每个数占用size字节
o[size] : 使用八进制数值来输出数据,每个数占用size字节
x[size] : 使用十六进制数值来输出数据,每个数占用size字节
e.g.:
od -t c /etc/passwd
使用ASCII的形式输出
000000 177 E L F 001 001 001 \0 \0 \0 \001 \001 200

9.touch 修改文件的时间和创建新文件
·建立一个空文件
·将某个文件日期修改为当前时间
每一个文件会有三个记录时间
1.modification time(mtime,修改时间),文件的内容被修改就会更新时间
2.status time(ctime,状态时间),比如更改了权限和属性,就会更新这个时间
3.access timr(atime,访问时间),当“读取文件内容”的时候,就会更改时间,例如cat
ls -l {文件} :默认显示mtime
ls -l --time==atime {文件} : 显示atime
ls -l --time==ctime {文件} : 显示ctime
ll 是 ls -l 的缩写
touch [-acdmt] {文件}
参数:
-a : 仅修改atime
-c : 仅修改时间,不创建文件
-d : 后面可以接时间,也可以使用--date="日期或时间"
-m : 仅修改mtime
-t :后面接时间,格式为 [YYMMDDhhmm]
例子:
1.新建一个空的文件
cd /tmp
touch testtouch
ls -l testtouch
默认情况下,如果touch后面接文件三个时间都会更改为当前时间。文件不在,就会创建该文件
2.使用cp创建文件
cp a.txt b.txt
新创的文件的mtime与原文件相同,ctime,atime为当前时间
3.修改文件,将日期调整为两天前
touch -d "2 days ago" b.txt
结合2的语句条件,这个时候mtime,atime会改为当前时间的前两天,而ctime还是当前时间
4.将b.txt时间更改为2018/05/17 18:09
touch -t 1805171809 b.txt
结合2,3的语句条件,这个时候mtime,atime会改为2018/05/17 18:09,而ctime还是当前时间
注意:即使复制一个文件,并复制所有的属性,也没有办法复制ctime属性。ctime记录文件最近改变状态的时间








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值