前言
在上一篇文章中,我们已经学会了如何在 Windows 中安装了 Linux,从本文开始,将简单介绍 Linux 中的常见终端命令。
一、文件(夹)管理
1. cd:切换工作目录
cd
(change directory) 命令用于切换当前工作目录。
基本语法和常用选项
cd [目录路径]
~
:用户主目录。..
: 上一级目录。-
: 上一次切换的工作目录。
常用示例
1. 切换到指定目录
cd /path/to/directory
2. 切换到用户主目录
cd ~
3. 返回上一级目录
cd ..
4. 切换到上一次访问的目录
cd -
该命令会切换到上一次使用 cd
命令访问的目录,并会打印出该路径。
高级操作
使用变量 ~
可以快速切换到特定用户的目录,例如:
cd ~username
这个命令会切换到指定用户的主目录,前提是该用户存在。
2. mkdir:创建目录
mkdir
(make directory) 命令用于创建新目录。
基本语法和常用选项
mkdir [option] name
-p
:创建多层嵌套目录。-v
: 在创建文件夹时打印日志。--mode=
: 在创建目录的同时设置目录的权限 设置新目录的权限模式。
常用示例
1. 创建单层级文件夹
mkdir DIR
注意:如果不存在将会创建该文件夹。但如果该文件夹已经存在,那么会报错。
2. 创建多层嵌套文件夹
mkdir -p a/b/c
3. 在创建文件夹时打印日志
mkdir -V DIR
高级操作
在多个目录下创建相同名称的子目录:如果需要同时在多个已经存在的文件夹下创建相同的文件夹,可以使用如下命令:
mkdir {
DIR_A,DIR_B}/DIR_C
这个命令会同时创建 DIR_A/DIR_C
和 DIR_B/DIR_C
两个文件夹。注意:不要有任何的空格,否则会出现不符合预期的效果。
3. mv:移动或重命名文件/目录
mv
(move) 命令用于移动文件或目录,或重命名文件和目录。
基本语法和常用选项
mv [option] source destination
-i
: 在覆盖文件时提示确认。-u
: 仅当源文件比目标文件新时才移动。-v
: 移动文件或目录时显示详细信息。
常用示例
1. 移动文件或目录
mv filename /path/to/destination/
2. 重命名文件或目录
mv old_name new_name
此命令可以将将 old_name
重命名为 new_name
。
3. 在覆盖文件时提示确认
mv -i filename /path/to/destination/
如果目标路径中有同名文件,此命令会提示用户确认是否覆盖。
4. 移动多个文件
可以同时指定多个文件,并将它们一起移动到同一个目标文件夹:
mv filename1 filename2 filename3 /path/to/destination/
这个命令会将 filename1
、filename2
和 filename3
一起移动到目标目录 /path/to/destination/
。
4. ls:显示文件夹中的文件/目录及相关信息
ls
用于列出指定目录下的文件/目录及相关信息
基本语法和常用选项
ls [option] [path]
-a
: 显示隐藏文件。-l
: 显示文件的信息,包括文件权限,创建时间等。-h
: 与-l
一起使用,显示格式化的文件大小(KB, MB 等)。-R
: 递归列出该目录及该目录下所有子目录的内容。
常用示例
二、文件查看和编辑
1. 查看文件内容
1. cat
cat 可以显示出文本文件的内容:
cat 同样可以在终端进行文件操作,比如将一些文本输入到文件中。
在本例中,cat 将终端输入的内容输出到文本文件中,并指定 EOF
为终止符。
2. less
相较于 cat,less 在查看文件上更加强大,在面对大型文本文件时更有优势,其主要用法如下:
less 1.txt
如果想要显示行号,可以添加 -N
开关:
less -N 1.txt
进入 less 界面后,可以输入 q
退出 less.
3. head & tail
head 和 tail 可以查看文件开头和结尾部分,默认为10行。
head 1.txt
tail 1.txt
2. 复制,移动,重命名文件
1. cp
cp (copy) 可以复制文件和目录,用法如下:
# 复制文件
cp source.txt destination.txt
# 复制目录
cp -r source_directory/ destination_directory/
2. mv
mv (move) 可以用于移动文件,也可以用于重命名文件:
# 移动文件
mv old_location.txt new_location.txt
# 重命名文件
mv old_name.txt new_name.txt
3. 删除文件
rm 是 Remove 的简写,用于删除文件或者文件夹,rm 的功能非常强大同时也 非常危险,一旦操作不当很可能会造成不可逆的后果。
rm 的常用选项说明如下:
-f
:强制删除文件且不询问
-i
:在每次删除时都询问用户是否要删除
-r
:递归删除目录,即同时删除目录及其内的所有内容
-d
:用法和 rmdir
一致,均为只删除空文件夹
这些开关都可以配合使用,如 rm -rf DIR
,即为递归删除 DIR
目录下所有的内容。
4. 查找文件
1. find
find 用于在指定目录下查找文件,用法用法:
find /path/to/search -name "filename.txt"
2. locate
locate 是一个更强大的快速查找文件和目录的命令行工具。它通过查询一个预先构建的数据库来进行搜索,因此通常比 find
要快得多。
Ubuntu 下可以用以下命令安装:
sudo apt install plocate
初次安装会建立索引数据库,因此会花费一些时间。
基本用法:
locate filename
5. 修改文件时间属性(创建空白文件)
touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,将会创建一个文件,这也是 touch 命令 最常用也最简单的用法。
主要使用方法:
touch filename
如果文件不存在,则会创建该文件,如果该文件存在,则会修改该文件的 访问时间
和 修改时间
为 当前系统时间。
touch [-amc] filename
-a
改变文件的 读取时间 记录
-m
改变文件的 修改时间 记录
-c
如果文件不存在,则不会创建文件
设置特定的时间戳:
touch -t 202410271200 filename.txt
这将把 filename.txt
的时间戳设置为 2024 年 10 月 27 日 12:00。
6. 修改文件权限
chmod (change mode) 是一个用于更改文件和目录权限的命令。通过 chmod,可以控制谁可以 读取
、写入
或 执行特定文件或进入目录
。
1. Linux 文件权限介绍
这里简单介绍一下权限的概念:
在 Linux 中,每个文件和目录的权限分为三类:
用户(User,u): 文件的所有者。
组(Group,g): 文件所属的用户组。
其他(Others,o): 其他所有用户。
每个类别可以具有以下三种权限:
读取(r): 允许查看文件内容。
写入(w): 允许修改文件内容。
执行(x): 允许执行文件(对于目录,表示进入该目录)。
可以使用 ls -l
查看文件或目录的权限:
例如:-rwxr-xr--
这表示:
-
:代表这是一个文件(-
指文件,d
指目录)
rwx
:用户权限(可读、可写、可执行)。
r-x
:组权限(可读、可执行)。
r--
:其他权限(可读)。
可以看出,如果是 -
则代表没有对应的权限。
如果想要修改一个文件的权限,就要用到 chmod
,基本用法如下:
chmod [options] mode filename
2. 字母符号修改权限
使用字符来表示权限。例如:
chmod u+x filename # 为用户添加执行权限
chmod g-w filename # 移除组的写权限
chmod o+r filename # 为其他用户添加读权限
+
表示添加权限。
-
表示移除权限。
=
表示设置权限(覆盖现有权限)。
chmod u=rwx,g=rx,o=r filename # 设置用户为可读可写可执行,组为可读可执行,其他为可读
3. 数字模式修改权限
4:读(r)
2:写(w)
1:执行(x)
数字相加可以叠加权限:
7(4+2+1):可读、可写、可执行
6(4+2):可读、可写
5(4+1):可读、可执行
比如较常见的 chmod 777
命令就表示对用户,组,其他均有 rwx
(可读、可写、可执行)权限。
其他常见的数字有 755
, 644
等。
上面针对的均为文件,如果要对目录进行操作,可以用 -R
进行递归更改权限。
4. 默认情况下的权限
Linux 系统中,默认情况下文件或目录的权限收到 umask
的影响,在本例中,umask
的值为 022
当创建一个文件时,默认的权限是 666
(可读,可写),然后需要减去 umask
的值,因此最终的权限为:
666 - 022 = 644(rw-r–r–)
当创建一个目录时,默认的权限是 777
(可读,可写,可执行),然后需要减去 umask
的值,因此最终的权限为:
777 - 022 = 755(rwxr-xr-x)
可以看出,文件通常不具可执行权限,因此,如果要为文件添加执行权限,需要执行:
chmod +x script.sh
总结
以上的命令均为 Linux 中相对基础的命令,这些命令虽然比较简单,但是对于理解Linux Shell的工作原理和环境管理非常重要,是作为 Linux 入门必备的知识之一。