作为开发者,Linux是我们必须掌握的操作系统之一。因此,在编写代码和部署应用程序时,熟练使用Linux命令非常重要。这些常用命令不得不会,掌握这些命令,工作上会事半功倍,大大提高工作效率。
一. 文件和目录
cd命令
用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
cd [目录路径]
其中,目录路径是您要更改为的新目录的路径。
以下是一些常用的用法:
命令 | 执行 |
cd /home | 进入 ‘/ home’ 目录 |
cd …(两个点) | 返回上一级目录 |
cd …/… (两个点/两个点) | 返回上两级目录 |
cd | 进入个人的主目录 |
cd ~username | 进入个人(username)的主目录 |
cd - | 返回上次所在的目录 |
示例:
进入home目录下的jetsontx2nx606目录
pwd命令
显示当前所在的工作路径
示例:
ls命令
查看文件与目录的命令,list的缩写
ls [选项] [目录路径]
其中,选项是可选的,它们控制着ls命令的输出格式,目录路径是要列出其内容的目录的路径。
以下是一些常用选项:
命令 | 执行 |
ls | 查看当前所在目录中的文件 |
ls -l | 以长格式(详细信息)列出目录中的所有文件和子目录。“ll” 等同于 “ls -l” |
ls -a | 列出全部文件,包含隐藏文件 |
ls -h | 以人类可读的格式(例如K、M、G)列出文件大小。 |
ls -R | 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 |
ls -r | 以相反的顺序列出文件和目录。 |
ls -t | 按修改时间排序列出目录中的所有文件和子目录。 |
ls [0-9] | 显示包含数字的文件名和目录名 |
示例:
显示当前所在目录的详细资料
cp命令
用于复制文件,copy的缩写,还可以把多个文件一次性地复制到一个目录下
cp [选项] 源文件 目标文件
其中,源文件是要复制的文件或目录的路径,目标文件是将源文件复制到的新位置的路径。
以下是一些常用选项:
选项 | 执行 |
-a | 将文件的特性一起复制 |
-p | 连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份 |
-i | 若目标文件已经存在时,在覆盖时会先询问操作的进行 |
-r | 递归持续复制,用于目录的复制行为 //经常使用递归复制 |
-u | 目标文件与源文件有差异时才会复制 |
示例:
1.将名为file1.txt的文件从当前目录复制到名为dir2的目录中,可以使用以下命令:
cp file1.txt dir2/
2.将整个目录从当前目录复制到名为dir2的目录中,并且要包含所有子目录和文件,则可以使用以下命令:
cp -r dir1/ dir2/
mv命令
用于移动文件、目录或更名,move的缩写
mv [options] source destination
其中,source是要移动或重命名的原始文件或目录的路径,destination是新位置或新名称的路径。如果destination是现有目录,则将源文件/目录移动到该目录中;如果destination是新文件名,则会将源文件/目录重命名为destination。
mv
命令的一些常见选项包括:
选项 | 执行 |
-f | force,强制执行操作,无需询问用户确认,如果目标文件已经存在,不会询问而直接覆盖 |
-i | 若目标文件已经存在,就会询问是否覆盖 |
-u | 若目标文件已经存在,且比目标文件新,才会更新 |
-v | 显示每个移动或重命名操作的详细输出。 |
示例:
1.将文件“file1.txt”移动到目录“dir1”,可以使用以下命令:
mv file1.txt dir1/
2.将文件“oldname.txt”重命名为“newname.txt”,可以使用以下命令:
mv oldname.txt newname.txt
rm命令
用于删除文件或目录,remove的缩写
rm [选项] 文件/目录
其中,选项是可选的,可以有多个,常见的选项包括:
选项 | 执行 |
-f | 就是force的意思,忽略不存在的文件,不会出现警告消息 |
-i | 互动模式,在删除前会询问用户是否操作 |
-r | 递归删除,不提示确认,最常用于目录删除,是一个非常危险的参数 |
示例:
- 删除一个文件:
rm myfile.txt
- 删除一个目录及其内容:
rm -r dir2/
- 强制删除一个文件,不提示确认:
rm -f myfile.txt
二、查看文件内容
cat命令
用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用
cat [选项] [文件]
其中,选项可以是以下任何组合:
选项 | 执行 |
-n | 对每一行进行编号 |
-b | 对非空行进行编号 |
-s | 压缩空白行 |
-v | 显示非打印字符 |
-E | 在行末添加美元符号 |
基本用法:
命令 | 执行 |
cat file1 | 从第一个字节开始正向查看文件的内容 |
tac file1 | 从最后一行开始反向查看一个文件的内容 |
cat -n file1 | 标示文件的行数,并输出 |
more file1 | 查看一个长文件的内容 |
head -n 2 file1 | 查看一个文件的前两行 |
tail -n 2 file1 | 查看一个文件的最后两行 |
tail -n +1000 file1 | 从1000行开始显示,显示1000行以后的 |
这里的file1是一个文件名
示例:
1.显示filename.txt的1000行到3000行
cat filename.txt | head -n 3000 | tail -n +1000
2.执行filename.txt,从第3000行开始,显示1000(即显示3000~3999行)
cat filename.txt | tail -n +3000 | head -n 1000
3.将文件file1.txt和file2.txt连接起来,并显示行号
cat -n file1.txt file2.txt
三、文件搜索
find命令
用来查找系统文件的,用于在指定目录下查找文件或目录。它通过输入路径和条件来搜索符合要求的文件或目录,并将结果输出到终端
具体用法如下:
find [path] [expression]
其中,path
指定了要搜索的路径,可以是绝对路径或相对路径。如果未指定路径,则默认为当前工作目录。
expression
则是搜索的条件表达式,用于限定搜索范围。例如,可以按文件名、类型、大小、权限等条件进行搜索。
常用示例:
1.从 ‘/’ 开始进入根文件系统搜索文件和目录
find / -name file1
2.搜索属于用户 ‘user1’ 的文件和目录
find / -user user1
3.搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -atime +100
4.搜索在100天内被创建或者修改过的文件
find /usr/bin -type f -mtime -100
5.显示一个二进制文件、源码或man的位置
whereis halt
6.显示一个二进制文件或可执行文件的完整路径
which halt
7.删除大于50M的文件:
find /var/mail/ -size +50M -exec rm {} \;
8.查找Downloads/文件夹下的所有目录:
find Downloads/ -type d
9.查找Desktop/路径下大小大于100M的文件:
find Desktop/ -size +100M
10.查找/path/to/folder路径下以".txt"结尾的文件
find /path/to/folder -name "*.txt"
四.文件的权限
chmod命令
文件的权限可以使用chmod命令进行修改,使用 “+” 设置权限,使用 “-” 用于取消
chmod [who] [+/-/=] [permission] file
其中,who表示要修改的用户或用户组,可以是以下之一:
u:代表文件所有者。
g:代表文件所属用户组。
o:代表其他用户。
a:代表所有用户,即u、g和o的组合。
"+“表示添加权限,”-“表示删除权限,”="表示设置权限。
permission可以是以下之一:
r:读权限。
w:写权限。
x:执行权限。
X:只有当文件是目录或者已经有可执行的权限时,才添加执行权限。
file表示要修改权限的文件名或目录名。
示例:
1.使用ls -lh 显示权限
2.将文件file.txt的所有者的读写权限设置为可读可写:
chmod u+rw file.txt
3.将文件file.txt的所有者和所属用户组的读写权限设置为可读可写:
chmod ug+rw file.txt
4.将文件file.txt的所有用户的读权限设置为可读:
chmod a+r file.txt
5.设置directory1 目录的所有人(u)、群组(g)以及其他人(o)以读(r,4 )、写(w,2)和执行(x,1)的权限
chmod ugo+rwx directory1
6.删除群组(g)与其他人(o)对directory1 目录的读写执行权限
chmod go-rwx directory1
chown命令
chown命令用于更改文件或目录的所有者和/或所属组。它允许管理员将文件或目录的所有权转移给其他用户或组。,使用 “+” 设置权限,使用 “-” 用于取消,具体用法如下:
chown [选项] [所有者][:组] 文件名/目录名
其中,选项是可选的,可以是以下之一:
- -c:只在更改执行后产生输出。
- -f:强制进行更改,不显示错误信息。
- -R:递归处理子目录及其内容。
- -v:显示每次更改的详细信息。
所有者可以是用户名或用户ID,组可以是组名或组ID。如果省略组,则会将文件的所属组更改为新所有者的主要组。
示例:
1.改变一个文件的所有人属性
chown user1 file1
2.改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chown -R user1 directory1
3.改变一个文件的所有人和群组属性
chown user1:group1 file1
4.将文件file.txt的所有者更改为tom,所属组更改为users:
chown tom:users file.txt
5.将目录dir及其所有子目录和文件的所有者和所属组都更改为tom和users,则可以使用-R选项:
chown -R tom:users dir/
chgrp命令
chgrp命令用于改变文件所属用户组
chgrp [选项] [新的所属组名] 文件或目录
其中,[选项]表示可选参数,常见的有:
-R:递归地更改一个目录及其所有子目录和文件的所属组。
--reference=参考文件或目录:将指定文件或目录的所属组作为参考,并将需要更改的文件或目录的所属组设置为该参考文件或目录的所属组。
[新的所属组名]表示要将文件或目录更改为的新的所属组。
文件或目录表示要进行更改的文件或目录名称。
1.改变文件的群组
chgrp group1 file1
2.将文件file.txt
的所属组更改为group1
chgrp group1 file.txt
3.将目录/data
及其子目录和文件的所属组都更改为group2
chgrp -R group2 /data