Linux常见命令

VIM

一般模式

1、移动光标

1)、上下左右移动光标

上、下、左、右方向键 移动光标
h(左) j(下) k(上) l(右) 移动光标

2)、光标移动到文件头或文件尾

gg 移动到文件头
G 移动到文件尾(shift + g)

3)、光标移动到行首或行尾

^ 移动到行首
$ 移动到行尾

4)、移动到指定行

:n 移动到第几行(这里的 n 是数字)

2、删除或剪切

1)、删除字母

x 删除单个字母
nx 删除 n 个字母(n 是数字,如果打算从光标位置连续删除 10 个字母,可以使用 10x 即可)

2)、删除整行或剪切

dd 删除单行
ndd 删除多行
:n1,n2d 删除指定范围的行

删除行或多行,是比较常用的删除方法。这里的 dd 快捷键既是删除也是剪切。删除内容放入了剪切板,如果不粘贴就是删除,粘贴就是剪切。粘贴方法:

p 粘贴到光标下面一行
P 粘贴到光标上面一行

3)、从光标所在行删除到文件尾

dG 从光标所在行删除到文件尾(d 是删除行,G 是文件尾,连起来就是从光标行删除到文件尾)

3、复制

yy 复制单行
nyy 复制多行

复制之后的粘贴依然可以使用 p 键或 P 键

4、撤销

u 撤销
ctrl + r 反撤销

u 键能一直撤销到文件打开时的状态,ctrl + r 能一直反撤销到最后一次操作状态

5、替换

r 替换光标所在处的字符
R 从光标所在处开始替换字符,按 esc 键结束

编辑模式

  • 从一般模式进入编辑模式,可以使用以下键:
  • i:在当前字符前插入。
  • I:在光标所在行的行首插入。
  • a:在当前字符后插入。
  • A:在光标所在行的行尾插入。
  • o:在当前行的下一行插入新的一行。
  • O:在当前行的上一行插入新的一行。

命令模式

  • 进入命令模式的方法:
  • 在一般模式下,按下 : 或 /
  • 命令模式下的常用命令:
  • /word:在光标之后查找一个字符串 word,按 n 向后继续搜索,shift+n 向上搜索。
  • ?word:在光标之前查找一个字符串 word,按 n 向后继续搜索。
  • :n1,n2s/word1/word2/g:在 n1 和 n2 行之间查找 word1 并替换为 word2g 表示全部替换。
  • :s/word1/word2当前行第一个word1替换为word2
  • :%s/word1/word2/g:将文档中所有的 word1 替换为 word2
  • :w:保存文本。
  • :q:退出 vim。
  • :w!:强制保存。
  • :q!:强制退出,所有改动不生效。
  • :wq:保存退出。
  • :x:类似于 :wq,但只有在文件被修改时才会改变文件的修改时间。
  • :set nu:显示行号。
  • :set nonu:不显示行号。

Linux 常见命令

ls命令

下面是一些常用的ls命令的选项和语法:

  • ls:不带任何选项时,列出当前目录下的文件和文件夹。
  • ls <directory>:列出指定目录下的文件和文件夹。
  • ls -l:以长格式显示详细信息,包括文件权限、链接数、所有者、组、大小、最后修改日期等。
  • ls -a:列出所有文件,包括隐藏文件。
  • ls -h:与-l一起使用(-lh),以易读的格式(例如KB、MB)显示文件大小。

cd和pwd

  • cd <directory>:改变当前目录。
  • cd ..返回上一级目录,cd ../..返回上两级
  • pwd:显示当前工作目录的完整路径。

mkdir

  • mkdir mydirectory:这会在当前工作目录下创建一个名为mydirectory的新目录。
  • mkdir dir1 dir2 dir3:这会在当前工作目录下创建三个新目录:dir1dir2dir3
  • mkdir -p project/src/main:使用-p选项,上述命令会创建一个project目录,其中包含一个src子目录,src又包含一个main子目录,即使这些目录之前都不存在。

