Linux常用指令和知识(1)

简介: Linux常用指令和知识(1)


       

ls

显示工作目录底下的所有文件/文件夹

使用命令ls, 会直接显示HOME目录下的所有文件

如果不加任何参数,那么ls指定的目录是初始的HOME目录(因为初始的工作目录为HOME目录):

使用ls /

会显示根目录底下的所有文件

如何查看根目录:

三个参数: -a  -h  -l

  • -a 选项表示all的意思,列出全部文件(包含隐藏文件/文件夹)
    -- 对比一下ls和 ls -a, 发现ls -a指令列出来的文件/文件夹数量更多了
    -- 图中有很多点号" . "开头的文件,表示是linux系统的隐藏文件(或文件夹) ,可以自动隐藏
    -- 只有通过-a 才可以看到这些隐藏文件夹和文件
  • -l 表示以列表的形式展示内容,并且提供更多的信息
  • -h 更加人性化的方式显示文件大小的单位
    -h需要和-l搭配使用才有效, 我们只使用的-l而不使用-h的形式如下,默单位是byte:
    此时我们加上-h:

ls 命令项的组合使用:

  • ls -l -a
  • ls -la
  • ls -al

上面三种写法,都是一样的,表示这个ls指令同时包含-a和-l的功能项

ls选项 + 参数的混合使用:

使用指令ls -al /, 使用列表的形式,同时显示隐藏的文件和文件夹的形式来展示根目录

cd的选项总结:

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
  • -l 列出文件的详细信息。
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -R 列出所有子目录下的文件。(递归)

cd

       cd:切换工作目录,我们可以通过cd命令来切换当前所在的工作目录

-- cd英文全称: Change Directory

-- 语法: cd [Linux路径]

       我们需要注意以下几点:

  • 当Linux终端打开的时候,会默认以用户的HOME目录作为当前的工作目录
  • cd的指令无须选项,只有参数, 参数表示路径,表示要切换到哪个目录为工作目录
  • cd指令直接执行,不加参数的话,表示回到用户的HOME目录(切换会HOME目录为工作目录)
  • 举个例子:>
    -- 首先使用无参数选项为-l的ls指令列出HOME目录的列表形式(对于ls的使用,打开的Linux终端默认的工作目录为HOME目录, ls为列出当前工作目录的文件和文件夹)
    -- 然后使用cd指令,参数为 "/", 也就是 cd /, 表名将工作目录指定为根目录,
    -- 然后使用ls再次

pwd

pwd: 显示当前所在的工作目录

pwd为print working directory

语法: $ pwd [-P]

选项和参数: -P, 显示出确实的路劲,而非使用链接(link)路径 (注意此处的P为大写)

实例:

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

       进入到一个目录底下并显示:

进入这个目录,然后使用pwd显示当前工作目录:

相对路径&绝对路径&特殊路径符

有下面两个例子:

这两种不同的路径表达方式有什么不一样呢?

-- 上面的绝对路径表达的非常的完整,长度也比相对路径长

-- 而相对路径的表达则更为精简

特殊路径符

如图, 我们郑处于工作目录: /home/niceff/Desktop

那么现在想要回到niceff用户下面该如何操作:

  1. 可以直接使用cd指令,不加参数, 默认回退到HOME为工作目录
  2. 通过特殊的路径字符

       特殊的路径字符也是为了我们更加方便的进行文件操作和文件管理, 下面是一些常用的特殊路径符:>

  • " . ", 表示当前目录, 例如cd ./Desktop 表示切换工作目录为当前目录里面的Desktop目录, 和 cd Desktop效果一样
  • " .. ", 表示上一级目录, 例如cd .. ,可以切换到上一级目录, cd ../..可以切换到上2级目录
  • " ~ ", 表示HOME目录, 比如cd ~, 即可以切换到HOME目录为工作目录, 或者
    cd ~/Desktop,切换到HOME目录里面的Desktop目录为工作目录0

       下面再举一个案例:

对于我们的/home/niceff/Desktop目录, 我们希望将工作目录切换为niceff目录下面与Desktop同级的Music目录:

使用指令: cd ../Music

下面是一些练习:

  • 当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径: test/hello.txt
  • 在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径:  ../test/hello.txt
  • 在HOME目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的路径,需要使用符号~: ~/test/hello.txt

mkdir

mkdir: 创建新目录(文件夹)

mkdir,全称make directory

指令格式: mkdir [-mp] 目录名称

选项与参数:

  • -m : 配置文件权限
  • -p : 将所需的目录(包含上一级目录)递归建立起来,也就是说说, -p可以自动创建不存在的父目录,适用于连续错层级的目录

       其中,参数是必填的

案例, 我们在当前用户的home文件夹中创建一个test文件夹:

查看这个test文件夹:

-p的使用:

我们知道已经存在路径~/niceff/test

然后我们创建如下:

~/niceff/test/na/nb/nc

如果没有指定参数-p, 那么就不会创建其不存在的父目录na,nb和nc, 使用-p参数如下:

可以看到已经自动创建了其父目录

当然这些操作也可以配合特殊文件符

创建文件夹所需要权限:

创建文件夹需要修改权限, 请确保操作均在home目录里面,不然在home目录外面的操作会涉及到权限问题, home外无法成功创建

例如上图, 我们在根目录底下创建一个a目录, 显示权限不够

(提示, 在finalShell里面,按ctrl + l可以清屏)

touch-cat-more

touch:创建文件, 无选项, 参数必填,表示要创建的文件路径(相对路径和绝对路径,还有特殊文件符都可以使用)

例如, 我们路径~/niceff/test, 我们在这个test工作目录里面创建一个testTxt.txt文件:

注意, 这种写法是相对路径的写法

如何分辨到底是文件还是文件夹?

下面是虚拟机centOS里面的终端中查询test底下的文件夹, 可以看到,里面的文件夹都是蓝色的字体, 而文件则是默认的字体,而且还有后缀

如果你是finalShell的话,同样如此:

或者也可以这样子看:

cat:准备好文件之后, 就可以查看文件

语法: cat 被查看文件的路径

-- cat没有选项, 参数必填, 表示被查看的文件,相对路径,绝对路径和特殊文件符都可使用

例如我们在/home/niceff/test/testTxt.txt里面写入hello Linux

然后打开查看: cat /home/niceff/test/testTxt.txt

more: 同样可以查看文件内容,

同cat不同的是:

  • cat是直接把内容全部显示出来
  • more支持翻页, 如果文件内容过多可以一页页的显示

语法: 没有选项, 只有必填参数 , 表示被查看的路径

例如, Linux系统内置有一个文件, 路径为: /etc/services, 可以使用more命令查看:

       more /etc/services

在查看的过程中使用空格翻页, 使用q退出查看

使用空格翻页:

使用q退出:

cp-mv-rm

cp: 拷贝文件和目录:

语法:

cp [-a]  参数1  参数2

路径1表示被复制的文件

路径2表示要复制去的地方

演示如下:

对于一个文本文件: /home/niceff/test/testTxt.txt

我们将其复制到/home/niceff/test目录下的a文件夹中

使用cp指令如下:

       目前现在工作目录为/home/niceff/test

        所以指令为 cp testTxt.txt a

可以将多个文件cp到指定的文件夹, 多个文件夹之间使用空格隔开:

复制源文件夹到目标文件夹下:

       命令格式为:cp -r 源文件夹 目标文件夹

       需要记住复制文件夹一定要加“-r”参数,否则会出现“cp: omitting directory”错误。

只有源文件较目标文件新时复制

       命令格式为:cp -u 源文件 目标文件

cp 指令有一些选项如下:

  • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l:进行硬式链接(hard link)的链接档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号链接档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

我们来解释一下常用的 -r选项, -r选项为赋值文件夹, 例如:

       存在工作目录:/home/niceff/test

       这个目录里面先在有一个文件夹a, 我们将文件夹a,再赋值一份到当前工作目录里面去

