05-2-linux基础

声明!

通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章,如涉及侵权马上删除文章,笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负.

文章为个人学习笔记。

目录

  1. /bin:存放二进制可执行文件,这些是系统命令,如ls​、cp​等,它们对所有用户都可用。

  2. /etc:用于存放系统管理和配置文件,如网络配置、用户信息等。

  3. /etc/rc.d:存放启动时的配置文件和脚本,用于系统启动和关闭时执行特定的任务。

  4. /home:用户的主目录,每个用户都有一个自己的目录,存放个人文件和设置。

  5. /lib:存放标准程序设计库,这些库文件是系统程序和应用程序运行时需要的。

  6. /sbin:存放超级用户(root)使用的管理程序,如系统服务和系统配置工具。

  7. /tmp:用于存放临时文件,这些文件在系统重启后可能会被删除。

  8. /root:超级用户(root)的主目录,存放root用户的个人文件。

  9. /mnt:用于挂载临时文件系统,如光盘、USB驱动器等。

  10. /lost+found:在文件系统检查(如fsck)后,无法恢复的文件会被移动到这里。

  11. /proc:虚拟文件系统,提供系统内核和进程信息,如进程状态、内存使用等。

  12. /var:用于存放经常变化的文件,如日志文件、缓存和临时电子邮件文件。

  13. /usr:存放用户程序和文件,包括应用程序、库文件、文档、源代码等。最庞大的目录,要用到的应用程序和文件几乎都在这个目录

  14. ​/usr/bin​ 存放了普通用户的可执行程序。

  15. ​/usr/sbin ​ 存放了超级用户(root)使用的系统管理程序。

补充内容:

  • /boot:存放启动加载器和内核文件,是系统启动时必须的目录。

  • /dev:存放设备文件,这些文件代表系统中的设备,如硬盘、终端等。

  • /media 和 /mnt 类似,用于挂载可移动媒体,但通常由系统自动挂载。

  • /opt:用于存放可选的应用程序包,通常是第三方软件。

  • /srv:用于存放服务相关的数据,如网站数据、FTP服务器数据等。

  • /sys:提供系统和设备信息的虚拟文件系统,类似于/proc。

命令

ls命令目录内容

​ls​ 是 Linux 和类 Unix 系统中用于列出目录内容的命令。

基本用法

  • ​ls​:列出当前目录下的文件和目录。

  • ​ls [选项] [目录]​:列出指定目录下的文件和目录。

常用选项

  • ​-l​:长格式列出信息,包括文件权限、所有者、大小和最后修改时间。

  • ​-a​:列出所有文件,包括隐藏文件(以.​开头的文件和目录)。

  • ​-A​:列出所有文件,但不包括 .​ 和 ..​。

  • ​-h​:以易读的格式显示文件大小(例如,以 K、M、G 为单位)。

  • ​-R​:递归列出所有子目录的内容。

  • ​-t​:按修改时间排序,最新的文件在前。

  • ​-S​:按文件大小排序。

  • ​-r​:逆序排列。

  • ​-i​:显示文件的 inode 号。

  • ​--color​:使用颜色高亮显示不同类型的文件。

示例

ls -l

​ls -l​:列出当前目录下的文件和目录的详细信息。

ls -l

ls -lh

​ls -lh​:以易读的格式列出当前目录下的文件和目录的大小。

ls -lh

ls -lR

​ls -lR​:递归列出当前目录及其所有子目录的详细信息。

ls -lt

​ls -lt​:按修改时间排序列出当前目录下的文件和目录。

ls -lt

ls -lS

​ls -lS​:按文件大小排序列出当前目录下的文件和目录。

ls -lS
//大S

ls -ls
//小s

ls -la

​ls -la​:列出当前目录下的所有文件和目录,包括隐藏的。

ls -la

ls 目录

​ls /root/work​:列出指定目录下的文件和目录。

ls /root/work

ls的内容

目录
drwxr-xr-x 3 root root 4096 10月 4日 18:41 work
  • 权限:drwxr-xr-x​ 表示这是一个目录(d),所有者(root)有读(r)、写(w)和执行(x)权限,所属组(root)和其他用户只有读(r)和执行(x)权限。

  • 链接数:3​ 表示这个目录有三个链接,包括 .​、..​ 和目录本身的链接。

  • 所有者:root​

  • 组:root​

  • 大小:4096​ 字节,这是目录的元数据大小,不包括其中的内容。

  • 修改日期:10月 4日 18:41​

  • 名称:work​,这是一个目录的名称。

符号链接
lrwxrwxrwx  1 root root    11 10月 3日 15:47 .face.icon -> /root/.face
  • 权限:lrwxrwxrwx​ 表示这是一个符号链接(l),所有者(root)、所属组(root)和其他用户都有读(r)、写(w)和执行(x)权限。

  • 链接数:1​ 表示这是一个符号链接。

  • 所有者:root​

  • 组:root​

  • 大小:11​ 字节,这是符号链接的目标路径的长度。

  • 修改日期:10月 3日 15:47​

  • 名称:.face.icon​,这是一个符号链接的名称,它指向 /root/.face​。

