❤️新版Linux零基础快速入门到精通——第二部分❤️

❤️新版Linux零基础快速入门到精通——第二部分❤️

  • 非科班的我!Ta!还是来了~~~
  • 2. Linux基础命令
    • 2.1 类Unix系统目录结构
    • 2.2 Linux目录结构
      • 2.2.1 Linux用户目录
      • 2.2.2 Linux目录练习
    • 2.3 Linux 命令入门
      • 2.3.1 命令基础
        • 2.3.1.1 help
        • 2.3.1.2 man(manual)
        • 2.3.1.3 tab键自动补全
        • 2.3.1.4 history游览历史
        • 2.3.1.5 命令行中的ctrl组合键
      • 2.3.2 列出目录的内容:ls
      • 2.3.3 ls命令的参数和选项
        • 2.3.3.1 Linux 命令 ls 和 ll 的使用方法
      • 2.3.4 cd-pwd 命令
        • 2.3.4.1 cd 命令
        • 2.3.4.2 pwd 命令
        • 2.3.4.3 相对路径和绝对路径
          • 2.3.4.3.1 相对路径
          • 2.3.4.3.2 绝对路径
          • 2.3.4.3.3 何时使用相对路径和绝对路径
          • 2.3.4.3.4 示例
          • 2.3.4.3.5 总结
      • 2.3.5 特殊路径符
      • 2.3.6 mkdir 命令(创建文件夹)
      • 2.3.7 文件内容查看命令
        • 2.3.7.1 基本显示:cat、tac
        • 2.3.7.2 显示行号:nl
        • 2.3.7.3 分屏显示:more、less
        • 2.3.7.4 取首尾n行:head、tail
      • 2.3.8 文件管理
        • 2.3.8.1 输出重定向:>
        • 2.3.8.2 管道:|
        • 2.3.8.3 清屏:clear
        • 2.3.8.4 切换工作目录: cd
        • 2.3.8.5 显示当前路径:pwd
        • 2.3.8.6 创建目录:mkdir
        • 2.3.8.7 删除文件:rm
        • 2.3.8.8 建立链接文件:ln
        • 2.3.8.9 文本搜索:grep
        • 2.3.8.10 查找文件:find
        • 2.3.8.11 拷贝文件:cp
        • 2.3.8.12 移动文件:mv
        • 2.3.8.13 归档管理:tar
        • 2.3.8.14 文件压缩解压:gzip、bzip2
        • 2.3.8.15 文件压缩解压:zip、unzip
        • 2.3.8.16 查看命令位置:which
        • 2.3.8.17 数量统计:wc
        • 2.3.8.18 打印操作:echo
        • 2.3.8.19 编辑操作:vi vim
          • 2.3.8.19.1 vi/vim 的使用
          • 2.3.8.19.2 命令模式
          • 2.3.8.19.3 输入模式
          • 2.3.8.19.4 底线命令模式

在这里插入图片描述
在这里插入图片描述

非科班的我!Ta!还是来了~~~

Linux一开始就不是为桌面用户准备的,林纳斯自己本身就是一个Unix极客,他设计Linux就参考了Unix的设计哲学,也就是说Linux从一开始就是为专业用户设计的。 不管是Unix操作系统也好,还是Linux操作系统也好,本质上都是为了提高生产效率。Linux的设计者林纳斯,自己就是一个Unix极客,他是不满意Unix当时的版权问题,于是他吸收了很多Unix的优点,在这个基础上设计了Linux操作系统。Linux的设计哲学,让Linux很多场景下都需要命令行操作,并且Linux设计者并不是很鼓励大家使用桌面,或者更合理的说法是,Linux的设计初衷是即使你要用一个桌面,也希望你能掌握好各种命令行操作,Vim/Emacs、GCC等各种软件,都更加鼓励大家用命令行操作

Linux诞生的时机吧,运气也确实不太好,我们且不说苹果的Mac OS X,Linux在1991年的时候由林纳斯开发,内核开发出来之后,1991年10月5日,林纳斯将Linux V0.01版内核源代码释放出来供众多的开发者进行完善,一直到93年才有10万用户,这些用户也基本都是程序员,96年的时候也才350万用户。这个发展其实是有点太慢了,跟Windows、MacOS动辄几千万、上亿的用户没办法比。言归正传,Linux只是一门基本计算机技能,它对学习者的背景、知识结构、年龄都没啥要求,只要坚持不懈的进步,Linux没啥学不会的。当然在学习中总会遇到瓶颈,这个时候就需要自我调节、坚持下去。学习Linux有大量的东西需要记忆,如果你懒得背、懒得学习、懒得去搞清 ,那当然会觉得难学了。还是那句话,脚踏实地,总会有所收获。