文件操作命令

touch

touch命令主要用于创建空文件或更新文件的访问和修改时间。如果指定的文件不存在,touch会创建一个新的空文件。

touch filename.txt:这会创建一个名为filename.txt的空文件,或者如果文件已存在,则更新其访问和修改时间戳。

cat

cat(concatenate的缩写)命令用于读取一个或多个文件的内容,并将其输出到标准输出(通常是屏幕)。
cat file1.txt:这会显示file1.txt文件的内容。
cat file1.txt file2.txt:这会先显示file1.txt的内容,紧接着显示file2.txt的内容。

more

more命令用于分页显示文本文件的内容。用户可以逐页或逐行地浏览文件,这在查看长文本文件时特别有用。
more longfile.txt:这会逐页显示longfile.txt文件的内容,用户可以使用空格键翻到下一页,使用q键退出查看。

cp

cp命令用于复制文件或目录。

基本语法:

  • 复制文件到另一个文件:cp source.txt destination.txt
  • 复制文件到目录:cp source.txt /path/to/directory/
  • 复制目录(包括其内容):cp -r source_directory destination_directory-r选项用于递归复制目录及其内容)

mv

mv命令用于移动或重命名文件或目录。

基本语法:

  • 重命名文件:mv oldname.txt newname.txt
  • 移动文件到另一个目录:mv file.txt /path/to/directory/

rm

rm命令用于删除文件或目录。

基本语法:

  • 删除文件:rm file.txt
  • 递归删除目录及其内容:rm -r directory_name(使用-r选项递归删除目录及其所有内容,需要谨慎使用)
  • 删除文件,不提示确认:rm -f file.txt
  • 强制递归删除目录及其内容,不提示确认:rm -rf directory_name

查找命令

which

which命令用于定位可执行文件的绝对路径。当你在终端中输入一个命令时,which会在环境变量$PATH指定的目录中查找这个命令的可执行文件。如果找到了,which会打印出该文件的完整路径。

  • 使用示例:which ls可能会输出/bin/ls,这表明ls命令的可执行文件位于/bin目录下。

which主要用于快速确定某个命令的安装位置或验证某个命令是否安装在系统的可执行路径中。

find

find命令用于在文件系统中搜索符合条件的文件和目录。它可以根据多种条件搜索,如文件名、文件类型、修改日期等,并执行对找到的文件进行操作的命令。

  • 使用示例:find /home -name "*.txt"会搜索/home目录及其子目录下所有扩展名为.txt的文件。

find 命令可以根据文件大小来查找文件,这通过使用-size 选项实现。-size 选项后面可以跟不同的单位来指定文件的大小,例如:

  • c:字节
  • k:千字节
  • M:兆字节
  • G:吉字节

find [path] -size [+-]size[unit]

  • [path] 是你想要开始搜索的目录路径。
  • [+-] 表示大于或小于指定大小的文件:
    • + 表示大于指定大小的文件。
    • - 表示小于指定大小的文件。
    • 如果不使用任何符号,默认查找精确大小的文件。
  • [size] 是文件大小的数值。
  • [unit] 是上述的单位之一(如果不指定,默认单位是 512 字节块)。

总结

  • which:查找在$PATH环境变量指定的目录中的可执行文件的位置。
  • find:在整个文件系统中根据指定的搜索条件查找文件和目录。

两者都是命令行强大的工具,用于不同的查找任务。which主要用于快速定位命令的可执行文件,而find用于执行更复杂的文件搜索操作。

grep和wc

grep

grep 是 “Global Regular Expression Print” 的缩写,它用于搜索包含指定模式的文本行。它非常灵活,支持正则表达式,这使得它可以执行复杂的文本匹配和搜索操作。grep 的基本语法如下:

1
grep [options] pattern [file...]
  • pattern 是你想要搜索的文本模式。
  • [file...] 是一个或多个文件的列表,你想要在其中搜索指定的模式。如果不指定文件,grep 将从标准输入读取数据。

常用的 grep 选项包括:

  • -i:忽略大小写。
  • -v:反转匹配,即选出不匹配的行。
  • -r-R:递归搜索目录。
  • -n:显示匹配行及其行号。
  • -c:计算匹配行的数量,而不是显示匹配的内容。

wc

wc 是 “Word Count” 的缩写,它用于计算文本中的行数、单词数和字符数。wc 的基本用法非常简单:

1
wc [options] [file...]
  • [file...] 是一个或多个文件的列表,你想要统计它们的文本信息。如果不指定文件,wc 将从标准输入读取数据。

常用的 wc 选项包括:

  • -l:只计算行数。
  • -w:只计算单词数。
  • -c:只计算字节(或字符)数。
  • -m:只计算字符数,这对多字节字符编码很有用。

组合使用 grep 和 wc

grepwc 可以通过管道(|)组合使用,以执行更复杂的文本搜索和统计任务。例如,要计算一个文件中包含特定文本模式的行数,你可以这样做:

1
grep 'pattern' file.txt | wc -l

这将首先使用 grep 查找所有包含 'pattern' 的行,然后 wc -l 计算这些行的数量。这种组合非常有用,可以灵活地应对各种文本处理需求。

echo 命令

echo 用于在终端输出文本或变量值。它通常用于显示消息或输出脚本计算的值。

1
echo "Hello, World!"

重定向符号

重定向符号用于改变命令的标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)的流向。

  • > 用于将输出重定向到文件,覆盖原有内容。
  • >> 用于将输出追加到文件末尾。

tail 命令

tail 命令用于显示文件的最后几行。默认情况下,它显示文件的最后 10 行。

1
tail 文件.txt

tail 也支持多个选项,如 -n 用于指定显示的行数:

1
tail -n 5 文件.txt

用户管理

创建用户

  • useradd [选项] 用户名:创建新用户。如果不加任何选项,创建的新用户无法登录系统,因为没有设置HOME目录和Shell。
    • 选项 -g 指定初始登录组。
    • 选项 -d 指定用户的HOME目录。如果不使用该选项,默认会创建一个与用户名相同的HOME目录。

删除用户

  • userdel [选项] 用户名:删除用户。
    • 选项 -r 会删除用户的HOME目录和邮件箱,如果不使用该选项,则不会删除用户的HOME目录。

查看用户信息

  • id 用户名:显示用户的UID(用户ID)、GID(组ID)和所属的附加组。

修改用户信息

  • usermod -aG 组名 用户名:将用户添加到附加组,不会影响用户的初始组。
    • 选项 -aG 表示将用户添加到附加组,如果不使用 -a 选项,则用户将被移出其他组,仅保留在指定的这个组中。

getent

使用 getent 命令,你可以查询这些系统数据库中的信息,例如:

查找用户信息:getent passwd 用户名
查找组信息:getent group 组名
查找主机信息:getent hosts 主机名
查找服务信息:getent services 服务名

chmod

chmod 命令用于改变文件或目录的权限。使用 chmod 时,你可以指定谁有权限读取、写入或执行文件。

权限被定义为:

  • 读(r):值为4
  • 写(w):值为2
  • 执行(x):值为1

你可以把这些值相加来为用户(u)、组(g)和其他人(o)设置权限。

使用符号表示法更改权限的一些示例:

  • 给用户添加执行权限:chmod u+x 文件名
  • 删除组的写权限:chmod g-w 文件名
  • 给其他用户设置读和执行权限:chmod o=rx 文件名
  • 给所有人添加执行权限:chmod a+x 文件名

使用数字表示法更改权限的一些示例:

  • 设置权限为 rwxr-xr-x (755):chmod 755 文件名
  • 设置权限为 rw-r–r– (644):chmod 644 文件名
  • 设置权限为 rwx—— (700):chmod 700 文件名