普通文件
  • 权限:-rw-r--r--​ 表示这是一个普通文件(-),所有者(root)有读(r)和写(w)权限,所属组(root)和其他用户只有读(r)权限。

  • 链接数:1​ 表示这是一个普通文件。

  • 所有者:root​

  • 组:root​

  • 大小:5551​ 字节,这是文件的实际大小。

  • 修改日期:2024年 4月23日​

  • 名称:.bashrc​,这是一个隐藏文件(以.​开头),通常是用户的 Bash shell 配置文件。

clear(清屏)

cd(切换目录)

​cd​ 是一个用于改变当前工作目录的命令。以下是 cd​ 命令的一些常用用法和选项:

基本用法

  • ​cd [目录]​:切换到指定的目录。

  • ​cd​:切换到用户的主目录,通常是 /home/用户名​。

  • ​cd ~​:同上,切换到用户的主目录。

  • ​cd ..​:切换到当前目录的上一级目录。

  • ​cd ./​:保持在当前目录,通常用于明确表示不改变目录。

  • ​cd -​:切换到之前的工作目录。

特殊目录

  • ​cd /​:切换到根目录。

  • ​cd /usr​:切换到 /usr​ 目录。

使用环境变量

  • ​cd $HOME​:切换到用户的主目录。

  • ​cd $OLDPWD​:切换到之前的工作目录。

相对路径和绝对路径

  • ​cd dir1/dir2​:使用相对路径切换到当前目录下的 dir1​ 目录中的 dir2​ 目录。

  • ​cd /path/to/dir​:使用绝对路径切换到系统中的 /path/to/dir​ 目录。

注意事项

  • 如果目录名包含空格,需要用引号括起来,例如 cd "dir name"​。

  • 如果目录不存在,cd​ 命令会失败,并返回一个错误信息。

  • ​cd​ 命令是 shell 内置命令,不是独立的程序,因此它的行为可能会受到 shell 配置的影响。

示例

  • ​cd /var/log​:切换到 /var/log​ 目录。

  • ​cd ~/Documents​:切换到用户主目录下的 Documents​ 目录。

  • ​cd ..​:从 /home/user/docs​ 切换到 /home/user​。

  • ​cd -​:如果之前从 /home/user​ 切换到了 /home/user/docs​,使用 cd -​ 会再次切换回 /home/user​。

pwd(当前目录)

vim(文本编辑器)

​vim​ 是一个功能强大的文本编辑器,它在 Unix 和 Linux 系统中广泛使用。vim​ 是 vi​ 编辑器的增强版,提供了更多的功能和更强大的文本编辑能力。以下是 vim​ 的一些基本用法和命令:

启动 Vim

  • ​vim [文件名]​:打开一个文件进行编辑。如果文件不存在,将创建一个新文件。

  • ​vim +[行号] [文件名]​:打开文件并跳转到指定的行号。

  • ​vim +[命令] [文件名]​:打开文件并执行指定的 Vim 命令。

  • ​vim -R [文件名]​:以只读模式打开文件。

Vim 模式

Vim 有三种主要模式:

  1. 正常模式(Normal Mode):这是 Vim 的默认模式,用于执行命令和移动光标。

  2. 插入模式(Insert Mode):用于插入和编辑文本。

  3. 可视模式(Visual Mode):用于选择文本,可以是字符、行或块。

常用命令

  • ​i​:进入插入模式,在当前光标位置前插入文本。

  • ​a​:进入插入模式,在当前光标位置后插入文本。

  • ​o​:在当前行下方新开一行并进入插入模式。

  • ​O​:在当前行上方新开一行并进入插入模式。

  • ​Esc​:从插入模式或可视模式返回到正常模式。

  • ​:w​:保存文件。

  • ​:wq​ 或 :x​ :保存文件并退出 Vim。

  • ​wq! ​ : 保存文件并退出

  • ​:q​:退出 Vim,如果文件已被修改且未保存,将提示错误。

  • ​:q!​:强制退出 Vim,不保存修改。

  • ​:e [文件名]​:打开一个新文件进行编辑。

  • ​:n​:打开下一个文件。

  • ​:N​:打开上一个文件。

  • ​:%s/旧文本/新文本/g​:全局替换当前文件中的所有匹配文本。

移动光标

  • ​h​:左移光标。

  • ​j​:下移光标。

  • ​k​:上移光标。

  • ​l​:右移光标。

  • ​gg​:移动到文件的第一行。

  • ​G​:移动到文件的最后一行。

  • ​:行号​:移动到指定行号。

可视模式

  • ​v​:进入可视模式,用于选择单个字符。

  • ​V​:进入可视行模式,用于选择整行。

  • ​Ctrl + v​:进入可视块模式,用于选择列。

复制和粘贴

  • ​yy​:复制当前行。

  • ​p​:粘贴复制的文本。

  • ​dd​:剪切当前行。

  • ​u​:撤销上一个操作。

  • ​Ctrl + r​:重做上一个被撤销的操作。

搜索和替换

  • ​/搜索词​:向下搜索“搜索词”。

  • ​?搜索词​:向上搜索“搜索词”。

  • ​n​:跳转到下一个匹配项。

  • ​N​:跳转到上一个匹配项。

其他

  • ​:set number​:显示行号。

  • ​:set nonumber​:隐藏行号。

  • ​:set paste​:启用粘贴模式,用于处理特殊格式的文本。

touch 命令创建文件

touch qw.txt

touch​ 命令创建文件