❤️积极的学习心态意味着好的开始❤️

“Linux这个操作系统难用吗?难!一片黑漆漆的命令行窗口闪烁着谜一样的光标,本来英语就是老大难,现在竟然让我背那么多命令?”“Linux这个操作系统难吗?简单,纯命令行设计、个性化强、工作效率高、黑漆漆的窗口天生自带神秘感。”

2. Linux基础命令

2.1 类Unix系统目录结构

Unix没有盘符这个概念,只有一个根目录/,所有文件都在它下面

在这里插入图片描述
在这里插入图片描述

2.2 Linux目录结构

Window

在这里插入图片描述

Linux是一个树形结构,没有盘符的概念

在这里插入图片描述

  • /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
  • /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
  • /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
  • /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
  • /opt:给主机额外安装软件所摆放的目录。
  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
  • /root:系统管理员root的家目录。
  • /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
  • /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
  • /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

在这里插入图片描述

2.2.1 Linux用户目录

位于/home/user,称之为用户工作目录或家目录,表示方式:

/home/user
~

从/目录开始描述的路径为绝对路径,如:

cd /home
ls /usr

从当前位置开始描述的路径为相对路径,如:

cd ../../
ls abc/def

每个目录下都有...

  • .表示当前目录

  • .. 表示上一级目录,即父目录

  • 根目录下的...都表示当前目录

2.2.2 Linux目录练习

在这里插入图片描述

在这里插入图片描述

2.3 Linux 命令入门

2.3.1 命令基础

  • 命令行:即Linux终端
  • 命令:即Linux程序

在这里插入图片描述

命令格式:command [-options] [parameter]