显示略过目录a

       这是因为a是一个文件夹, 不能直接使用cp来复制, 需要加上参数: -r

发现不能将复制的文件夹粘贴到同一工作目录下

       所以我们在test目录底下创建一个目录b,将a目录复制到b目录中, 如下:

mv : 用于移动文件和文件夹, 来自英文单词move

语法如下: mv 参数1 参数2

  • 参数1 Linux路径, 表示要被移动的文件和文件夹
  • 参数2 Linux路径, 表示被移动文件的目的目录, 如果目标不存在, 则进行改名, 确保目标存在

例如我们将/home/niceff/test目录下的a目录移动到home/niceff/Desktop目录下面去:

可有看到a文件夹已经被移动到Desktop目录底下

当然也可以到终端里面使用ls指令查看

下一个案例 :

我们再test目录下面还有一个b文件夹, 此时我想将其改名为a:

mv的几个选项如下:

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

rm : 删除可以用来删除文件和文件夹

和cp指令一样, 其存在一个-r选项, 来选择删除文件夹

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

--  > -f 表示force, 强制删除(不会出现提示确认信息) , 普通用户删除内容不会弹出提示, 只有root管理员删除内容会有提示, 所以一般用户用不到-f选项

-- > 参数1~N 表示要删除的多个文件夹路径或者文件, 参数之间按照空格隔开

例:

  1. 删除test目录底下的testTxt.txt文件
    查看文件已经存在:

    删除:
  2. 删除Desktop目录下面的a文件夹(注意, 和cp命令一样, 需要加上-r选项)
    查看Desktop目录下的a文件

    删除:

值得注意的是, rm命令可以使用模糊匹配来批量删除:

  • 符号*表示通配符, 即任意内容(包含空)
  • test*, 表示任何以test开头的内容
  • *test, 表示任何以test结尾的内容
  • *test*, 表示任何包含test 的内容

演示:

我们在Desktop目录下面创建test1,2test,3test4这3个目录:

同时里面还包含a这个文件夹

使用通配符删除:

rm - r *test*

结果只剩下a这个文件夹,可见操作正确

接下来演示一下 -f这个选项:

强制删除:

  • 可以通过su - root, 并输入自己的用户密码, 临时切换到root模式
  • 然后可以使用exit 命令来退出为普通用户

可以看到这里输入的标识符从$符号变为了#符号(此处输入密码是默认不显示的,可以不用管)

执行一个删除操作, 在/home/niceff/test目录里面创建一个文本文件test.txt:

然后我们删除这个文件:

会提示你是否要删除这个文件, 如果输入y, 则表示确认(删除), 否则表示取消

这个时候, 如果删除的时候, 不想出现提示的话, 就这直接在使用rm命令的时候, 加入-f选项, 强制删除, 这个时候 提示操作就不会出现

退回普通用户:

注意: rm命令是非常的危险, 尤其是-f选项, 强制删除是没有任何提示的,一不小心就会走错进局子!!!

which-find

which命令:查看锁使用的一系列命令的程序文件放在哪

语法: which 命令

举个例子

find - 按文件名查找文件, 搜索指定文件

语法: find 起始路径 -name  "被查找的文件名"

为了确保演示顺利, 可以完成整个系统的搜索, 我们需要拥有最大权限, 可以切换到root用户下进行.

在/home/niceff/test中创建一个test.txt文件:

起始路径为home目录来寻找这个test.txt文件:

当然我们在查找的时候也可以使用通配符

切换查找文件大小的模式

语法: find 起始路径 -size + | -n[KMG]

说明:

  • + / - 表示  大于 / 小于
  • n表示大小数字
  • KMG表示大小单位, (k -> kb, M -> MB,G -> GB)

例如:

  • 查找小于10KB的文件: find / -size -10k
  • 查找大于100MB的文件: find / -size +100M
  • 查找大于1GB的文件: find / -size +1G

grep-wc

grep命令可以从文件中通过关键字过滤文件行