​touch​ 命令在 Linux 和类 Unix 系统中用于创建新的空文件、更新现有文件的访问和修改时间戳。以下是 touch​ 命令的详细使用过程:

基本用法

创建空文件
touch filename
  • 如果 filename​ 不存在,touch​ 命令会创建一个新的空文件。

  • 如果 filename​ 已存在,touch​ 命令会更新该文件的访问和修改时间戳到当前时间。

更新时间戳

touch -a -m filename
  • ​-a​ 选项只更新文件的访问时间。

  • ​-m​ 选项只更新文件的修改时间。

  • 你可以单独使用 -a​ 或 -m​ 来更新对应的时间戳。

设置特定的时间戳

touch -t [[CC]YY]MMDDhhmm[.SS] filename
  • ​-t​ 选项允许你为文件设置特定的时间戳。

  • ​CC​ 是世纪的前两位数字(可选)。

  • ​YY​ 是年份的后两位数字。

  • ​MM​ 是月份(01-12)。

  • ​DD​ 是月份中的日(01-31)。

  • ​hh​ 是小时(00-23)。

  • ​mm​ 是分钟(00-59)。

  • ​.SS​ 是秒(00-61,61 用于闰秒)。

    创建一个文件并设置特定的时间戳
  • touch -t 202411052100.00 filename
    

这里的 202411052100.00​ 表示的是:

  • ​20​ 表示年份 2024。

  • ​24​ 表示 11 月。

  • ​11​ 表示 11 日。

  • ​05​ 表示 5 点(早上 5 点)。

  • ​21​ 表示 21 分钟。

  • ​.00​ 表示 0 秒。

创建多个文件

touch file1 file2 file3
  • 你可以一次指定多个文件名,touch​ 会为每个指定的文件创建空文件或更新时间戳。

创建目录并设置时间戳

命令:

mkdir -vp dir && touch -d "@$(date +%s)" dir
  1. ​mkdir -vp dir​:

    • ​mkdir​:这是创建新目录的命令。

    • ​-v​:这个选项表示“verbose”,即详细模式。当使用 -v​ 选项时,mkdir​ 命令会在终端上显示它正在执行的操作。

    • ​-p​:这个选项表示“parents”,即父目录。如果指定的目录 dir​ 的父目录不存在,mkdir​ 命令会创建所有必需的父目录。

    • ​dir​:这是你想要创建的目录的名称。

    如果 dir​ 目录已经存在,mkdir -vp dir​ 命令不会报错,因为 -p​ 选项允许创建已存在的目录。

  2. ​&&​:

    • 这是一个逻辑“与”操作符。如果它前面的命令(在这个例子中是 mkdir -vp dir​)成功执行(即返回状态码 0),那么它后面的命令将被执行。如果前面的命令失败(即返回非 0 状态码),则后面的命令不会被执行。

  3. ​touch -d "@$(date +%s)" dir​:

    • ​touch​:这个命令用于修改文件或目录的时间戳。

    • ​-d​:这个选项允许你指定一个特定的日期。

    • ​@$(date +%s)​:这是一个特殊的语法,@​ 符号后面跟的是一个时间戳,表示自 Unix 纪元(1970年1月1日 00:00:00 UTC)以来的秒数。date +%s​ 命令会输出当前时间的 Unix 时间戳。

    • ​dir​:这是你想要修改时间戳的目录的名称。

    这个命令的意思是将 dir​ 目录的访问和修改时间戳设置为当前时间。

这段代码的作用是创建一个名为 dir​ 的目录(如果它不存在的话),并且无论 dir​ 是否已存在,都会将其访问和修改时间戳设置为当前时间。如果目录创建成功,那么时间戳修改命令会被执行;如果目录创建失败,时间戳修改命令不会被执行。

递归更新时间戳

touch -r re.txt rt.txt
  • ​-r​ 选项允许你将 targetfile​ 的时间戳设置为 referencefile​ 的时间戳。

检查文件是否存在

touch file &>/dev/null
  • 如果 file​ 存在,touch​ 命令不会输出任何内容。

  • 如果 file​ 不存在,touch​ 命令会返回错误。

  • ​&>/dev/null​ 会将标准输出和标准错误都重定向到 /dev/null​,即不显示任何输出。

  1. ​touch file​:

    • ​touch​ 命令用于创建一个名为 file​ 的新空文件,如果文件已存在,则更新其访问和修改时间戳为当前时间。

  2. ​&>/dev/null​:

    • ​&>​ 是重定向输出的组合符号,它同时将标准输出(stdout)和标准错误(stderr)重定向到指定的位置。

    • ​/dev/null​ 是一个特殊的设备文件,被称为位桶或黑洞。任何重定向到 /dev/null​ 的数据都会被丢弃,就像被丢进了一个无底洞一样。

​touch file &>/dev/null​ 命令创建了一个名为 file​ 的新空文件,并且不会在终端显示任何输出信息,包括正常操作的信息和可能出现的错误信息,因为所有的输出(包括标准输出和标准错误)都被重定向到了 /dev/null​。

mkdir命令(创建目录)

mkdir -p 123/1/2/3

mkdir -pv 123/1/2/3

mkdir命令创建目录

1. 基础用法

  • 创建单个目录:

    mkdir directory_name
    

    在当前路径下创建一个名为directory_name​的新目录。

  • 创建多个目录:

    mkdir dir1 dir2 dir3
    

    在当前路径下一次性创建三个目录:dir1​、dir2​和dir3​。