command: 命令名; [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选 parameter: 传给命令的参数:可以是零个一个或多个

在这里插入图片描述

2.3.1.1 help

一般是linux命令自带的帮助信息

如:ls --help

2.3.1.2 man(manual)

man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明

该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。

例:man ls ; man 2 printf

man中各个section意义如下:

  1. Standard commands(标准命令)
  2. System calls(系统调用,如open,write)
  3. Library functions(库函数,如printf,fopen)
  4. Special devices(设备文件的说明,/dev下各种设备)
  5. File formats(文件格式,如passwd)
  6. Games and toys(游戏和娱乐)
  7. Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
  8. Administrative Commands(管理员命令,如ifconfig)

man是按照手册的章节号的顺序进行搜索的。

man设置了如下的功能键:

功能键功能
空格键显示手册页的下一屏
Enter键一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出man命令
h列出所有功能键
/word搜索word字符串
2.3.1.3 tab键自动补全

在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令

2.3.1.4 history游览历史

当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来

history保留了最近执行的命令记录,默认可以保留1000。

历史清单从0开始编号到最大值。

常见用法:

history N		显示最近N条命令
history -c		清除所有的历史记录
history -w  xxx.txt	保存历史记录到文本xxx.txt
2.3.1.5 命令行中的ctrl组合键
组合键解释
Ctrl+c结束正在运行的程序
Ctrl+d结束输入或退出shell
Ctrl+s暂停屏幕输出【锁住终端】
Ctrl+q恢复屏幕输出【解锁终端】
Ctrl+l清屏,【是字母L的小写】等同于Clear
ctrl+a当前光标到行首
ctrl+e当前光标到行尾
ctrl+u删除当前光标到行首
ctrl+k删除当前光标到行尾
Ctrl+y在光标处粘贴剪切的内容
Ctrl+r查找历史命令【输入关键字,就能调出以前执行过的命令】
Ctrl+t调换光标所在处与其之前字符位置,并把光标移到下个字符
Ctrl+x+u撤销操作
Ctrl+z转入后台运行

在这里插入图片描述

2.3.2 列出目录的内容:ls

作用:列出目录下的内容

ls [-a -l -h] [Linux路径]

当不适用选项和参数,直接使用ls命令本体,表示:以平铺形式列出文件夹和文件

Linux文件或者目录名称最长可以有265个字符,.代表当前目录,..代表上一级目录,以.开头的文件为隐藏文件,需要用 -a 参数才能显示。

当前工作目录:
在这里插入图片描述

在这里插入图片描述

2.3.3 ls命令的参数和选项

在这里插入图片描述

ls常用参数:

参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小

在这里插入图片描述

在这里插入图片描述

ls -a -l
ls -al
ls -la

列出的信息的含义:

img

ls支持通配符:

通配符含义
*文件代表文件名中所有字符
ls te*查找以te开头的文件
ls *html查找结尾为html的文件
?代表文件名中任意一个字符
ls ?.c只找第一个字符任意,后缀为.c的文件
ls a.?只找只有3个字符,前2字符为a.,最后一个字符任意的文件
[][”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
[abc]匹配a、b、c中的任意一个
[a-f]匹配从a到f范围内的的任意一个字符
ls [a-f]*找到从a到f范围内的的任意一个字符开头的文件
ls a-f查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用
\如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。
ls \*a找文件名为*a的文件
2.3.3.1 Linux 命令 ls 和 ll 的使用方法
  • ll:罗列出当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息 ,像Windows显示的详细信息。llls -l 的别名。相当于Windows里的快捷方式。可以理解为 llls -l 的功能是相同的, llls -l 的别名。

  • ls:仅罗列出当前文件名或目录名 就像Windows里的文件列表。

在这里插入图片描述

2.3.4 cd-pwd 命令

2.3.4.1 cd 命令

cd 即为change directory,意思是更改目录。

cd(Change Directory) 命令语法:

cd [Linux路径]

说明:切换当前目录至 [Linux路径]

实例:
(1)进入根目录

cd /

在这里插入图片描述

(2)进入 “home” 目录(直接cd,回车也能进入家目录)

cd ~

(3)进入上一次工作路径

cd -

在这里插入图片描述

(4)把上个命令的参数作为cd参数使用。

cd !$

(5)进入根目录下的root目录

 cd  /root

(6)进入上一层目录

cd  ..

在这里插入图片描述

2.3.4.2 pwd 命令

pwd是Print Working Directory的缩写,其功能是显示当前所在工作目录的全路径。主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径。

参数

-L: --logical,显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式),参考示例1。

-p:--physical,显示当前的路径,有连接文件时,不使用连接路径,直接显示连接文件所指向的文件,参考示例2。 当包含多层连接文件时,显示连接文件最终指向的文件,参考示例3。

--help:显示帮助信息。

--version:显示版本信息。

实例
(1)查看当前路径

pwd

(2)查看软链接的实际路径

pwd -P

在这里插入图片描述

在这里插入图片描述

2.3.4.3 相对路径和绝对路径
2.3.4.3.1 相对路径

相对路径是相对于当前工作目录的路径描述。它告诉系统如何从当前位置找到目标文件或目录。相对路径通常使用以下几种符号:

.:表示当前目录。例如,./file.txt表示当前目录中的文件。

..:表示上一级目录。例如,../parent_directory/file.txt表示上一级目录中的文件。

目录名:表示当前目录中的子目录。例如,subdir/file.txt表示当前目录下的子目录中的文件。

相对路径的优点在于它们相对简洁,但它们依赖于当前工作目录,因此可能在不同位置使用时产生不同的效果。

在这里插入图片描述

2.3.4.3.2 绝对路径

绝对路径是从根目录(root)开始的完整路径描述。它提供了文件或目录在文件系统中确切位置的详细信息,不受当前工作目录的影响。绝对路径通常以斜杠/开头,从根目录一直到目标文件或目录。

例如,/home/user/documents/file.txt是一个绝对路径,它明确指定了文件file.txt的位置。

绝对路径的优点在于它们始终指向相同的位置,不受当前工作目录的变化影响。这使得它们在脚本和配置文件中非常有用,因为它们的行为是可预测的。

在这里插入图片描述

2.3.4.3.3 何时使用相对路径和绝对路径
  • 相对路径:通常在当前工作目录不会改变的情况下使用相对路径。手动浏览文件系统或在脚本中执行相对路径的命令时,相对路径是有用的。

  • 绝对路径:在需要确保文件或目录位置始终一致的情况下使用绝对路径。这对于脚本、配置文件和需要完全确定位置的任务非常重要。

在这里插入图片描述

2.3.4.3.4 示例

使用相对路径查看当前目录下的文件:

cd /home/user/documents
cat ./file.txt

使用绝对路径查看相同文件:

cat /home/user/documents/file.txt

在这里插入图片描述

2.3.4.3.5 总结

相对路径和绝对路径是在Linux中指定文件和目录位置的两种方式。相对路径基于当前工作目录,而绝对路径从根目录开始。

在这里插入图片描述

2.3.5 特殊路径符

  • .:表示当前目录,比如:cd ./Desktop表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致
  • ..:表示上一级目录,比如: cd..即可切换到上一级目录,cd../.. 切换到上二级的目录
  • ~:表示HOME目录,比如: cd ~即可切换到HOME目 录或cd ~/Desktop,切换到HOME内的Desktop目录

在这里插入图片描述

2.3.6 mkdir 命令(创建文件夹)

mkdir可以创建一个新的目录。

注意:新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。

语法:

mkdir [-mp] 目录名称

选项与参数:

-m :指定被创建目录的权限,而不是根据默认权限 (umask) 设定
-p :递归创建所需要的目录
实例:-p递归创建目录:

[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

在这里插入图片描述
在这里插入图片描述

2.3.7 文件内容查看命令

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示
  • nl 显示的时候,顺道输出行号
  • more 一页一页的显示文件内容
  • lessmore 类似,但可以往前翻页
  • head 只看头几行
  • tail 只看尾巴几行

在这里插入图片描述

2.3.7.1 基本显示:cat、tac

语法:

cat [-AbEnTv]

选项与参数:

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

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

[root@VM_0_9_centos ~]# cat -b /etc/issue
     1  \S
     2  Kernel \r on an \m
[root@VM_0_9_centos ~]# tac /etc/issue
Kernel \r on an \m
\S

在这里插入图片描述

2.3.7.2 显示行号:nl

语法:

nl [-bnw] 文件

选项与参数:

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

在这里插入图片描述

2.3.7.3 分屏显示:more、less

more运行时可以输入的命令有:

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

less运行时可以输入的命令有:

空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;

在这里插入图片描述

2.3.7.4 取首尾n行:head、tail

head取出文件前面几行

语法:

head [-n number] 文件 

选项与参数:

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

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

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

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

tail取出文件后面几行

语法:

tail [-n number] 文件 

选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config

在这里插入图片描述
总结一下:

touch Linux路径
- 作用:创建文件

cat Linux路径
- 作用:查看文件内容

more Linux路径
- 作用:查看文件内容(支持翻页)(空格翻页,q退出)

在这里插入图片描述

2.3.8 文件管理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.3.8.1 输出重定向:>

可将本应显示在终端上的内容保存到指定文件中。

如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )

注意: >输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。

在这里插入图片描述

在这里插入图片描述

2.3.8.2 管道:|

管道:一个命令的输出可以通过管道做为另一个命令的输入。

| 的左右分为两端,从左端写入到右端。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.3.8.3 清屏:clear

clear作用为清除终端上的显示(类似于DOS的cls清屏功能),快捷键:Ctrl + l ( “l” 为字母 )。

在这里插入图片描述

2.3.8.4 切换工作目录: cd

Linux所有的目录和文件名大小写敏感

cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。

命令含义
cd相当于cd ~
cd ~切换到当前用户的主目录(/home/用户目录)
cd .切换到当前目录
cd ..切换到上级目录
cd -进入上次所在的目录

在这里插入图片描述

2.3.8.5 显示当前路径:pwd
2.3.8.6 创建目录:mkdir

在这里插入图片描述

2.3.8.7 删除文件:rm

语法rm [-r -f] 参数1 参数2 参数3...

参数与参数之前是空格隔开的

可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。

常用参数及含义如下表所示:

参数含义
-i以进行交互式方式执行
-f强制删除,忽略不存在的文件,无需提示(在管理员身份的时候,会提示 因为管理员的权限太大了)
-r递归地删除目录下的内容,删除文件夹时必须加此参数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3.8.8 建立链接文件:ln

软链接:ln -s 源文件 链接文件

硬链接:ln 源文件 链接文件

软链接类似于Windows下的快捷方式,如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。

硬链接只能链接普通文件不能链接目录。 两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。

在这里插入图片描述

2.3.8.9 文本搜索:grep
itheima is a brand of itcast.
itcast stock code is 003032.

在这里插入图片描述

Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式为:

grep [-选项] '搜索内容串' 文件名

grep命令中输入字符串参数时,最好引号双引号括起来。例如:grep 'a' 1.txt

在当前目录中,查找前缀有test字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

在这里插入图片描述

以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:

在这里插入图片描述

反向查找。前面各个例子是查找并打印出符合条件的行,通过 -v 参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含 test 的行,此时,使用的命令为:

$ grep -v test* #查找文件名中包含test 的文件中不包含test 的行  
testfile1:helLinux!  
testfile1:Linis a free Unix-type operating system.  
testfile1:Lin  
testfile_1:HELLO LINUX!  
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  
testfile_1:THIS IS A LINUX TESTFILE!  
testfile_2:HELLO LINUX!  
testfile_2:Linux is a free unix-type opterating system.  

在这里插入图片描述

2.3.8.10 查找文件:find

常用用法:

命令含义
find ./ -name test.sh查找当前目录下所有名为test.sh的文件
find ./ -name ‘*.sh’查找当前目录下所有后缀为.sh的文件
find ./ -name “[A-Z]*”查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M查找在/tmp 目录下等于2M的文件
find /tmp -size +2M查找在/tmp 目录下大于2M的文件
find /tmp -size -2M查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M查找当前目录下大于4k,小于5M的文件
find ./ -perm 0777查找当前目录下权限为 777 的文件或目录

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:

find path -option [ -print ] [ -exec -ok command ] {} \;

常用参数说明 :

  • -perm xxxx:权限为 xxxx的文件或目录
  • -user: 按照文件属主来查找文件。
  • -size n : n单位,b:512位元组的区块,c:字元数,k:kilo bytes,w:二个位元组
  • -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
  • -amin n : 在过去 n 分钟内被读取过
  • -anewer file : 比文件 file 更晚被读取过的文件
  • -atime n : 在过去n天内被读取过的文件
  • -cmin n : 在过去 n 分钟内被修改过
  • -cnewer file :比文件 file 更新的文件
  • -ctime n : 在过去n天内被修改过的文件
  • -empty : 空的文件
  • -gid n or -group name : gid 是 n 或是 group 名称是 name
  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
  • -type 查找某一类型的文件:
    • b - 块设备文件
    • d - 目录
    • c - 字符设备文件
    • p - 管道文件
    • l - 符号链接文件
    • f - 普通文件
  • -exec 命令名{} \ (注意:“}”和“\”之间有空格)

