Linux基本指令(1)

目录

[1. ls 指令](#1. ls 指令)

[2. pwd 命令](#2. pwd 命令)

[3.cd 指令](#3.cd 指令)

[4. touch 指令](#4. touch 指令)

[5. mkdir 指令](#5. mkdir 指令)

[6. rmdir 指令 && rm 指令](#6. rmdir 指令 && rm 指令)

[7. man 指令](#7. man 指令)

[8. cp 指令](#8. cp 指令)

[9. mv 指令](#9. mv 指令)

[10. echo指令](#10. echo指令)

[11. cat 指令](#11. cat 指令)

[11.1 cat 和 tac 命令的区别](#11.1 cat 和 tac 命令的区别)

[12. 知识重点提纲](#12. 知识重点提纲)

[12.1 备忘录](#12.1 备忘录)


正文开始:

1. ls 指令

语法: ls [选项] [⽬录或⽂件]

**功能:**对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信 息。

常⽤选项:

  • -a 列出目录下的所有⽂件,包括以 . 开头的隐含文件。
  • -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls ‒d 指定目录
  • -i 输出⽂件的 i 节点的索引信息。 如 ls ‒ai 指定⽂件
  • -k 以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件
  • -l 列出文件的详细信息
  • -n ⽤数字的 UID,GID 代替名称。 (介绍 UID, GID)
  • -F 在每个⽂件名后附上⼀个字符以说明该⽂件的类型,"*"表⽰可执⾏的普通⽂件;"/"表⽰ ⽬录;"@"表⽰符号链接;"|"表⽰FIFOs;"="表⽰套接字(sockets)。(⽬录类型识别)
  • -r 对⽬录反向排序
  • -t 以时间排序
  • -s 在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
  • -R 列出所有⼦⽬录下的⽂件。(递归)
  • -1 ⼀⾏只输出⼀个⽂件。
cpp 复制代码
# 显示当前目录下的可见文件和目录
ls

# 显示所有文件(包括隐藏文件)
ls -a

# 长格式显示所有文件  
ls -a -l
如:
[whb@bite-alicloud test]$ ls -a -l
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 .
drwx------ 22 whb whb 4096 Jan 11 14:21 ..
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt

# 长格式显示所有文件
# 选项组合:-a -l = -al
ls -al = ls -a -l

# 显示指定目录
ls /root/path1/path2 -a -d

权限解释:drwxrwxr-x 为例:

cpp 复制代码
d rwx rwx r-x
↑ ↑   ↑   ↑
│ │   │   └─ 其他用户权限:读、执行
│ │   └─ 组权限:读、写、执行  
│ └─ 所有者权限:读、写、执行
└─ 文件类型:d=目录

文件类型:

  • -:普通文件
  • d:目录
  • l:符号链接
  • c:字符设备文件
  • b:块设备文件
  • s:套接字文件
  • p:管道文件

权限位:

  • r:读权限(4)
  • w:写权限(2)
  • x:执行权限(1)
  • -:无对应权限

2. pwd 命令

语法: pwd

**功能:**显示用户当前所在的⽬录

常⽤选项:无

3.cd 指令

语法: cd ⽬录名

**功能:**改变⼯作⽬录。将当前⼯作⽬录改变到指定的⽬录下

Linux理论知识:路径的认识

  • Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件
  • 其中普通⽂件⼀定是⽬录树的叶⼦节点
  • ⽬录可能是叶⼦(空⽬录), 也可能是路上节点
  • 理解路径存在的意义: 树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性
  • 绝对路径:⼀般从/开始,不依赖其他⽬录的定位⽂件的⽅式
  • 相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式
  • 绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤
  • 相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多

Linux的文件结构是一颗从根目录 / 开始的一个多叉树,如下图所示:

cpp 复制代码
# 返回上级⽬录  
cd ..

# 绝对路径定位⽬录或者⽂件
cd /home/whb/test

# 相对路径定位⽬录或者⽂件
cd ../temp/

# 每⼀次新建⼀个⽤⼾都会在/home⽬录下为新⽤⼾创建新的⼯作⽬录,⽬录以新⽤⼾名称命名
# root⽤⼾在安装操作系统的时候,就已经内置了⼯作⽬录: /root
ls /home

# 快速进⼊⾃⼰的家⽬录
cd ~

# 直接可以回退到最近⼀次所处的⽬录
cd -

绝对路径示例:

cpp 复制代码
/home/whb/Documents/report.pdf  # 完整的路径
/usr/bin/ls                     # 系统命令的完整路径
/etc/passwd                     # 系统配置文件的完整路径

相对路径示例:

cpp 复制代码
# 假设当前在 /home/whb
Documents/report.pdf            # 相对于当前目录
./test.txt                      # 当前目录下的文件
../other_user/                  # 上级目录中的其他用户目录
../../var/log/                  # 向上两级再进入var/log

4. touch 指令

语法: touch [选项]... ⽂件...

功能: 新建⼀个不存在的文件或者touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间。

常⽤选项:

  • -a : change only the access time
  • -c : change only the modification time

5. mkdir 指令

语法: mkdir [选项] dirname...

功能: 在当前⽬录下创建⼀个名为 "dirname"的目录

常用选项:

  • -p/--parents: 可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多个⽬录
cpp 复制代码
# 创建普通空⽬录
mkdir mydir

# 递归建⽴多个⽬录,创建指定路径
mkdir -p path1/path2/path3/path4

# tree命令是⼀个递归以树状结构显⽰指定⽬录的命令,如果没有安装
# 如果当前⽤⼾是root: yum install -y tree (因为现在开始⽤的都是root,所以推荐这个⽤
法)
# 如果当前⽤⼾是普通⽤⼾: sudo yum install -y tree (后⾯讲讲完vim,⼤家才能将⾃⼰添
加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)

6. rmdir 指令 && rm 指令

1. rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令

语法: rmdir [-p] [dirName]

适用对象 :具有当前目录操作权限的所有使⽤者

功能:删除空目录

常用选项:

  • -p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。

2. rm 命令可以同时删除文件目录

语法: rm [-f-i-r-v] [dirName/dir]

适用对象:所有使⽤者

**功能:**删除⽂件或⽬录

常用选项:

  • -f 即使⽂件属性为只读(即写保护),亦直接删除
  • -i 删除前逐⼀询问确认
  • -r 删除⽬录及其下所有⽂件

若目录结构为:

cpp 复制代码
test/
├── dir/          (目录)
├── file.txt      (文件)
├── mydir/        (空目录)
├── newFile.txt   (文件)
└── path1/        (目录)
    └── path2/
        └── path3/
            └── path4/
cpp 复制代码
# 检查并删除空目录_注意rmdir只能删除空目录
rmdir mydir

# 使用 -p 选项删除路径
rmdir -p path1/path2/path3/path4
说明:删除顺序:path4 → path3 → path2 → path1,只要每个目录在删除后变为空,就会继续向上删除

# 指定路径中有不为空的路径,便⽆法删除
rmdir -p path1/path2/path3/path4
说明:若现在 path1 和 path2 中都有文件,则删除到path2会失败

7. man 指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助

语法: man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助 num 只在第num章节查找
  • -a 将所有章节的都显⽰出来,⽐如 man printf 它缺省从第⼀章开始搜索,知道就停⽌,⽤a选 项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕
    man手册分为9章(不同系统可能会有差别):
  • 1 是普通的命令
  • 2 是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)
  • 3 是库函数,如printf,fread4是特殊⽂件,也就是/dev下的各种设备⽂件
  • 4 略
  • 5 是指⽂件的格式,⽐如passwd, 就会说明这个⽂件中各个字段的含义
  • 6 是给游戏留的,由各个游戏⾃⼰定义
  • 7 是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
  • 8 是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
  • 9 略
cpp 复制代码
# 查看printf指令(没错,printf也是⼀个指令)
man printf

# 查看系统调⽤,默认没有这个指令,man就⾃动去2号⼿册查找
man fork

# 查看系统调⽤
man 2 frok

# 查看C库函数
man 3 printf

# 查看man⼿册⾃⼰
man man

8. cp 指令

语法: cp [选项] 源⽂件或⽬录⽬标⽂件或⽬录

**功能:**复制⽂件或⽬录

说明:

  • cp指令⽤于复制⽂件或⽬录
  • 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中

常⽤选项:

  • -f 或 --force 强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在
  • -i 或 --interactive 覆盖⽂件之前先询问⽤⼾
  • -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理
cpp 复制代码
# 复制单个文件
cp file1.txt file2.txt        # 将file1复制为file2
cp file1.txt /home/user/       # 复制file1到指定目录

# 复制多个文件到目录
cp file1.txt file2.txt dir/    # 复制多个文件到dir目录
cp *.txt backup/              # 复制所有txt文件到backup目录

# 复制目录需要 -r 或 -a 选项
cp -r dir1 dir2              # 递归复制目录
cp -r /home/user/docs backup/ # 复制整个docs目录

# cp普通⽂件
cp myfile.txt myfile-backup.txt

# 将多个⽂件拷⻉到指定路径下
# 将匹配的所有文件复制到 dir 目录
cp *.txt dir    # *表⽰通配符,匹配所有.txt结尾的⽂件名

# cp如果⽬标⽂件存在,就覆盖
# 默认情况下cp直接覆盖,无提示
cp myfile.txt myfile-backup.txt

# 拷⻉前询问
cp -i myfile.txt myfile-backup.txt

# 递归强制拷⻉整个⽬录
cp -rf test test-backup

注意:cp指令在复制到已存在的目标文件时,会清空并覆盖目标文件的原始内容。

cpp 复制代码
# 默认行为

# 假设 target.txt 已有内容 "旧内容"
echo "旧内容" > target.txt

# source.txt 有内容 "新内容"
echo "新内容" > source.txt

# 执行 cp 后
cp source.txt target.txt

# 现在 target.txt 的内容变成 "新内容"
# 原始内容 "旧内容" 被完全清空替换

当目标文件已存在时,cp 的执行流程

  1. 打开目标文件(如果存在,直接打开,不删除)
  2. 清空目标文件内容(将文件截断为0字节)
  3. 将源文件内容写入目标文件
  4. 设置相应的文件属性

9. mv 指令

mv命令是move的缩写,是用于移动或重命名文件和目录的命令,经常用来备份文件或者目录

语法: mv [选项] 源⽂件或⽬录 ⽬标⽂件或⽬录

功能:

  • 视mv命令中第⼆个参数类型的不同(是⽬标⽂件还是⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
  • 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录名),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
  • 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。

常用选项:

  • -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
  • -i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖!
cpp 复制代码
# 更改名称
# yourfile.txt为不存在的文件
mv myfile.txt yourfile.txt   # 重命名文件:myfile.txt -> yourfile.txt

# 如果当前路径存在同名⽂件,改名即覆盖
# 移动并覆盖:yourfile.txt -> myfile.txt(覆盖已有的myfile.txt)
# 结果,yourfile.txt消失,myfile.txt保留(被覆盖)
mv yourfile.txt myfile.txt   

# 如果当前路径存在同名⽂件,改名前可以添加i选项,让系统提出警告供⽤⼾做选择
mv -i yourfile.txt myfile.txt

# 将 myfile.txt 移动到 temp 目录内
mv myfile.txt temp

# 将 temp 目录 移动到父目录(上级目录)
mv temp ../
cpp 复制代码
对目录进行mv指令时,带/和不带/的区别

# 情况1:目录名不带斜杠
mv dir1 dir2
# 含义:
# - 如果 dir2 不存在:重命名 dir1 为 dir2
# - 如果 dir2 存在且是目录:将 dir1 移动到 dir2 目录内
# - 如果 dir2 存在且是文件:报错

# 情况2:目录名带斜杠
mv dir1/ dir2
# 含义同上,dir1/ 明确表示这是一个目录

注意:mv 命令移动目录时,可以直接输入目录名称而不加 /,而且这是一个很好的习惯

注意事项:

  • 覆盖不可逆:被覆盖的文件无法恢复

  • 跨文件系统:移动目录时,需要目标位置有足够权限

  • 通配符使用 :小心使用**mv ***,可能移动隐藏文件

与cp的关键区别:

10. echo指令

cpp 复制代码
# 将双引号中的内容看成字符串直接打印出来,类似与 printf。
# echo 显示输出时会默认加上换行符,即默认输出后会换行
echo "hello world"

# 将双引号中的内容,写入一个普通文件 (重定向操作,输出重定向)
# 若后续文件不存在,新建之;若存在,则清空再写入
echo "hello world" > hello.txt

# 追加重定向操作, 向普通文件中继续写入hello world而不会事先清空文件
echo "hello world" >> hello.txt

将双引号中的内容看成字符串直接打印出来,类似与 printf。

11. cat 指令

语法: cat [选项] [⽂件]

功能: 显示⽬标⽂件里面的内容

常用选项:

  • -b 对⾮空输出⾏编号,空⾏不做编号
  • -n 对输出的所有⾏编号
  • -s 不输出多⾏空⾏
cpp 复制代码
# 先使用 while 循环生成文件
cnt=0; while [ $cnt -le 20 ]; do echo "hello bite"; let cnt++; done > temp.txt

# 基本查看文件内容
cat temp.txt

# 使用 -b 选项(对非空行编号),只对非空行进行编号,空行不会被编号
cat -b temp.txt
示例:
# 给非空行编号
# 1 Line1
# 
# 2 Line2
# 
# 
# 3 Line3

# 使用-n 选项(对所有行编号)
cat -n temp.txt
假设文件中存在空行,则示例输出为:
1 hello bite
2 hello bite
3 hello bite
4        (空行,但有编号4)
5        (空行,但有编号5)
6        (空行,但有编号6)
7 hello bite
8 hello bite
9        (空行,但有编号9)
...


# 将多个连续空行压缩为单个空行
cat -s temp.txt
示例:
hello bite
hello bite
hello bite
         (这里原本多个空行被压缩为一行)
hello bite
hello bite
         (这里原本多个空行被压缩为一行)
hello bite
...

其他使用技巧:

cpp 复制代码
# 查看多个文件
cat file1.txt file2.txt

# 创建新文件
cat > newfile.txt
# 输入内容...
# 按 Ctrl+D 结束

# 追加内容到文件
cat >> existing.txt
# 输入追加内容...
# 按 Ctrl+D 结束

# 组合文件
cat file1.txt file2.txt > combined.txt

# 组合使用选项
cat -ns temp.txt  # 压缩空行并给所有行编号

11.1 cat 和 tac 命令的区别

  • cat: 将目标文件里的内容,从头到尾顺着显示。
  • **tac:**将目标文件里的内容,从尾到头逆着显示。

12. 知识重点提纲

  • 目录==文件夹
  • 如果建立一个空文件,改文件也要占用磁盘空间,文件=内容+属性
  • linux的文件结构是一棵从根目录/ 开始的一棵多叉树。a.叶子节点:一定是普通文件或者空目录 b. 非叶子节点:一定是一个非空目录
  • 绝对路径
  • 相对路径
  • 命令其实就是文件。:命令的本质==可 执行的文件==我们写的C/C++程序
  • 上下键,可以寻找历史命令
  • 在 linux 系统中,一切皆文件!:如我们自己新建文件操作、键盘操作、显示器操作,**本质都是文件操作。**注意文件必须先被打开才能进行操作

12.1 备忘录

  1. 一台linux机器可以被多个用户使用

    添加使用用户

    adduser user1
    password

    注意输密码时,密码不回显

    重置目标用户密码,假设用户名为user1
    1.先切换到root用户
    2. passwd user1
    按提示输入两次新密码

    用户删除
    userdel -r user1

  2. xshell界面:全屏、退出全屏(Alt + Enter)

3.若出现以下情况:

可输入: yum install -y tree (centos版本安装tree命令)。apt install -y tree (Ubuntu版本)

  1. 如果在命令行中,出现了异常情况,统一尝试 ctrl + c 来终止异常

  2. 若卡在nano 指令里了 直接ctrl + x之后回车就可解决

  3. 进入vim 后如何退出:输入方式改成大写模式 + zz; shift+ zz

  4. 几个热键:

  • ctrl + c :终止异常任务
  • 键盘上下键 :查看历史命令
  • ctrl + r : 搜索历史命令
  • ctrl + d :退出当前用户
  • Tab键: 若某个命令文件拼写时,拼出一半按Tab键会给出提示
  1. 云服务器永不关机,除非维护或者不用了。
相关推荐
无垠的广袤9 分钟前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚18 分钟前
Kubectl 命令记录
linux·运维·服务器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.29 分钟前
Keepalived单播模式配置与实战指南
linux·服务器·负载均衡
IDC02_FEIYA34 分钟前
Linux文件搜索命令有哪些?Linux常用命令之文件搜索命令find详解
linux·运维·服务器
江畔何人初39 分钟前
kubectl apply与kubectl create的区别
linux·运维·云原生
M158227690551 小时前
四通道全能组网!SG-Canet-410 CAN转以太网网关,破解工业CAN通信瓶颈
linux·运维·服务器
誰能久伴不乏1 小时前
【Qt实战】工业级多线程串口通信:从底层协议设计到完美收发闭环
linux·c++·qt
bjxiaxueliang2 小时前
一文解决蓝牙连接难题:Ubuntu命令行蓝牙强制配对
linux·ubuntu·蓝牙连接命令
浪客灿心2 小时前
Linux库制作与原理
linux·运维·服务器
成为你的宁宁2 小时前
【Linux Swap 交换分区:定义、作用与操作指南】
linux·交换分区