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. 云服务器永不关机,除非维护或者不用了。
相关推荐
济61718 小时前
linux(第十四期)--Uboot移植(1)-- Ubuntu20.04
linux
奋斗的阿狸_198618 小时前
键盘组合键监听与 xterm 唤醒程序
linux·运维·服务器
小张成长计划..18 小时前
【linux】2:linux权限的概念
linux·运维·服务器
马踏岛国赏樱花18 小时前
Windows与Ubuntu双系统,挂载D/E盘到Ubuntu下时只能读的问题
linux·windows·ubuntu
ben9518chen18 小时前
Linux操作系统基本使用
linux·运维·服务器
一个平凡而乐于分享的小比特18 小时前
CPU上电启动到程序运行全流程详解
linux·uboot·根文件系统·cpu上电到启动
不像程序员的程序媛18 小时前
Linux开机自启动systemd配置
linux·运维·服务器
GREGGXU18 小时前
Could not load the Qt platform plugin “xcb“ in ““ even though it was found.
linux·qt
optimistic_chen18 小时前
【Redis 系列】持久化特性
linux·数据库·redis·分布式·中间件·持久化