find实例:

显示当前目录中大于20字节并以.c结尾的文件名

find . -name "*.c" -size +20c 

将目前目录其其下子目录中所有一般文件列出

find . -type f

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

find /var/log -type f -mtime +7 -ok rm {} \;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -type f -perm 644 -exec ls -l {} \;

查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

find / -type f -size 0 -exec ls -l {} \;

从根目录查找类型为符号链接的文件,并将其删除:

find / -type l -exec rm -rf {} \

从当前目录查找用户tom的所有文件并显示在屏幕上

find . -user tom

在当前目录中查找所有文件以.doc结尾,且更改时间在3天以上的文件,找到后删除,并且给出删除提示

find . -name *.doc  -mtime +3 -ok rm {} \;

在当前目录下查找所有链接文件,并且以长格式显示文件的基本信息

find . -type l -exec ls -l {} \;

在当前目录下查找文件名有一个小写字母、一个大写字母、两个数字组成,且扩展名为.doc的文件

find . -name '[a-z][A-Z][0-9][0-9].doc'

在这里插入图片描述

2.3.8.11 拷贝文件:cp

cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。

常用选项说明:

选项含义
-a该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f已经存在的目标文件而不提示
-i交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v显示拷贝进度
-l创建硬链接(hard link),而非复制文件本身
-s复制成为符号链接 (symbolic link),相当于批量创建快捷方式
-u若 destination 比 source 旧才升级 destination !
cpvim_configure/ code/ -ivr 把文件夹 vim_configure 拷贝到 code 目录里。