2. 创建嵌套目录

  • 使用-p​参数:

    mkdir -p dir1/dir2/dir3
    

    递归创建目录,即如果上级目录不存在则先创建上级目录,再创建当前目录。

3. 查看创建目录信息

  • 使用-v​参数:

    mkdir -v test
    

    显示创建目录的信息。

4. 设置目录权限

  • 使用-m​参数:

    mkdir -m 777 test123
    

    创建一个名为test​的目录,并设置其权限为777(即所有用户都有读、写和执行权限)。

5. 同时使用多个选项

  • 组合使用-v​和-p​参数:

    mkdir -vp test1/test2
    mkdir -v -p test1/test2
    

    这两条命令实现了相同的功能,即同时采用两个选项。

6. 创建带有特殊字符的目录

  • 使用引号:

    mkdir "dir with space"
    

    创建一个名为dir with space​的目录,其中包含空格。

7. 重复创建目录

  • 使用-p​参数避免错误:

    mkdir -p dir4
    

    如果目录dir4​已存在,则不会返回错误。

8. 创建只读目录

  • 使用-m​参数设置权限为444:

    mkdir -m 444 read_only_dir
    

    创建一个名为read_only_dir​的目录,只有读取权限。

参数列表

参数描述
​-m, --mode=MODE​设置新目录的文件模式,即权限。
​-p, --parents​递归创建目录,即如果指定的上级目录不存在则先创建上级目录,再创建当前目录。
​-v, --verbose​创建新目录后,打印一条信息。
​-Z, --context[=CTX]​将新创建的目录设置为SELinux安全上下文CTX。
​--help​显示帮助信息并退出。
​--version​显示版本信息并退出。

总结

​mkdir​命令在Linux系统中用于创建新目录,支持创建单个或多级目录、设置目录权限、查看创建过程的详细信息等功能。掌握mkdir​命令对于有效地在Linux环境下管理和组织文件系统是非常有帮助的。

cat 命令

在Linux中,cat​命令是一个常用的文本处理工具,用于查看、创建、合并和比较文件。

基本用法

查看文件内容
cat we.txt

显示we.txt文件的内容。

创建新文件
cat > we3.txt

创建一个名为we3.txt的新文件,并等待用户输入内容,输入结束后按Ctrl+D​结束。

<<EOF

用 cat​ 和 Here Document(<<EOF)的组合,用于创建或覆盖一个名为 log.txt​ 的文件,并允许您输入多行文本直到遇到 EOF​ 标记。Here Document 是一种将多行输入重定向到命令的方法。

以下是如何使用这个命令的步骤:

  1. 执行命令:

    cat >log.txt <<EOF
    

    这将打开一个 Here Document,等待您输入文本。

    输入您想要写入 log.txt​ 的内容。您可以输入多行文本。

    结束输入,输入 EOF​(注意 EOF​ 必须单独一行,前后没有空格或字符):

    EOF
    

    按下回车键,Here Document 结束,输入的内容会被重定向到 log.txt​ 文件中。

追加内容到文件
cat >> we3.txt

将用户输入的内容追加到we3.txt文件的末尾。

合并文件
cat we1.txt we3.txt > log.txt

将we1.txt​和we3.txt的内容合并,并重定向输出到log.txt​。

tac​ 的反向功能
tac log.txt
  • ​tac​ 是 cat​ 的反向功能,它会从文件最后一行开始显示内容。

选项和参数

显示行号

​-n​ 或 --number​:显示行号。

cat -n log.txt

​-b​ 或 --number-nonblank​:只显示非空行的行号。

cat -b log.txt

显示文件内容并标记文件名

cat -n we2.txt we3.txt log.txt

显示file1​、file2​和file3​的内容,并在每行前显示文件名和行号。

显示文件内容并标记

​-E​ 或 --end​:在每一行的末尾显示$​。

cat -E log.txt

​-e​:在每一行的末尾显示$​,对于包含换行符的行,显示\​和换行符。

cat -e log.txt

​-t​:显示制表符(^I​)和换行符(^J​)。

cat -t log.txt

​-T​:显示制表符(^I​)。

cat -T log.txt

​-v​ 或 --visual​:显示非打印字符。

cat -v log.txt

高级用法

显示文件的最后几行
cat log.txt | tail -n 10

显示log.txt文件的最后10行。

显示文件的前几行
cat log.txt | head -n 10

显示filename​文件的前10行。

合并多个文件并显示文件名
for file in we2.txt we3.txt log.txt; do echo "=== $file ===\n"; cat -n "$file"; done

 for file in we2.txt we3.txt log.txt; do echo "\n-=- $file -=-\n"; cat -n "$file"; done

这将显示每个文件的内容,并在每个文件内容前加上文件名和行号。

比较两个文件
cat we2.txt > we3.txt

如果we2.txt和we3.txt的内容完全相同,命令将不输出任何内容。

使用cat​和grep​搜索特定字符串
cat log.txt | grep "qwert"

在log.txt文件中查找包含search_term​的行。

使用cat​和sort​排序文件内容
cat log.txt | sort

对log.txt文件的内容进行排序。

使用cat​和uniq​去除重复行
cat log.txt | sort | uniq

