Linux:基础文件操作命令

pwd - 我在哪

pwd 用于查看当前路径

pwd

返回:

/home/conners

ls - 有什么东西

ls 用于列出目录下有哪些东西。

# 等同于「ls .」,列出当前目录下有什么
ls
# 列出指定目录里有什么,比如列出根目录
ls /

另外,在列出某些目录时你可能会遇到权限问题,比如

ls /root

返回:

ls: cannot open directory '/root': Permission denied

这是因为权限不够所以像这种情况可以加上 sudo 提权

sudo ls /root

另外,ls 命令是强大的,其作用当然不仅于此,你可以使用 man ls 来查看其更多的作用,使用其「选项」来做到更多。

ls -l 显示详细信息

ls -l /etc/apt

返回:

total 28
drwxr-xr-x 2 root root 4096 Aug  5 19:24 apt.conf.d
drwxr-xr-x 2 root root 4096 May  7 09:19 auth.conf.d
drwxr-xr-x 2 root root 4096 Apr 20  2018 preferences.d
-rw-r--r-- 1 root root 2739 Aug  9 08:45 sources.list
-rw-r--r-- 1 root root 2765 Aug  5 19:24 sources.list.curtin.old
drwxr-xr-x 2 root root 4096 Apr 20  2018 sources.list.d
drwxr-xr-x 2 root root 4096 Aug  5 19:23 trusted.gpg.d

以「drwxr-xr-x 2 root root 4096 Aug 5 19:24 apt.conf.d」为例:

  • 「drwxr-xr-x」表示文件类型和权限,以「-」开头表示文件、以「d」开头的表示文件夹,剩下 9 个字符表示权限。
  • 数字「2」表示文件或文件夹内的文件数量
  • 两个「root」分别表示用户和所属用户组
  • 「4096」表示文件大小
  • 「Aug 5 19:24」文件的最后修改时间
  • 「apt.conf.d」文件名

ls -h 显示常用文件体积格式

上述中的「4096」并不是一般熟知的体积单位如「K」、「B」。

# 加上 -h 参数
ls -l -h /etc/apt

在返回结果中就可以看到文件体积单位改变了。

ls -a 显示隐藏文件

la -a

返回:

.   .bash_history  .bashrc  .gnupg    .sudo_as_admin_successful
..  .bash_logout   .cache   .profile

以「.」开头的都是隐藏文件或文件夹

ls 命令选项组合

# 显示当前目录下详细信息及隐藏文件
ls -l -a
ls -la # 可以将参数写在一起更简约

# -r 参数让文件相反次序显示
ls -lr

# -t 参数让文件以创建时间先后顺序显示
ls -lt

# 集合上列三种
ls -lrt

# 显示文件夹内的文件
ls -R
# 注意,参数是区分大小写的,作用不同。

# 组合以上
ls -lratR
# 参数的顺序不重要

ls 命令小结

ls 用于列出目录内的文件和文件夹,如果不指定目录就列出当前文件夹。

ls 可选参数有:

  • -l显示详细信息
  • -h显示常用文件体积格式
  • -a显示隐藏文件
  • -r以相反次序显示(原按英文字母次序)
  • -t以时间修改顺序显示
  • -R递归显示

cd - 去到哪里

cd用于进入其他目录

cd /home
cd ~ # 进入主目录

如果你要进入到一长串的路径,其中的文件夹名称太长难以记住也不要紧。简单的例子,比如你要进入根目录下的「etc」目录,但是只记得是 e 字母开头

cd e

在输入完上述命令后先不按回车,按「Tab」键(Q 键左边)就会自动补全「etc」整个目录的名称。

但是如果说有很多个目录都是「e」开头的情况,比如系统 etc 目录下有很多「rc」开头的目录我要进入名为「rcS.d」但是记不起全称时

cd /etc/r
## 按两下「Tab」键 Shell 就会列出可能相关的目录

返回:

rc0.d/ rc2.d/ rc4.d/ rc6.d/ rsyslog.d/
rc1.d/ rc3.d/ rc5.d/ rcS.d/

利用补全功能让操作更为灵活而且提高效率。