在这里插入图片描述

在这里插入图片描述

2.3.8.12 移动文件:mv

mv命令用来移动文件或目录,也可以给文件或目录重命名。

语法:mv 参数1 参数2

常用选项说明:

选项含义
-f禁止交互式操作,如有覆盖也不会给出提示
-i确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v显示移动进度

在这里插入图片描述

文件夹也可以

在这里插入图片描述

2.3.8.13 归档管理:tar

此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar使用格式 tar [参数] 打包文件名 文件

tar命令参数很特殊,其参数前面可以使用“-”,也可以不使用。

常用参数:

参数含义
-c生成档案文件,创建打包文件
-v列出归档解档的详细过程,显示进度
-f指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t列出档案中包含的文件
-x解开档案文件

注意:除了f需要放在参数的最后,其它参数的顺序任意。

python@ubuntu:~/test$ tar -cvf test.tar 1.txt 2.txt 3.txt 
1.txt
2.txt
3.txt
python@ubuntu:~/test$ ll
总用量 32
drwxrwxr-x  2 python python  4096 1121 14:02 ./
drwxr-xr-x 31 python python  4096 1121 13:34 ../
-rw-rw-r--  1 python python    51 120  2017 1.txt
-rw-rw-r--  1 python python    55 120  2017 2.txt
-rw-rw-r--  1 python python    51 120  2017 3.txt
-rw-rw-r--  1 python python 10240 1121 14:02 test.tar
python@ubuntu:~/test$ rm -rf *.txt
python@ubuntu:~/test$ ll
总用量 20
drwxrwxr-x  2 python python  4096 1121 14:03 ./
drwxr-xr-x 31 python python  4096 1121 13:34 ../
-rw-rw-r--  1 python python 10240 1121 14:02 test.tar
python@ubuntu:~/test$ tar -xvf test.tar 
1.txt
2.txt
3.txt
python@ubuntu:~/test$ ls *.txt
1.txt  2.txt  3.txt