对filename​文件的内容进行排序并去除重复行。

​head​命令

在Linux中,head​命令用于输出文件的开头部分,默认情况下显示文件的前10行。这个命令非常有用,尤其是当你需要快速查看一个大型文件的开始部分时。

基本用法

显示文件的前10行
head log.txt

显示log.txt文件的前10行。

显示多个文件的前10行
head we2.txt we3.txt

分别显示we2.txt we3.txt的前10行。

选项和参数

指定显示的行数
head -n lines filename

head -n 5 log.txt

显示filename​文件的前lines​行。例如,head -n 20 filename​会显示文件的前20行。

显示多个文件的指定行数
head -n lines file1 file2

head -n 5 we2.txt we3.txt

分别显示file1​和file2​的前lines​行。

显示文件的最后几行之前的指定行数
head -n -lines filename

head -n -5 log.txt

显示filename​文件除了最后lines​行之外的所有行。例如,head -n -5 filename​会显示除了最后5行之外的所有行。

显示文件的前几行,但不包括二进制文件
head -q -n lines filename

head -q -n 5 log.txt

​-q​选项会忽略二进制文件。

显示文件的前几行,并且显示文件名
head -v -n lines file1 file2

head -v -n 5 we2.txt we3.txt

​-v​选项会在每组输出前显示文件名。

显示文件的前几行,并且显示字节号
head -c -n lines filename

head -c -n 5 log.txt

​-c​选项会显示字节号。

高级用法

合并多个文件的头部
head -n 10 file1 file2 > combined_head.txt

head -n 10 we2.txt we3.txt > log.txt

将file1​和file2​的前10行合并,并重定向输出到combined_head.txt​。

使用管道与其他命令组合
head -n 20 filename | grep "search_term"

head -n 20 log.txt | grep "qwert"

查找filename​文件的前20行中包含search_term​的行。

显示多个文件的前几行,但只显示每个文件的第一次出现
head -n 10 file1 file2 | uniq

head -n 10 we2.txt we3.txt | uniq

显示file1​和file2​的前10行,但去除重复的行。

显示多个文件的前几行,并且对每个文件的内容进行排序
head -n 20 file1 file2 | sort

head -n 20 we2.txt we3.txt | sort

对file1​和file2​的前20行进行排序。

​tail​命令

Linux中的tail​命令用于显示文件末尾的内容,默认显示文件的最后10行。

基本用法

显示文件的最后10行
tail filename

tail log.txt

显示filename​文件的最后10行。

显示多个文件的最后10行
tail file1 file2

tail we2.txt we3.txt

分别显示file1​和file2​的最后10行,并在每个文件内容前显示文件名。

选项和参数

示文件的最后N行
tail -n N filename

tail -n 3 log.txt

显示filename​文件的最后N行。例如,tail -n 20 filename​会显示文件的最后20行。

实时跟踪文件的增长
tail -f filename

tail -f log.txt

实时显示filename​文件的新追加的内容,常用于监控日志文件的更新。

显示文件的最后N个字符
tail -c N filename

tail -c 5 log.txt

显示filename​文件的最后N个字符。

从第N行开始显示文件内容
tail -n +N filename

tail -n +5 log.txt

从第N行开始显示filename​文件的内容。

与特定进程关联跟踪文件变化
tail --pid=PID -f filename

与-f​选项一起使用,当指定的进程ID终止时,tail​命令会停止输出。

不显示文件头信息
tail -q filename

在显示多个文件时,不显示文件名前的头信息。

总是显示文件头信息
tail -v filename

即使只显示一个文件,也显示文件名前的头信息。

设置睡眠间隔
tail -s N -f filename

与-f​选项一起使用,设置每次检查文件变化的间隔为N秒。

高级用法

同时查看多个文件的末尾内容
tail -n N file1 file2

同时显示file1​和file2​的最后N行,并在每个文件内容前显示文件名。

监控日志文件直到特定进程结束
tail --pid=PID -f /var/log/syslog

监控/var/log/syslog​文件,直到进程ID为PID的进程结束。

more命令

在Linux系统中,more​命令用于逐步查看文件的内容。它一次显示一部分内容,允许用户在查看完一页后选择是否继续查看下一页。这在处理大型文件时非常有用,因为它不会一次性将整个文件内容加载到屏幕上,从而避免了屏幕滚动过快,用户来不及阅读的问题。

基本用法

  1. 查看文件内容

    more filename
    

    显示filename​文件的内容,并在每次到达屏幕底部时暂停,等待用户输入命令以继续查看。

操作命令

在使用more​查看文件时,你可以使用以下按键或命令来控制显示:

  • 空格键(Space):显示下一屏的内容。

  • 回车键(Enter):显示下一行的内容。

  • ​q​:退出more​命令,不再显示文件的剩余内容。

  • ​h​:显示帮助信息,包括所有可用的命令。

  • ​b​ 或 <​:返回到上一屏的内容。

  • ​>​:显示当前行的行号。

  • ​v​:调用vi​或vim​编辑器编辑当前文件。

  • ​:f​:显示当前文件的名称和已显示的百分比。

  • ​:n​:显示下一个文件(如果有多个文件的话)。

  • ​:p​:显示上一个文件(如果有多个文件的话)。

  • ​/d​ 或 u​:在显示下一个屏幕之前,跳过指定数量的行(d​表示向下跳过,u​表示向上跳过)。