cd 更多操作

# 回到之前的目录
cd -
# 去到上级目录
cd ..
# 假设当前在 /home/conners
# 现在要进入到 /home/deckard
cd ../deckard

目录(文件夹)操作

mkdir 新建文件夹

在当前目录内创建名为 wwwroot 的文件夹

mkdir wwwroot
# 也可以指定路径下创建如 `mkdir /home/conners/wwwroot`

一次创建多个目录

# 分别创建名为 1、2、3 的文件夹
mkdir 1 2 3

比如你想创建 wwwroot 文件夹后在里面再创建一个 web 文件夹,那么你可能会使用两次命令

mkdir wwwroot
mkdir wwwroot/web

其实可以使用参数可以一次性创建好多层级目录

mkdir -p wwwroot/web
ls -R wwwroot/

rmdir 删除目录

如果想删除文件夹,比如刚才创建的数字 1 文件夹

rmdir 1

但如果删除 wwwroot 时会发现

rmdir wwwroot

返回:

rmdir: failed to remove 'wwwroot': Directory not empty

因为 rmdir 只能删除空但文件夹,所以一般用的比较少。

rm 删除

对于非空目录可以使用 rm 命令加上参数

rm -r wwwroot

⚠️注意:在 Ubuntu 中在使用 rm -r 删除非空目录时不像如 CentOS 那样会对每个目录文件有删除确认提示,如果你需要这样但提示需要使用参数,如下

# 使用 -i 参数进行删除确认
rm -ri wwwroot

返回:

rm: descend into directory 'wwwroot/'? y
rm: descend into directory 'wwwroot/web'? y

对于 CentOS 这样频繁提示觉得不必要想要直接强制进行删除可以使用另一个参数

# 使用 -f 参数强制删除
rm -r wwwroot

⚠️注意:请谨慎使用 -f 参数,特别是在 root 用户下时,有时候删除操作会需要使用绝对路径如 /home/conners/web,但此时如果 / 目录后失误出现了空格就会出现网上常出现的一个梗

# rm -rf / home/conners/web
# 因为出现了空格所以命令等同于
rm -rf /

目录小结

mkdir 用于创建文件夹,rmdir 用于删除空文件夹,rm -r 用于删除非空文件夹。

mkdir 可选参数:

  • -p 用于一次性创建多层级目录

rm 可选参数:

  • -r 用于删除目录
  • -i 用于开启删除提示
  • -f 用于强制删除

复制和移动

cp 复制

将什么复制到哪里,也就是cp [被复制的] [复制到哪里]

# 将当前目录下的 1.text 复制到 /home/conners
cp 1.text /home/conners

如果要复制文件夹需要加上参数

cp -r /home/conners/web /home/conners/wwwroot

mv 移动

mv 的作用主要有两个,第一个是类似 Windows 的剪切,也就是和 cp 不同,操作后不留下原文件。

# 移动当前目录下的 1.text 到 /home/conners/
mv 1.text /home/conners/

第二个作用是重命名

# 修改当前目录下的 1.text 为 2.text
mv 1.text 2.text

其实也可以理解为剪切 1.text 后粘贴为 2.text

当然也可以将「剪切」和「移动相结合」

# 复制当前目录下的 1.text 到/home/conners/ 并改名为 2.text
mv 1.text /home/conners/2.text

配合通配符

通配符主要是星号(*)和问号(?)。

假设需要复制或移动的文件有一定的规律比如:

  • about2019.md
  • aboutweb.html
  • abouttext.txt

规律就是都以 about 开头,那么在操作时可以使用

# 将当前目录下所有以 about开头的文件移动到 /home/conners
mv about* /home/conners

星号用于多个字符,而问号用于单个字符,如果要复制或移动的文件的规律如:

  • about1.md
  • about2.md
  • aboutweb.md
  • about3.md

那么使用问号就可以将除了 aboutweb.md 以外的文件进行操作,具体如下

mv about?.md /home/conners

通配符除了配合 cpmv,在 ls 等命令上也是可以使用的。

Conners Hua

这个家伙很懒,什么都没有留下。

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注