在这里插入图片描述

2.3.8.14 文件压缩解压:gzip、bzip2

targzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz

gzip使用格式如下:

gzip  [选项]  被压缩文件

常用选项:

选项含义
-d解压文件
-r压缩文件
python@ubuntu:~/test$ ll *.tar*
-rw-rw-r-- 1 python python 10240 1125 07:39 test.tar
python@ubuntu:~/test$ gzip -r test.tar test.tar.gz  ==>或者:gzip test.tar
python@ubuntu:~/test$ ll *.tar*
-rw-rw-r-- 1 python python 139 1125 07:39 test.tar.gz
python@ubuntu:~/test$ gzip -d test.tar.gz
python@ubuntu:~/test$ ll *.tar*  
-rw-rw-r-- 1 python python 10240 1125 07:39 test.tar

tar命令中-z选项可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。

压缩用法:tar zcvf 压缩包包名 文件1 文件2 …

例如: tar zcvf test.tar.gz 1.c 2.c 3.c 4.c1.c 2.c 3.c 4.c 压缩成 test.tar.gz

python@ubuntu:~/test/code$ ls
1.c  2.c  3.c  4.c
python@ubuntu:~/test/code$ tar zcvf test.tar.gz 1.c 2.c 3.c 4.c 

python@ubuntu:~/test/code$ ls
1.c  2.c  3.c  4.c  test.tar.gz
python@ubuntu:~/test/code$ tar -zcvf new.tar.gz 1.c 2.c 3.c 4.c        

python@ubuntu:~/test/code$ ls
1.c  2.c  3.c  4.c  new.tar.gz  test.tar.gz

解压用法: tar zxvf 压缩包包名

例如:

python@ubuntu:~/test/code$ ls
new.tar.gz  test.tar.gz
python@ubuntu:~/test/code$ tar zxvf new.tar.gz 
1.c
2.c
3.c
4.c
python@ubuntu:~/test/code$ ls
1.c  2.c  3.c  4.c  new.tar.gz  test.tar.gz

解压到指定目录:-C (解压时可以不指定-z选项)

python@ubuntu:~/test/code$ ls number/     
python@ubuntu:~/test/code$ tar xvf test.tar.gz -C number/     

python@ubuntu:~/test/code$ ls number/                    
1.c  2.c  3.c  4.c

bzip2命令跟gzip用法类似

压缩用法:tar jcvf 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)

解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)

在这里插入图片描述

2.3.8.15 文件压缩解压:zip、unzip

通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。

压缩文件:zip [-r] 目标文件(没有扩展名) 源文件

解压文件:unzip -d 解压后目录文件 压缩文件

python@ubuntu:~/test$ ls
1.txt  2.txt  3.txt  test.tar
python@ubuntu:~/test$ zip myzip *.txt
  adding: 1.txt (stored 0%)
  adding: 2.txt (stored 0%)
  adding: 3.txt (stored 0%)
python@ubuntu:~/test$ ls
1.txt  2.txt  3.txt  myzip.zip  test.tar
python@ubuntu:~/test$ rm -f *.txt *.tar
python@ubuntu:~/test$ ls
myzip.zip
python@ubuntu:~/test$ unzip myzip.zip 
Archive:  myzip.zip
 extracting: 1.txt                   
 extracting: 2.txt                   
 extracting: 3.txt                   
python@ubuntu:~/test$ ls
1.txt  2.txt  3.txt  myzip.zip
python@ubuntu:~/test$ unzip -d dir myzip.zip 
Archive:  myzip.zip
 extracting: dir/1.txt               
 extracting: dir/2.txt               
 extracting: dir/3.txt               
python@ubuntu:~/test$ ls
1.txt  2.txt  3.txt  dir  myzip.zip

在这里插入图片描述

2.3.8.16 查看命令位置:which

命令本身是程序

python@ubuntu:~$ which ls
/bin/ls
python@ubuntu:~$ which sudo
/usr/bin/sudo

在这里插入图片描述
在这里插入图片描述

2.3.8.17 数量统计:wc