示例

假设你有一个名为example.txt​的文件,你可以使用以下命令逐步查看其内容:

more example.txt

当你到达屏幕底部时,more​会暂停,并显示--More--​提示符。此时,你可以按空格键继续查看下一屏,或者按q​退出。

注意事项

  • ​more​命令在处理非文本文件时可能会显示乱码,因为它不会解释二进制数据。

  • ​more​命令在某些情况下可能不如less​命令灵活,less​命令提供了更多的功能和更好的用户体验。

ssh命令

SSH(Secure Shell)是一个网络协议,用于通过加密方式远程登录和管理服务器。以下是SSH命令的一些详细用法和选项:

基本用法

  1. 远程登录

    ssh user@hostname
    

    以user​身份登录到hostname​指定的远程服务器。

  2. 指定端口登录

    ssh -p port_number user@hostname
    

    指定SSH连接的端口号,默认是22。

执行远程命令

  1. 执行一条命令

    ssh user@hostname 'command'
    

    在远程主机上执行command​命令,并在执行完毕后自动断开连接。

  2. 执行多条命令

    ssh user@hostname 'command1;command2;command3'
    

    执行多条命令,命令之间用分号分隔。

配置SSH

  1. 配置文件
    SSH的配置文件通常位于/etc/ssh/ssh_config​,可以通过修改此文件来设置默认的SSH选项,如端口号、用户名等。

    ​~/.ssh/config​中配置常用的 SSH 连接信息,方便快速连接。

    Host myserver
        HostName example.com
        User username
        Port 2222
    

    然后可以直接用 ssh myserver​ 连接。

  2. 密钥对生成

    ssh-keygen -t rsa
    

    生成SSH密钥对,通常使用RSA算法。

  3. 发送公钥到远程主机

    ssh-copy-id user@hostname
    

    将公钥发送到远程主机,以便实现无密码登录。

SSH 代理转发

如果需要通过中间服务器访问另一个服务器,可以使用代理转发:

ssh -A username@hostname

端口转发

  1. 本地端口转发

    ssh -L local_port:remote_host:remote_port user@ssh_server
    

    将本地端口local_port​转发到远程主机的remote_port​端口。

  2. 远程端口转发

    ssh -R remote_port:local_host:local_port user@ssh_server
    

    将远程主机的remote_port​端口转发到本地的local_port​端口。

  3. 动态端口转发

    ssh -D local_port user@ssh_server
    

    设置一个SOCKS代理,将所有流量通过SSH服务器转发。

高级用法

  1. X11转发

    ssh -X user@hostname
    

    启用X11转发,允许在远程机器上运行图形界面程序,并在本地显示。

  2. SSH代理

    eval $(ssh-agent)
    ssh-add ~/.ssh/id_rsa
    

    使用SSH代理管理密钥,并自动解锁密钥,实现多次SSH登录无需重复输入密码。

  3. 详细模式

    ssh -v user@hostname
    

    启用详细模式,打印调试信息,有助于排查连接问题。

基本命令

chmod权限命令

​chmod​ 是Linux系统中用于改变文件或目录权限的命令。以下是chmod​命令的一些详细用法和选项:

基本用法

  1. 改变文件或目录权限

    chmod [选项]... 模式[,模式]... 文件...
    

    其中“模式”定义了文件或目录的权限,可以由三位数字表示,每位数字分别代表所有者(user)、用户组(group)和其他人(other)的权限。每个数字是0到7之间的值,代表不同的权限组合。

权限表示法

符号表示法
  • ​u​:所有者(user)

  • ​g​:用户组(group)

  • ​o​:其他人(other)

  • ​a​:所有用户(all)

  • ​+​:添加权限

  • ​-​:删除权限

  • ​=​:设置精确的权限

  • ​r​:读权限

  • ​w​:写权限

  • ​x​:执行权限

例如,添加所有者对一个文件的写入权限:

chmod u+w 文件名

数字表示法
  • 读(r):4

  • 写(w):2

  • 执行(x):1

权限可以通过将数字相加来设置。例如,设置文件权限为读、写、执行(7):

chmod 777 文件名

chmod 777 we.txt
chmod u=rwx,g=rwx,o=rwx we.txt
chmod a+rwx we.txt

选项

递归更改权限
chmod -R 模式 目录名

chmod -R 7777 exam


对指定目录及其子目录下所有文件递归地改变权限。

静默模式
chmod -f 模式 文件名

不显示错误信息。

详细模式
chmod -v 模式 文件名

显示详细信息。

参考文件权限
chmod --reference=参考文件 目标文件

使用参考文件的权限设置目标文件的权限。

示例

为文件设置读权限
chmod a+r 文件名

chmod a+r we2.txt

为文件设置读写权限
chmod 6 文件名

chmod 6 we2.txt

为文件设置所有者完全控制,组和其他用户只有读权限
chmod 744 文件名

chmod 744 we2.txt

递归设置目录权限
chmod -R 755 目录名

chmod -R 755 exam

chown命令

​chown​(change owner)命令在Linux系统中用于更改文件或目录的所有者(user)和/或所属组(group)。这个命令通常需要超级用户权限来执行,除非你是该文件的当前所有者并且有足够的权限来改变其所属组。