语法: grep [-n] 关键字 文件路径

  • 选项 -n, 可选, 表示结果中显示匹配的行的行号
  • 参数, 关键字, 必填, 表示过滤的关键字, 带有空格或其他特殊符号
  • 参数,文件路径, 必填, 表示要过滤内容的文件路径, 可作为内容输入端口

现在通过touch命令在home目录里面的Desktop目录里创建test.txt文件, 并通过图形化页面编辑并保存

选择过滤出含有niceff 的行:

grep "niceff" /home/niceff/Desktop/test.txt

选择过滤出含有you的行:

使用-n显示过滤出you 的行号:

grep的一些选项:

  • -n<行数> 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

wc:  统计文件的行数, 单词数量

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

  • -c,统计bytes数量
  • -m, 统计字符数量
  • -l,统计行数
  • -w, 统计单词数量
  • 参数, 文件路径, 指明被统计的文件, 可以作为内容输入端

案例, 还是用Desktop下面的test.txt作为被统计的文件:

  • 统计bytes的数量:

    查看一下文件大小:

    结果正确
  • 统计字符数量:
  • 统计行数:

    这里有6行的原因是这里还有一个空行
  • 统计单词数量:

也可以直接使用wc 文件路径:

6表示行号, 20 表示单词数量, 84代表文件的字节数

管道符 |

我们前面所讲到的grep命令里面的路径参数可以作为输入端

我们下面来看看管道符的用法:

前面的cat 文件路径, 可以做为后面grep参数的输入内容

除了grep, 还有很多其他的命令也可以使用管道符, 也就是这种左边的结果作为右边的输入的形式.

再例如使用wc命令:

也可以使用ls作为输出内容:

一般这种有输出的命令都可以使用作为管道符的输入参数

再例如我们统计/usr/bin目录下面有多少个文件:

echo

echo: 在命令行输出指定内容

语法: echo 输出的内容

  • 无需要选项,只有一个参数, 表示要输出的内容, 复杂内容可以使用" " 包围
    例如, 在终端上显示Hello Linux:
  • 带有\等特殊字符的需要使用" "包围起来
  • 如果我们输入echo pwd来输出工作路径, 是否会成功显示:

    可以看到pwd只是被简单的作为内容输出, 而不是作为指令进行输出
  • 要想做为指令输出 , 就必须将内容带上飘号``, 也就是`pwd`(这个飘号也就是~所对应的小写,在tab键的上方):

重定向

重定向符有两个特殊的符号:

  • >,将左侧的命令结果, 覆盖写到符号右侧的指定文件中
  • >> , 将左侧命令的结果, 追加写到符号右侧的指定的文件中

例如我们有如下的空txt文件

结合echo命令, 将内容重定向输入到空白的文件当中去:

如果再使用>重定向写入hello world:

可以看见hello world将原来的内容覆盖

追加写>>: 我们在hello world的基础上追加写入i love you :

tail

tail: 可以查看文件尾部的内容, 跟踪文件的最新修改,

语法如下:

tail [-f -num] Linux路径

  • 参数, Linux路径, 表示被跟踪的文件路径
  • 选项, -f, 表示持续跟踪
  • 选项, -num, 表示查看尾部多少行, 不写默认查看10行

ps

语法:ps [参数]...

功能:用于查看当前系统上运行的进程

选项:

  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分

案例:  

  • ps aux # 显示系统上所有的进程
  • ps aux | grep "进程名"
  • ps aux | grep "进程id"

netstat

语法: netstat  参数

功能: 查看系统上的网络状态

选项:

  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机, 端口或用户名
  • -p 显示套接字所属的进程皮蛋和名称

举例:

  • netstat -anp
  • netstat -anp |  grep "进程名"
  • netstat -anp | grep "端口号"

在Linux中安装jdk

       jdk在Linux中的安装方式有很多种, 这里介绍最简单的方法, 也就是包管理器方法:

包管理器yum安装jdk

