一文速通liunx命令

Linux 终端中快捷键和命令历史功能

  • 搜索历史命令(使用 Ctrl + R
  • Enter 执行找到的命令,或按 Esc 返回编辑模式。

补全命令和路径(Tab 键补全)

  • 命令补全 :按 Tab
  • 多选补全 :如果有多个可能的补全项,按 Tab 两次

使用 history 命令查看历史命令

  • 清除历史命令history -c

  • 查看特定历史命令的输出history | grep <pattern>

  • 例如,查找所有包含 git 的命令:history | grep git

历史命令快捷键

  • UpDown :上下箭头可以浏览命令历史,按 Up 键可以查看以前执行的命令,按 Down 键可以回到未来的命令。

  • Ctrl + P :相当于按 Up 键,查看上一个命令。

  • Ctrl + N :相当于按 Down 键,查看下一个命令。

命令行编辑技巧

  • Ctrl + A:移动光标到命令行的开始位置。

  • Ctrl + E:移动光标到命令行的末尾位置。

  • Ctrl + U:删除光标之前的所有字符。

  • Ctrl + K:删除光标之后的所有字符。

  • Ctrl + W:删除光标前的一个单词。

  • Ctrl + Y:粘贴最后一次删除的内容。

  • Ctrl + D :删除光标位置的字符(类似于按 Backspace)。

  • Ctrl + L :清屏,相当于执行 clear

补全历史命令(使用 reverse-search

在使用 Ctrl + R 反向搜索时,如果你没有找到你想要的命令,可以通过按 Ctrl + S 向前搜索历史命令。

linux处理目录的常用命令

ls(英文全拼:list files): 列出目录及文件名

选项与参数:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

cd(英文全拼:change directory):切换目录

复制代码
#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/

#使用相对路径切换到 runoob 目录 --一个英文点忽略绝对位置
[root@www ~]# cd ./runoob/

# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

pwd(英文全拼:print work directory):显示目前的目录

选项与参数:

  • -P :显示出确实的路径,而非使用链接 (link) 路径。

实例:单纯显示出目前的工作目录:

复制代码
[root@www ~]# pwd
/root   <== 显示出目录啦~

实例显示出实际的工作目录,而非链接档本身的目录名而已。

mkdir(英文全拼:make directory):创建一个新的目录

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

实例:请到/tmp底下尝试创建数个新目录看看:

复制代码
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test    <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory       <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4

rmdir(英文全拼:remove directory):删除一个空的目录

删除 runoob 目录

复制代码
[root@www tmp]# rmdir runoob/

将 mkdir 实例中创建的目录(/tmp 底下)删除掉!

复制代码
[root@www tmp]# rmdir test   <==可直接删除掉,没问题
[root@www tmp]# rmdir test1  <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty

rm(英文全拼:remove): 删除文件或目录

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

  • -i :互动模式,在删除前会询问使用者是否动作

  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

    复制代码
    [root@www tmp]# rm -i bashrc
    rm: remove regular file `bashrc'? y

    如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

cp(英文全拼:copy file): 复制文件或目录

选项与参数:

  • **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

    [root@www ~]# cp ~/.bashrc /tmp/bashrc
    [root@www ~]# cp -i ~/.bashrc /tmp/bashrc
    cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖

  • **-a:**相当於 -pdr 的意思:archive"(归档),至於 pdr 请参考下列说明;

  • **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);

作用:在复制文件时,同时复制文件的属性,而不是使用系统的默认属性。

解释:每个文件都有一些元数据(metadata),比如:

    • 修改时间 (Modification Time)

    • 访问时间 (Access Time)

    • 所有者和所属组 (Ownership)

    • 权限模式 (Permissions)

      加上 -p 后,新复制出来的文件会拥有和源文件完全相同的上述属性。这对于备份来说至关重要,因为您希望备份文件保留原始的时间戳和权限。

  • **-r:**递归持续复制,用於目录的复制行为;当您需要复制一个目录(文件夹)时,必须使用这个选项。

projectA/

├── main.c

└── docs/

└── readme.txt

错误的做法 (不加 -r)

codeBash

复制代码
[root@www ~]# cp projectA /tmp/
cp: omitting directory 'projectA'  <== 系统会提示,这是一个目录,我跳过了它

结果:复制失败。

正确的做法 (加上 -r)

codeBash

复制代码
[root@www ~]# cp -r projectA /tmp/

结果:在 /tmp 目录下会创建一个 projectA 目录,其内容和结构与原始目录完全相同。

  • **-d:**若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;

  • **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

  • **-l:**进行硬式链接(hard link)的链接档创建,而非复制文件本身;

    |--------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
    | 操作 | cp source.txt copy.txt (普通复制) | cp -l source.txt link.txt (创建硬链接) |
    | 背后动作 | 1. 创建一个新的 Inode。<br>2. 分配新的数据块。<br>3. 将 source.txt 的内容逐字节复制 到新的数据块中。<br>4. 创建新文件名 copy.txt 指向这个新的 Inode。 | 1. 不创建 新的 Inode。<br>2. 不分配 新的数据块。<br>3. 直接创建一个新文件名 link.txt,让它指向 source.txt 已经存在的那个 Inode。 |
    | 磁盘空间 | 占用双倍空间。如果 source.txt 是 1GB,那么复制后总共占用 2GB。 | 几乎不占用额外空间(只增加一个文件名的存储空间,可以忽略不计)。 |
    | 关系 | source.txt 和 copy.txt 是两个完全独立的文件。修改一个不会影响另一个。 | source.txt 和 link.txt 是同一个文件的两个不同名字 。它们指向相同的 Inode 和数据。修改任何一个,另一个的内容会同步改变。 |
    | Inode 编号 | 两者的 Inode 编号不同。 | 两者的 Inode 编号完全相同。 |
    | 删除行为 | 删除 source.txt 不会影响 copy.txt。 | 删除 source.txt 不会影响 link.txt。系统会检查 Inode 的"链接数",只有当链接数变为 0 时,才会真正删除文件数据。 |


mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

复制一文件,创建一目录,将文件移动到目录中

复制代码
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

目录 /data/longren/jingui/代码 修改为 /data/longren/jingui/Code

如果你没有足够的权限进行修改(例如没有写权限

sudo mv /data/longren/jingui/代码 /data/longren/jingui/Code

移动文件:

将文件 file1.txt 移动到目录 dir1/ 中:

mv file1.txt dir1/

重命名文件:

将文件 oldname.txt 重命名为 newname.txt

mv oldname.txt newname.txt

强制移动文件,不做提示:

将文件 file1.txt 移动到 /home/user/ 目录,并强制覆盖目标位置已有的同名文件:

mv -f file1.txt /home/user/

移动多个文件到一个目录:

将文件 file1.txtfile2.txt 移动到 dir1/ 目录:

mv file1.txt file2.txt dir1/

使用 -i 选项提示覆盖:

在将 file1.txt 移动到 /home/user/ 时,如果目标文件已经存在,则会提示是否覆盖:

mv -i file1.txt /home/user/

命令:

mv /data/longren/jingui/代码 /data/longren/jingui/Code``

解释:

  • /data/longren/jingui/代码 是原目录路径。

  • /data/longren/jingui/Code 是你要改成的新目录名。

Linux 文件内容查看

cat 由第一行开始显示文件内容

选项与参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

tac 从最后一行开始显示0可以看出 tac 是 cat 的倒着写!

nl 显示的时候,顺道输出行号!

选项与参数:

  • -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:
    -n ln :行号在荧幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

实例一:用 nl 列出 /etc/issue 的内容

复制代码
[root@www ~]# nl /etc/issue
     1  CentOS release 6.4 (Final)
     2  Kernel \r on an \m

head 只看头几行

  • -n :后面接数字,代表显示几行的意思

    [root@www ~]# head /etc/man.config

默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

复制代码
[root@www ~]# head -n 20 /etc/man.config

tail 只看尾巴几行

  • -n :后面接数字,代表显示几行的意思

  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

    [root@www ~]# tail /etc/man.config

    默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:

    [root@www ~]# tail -n 20 /etc/man.config

more 一页一页的显示文件内容

你有几个按键可以按的:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

linux文件修改/加权限

在 Linux 中,可以使用 chmod 命令来更改文件或目录的权限。

linux文件修改

创建文件

  • touch filename.txt

  • echo "content" > filename.txt

    使用 touch 命令来创建一个空文件:

    touch filename.txt

    或者使用 echo 命令创建文件并写入内容:

    echo "Hello, World!" > filename.txt

进入文件编辑

  • nano filename.txt

  • vim filename.txt

    使用 nano 编辑文件:

    nano filename.txt

    nano 是一个简单易用的文本编辑器。

    使用 vim 编辑文件:

    vim filename.txt

创建内容并编辑文件

  • nano:按 Ctrl + O 保存,Ctrl + X 退出。

  • vim:按 :wq 保存并退出,:q! 不保存退出。

    使用 nano 编辑文件:
    • 在打开的 nano 编辑器中,直接输入你想要的内容。例如:

      This is a test file. Line 2: More content here.

    • 保存文件

      • Ctrl + O 来保存文件。

      • 然后按 Enter 确认保存。

    • 退出文件

      • Ctrl + X 来退出编辑器。
    使用 vim 编辑文件:
    • 打开文件后,按 i 进入插入模式,开始编辑文件内容。

      This is a test file. Line 2: More content here.

    • 保存文件并退出

      • Esc 退出插入模式。

      • 输入 :wq 并按 Enter 来保存文件并退出。

    • 仅保存文件(不退出)

      • Esc,然后输入 :w,按 Enter
    • 退出文件(不保存)

      • Esc,然后输入 :q!,按 Enter

修改文件

  • nano:编辑后 Ctrl + O 保存,Ctrl + X 退出。

  • vim:编辑后 :wq 保存并退出。

    使用 nano 修改文件:
    1. 打开文件:nano filename.txt进入插入模式,修改文件内容。

    2. 保存并退出:Ctrl + O(保存),然后按 Ctrl + X(退出)。

    使用 vim 修改文件:
    1. 打开文件:vim filename.txt

    2. i 进入插入模式,修改文件内容。

    3. 保存并退出:Esc -> 输入 :wq(保存并退出)。

删除文件

  • rm filename.txt

  • rm -f filename.txt(强制删除)

  • rm -r directory_name/(删除目录及内容)

    删除单个文件:

    rm filename.txt

    强制删除文件(如果文件不可删除):

    rm -f filename.txt

    删除目录及其内容:

    rm -r directory_name

    强制删除目录及其内容:

    rm -rf directory_name

linux加权限基本语法:

chmod [选项] 权限 文件/目录

chmod 权限总结:

  • r(读):可以查看文件内容。

  • w(写):可以修改文件内容。

  • x(执行):可以执行文件(如果文件是可执行程序)。

其他选项:

  • -v:显示更改权限的详细信息。

  • -c:仅在权限更改时显示信息。

1. 给文件增加读、写、执行权限

假设文件名为 file.txt,你想给文件所有者、同组用户和其他用户都增加读、写和执行权限:

chmod 777 file.txt

这意味着所有人都拥有读、写、执行权限。

2. 给文件增加执行权限

file.sh 文件添加执行权限:

chmod +x file.sh

3. 给文件增加读、写、执行权限

假设文件名为 file.txt,你想给文件所有者、同组用户和其他用户都增加读、写和执行权限:

chmod 777 file.txt

这意味着所有人都拥有读、写、执行权限。

4. 给文件增加执行权限

file.sh 文件添加执行权限:

chmod +x file.sh

如果你想将 /data/code 目录下的所有文件和子目录的权限都设置为 777,你可以使用 chmod 命令配合 -R(递归)选项来实现。

命令:

chmod -R 777 /data/code

sudo chmod -R 777 /code

注意:chmod 777 /code 只是给文件夹加权限而不是整个文件夹里面的文件

  • 分享
  • 添加收藏
  • 点赞 0
相关推荐
渣哥6 小时前
你真的知道 Java 里的 Exception 和 Error 有啥不同吗?
java
weixin_456904276 小时前
多模态大语言模型部署
java·python·语言模型
Orchestrator_me7 小时前
centos目录大小查看与清理
linux·运维·centos
叫我阿柒啊7 小时前
从Java全栈到前端框架:一场真实面试的深度技术探索
java·redis·微服务·typescript·vue3·springboot·jwt
珠峰下的沙砾7 小时前
keycloak中对接oidc协议时设置prompt=login
java·服务器
huangyuchi.7 小时前
【Linux系统】万字解析,进程间的信号
linux·服务器·信号处理·信号产生·linux信号·信号保存·操作系统如何运行
Joy-鬼魅8 小时前
通过 FinalShell 访问服务器并运行 GUI 程序,提示 “Cannot connect to X server“ 的解决方法
运维·服务器
几何心凉8 小时前
云电脑是什么?与普通电脑的区别在哪里?——天翼云电脑体验推荐
运维·负载均衡
电气铺二表姐137744166158 小时前
自发自用分布式光伏电站进线柜防逆流测控保护装置
运维·能源