作用:
可以通过wc命令统计文件的行数、单词数量等

语法:

wc [-c-m-l-w] 文件路径

选项与参数

  • 选项,-c,统计bytes数量
  • 选项,-m,统计字符数量
  • 选项,-l,统计行数
  • 选项,-w,统计单词数量
  • 参数,文件路径

被统计的文件,可作为内容输入

在这里插入图片描述
在这里插入图片描述

2.3.8.18 打印操作:echo

可以使用echo命令在命令行内输出指定内容

语法echo 输出的内容

无需选项,只有一个参数,表示要输出的内容,复杂内容可以用""包围

演示:
在终端上显示: Hello Linux

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3.8.19 编辑操作:vi vim

vi vim是visual interface的简称,是Linux中最经典的文本编辑器

同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。

vim是vi的加强版本,兼容vi的所有指令。不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

在这里插入图片描述

2.3.8.19.1 vi/vim 的使用

基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。

2.3.8.19.2 命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

以下是普通模式常用的几个命令:

  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • a – 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O – 在当前行的上方插入一个新行,并进入插入模式。
  • dd – 剪切当前行。
  • yy – 复制当前行。
  • p(小写) – 粘贴剪贴板内容到光标下方。
  • P(大写)-- 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

2.3.8.19.3 输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式
2.3.8.19.4 底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
  • :q!:强制退出Vim编辑器,不保存修改。
  • ESC 键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:
在这里插入图片描述

从活动的 Vim 会话中设置选项

确保您处于命令模式。您可以通过按 Escape (Esc) 键切换到命令模式。

  • :(冒号)键。Vim 的左下角应该有冒号字符。现在输入set number,或者您可以输入set nu(简称)并按Enter键。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/577895.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows Vscode ModuleNotFoundError: No module named

故障现象&#xff1a; Windows Vscode 经常会遇到模块路径查找失败的异常。 如运行2_from_import_test.py后&#xff0c;报错&#xff1a; 发生异常: ModuleNotFoundError No module named programmer File "D:\leolab\programmer\2_from_import_test.py", line 8…

虚拟机VMware下ROS Neotic(Ubuntu 20.04)下安装OpenCV

一、ROS安装 ROS的官方安装步骤&#xff1a; 1、noetic / Ubuntu 20.04 &#xff1a; http://wiki.ros.org/noetic/Installation/Ubuntu 2、melodic / Ubuntu 18.04&#xff1a; http://wiki.ros.org/melodic/Installation/Ubuntu 3、kinetic / Ubuntu 16.04&#xff1a; http:…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储一系列相同类型的数据。数组可以是多维的&#xff0c;最…

phpstorm 设置变量,自动补全代码

效果 进入设置->实时模板->PHP->添加 添加动态模板->完善写法 定义->选择PHP->应用就行

什么是宏观经济的先行指标、同步指标与滞后指标

宏观经济波动是一种周期性的繁荣、衰退、萧条、复苏循环变化过程&#xff0c;在这种变动中&#xff0c;不同经济指标的变动并非总与宏观经济运行步调一致。按统计指标变动轨迹与宏观经济变动轨迹的时间关系,可以将其划分为先行指标、同步指标和滞后指标。 一、概念和作用 先行…

JetBrains CLion v2023.3.4 激活版 (C/C++ 集成开发IDE)

前言 JetBrains CLion是一款跨平台的C/C集成开发环境&#xff0c;由JetBrains公司推出。其最新版本支持C14几乎完全&#xff0c;并初步支持C17&#xff0c;使得编写代码更加便捷。CLion还提供了Disassembly view&#xff08;反汇编视图&#xff09;&#xff0c;即使没有源代码…

《欢乐钓鱼大师》攻略:怎么在竞标赛中获得高分?

《欢乐钓鱼大师》锦标赛是游戏中的一项激动人心的钓鱼比赛活动&#xff0c;而在这场比赛中&#xff0c;如何获得高分成为了每位钓手追求的目标。在这篇攻略中&#xff0c;我们将为您详细介绍如何通过优化鱼竿、管理体力、利用buff和词条以及前期准备等方面来提高您在锦标赛中的…

信号分解 | RLMD(鲁棒性局部均值分解)-Matlab

分解效果 RLMD(鲁棒性局部均值分解) RLMD(鲁棒性局部均值分解)-Matlab 代码实现 % %% 清除所有变量 关闭窗口 clc clear all close all%% 导入数据 % data = xlsread(Data.xlsx);%% 输入信号%% RLMD分解 %参数进行设置 % options.display =