要递归地更改目录及其所有子目录和文件的权限,可以使用 -R 选项:

  • chmod -R 755 目录名

这会将指定目录及其所有子目录和文件的权限设置为 rwxr-xr-x。

记得在实际使用时替换 文件名 或 目录名 为实际的文件或目录名。使用 chmod 时要小心,因为不当的权限设置可能会导致安全性和功能性问题。

chown

chown 命令用于更改文件或目录的所有者和所属组。这个命令通常需要超级用户权限来执行。

改变文件的所有者: chown 新所有者 文件名

同时更改文件的所有者和所属组: chown 新所有者:新组 文件名

递归更改目录及其所有子项的所有者和所属组: chown -R 新所有者:新组 目录名

一些额外的选项:

  • 使用 –from=当前所有者:当前组 选项仅在文件的当前所有者和组与指定的匹配时更改所有者或组。
  • 使用 -c 或 –changes 显示关于已更改的文件的信息。
  • 使用 -v 或 –verbose 为每个处理的文件显示详细操作信息。

yum,apt命令

yum,apt分别是centOS,ubuntu的包管理器
yum/apt install/remove/search

systemctl命令

systemctl命令的常见用法:

启动服务: systemctl start 服务名

停止服务: systemctl stop 服务名

重启服务: systemctl restart 服务名

查看服务状态: systemctl status 服务名

使能服务(设置为开机启动): systemctl enable 服务名

禁用服务(取消开机启动): systemctl disable 服务名

重新加载服务配置: systemctl reload 服务名

查看所有服务的状态: systemctl list-units --type=service

查看已启用的服务: systemctl list-unit-files --type=service --state=enabled

查看已失败的服务: systemctl --failed

ln

ln 命令在Linux中用于创建链接,有两种类型的链接:硬链接和符号链接(软链接)。

创建硬链接的语法是:ln 源文件 目标文件

创建软链接的语法是:ln -s 源文件 目标文件

date

date 命令在 Linux 和 Unix 系统中用于显示和设置系统的当前日期和时间。默认情况下,运行 date 命令将显示当前的日期和时间。

date 命令非常灵活,支持多种格式的日期和时间显示,还可以用于设置系统的日期和时间(通常需要管理员权限)。

显示当前日期和时间

运行 date 无参数将按照系统默认的格式显示当前日期和时间。

自定义输出格式

date 命令允许你通过 +FORMAT 选项来指定输出格式。FORMAT 字符串可以包含特殊字符序列,这些序列以 % 开头,表示特定的时间元素,如年、月、日、小时等。

例如:

  • 显示当前年份:date +"%Y"
  • 显示当前月份和日:date +"%m-%d"
  • 显示当前时间(小时:分钟):date +"%H:%M"

ping wget curl

  1. 使用ping命令可以测试主机名或IP地址的连通性。 命令:ping [-c num] ip或主机名 选项:-c, 测试的次数

  2. 使用wget命令可以从网上下载文件。 命令:wget [-b] url 选项:-b, 后台下载

  3. 使用curl命令可以发送网络请求。 命令:curl [-o] url 选项:-o, 指定下载的文件名

ps -ef

查看所有进程及其详细信息

tar

-c,创建压缩文件,用于压缩模式

-v,显示压缩、解压过程,用于查看进度

-x,解压模式

-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个

-Z, gzip模式,不使用-z就是普通的tarball格式

-C,选择解压的目的地,用于解压模式

一般压缩使用-cvf,-zcvf 压缩到哪 需要压缩的文件...
一般解压使用-xvf,-xvf 需要解压的文件 -C 解压目的地

zip、unzip

创建压缩文件: zip 压缩文件名.zip 要压缩的文件或目录

递归地压缩目录: zip -r 压缩文件名.zip 要压缩的目录

解压缩到指定目录: unzip 压缩文件名.zip -d 目标目录