基本用法

  1. 更改文件或目录的所有者

    chown 新所有者 文件名
    

    将文件名​的所有者更改为新所有者​。

  2. 更改文件或目录的所属组

    chown :新所属组 文件名
    

    将文件名​的所属组更改为新所属组​。

  3. 同时更改所有者和所属组

    chown 新所有者:新所属组 文件名
    

    同时将文件名​的所有者更改为新所有者​,所属组更改为新所属组​。

递归更改

  1. 递归更改目录及其内容的所有者和/或所属组

    chown -R 新所有者 文件夹名
    

    递归地将文件夹名​及其所有子目录和文件的所有者更改为新所有者​。

    chown -R :新所属组 文件夹名
    

    递归地将文件夹名​及其所有子目录和文件的所属组更改为新所属组​。

引用文件

  1. 根据引用文件更改所有者和所属组

    chown --reference=引用文件 文件名
    

    将文件名​的所有者和所属组更改为与引用文件​相同。

符号链接

  1. 更改符号链接的所有者和所属组

    chown -h 新所有者 符号链接名
    

    只更改符号链接本身的所有者,而不更改它指向的目标文件。

递归和符号链接

  1. 递归更改,但保留符号链接的原始所有者和所属组

    chown -R -H 新所有者 文件夹名
    

    递归地更改文件夹名​及其内容的所有者,但对于符号链接,只更改链接本身的所有者。

示例

  1. 更改文件的所有者为username​

    chown username example.txt
    
  2. 更改目录及其所有内容的所有者为username​

    chown -R username /path/to/directory
    
  3. 更改文件的所属组为groupname​

    chown :groupname example.txt
    
  4. 更改文件的所有者和所属组

    chown username:groupname example.txt
    
  5. 根据引用文件ref_file​更改example.txt​的所有者和所属组

    chown --reference=ref_file example.txt
    

​chown​命令是Linux系统中权限管理的重要工具之一,它允许管理员和用户更改文件和目录的所有权,从而控制对这些文件和目录的访问权限。

adduser命令

  1. adduser​(会自动为创建的用户指定目录,系统shell版本,会在创建时输入用户密码)。

    • ​adduser​命令会自动为新用户创建一个家目录,并设置默认的shell。在创建过程中,系统会提示输入新用户的密码。

  2. ​useradd​(需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码,无主目录,没有指定shell版本)

    • ​useradd​命令需要通过参数来指定用户的家目录、默认shell等。如果不指定任何参数,创建的用户将没有密码、没有家目录,也不会设置默认的shell。

​adduser​ 是一个用于在类 Unix 系统中添加新用户的命令行工具。它通常用于图形化界面的系统中,因为它会提示用户输入必要的信息,如用户名、全名、密码等。adduser​ 命令通常是一个脚本,它背后会调用 useradd​ 命令来实际创建用户账户。

以下是 adduser​ 命令的一些基本用法:

基本用法

添加新用户
adduser 用户名

adduser kali-2

这将启动一个交互式过程,提示您输入用户的全名、密码等信息。

这个命令会提示你输入用户的全名、房间号、工作电话、家电话、其他信息以及密码。

添加新用户并指定全名
adduser --fullname="用户全名" 用户名

adduser --comment="kali-qwe" kali-2

这将允许您为新用户指定一个全名。

这个命令会创建一个名为 kali-2​ 的用户,并将用户的全名设置为 kali-qwe​。

添加新用户并指定家目录
adduser --home /指定路径 用户名

adduser --home /home/kali-4 kali-4

这将为新用户指定一个非标准的家目录路径。

添加新用户并指定 shell
adduser --shell /bin/bash 用户名

adduser --shell /bin/bash kali-5

这将为新用户指定一个默认的 shell。

添加新用户并指定用户组
adduser --ingroup 组名 用户名

这将把新用户添加到指定的用户组中。

选项

  • ​--fullname="全名"​:指定用户的全名。

  • ​--home /指定路径​:指定用户的家目录。

  • ​--shell /bin/shell​:指定用户的默认 shell。

  • ​--ingroup 组名​:指定用户所属的组。

  • ​--disabled-password​:创建一个没有密码的用户账户。

  • ​--disabled-login​:创建一个不能登录的用户账户。

示例

  1. 添加一个新用户并指定全名和家目录

    adduser --fullname="John Doe" --home /home/johndoe 用户名
    
  2. 添加一个新用户并将其添加到特定的用户组

    adduser --ingroup developers 用户名
    
  3. 添加一个新用户并禁用密码

    adduser --disabled-password 用户名
    

使用 userdel​ 命令删除用户

  1. 删除用户:

    userdel 用户名
    

    这个命令会删除名为 用户名​ 的用户账户。请注意,这不会删除用户的主目录。

  2. 删除用户及其主目录:

    userdel -r 用户名
    

    这里的 -r​ 选项表示同时删除用户的主目录和邮件目录。

  3. 强制删除用户:

    userdel -f 用户名
    

    这里的 -f​ 选项表示强制删除用户,即使用户当前已登录。

passwd​命令

在Linux系统中,passwd​命令用于更改用户的密码。这个命令对于系统安全性非常重要,因为它允许用户定期更新他们的密码,以防止未经授权的访问。