【React】CSS 局部样式

书写 CSS 的时候&#xff0c;如果 CSS 文件名包含 module&#xff0c;那么说明该 CSS 是一个局部 CSS 样式文件&#xff0c;类似于 vue 中的 scoped。 .avatarContainer {width: 40px;height: 40px;border-radius: 50%;background: rgb(213, 226, 226); }import styles from ..…

【Redis 开发】缓存雪崩和缓存击穿

缓存问题 缓存雪崩解决方案 缓存击穿互斥锁逻辑时间基于互斥锁解决缓存击穿问题基于逻辑过期方式解决缓存击穿问题 缓存雪崩 缓存雪崩是指在同一时间段&#xff0c;大量的缓存key同时失效或者Redis服务器宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力 解决…

游戏发行困境及OgGame云游戏解决方案简述

随着全球化浪潮的持续推进&#xff0c;中国游戏开发者们不再满足于国内市场的发展&#xff0c;而是开始将目光投向更为广阔的海外市场。这一趋势的崛起背后&#xff0c;是中国企业意识到国际化是其发展的必由之路&#xff0c;也是游戏行业突破国内困境的体现。本文将简要阐述游…

【1731】jsp 房租跟踪监控管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 房租跟踪监控管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…

为什么常用氢化物

知识星球&#xff08;星球名&#xff1a;芯片制造与封测社区&#xff09;里的学员问&#xff1a;diffusion工序&#xff0c;所需要的气体种类有哪些&#xff1f; Diffusion是什么工序&#xff1f; "Diffusion"工序是通过热能将掺杂剂原子扩散到硅片中&#xff0c;以形…

C++系列-输入输出

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” C输入和输出 我们都知道C语言的输出是用printf函数来实现的&#xff0c;那么C呢&#xff0c;它的实现逻辑是什么呢&#xff0c;让我们一起来看一下&#xff0c; #include<i…

【代码随想录刷题记录】LeetCode27移除元素

题目地址 1. 思路 1.1 基本思路及代码的初步实现 基本思路大体上和卡尔老师的想法是一致的&#xff0c;详见代码随想录&#xff1a;数组&#xff1a;移除元素&#xff0c;暴力法大家都能想到&#xff0c;我这里写一下算法时间复杂度为 O ( n ) O(n) O(n)时候的思路&#xff…

【深度学习】YOLOv5,烟雾和火焰,目标检测,防火检测,森林火焰检测

文章目录 数据收集和数据标注查看标注好的数据的脚本下载yolov5创建 dataset.yaml训练参数开始训练yolov5n训练训练后的权重下载gradio部署 数据收集和数据标注 搜集数据集2w张。 pip install labelme labelme 然后标注矩形框和类别。 下载数据请看这里&#xff1a; https:…

2023年江西省电子专题赛——解析一

由于网上对这个竞赛资料甚少&#xff0c;为了方便省内学子交流学习&#xff0c;可加Q群聊&#xff1a;778772385 电源部分&#xff1a;比赛中只给了3个IN4007整流管&#xff0c;无法构成传统整流桥的形式&#xff0c;并且题目又要求全波整流。 我这边用两个二极管构成全波整流…

Web3解密:理解去中心化应用的核心原理

引言 在当前数字化时代&#xff0c;去中心化技术和应用正在逐渐引起人们的关注和兴趣。Web3技术作为去中心化应用&#xff08;DApps&#xff09;的基础&#xff0c;为我们提供了一个全新的互联网体验。但是&#xff0c;对于许多人来说&#xff0c;这个复杂的概念仍然充满了神秘…

【数据结构与算法】:手搓顺序表(Python篇)

文章目录 一、顺序表的概念二、顺序表的实现1. 顺序表的创建1.1 扩容1.2 整体建立顺序表 2. 顺序表的基本运算算法2.1 顺序表的添加&#xff08;尾插&#xff09;2.2 指定位置插入2.3 指定位置删除2.4 顺序表的查找2.5 顺序表元素的索引访问2.6 顺序表元素的修改2.7 顺序表长度…

Mouse without Borders(无界鼠标)使用教程 多台电脑(最多4)共用鼠标键盘,换言之一套键鼠操作多台电脑,跨电脑文件拖动传输

Mouse without Borders&#xff08;无界鼠标&#xff09;使用教程 目的&#xff1a;多台电脑&#xff08;最多4&#xff09;共用鼠标键盘&#xff0c;换言之一套键鼠操作多台电脑。 优势&#xff1a;微软官方软件&#xff0c;对于windows系统友好&#xff0c;轻量实用。 劣势…