Linux中常见的包管理器有:

  1. yum
  2. apt
  3. pacman

等等 yum是centOS自带的包管理器, 对于yum的使用如下:

  • yum list 是查看当前的软件包有哪些
    例如我们现在搜索包含jdk的关键字的工具包有多少:
  • yum install 安装指定的软件包
    我们从上图中选取java-1.8.0版本x86_64版本的jdk安装:

    过程会弹出是否安装, 选择y即可

        有人可能会问, 这么多jdk, 我该安装哪一个?

       解释:

  • 上面的带有.i686是32位系统使用的,不过我们现代的计算机一般是64位.
  • 所以我们选择这种x86的
  • 我们从 x86中选择带有devel的,devel表示development,意思是开发的意思,这个包就属于是用jdk开发所使用的包。
  • 然后使用yum install  jdk文件即可

对于yum的安装install操作需要管理员权限, 也就是su username, 然后就会弹出输入密码.

JDK安装过程中的问题

       但是难免会出现安装问题

  • 有时候会出现 yum list不可用的情况,可能是由下面这些原因造成的
  1. 没有足够的权限运行该命令。请确保您具有足够的权限来运行yum命令。
    提升权限为root: sudo su -
  2. 您的系统没有正确配置yum存储库。请检查您的yum存储库配置文件是否正确,并确保您的系统可以访问所需的存储库。
  3. 您的系统没有正确配置网络设置。请确保您的系统已正确配置网络设置,并且可以访问所需的存储库。
  • 如果您确定您的系统已正确配置,并且您仍然无法使用yum list命令,则可以尝试以下步骤:
  1. 清除yum缓存:使用yum clean all命令清除所有缓存数据。
  2. 列出包的依赖项:使用yum deplist命令列出一个包的所有依赖项。
  3. 删除包:使用yum remove命令删除一个包。
  • 如果您需要关联网络yum源,可以按照以下步骤操作:
  1. 打开网址:http://mirrors.163.com/.help/centos.html,找到您所在的CentOS版本,并复制对应的yum源配置文件。
  2. 打开yum源配置文件:/etc/yum.repos.d/CentOS-Base.repo
  3. 将原始yum源配置文件备份:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  4. 将复制的yum源配置文件粘贴到/etc/yum.repos.d/目录中。
  5. 运行yum makecache命令更新yum缓存。
  • 同时只能有一个yum进程运行, 如果已经有一个yum进程就需要把另外一个yum进程撤销掉

 

目录
相关文章
|
4天前
|
人工智能 Unix Linux
Linux下的基本指令介绍
在早期的操作系统中,键盘先于鼠标出现,操作系统最初并无图形化界面,依赖指令进行交互。Xshell的复制粘贴不同于常规,需用Ctrl+Insert复制,Shift+Insert粘贴。
24 0
Linux下的基本指令介绍
|
1天前
|
机器学习/深度学习 Linux
Linux基础——Linux常见基本指令(下)
Linux基础——Linux常见基本指令(下)
|
1天前
|
Linux Windows
Linux基础——Linux常见基本指令(中)
Linux基础——Linux常见基本指令(中)
|
2天前
|
安全 Linux 数据安全/隐私保护
Linux基础——Linux常见基本指令(上)
Linux基础——Linux常见基本指令(上)
|
2天前
|
Linux
【Linux操作系统】基本指令-2
【Linux操作系统】基本指令
【Linux操作系统】基本指令-2
|
2天前
|
安全 Linux
【Linux操作系统】基本指令-1
【Linux操作系统】基本指令
|
12天前
|
Linux C语言 iOS开发
【Linux1】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令
【Linux1】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令
|
25天前
|
人工智能 Java Shell
【Linux】环境变量及相关指令
【Linux】环境变量及相关指令
|
25天前
|
存储 监控 Unix
【Linux 系统】Linux 下基本指令 -- 详解
【Linux 系统】Linux 下基本指令 -- 详解
|
25天前
|
Linux 开发工具
linux sudo指令提权
linux sudo指令提权