基本用法

  1. 更改当前用户的密码

    passwd
    

    执行这个命令时,系统会提示您输入当前密码(如果有的话),然后要求您输入新密码并确认。

  2. 更改其他用户的密码(需要root权限)

    passwd 用户名
    

    这个命令允许root用户更改指定用户的密码。系统会提示输入新密码并确认。

选项

  • ​-S​ 或 --status​:显示密码状态,包括密码的有效期、最小长度、到期时间等。

  • ​-e​:强制密码过期,使得用户在下次登录时必须更改密码。

  • ​-d​:清除密码,使得用户可以通过回答安全问题来登录。

  • ​-i​ 或 --inactive​:设置密码在过期后多少天变得无效。

  • ​-n​ 或 --minimum​:设置密码的最小长度。

  • ​-x​ 或 --maximum​:设置密码的最大有效天数。

  • ​-w​ 或 --warn​:设置密码到期前多少天开始警告用户。

示例

  1. 查看当前用户密码的状态

    passwd -S
    
  2. 强制用户在下次登录时更改密码

    passwd -e 用户名
    
  3. 设置密码的最小长度为8

    passwd -n 8 用户名
    
  4. 设置密码的最大有效天数为45天

    passwd -x 45 用户名
    
  5. 设置密码到期前7天开始警告用户

    passwd -w 7 用户名
    

addgroup​ 命令用户组

在 Linux 系统中,adduser​ 命令通常用于添加单个用户,而 addgroup​ 或 groupadd​ 命令用于添加用户组。以下是如何使用 addgroup​ 命令来创建一个新组的示例:

使用 addgroup​ 命令创建组

  1. 创建一个新组:

    addgroup 组名
    
    addgroup kali-11
    
    

    这个命令会创建一个名为 组名​ 的新组。

  2. 指定组的 GID(组标识符):

    addgroup --gid 1000 组名
    
    addgroup --gid 10001  kali-12
    
    

    这个命令会创建一个名为 组名​ 的组,并指定其 GID 为 1000。

  3. 创建系统组:

    addgroup --system 组名
    
    addgroup --system kali-13
    

    这个命令会创建一个名为 组名​ 的系统组。系统组通常用于系统服务和进程,它们的 GID 通常小于 1000。

使用 groupadd​ 命令创建组

​groupadd​ 命令与 addgroup​ 类似,但可能在不同的 Linux 发行版中有所不同。以下是使用 groupadd​ 的示例:

  1. 创建一个新组:

    groupadd 组名
    
    groupadd kali-21   
    

    这个命令会创建一个名为 组名​ 的新组。

  2. 指定组的 GID:

    groupadd -g 1000 组名
     groupadd -g 10003 kali-22
    
    

    这个命令会创建一个名为 组名​ 的组,并指定其 GID 为 10003。

  3. 创建系统组:

    groupadd --system 组名
    groupadd --system kali-23
    
    

    这个命令会创建一个名为 组名​ 的系统组。

使用 delgroup​ 命令删除组

delgroup 组名
delgroup kali-11

这个命令会删除名为 组名​ 的用户组。

使用 groupdel​ 命令删除组

groupdel 组名

这个命令同样会删除名为 组名​ 的用户组。

sudo命令

​sudo​(Super User Do)命令用于以超级用户权限(root权限)执行命令。普通用户使用sudo​可以临时获得管理员权限,执行需要更高权限的操作。以下是一些常见的sudo​命令用法:

1. 基本用法

在命令前加上sudo​,以超级用户身份执行该命令。例如:

sudo apt update

2. 以其他用户身份执行

​sudo​默认是以root​身份执行命令,但也可以指定其他用户,用-u​指定:

sudo -u username command

sudo -u kali-1 pwd
sudo -u klai-1 ls /var/www

3. 提升权限为root用户

直接输入sudo -i​或sudo su​可以切换到root​用户身份,进入超级用户模式。此时输入的每个命令都具有root​权限。

sudo -i
sudo su

4. 更新sudo权限

在执行带有sudo​的命令时,会提示输入用户密码。输入一次后,系统会记住一定时间内的权限(默认5分钟)。如果想立即清除权限缓存,使系统重新要求输入密码,可以使用:

sudo -k

5. 查看用户是否有sudo权限

sudo -l

这个命令列出当前用户的sudo​权限,显示该用户能以什么权限执行哪些命令。

6. 编辑sudoers文件

​sudoers​文件定义了哪些用户可以使用sudo​,及其权限。要编辑sudoers​文件,使用以下命令:

sudo visudo

注意:不要直接编辑sudoers​文件,因为语法错误可能会造成权限问题。使用visudo​可以检查语法,确保不会损坏系统设置。

7. 禁用密码输入

可以在sudoers​文件中配置特定命令无需密码执行。比如添加以下行,使用户username​无需密码即可执行所有命令:

username ALL=(ALL) NOPASSWD: ALL

8. 结合管道符和重定向使用sudo

默认情况下,sudo​只对第一个命令生效。如果要将整个命令链提升为超级用户权限,可以使用以下两种方式:

  • 组合在一起:

    echo "some text" | sudo tee /etc/somefile
    

  • 子shell执行:

    sudo sh -c 'echo "some text" > /etc/somefile'
    

常见问题

  • "command not found":可能是因为环境变量不包含此命令,使用sudo -i​来临时进入root​环境。

  • 权限不足:如果无法使用sudo​,请确认用户是否已在sudoers​中配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值