设为首页 加入收藏

TOP

跟运维学 Linux - 02(一)
2023-07-23 13:25:03 】 浏览:66
Tags:Linux

文件操作和用户

复制移动和删除

在Windows中我们可以通过快捷键 ctrl + c 复制,ctrl + v 粘贴,在 linux 中需要使用命令。

复制移动

cp 就是 copy 的意思。请看示例:

// 将 a.txt 复制一份,重命名为 b.txt
test11@pj-pc:~$ cp a.txt b.txt
test11@pj-pc:~$ ls
模板  桌面  a.txt  b.txt  dir1
// 将 a.txt 复制到 dir1 目录中
test11@pj-pc:~$ cp a.txt dir1
test11@pj-pc:~$ ls dir1
a.txt
// 将 dir1/a.txt 复制到当前目录
test11@pj-pc:~$ cp dir1/a.txt .

如果当前目录有同名的文件,需要询问是否覆盖,可以使用参数 -i

// -i 会询问是否覆盖
test11@pj-pc:~$ cp -i dir1/a.txt .
cp:是否覆盖'./a.txt'? n
test11@pj-pc:~$ rm a.txt
// 没有同名文件,则无需询问
test11@pj-pc:~$ cp -i dir1/a.txt .
test11@pj-pc:~$

文件夹的拷贝需要使用参数 -r,否则会提示错误:

// 报错:缺少 -r
test11@pj-pc:~$ cp dir1 dir2
cp: 未指定 -r;略过目录'dir1'
// 拷贝目录
test11@pj-pc:~$ cp -r dir1 dir2
test11@pj-pc:~$ ls
模板  桌面  dir1  dir2

拷贝文件比较清晰,而拷贝文件夹就没那么好理解,我们分几种情况详细介绍:

// 将 dir1 文件夹拷贝到 dir2目录中
test11@pj-pc:~/dir$ cp -r dir1 dir2
test11@pj-pc:~/dir$ ls dir2
c.txt  dir1
test11@pj-pc:~/dir$
// tree 可通过包管理器安装
test11@pj-pc:~/dir$ tree
.
├── a.txt
├── dir1
│   └── b.txt
└── dir2
    └── c.txt

2 directories, 3 files
// 将dir1文件夹中的内容拷贝到 dir2 中
test11@pj-pc:~/dir$ cp dir1/* dir2
test11@pj-pc:~/dir$ ls dir2
b.txt  c.txt

dir1/a.txt 拷贝到当前目录,以下两种写法一个有提示,一个没有提示,是什么原因?

test11@pj-pc:~/dir$ tree
.
├── a.txt
├── dir1
│   ├── a.txt
│   └── b.txt
└── dir2
    ├── b.txt
    └── c.txt

2 directories, 5 files
// 没有提示
test11@pj-pc:~/dir$ \cp dir1/a.txt .
// 有提示
test11@pj-pc:~/dir$ cp dir1/a.txt .
cp:是否覆盖'./a.txt'? y

通过 alias 命令我们得知 cp 其实等同于 cp -i,所以有提示,而 \cp 表示不使用别名,表示纯 cp 命令。

test11@pj-pc:~/dir$ alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

Tip:alias 显示当前定义的别名。创建一个新的别名 alias ll='ls -l',删除一个别名 unalias ll

删除

删除文件和目录需要使用 rm 命令。

文件直接即可删除:

test11@pj-pc:~/dir$ ls
a1.txt  a2.txt  a3.txt  dir1  dir2
// 删除文件
test11@pj-pc:~/dir$ rm a1.txt
// -i 删除前确认
test11@pj-pc:~/dir$ rm -i a2.txt
rm:是否删除普通空文件 'a2.txt'?n
test11@pj-pc:~/dir$

删除文件夹需要使用 -r 参数,否则报错:

// 报错:需要使用 -r
test11@pj-pc:~/dir$ rm dir1
rm: 无法删除'dir1': 是一个目录
// 删除目录
test11@pj-pc:~/dir$ rm -r dir1
test11@pj-pc:~/dir$ ls
a2.txt  a3.txt  dir2
// 删除前确认
test11@pj-pc:~/dir$ rm -ir dir2
rm:是否进入目录'dir2'? y
rm:是否删除普通空文件 'dir2/c.txt'?y
rm:是否删除普通空文件 'dir2/b.txt'?y
rm:是否删除目录 'dir2'?y
test11@pj-pc:~/dir$ ls
a2.txt  a3.txt

Tip: 一名合格的运维工程师在修改文件之前需要对源文件(文件夹)进行备份。否则一旦改错,又改不回去,就很麻烦。

查找文件和隐藏文件

比如知道文件或文件夹的名字,但忘记在哪里,可以使用 find 命令。

// 在当前目录中查找名字是 dir2 的文件或名录
test11@pj-pc:~/dir$ find . -name dir2
./dir1/dir2
./dir2

ls 显示的是非隐藏文件(文件夹),如果需要查看隐藏文件(文件夹),可以增加参数 -a

test11@pj-pc:~/dir$ ls
a3.txt  dir1
// 显示隐藏文件和隐藏目录
test11@pj-pc:~/dir$ ls -a
// . 当前目录
// .. 上一层目录
.  ..  .a2.txt  a3.txt  dir1  .dir2

隐藏文件(文件夹)以点(.)开头,也是一种保护机制。

隐藏文件查看方式和普通文件相同:

test11@pj-pc:~/dir$ cat .a2.txt
apple

如果需要将隐藏文件或隐藏目录转成非隐藏,重命名(删除.)即可。

test11@pj-pc:~/dir$ mv .a2.txt a2.txt
test11@pj-pc:~/dir$ mv .dir2 dir2
// a2.txt 和 dir2 不在隐藏
test11@pj-pc:~/dir$ ls
a2.txt  a3.txt  dir1  dir2

一切皆文件

我们现在一直围绕着文件学习 linux 命令,为什么总是围绕文件?因为 Linux 中一切皆文件。

笔者的 linux 有一块磁盘 /dev/sda 931G。

/dev/sda 是一个文件,用它来表示硬盘。

// fdisk -l 查看本地磁盘信息
pj@pj-pc:/home/test11/dir$ sudo fdisk -l
Disk /dev/sda:931.53 GiB,1000204886016 字节,1953525168 个扇区
Disk model: WDC WD10EZEX-75W
单元:扇区 / 1 * 512 = 512 字节
...

这个文件和其他文件一样,也有自己的属性:

pj@pj-pc:/home/test11/dir$ ls -l /dev/sda
brw-rw
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MIT6.S081学习笔记--lec 1 下一篇Linux中ARP学习和老化机制

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目