Linux常用命令

2023-10-21 13:12:51 浏览数 (1)

一、软件安装

1.dpkg

安装 cd到相应目录在终端执行命令

代码语言:javascript复制
dpkg -i <.deb file name>
dpkg -i sogoupinyin_4.0.1.2123-amd64.deb

卸载

代码语言:javascript复制
sudo dpkg -r xxSoftName

常用选项

代码语言:javascript复制
    -i    安装软件包
    -r    删除软件包
    -l    显示已安装软件包列表
    -L    显示于软件包关联的文件
    -c    显示软件包内文件列表

2.apt-get

安装

代码语言:javascript复制
sudo apt-get install Python

常用选项

代码语言:javascript复制
    apt-get install packagename  #安装一个新软件包
    apt-get remove packagename #卸载一个已安装的软件包(保留配置文档)
    apt-get remove --purge packagename #卸载一个已安装的软件包(删除配置文档)
    apt-get autoremove packagename #删除包及其依赖的软件包
    apt-get autoremove --purge packagname #删除包及其依赖的软件包 配置文件,比上面的要删除的彻底一点
    dpkg --force-all --purge packagename #有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险。
    apt-get update #扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。
    apt-get upgrade #将系统中的所有软件包一次性升级到最新版本,可以很方便的完成在相同版本号的发行版中更新软件包。

3.rpm

安装

代码语言:javascript复制
sudo rpm -ivh xx.rpm (安装并显示正在安装的文件信息及安装进度)
格式:rpm [选项] RPM包文件

常用选项

代码语言:javascript复制
    -i:安装一个新的rpm软件包
    -h:以“#”号显示安装的进度
    -v:显示安装过程中的详细信息
    --force:强制安装所指定的rpm软件包
    --nodeps:安装软件时,忽略依赖关系

apt-get相关目录:

代码语言:javascript复制
#文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 ubunt 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
/var/lib/dpkg/available

#目录是在用 apt-get install 安装软件时,软件包的临时存放路径
/var/cache/apt/archives

#存放的是软件源站点
/etc/apt/sources.list

#使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录
/var/lib/apt/lists

卸载步骤:

代码语言:javascript复制
sudo rpm -e xxSoftName。(-e 可以用--earse代替)

4.tar.gz、tar.bz2源码包简介、安装及卸载步骤

  下载的tar.gz包装的软件可能是源码,但也有的地方把二进制码打包成tar.gz的。源代码包和二进制包是软件包的两种形式。 二进制包中包括了已经编译过的程序,只需要解包安装就可以使用。源代码包里面包括了程序原始的程序代码,需要进行编译后会出现一个可以运行的程序。

源代码包的编译安装步骤:

代码语言:javascript复制
1. 将源码包进行下载
2. 使用`cd`命令到源码包(`tar.gz`)所在位置
3. 将源码包解压缩`tar -xvf xxx.tar.gz`
4. `cd`进入解压后的文件`cd xxx`
5. 配置文件`./configure`
6. 执行`make`进行编译
7. 执行`make install`安装生成的二进制文件

注意:具体安装方法以软件源代码中的README等帮助文件为准。

卸载步骤: 1、在源代码包目录中,终端执行:make uninstall 2、有些软件包的源代码在编译安装后可以使用make uninstall命令来进行卸载,如果没有提供此功能,则该软件的卸载也只有手动删除。由于软件可能将文件分散安装在系统的多个目录中,手动删除往往很难将它删除干净,这也许是很多人比较头痛的地方。所以,通常的做法是,在编译前的配置阶段,指定软件将要安装到的目标路径,即 “./configure --prefix=目录名”,这样可以使用 “rm -rf 软件的目录名”这一命令来进行干净彻底的卸载。

5.yum

代码语言:javascript复制
#安装
yum install #全部安装
yum install  #安装指定的软件
yum groupinsall  #安装程序组
#更新和升级
yum update #全部更新
yum update  #更新指定程序包
yum check-update #检查可更新的程序
yum upgrade  #升级指定程序包
yum groupupdate  #升级程序组
#查找和显示
yum list #显示所有已安装和可以安装的程序包
yum list  #显示指定程序包的安装情况
yum info  #显示程序包信息
yum groupinfo  #显示程序组信息
#删除命令
yum remove  #删除程序包
yum groupremove  #删除程序组
yum deplist  #查看程序包的依赖情况
#清除缓存
yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的heades

6.bin包

安装 1、下载到本机 2、cd打开xx.bin所在的目录 3、添加可执行权限:sudo chmod a x xx.bin 4、执行它:./xx.bin(执行安装过程中可以指定安装目录)

二、vim的使用

什么是vim?

  • vim是Linux环境下一款功能强大、高度可定制的文本编辑工具,类似于Windows下面的`source insight、sublime、notepad。
  • VI是visual interface的缩写,即可视化接口。vimvi IMproved,在vi`的基础上做了很多改进,如:增加了多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等功能。

vim的六种工作模式

  • 普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏、移动光标,删除文本等操作。
  • 插入模式:也可以叫做编辑模式,在普通模式下敲击iao就进入插入模式,允许用户通过键盘输入、编辑。在插入模式中,可以按ESC键回到普通模式。
  • 命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行。
  • 可视化模式:在普通模式下敲击前盘上的v键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的“文本对象”也能和移动命令一样用在这个模式中。
  • 替换模式(选择模式):如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,可以用鼠标或者光标键高亮选择文本,直接在普通模式下,敲击R键就可以直接替换。
  • EX模式:类似于命令行模式,可以一次运行多个命令

PS:vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式。

命令

作用说明

i

进入编辑模式

Esc

退出编辑模式

:wq

保存并退出

:q!

不保存直接退出

三、一些基础命令

命令

作用说明

常用

ls

显示指定目录下及内容列表

ls -a;ls -l

pwd

查看当前所在的目录文件及内容列表

su

切换用户

su -c

stat

用于显示文件的状态信息

stat -t

touch

创建新的空文件,以及蒋文件更新位当前系统时间

mkdir

创建目录

mkdir -p

rm

用于删除给定的文件和目录

rl -ir;rm -f

rmdir

删除空目录

rmdir -v

mv

用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中

mv

cp

将源文件或目录复制到目标文件或目录中

cp -ai

cat

连接目标文档并打印到 标准输出设备(终端)上

cat -n

more

显示文件内容,每次显示一屏

more -<数字>:指定每屏显示的行数

less

分屏上下翻页浏览文件内容

head

显示文件的开头部分

head -n <行数>

which

查找并显示给定命令的绝对路径

which -p [文件路径]

whereis

在环境变量$PATH设置的目录里查找符合的文件

locate

find

lsof

用于查看你进程打开的文件,打开文件的进程

1、ls

  Linux下ls命令的作用是显示指定目录下目录、文件及内容列表

代码语言:javascript复制
语法: ls   [-alrtAFR](选项)    [name...](参数)
参数:

-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) 示例如下:
[root@localhost ~]# ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc

-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出  示例如下:
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1437 8月  31 15:54 anaconda-ks.cfg

-r 将文件以相反次序显示(原定依英文字母次序) 示例如下:
[root@localhost ~]# ls -ra
.tcshrc  .cshrc  .bashrc  .bash_profile  .bash_logout  .bash_history  anaconda-ks.cfg  ..  .

-t 将文件依建立时间之先后次序列出   示例如下:
[root@localhost ~]# ls -lt
总用量 4
-rw-------. 1 root root 1437 8月  31 15:54 anaconda-ks.cfg

-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)   示例如下:
[root@localhost ~]# ls -A
anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"   示例如下:
[root@localhost ~]# ls -F /home
msb123/

-R 若目录下有文件,递归列出全部目录的内容。 示例如下:
[root@localhost ~]# ls -R /home
/home:
xiaobei
xiaobei2

/home/xiaobei:

/home/xiaobei2:
常用组合
[1]查看文件详情:ls -l 或 ll
[2]增强对文件大小易读性,以人类可读的形式显示文件大小: ls -lh
[3]对文件或者目录进行从大到小的排序: ls -lhs
[4]查看当前目录下的所有文件或者目录,包括隐藏文件: ls -la
[5]只查看当前目录下的目录文件: ls -d .
[6]按照时间顺序查看,从上到倒下时间越来越近: ls -ltr
[7]查看文件在对应的inode信息:ls -li

2、cd

作用:切换用户的当前工作目录(可以使用绝对路径也可以使用相对路径)

代码语言:javascript复制
语法:cd [home](路径)
# 跳到用户目录下
[root@localhost ~]# cd /home/xiaobei
[root@localhost xiaobei]# 

# 回到home目录
[root@localhost xiaobei]# cd ~
[root@localhost ~]# 

# 跳到上次所在目录
[root@localhost ~]# cd -
/home/xiaobei
[root@localhost xiaobei]#



# 跳到父目录(也可以直接使用 cd ..)
[root@localhost xiaobei]# cd ./..
[root@localhost home]# 



# 再次跳到上次所在目录
[root@localhost home]# cd -
/home/xiaobei
[root@localhost xiaobei]# 


# 跳到当前目录的上两层
[root@localhost xiaobei]# cd ../..
[root@localhost /]#




# 把上个命令的最后参数作为dir
这里我们先将文件夹cd 到python2.7路径
[root@localhost /]# cd /usr/include/python2.7/
[root@localhost python2.7]#

# 这里使用cd ./..参数作为引子
[root@localhost python2.7]# cd ./..

# 这里我们使用命令,重复最后一个命令参数,直到回到了根目录
[root@localhost include]# cd !$
cd ./..
[root@localhost usr]# cd ./..
[root@localhost /]# 

3、pwd命令

作用:绝对路径方式显示用户当前工作目录

代码语言:javascript复制
语法:pwd [--help][--version]

参数说明:
--help 在线帮助。
--version 显示版本信息。


查看当前所在目录:
[root@localhost /]# cd /home
[root@localhost home]# pwd
/home
[root@localhost home]# 

4、stat命令

作用:显示文件的状态信息

代码语言:javascript复制
语法:stat(选项)(参数)

参数:
文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。

选项说明:
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。

5、touch命令

作用:touch命令有两个功能一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

代码语言:javascript复制
语法:touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>]  [-t<日期时间>]  [--help]  [--version]  [文件或目录…]

选项说明:-a:或--time=atime或--time=access或--time=use  只更改存取时间;
-c:或--no-create  不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify  只更该变动时间;
-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间>  使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。

参数
文件:指定要设置时间属性的文件列表。

示例如下:

(1)使用指令"touch"创建"text1.txt"文件

代码语言:javascript复制
[root@localhost text2]# cd exercise1
[root@localhost exercise1]# touch text1.txt
[root@localhost exercise1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月   7 13:44 text1.txt
# 当然touch可以一次创建多个文件,例如:touch text1.txt  text2.txt text3.txt ...
[root@localhost exercise1]# touch text2.txt text3.txt
[root@localhost exercise1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月   7 13:44 text1.txt
-rw-r--r--. 1 root root 0 9月   7 13:45 text2.txt
-rw-r--r--. 1 root root 0 9月   7 13:45 text3.txt

(2)使用指令"touch"修改文件"text1.txt"的时间属性为当前系统时间,发现如果文件存在,这里直接是修改时间了

代码语言:javascript复制
[root@localhost exercise1]# touch text1.txt
[root@localhost exercise1]# ls -l
总用量 0
-rw-r--r--. 1 root root 0 9月   7 13:46 text1.txt
# 发现时间是已经修改了

(3)强制避免使用touch命令创建新文件 使用参数-c

  有时,如果新文件不存在,则需要避免创建新文件。 在这种情况下,可以使用touch命令使用'-c'选项

代码语言:javascript复制
[root@localhost exercise1]# ls
text1.txt  text2.txt  text3.txt
[root@localhost exercise1]# touch -c text4.txt
[root@localhost exercise1]# ls
text1.txt  text2.txt  text3.txt

(4)更改文件的访问和修改时间 使用参数-a

  touch命令的另一个用途是更改文件的访问时间和修改时间

代码语言:javascript复制
[root@localhost exercise1]# stat text3.txt 
  文件:"text3.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16626       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-09-07 14:04:07.539848285  0800
最近更改:2020-09-07 14:04:07.539848285  0800
最近改动:2020-09-07 14:04:07.539848285  0800
创建时间:-

[root@localhost exercise1]# touch -a text3.txt 

[root@localhost exercise1]# stat text3.txt 
  文件:"text3.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16626       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-09-07 14:08:33.788865586  0800
最近更改:2020-09-07 14:04:07.539848285  0800
最近改动:2020-09-07 14:08:33.788865586  0800
创建时间:-

我们看到先是使用stat查看文件详细信息  最近访问和最近更改时间
当我们使用命令使用参数 -a 对文件 text3.txt 做了一些操作 touch -a text3.txt 
再查看时间时,发现文件已经修改好了
        (4)仅更改此文件的修改时间          使用参数`-m`
[root@localhost exercise1]# touch -m text3.txt 
[root@localhost exercise1]# stat text3.txt 
  文件:"text3.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16626       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-09-07 14:08:33.788865586  0800
最近更改:2020-09-07 14:15:59.782894567  0800
最近改动:2020-09-07 14:15:59.782894567  0800
创建时间:-

(5)将访问和修改时间从一个文件复制到另一个文件 使用参数-r

代码语言:javascript复制
[root@localhost exercise1]# touch text3.txt  -r  text1.txt 

[root@localhost exercise1]# stat text1.txt 
  文件:"text1.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16624       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-09-07 13:57:38.308822993  0800
最近更改:2020-09-07 13:57:38.308822993  0800
最近改动:2020-09-07 13:57:38.308822993  0800
创建时间:-

[root@localhost exercise1]# stat text3.txt 
  文件:"text3.txt"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16626       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-09-07 13:57:38.308822993  0800
最近更改:2020-09-07 13:57:38.308822993  0800
最近改动:2020-09-07 14:19:35.732908600  0800
创建时间:-

# 输出显示text3.txt现在具有与text1.txt相同的访问和修改值

(6)使用指定的时间戳创建新文件 使用参数-t

代码语言:javascript复制
[root@localhost exercise1]# touch -t 2001011314.52 time.log

[root@localhost exercise1]# stat time.log 
  文件:"time.log"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16627       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-01-01 13:14:52.000000000  0800
最近更改:2020-01-01 13:14:52.000000000  0800
最近改动:2020-09-07 14:26:23.916935124  0800
创建时间:-
# 最近访问与最近更该时间为设定的时间 2020-01-01 13:14:52.000000000

(7)将文件的时间戳更改为其他时间 使用参数-c -t

代码语言:javascript复制
[root@localhost exercise1]# touch -c -t 1801011314.52 time.log

[root@localhost exercise1]# stat time.log 
  文件:"time.log"
  大小:0               块:0          IO 块:4096   普通空文件
设备:fd00h/64768d      Inode:16627       硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-01-01 13:14:52.000000000  0800
最近更改:2018-01-01 13:14:52.000000000  0800
最近改动:2020-09-07 14:30:45.188952101  0800
创建时间:-
# 使用参数修改为指定的时间戳

6、mkdir命令

mkdir用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。

代码语言:javascript复制
mkdir (选项)(参数)

选项说明:
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。

参数
目录:指定要创建的目录列表,多个目录之间用空格隔开。
使用示例:
# 创建目录                        正常使用无参数
[root@localhost text.txt]# mkdir mydir
[root@localhost text.txt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月   7 13:06 mydir

# 切换至mydir目录
[root@localhost text.txt]# cd mydir/

# 参数-p 进行递归创建目录          使用参数 -p
[root@localhost mydir]# mkdir -p text1/text2

# 切换至text2目录
[root@localhost mydir]# cd text1/text2/

[root@localhost text2]# pwd
/root/mydir/text1/text2

总结:# 使用参数 -p 可以创建多层路径文件目录


# 分别创建三个目录,并设置权限                  使用参数 -m
[root@localhost text2]# mkdir -m 777  exercise1
[root@localhost text2]# mkdir -m 765  exercise2
[root@localhost text2]# mkdir -m 654  exercise3

[root@localhost text2]# ll
总用量 0
drwxrwxrwx. 2 root root 6 9月   7 13:22 exercise1
drwxrw-r-x. 2 root root 6 9月   7 13:23 exercise2
drw-r-xr--. 2 root root 6 9月   7 13:23 exercise3

总结:# 使用参数 -m 可以创建文件并设置文件的权限  
注意(777,765,654 其中每一个数字,分别表示User、Group、及Other的权限。r=4,w=2,x=1)


# 创建一个目录,并设置权限                  使用参数 -v   -m
[root@localhost text2]# mkdir -v -m 654  exercise4
mkdir: 已创建目录 "exercise4"

7、rm命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

代码语言:javascript复制
语法:rm (选项)(参数)

选项说明:-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。

参数
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

使用示例: (1)删除文件或者目录前提示 使用参数 -i

代码语言:javascript复制
[root@localhost exercise1]# ls
text1.txt  text2.txt  time.log

[root@localhost exercise1]# rm -i text2.txt
rm:是否删除普通空文件 "text2.txt"?y
[root@localhost exercise1]# ls
text1.txt  time.log

# 这里提示是否删除,输入 y确认

(2)删除 test 子目录及子目录中所有档案删除,并且不用一一确认 -rf 我们先切换到上一级目录

代码语言:javascript复制
[root@localhost exercise1]# cd ../

[root@localhost text2]# ls
exercise1  exercise2  exercise3  exercise4
[root@localhost text2]# rm -rf exercise1
[root@localhost text2]# ls
exercise2  exercise3  exercise4
[root@localhost text2]# 

8、rmdir命令

**作用:**用于删除空的目录。从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。

代码语言:javascript复制
语法:rmdir(选项)(参数)

选项说明:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。

参数
目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。

使用示例:

(1)正常删除目录

代码语言:javascript复制
[root@localhost text2]# ls
exercise2  exercise3  exercise4

[root@localhost text2]# rmdir exercise2
[root@localhost text2]# ls
exercise3  exercise4

[root@localhost text2]# rmdir exercise3
[root@localhost text2]# ls
exercise4

# 这里删除空目录

(1)工作目录下的 text1 目录中,删除名为 text2 的子目录。若 text2 删除后,text1 目录成为空目录,则 text1 亦予删除,类推

代码语言:javascript复制
[root@localhost ~]# ls -R mydir/
mydir/:
text1

mydir/text1:
text2

mydir/text1/text2:


[root@localhost ~]# rmdir -p mydir/text1/text2/
[root@localhost ~]# ls
anaconda-ks.cfg

9、mv命令

**作用:**用来对文件或目录重新命名

代码语言:javascript复制
语法:mv(选项)(参数)

选项说明:
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

参数:

  • 源文件:源文件列表。
  • 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则 将源文件移动到“目标文件”下。

使用示例: 先给个环境

代码语言:javascript复制
[root@localhost ~]# ls -R mydir/
mydir/:
test1  test2

mydir/test1:
text1.log  text1.txt  text2.log

mydir/test2:

(1)将文件 text1.log 重命名为 text2.txt

代码语言:javascript复制
[root@localhost test1]# ls
text1.log  text1.txt  text2.log

[root@localhost test1]# mv text1.log text2.txt
[root@localhost test1]# ls
text1.txt  text2.log  text2.txt

(2)将文件 text1.txt text2.log text2.txt 移动到mydir的 test2 目录中

代码语言:javascript复制
[root@localhost test1]# mv text1.txt  text2.log  text2.txt  ../test2
[root@localhost test1]# ls
[root@localhost test1]# cd ../test2
[root@localhost test2]# ls
text1.txt  text2.log  text2.txt

(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖 使用参数 -i 询问

代码语言:javascript复制
[root@localhost test2]# ls
text1.txt  text2.log  text2.txt

[root@localhost test2]# mv -i text2.txt text1.txt 
mv:是否覆盖"text1.txt"? y
[root@localhost test2]# ls
text1.txt  text2.log
[root@localhost test2]# 

(4)移动当前文件夹下的所有文件到上一级目录

代码语言:javascript复制
[root@localhost test2]# mv * ../
[root@localhost test2]# ls ../
test1  test2  text1.txt  text2.log

10、more命令

**作用:**显示文件内容,每次显示一屏

代码语言:javascript复制
语法:more(选项)(参数)

选项说明:
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
 <数字>:从指定数字的行开始显示。

参数
文件:指定分页显示内容的文件。

常用的操作命令:

按键

按键功能描述

Enter

向下 n 行,需要定义。默认为 1 行

Ctrl F

向下滚动一屏

空格键

向下滚动一屏

Ctrl B

返回上一屏

=

输出当前行的行号

:f

输出文件名和当前行的行号

V

调用vi编辑器

!命令

调用Shell,并执行命令

q

退出more

使用示例: (1)显示文件中从第3行起的内容

代码语言:javascript复制
[root@localhost mydir]# more  3 text3.txt
     3  # 输入对应的内容后
     4  # 按ESC退出编辑模式
     5  # 按住shift ;进入命令行界面
     6  # 输入wq回车接口保存退出
     7       1  # 编辑文本,使用vi打开文本
     8       2  # 按i键进入编辑界面
     9       3  # 输入对应的内容后
    10       4  # 按ESC退出编辑模式
    11       5  # 按住shift ;进入命令行界面
    12       6  # 输入wq回车接口保存退出

(2)在所列出文件目录详细信息,借助管道使每次显示 5 行

代码语言:javascript复制
[root@localhost mydir]# ls -l / | more -5
总用量 20
lrwxrwxrwx.   1 root root    7 8月  31 15:48 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 8月  31 15:58 boot
drwxr-xr-x.  20 root root 3240 9月   5 13:07 dev
drwxr-xr-x.  75 root root 8192 9月   7 10:30 etc
--More--

# 空格会显示下5行
# 回车会显示下1行

11、less命令

**作用:**分屏上下翻页浏览文件内容

less命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

代码语言:javascript复制
语法:less(选项)(参数)
选项说明:
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。

参数
文件:指定要分屏显示内容的文件。

使用示例 (1)查看文件

代码语言:javascript复制
[root@localhost mydir]# less text3.txt 
     1  # 编辑文本,使用vi打开文本
     2  # 按i键进入编辑界面
     ...省略...

# 进入后查看,Q键退出界面

(2)ps查看进程信息并通过less分页显示

代码语言:javascript复制
[root@localhost mydir]# less text3.txt 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 05:06 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 05:06 ?        00:00:00 [kthreadd]
...省略...

(3)查看命令历史使用记录并通过less分页显示

代码语言:javascript复制
[root@localhost test]# history | less
    1  exit
    2  reboot
    3  shutdowm -r now
    4  poweroff
    5  cd 

...省略...

(4)查看多个文件

代码语言:javascript复制
[root@localhost mydir]# less text3.txt 

# 此时如果需要查看多个文件可以使用 可以输入shift ;进入命令行模式
# 使用 p 和 n 进行上下页面翻页查看
附加备注
1.全屏导航

ctrl   F - 向前移动一屏
ctrl   B - 向后移动一屏
ctrl   D - 向前移动半屏
ctrl   U - 向后移动半屏

2.单行导航

j - 向前移动一行
k - 向后移动一行

3.其它导航

G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令

4.其它有用的命令

v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件

5.标记导航

当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:

ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处

12、head命令

作用:显示文件的开头部分

代码语言:javascript复制
语法:head [选项] ... [文件] ...

选项说明:
    -c, --bytes=[-]NUM       显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容。
    -n, --lines=[-]NUM       显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行。
    -q, --quiet, --silent    不打印文件名行。
    -v, --verbose            总是打印文件名行。
    -z, --zero-terminated    行终止符为NUL而不是换行符。
    --help                   显示帮助信息并退出。
    --version                显示版本信息并退出。

NUM可以有一个乘数后缀:
b 512
kB 1000
k 1024
MB 1000*1000
M 1024*1024
GB 1000*1000*1000
G 1024*1024*1024
T、P、E、Z、Y等以此类推。

也可以使用二进制前缀:
KiB=K
MiB=M
以此类推。

参数:

  • 文件(可选项):要处理的文件,可以为一或多个。

使用示例: (1)显示 1.log 文件中前 20 行

代码语言:javascript复制
[root@localhost ~]# head 1.log -n 20

(2)显示 1.log 文件前 20 字节

代码语言:javascript复制
[root@localhost ~]# head -c 20 log2014.log

(3)显示 t.log最后 10 行

代码语言:javascript复制
[root@localhost ~]# head -n -10 t.log

扩展:tail 命令,查看文件的末尾

13、which命令

**作用:**用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

代码语言:javascript复制
语法:which(选项)(参数)
选项说明:
    -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
    -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
    -w:指定输出时栏位的宽度;
    -V:显示版本信息。

参数

  • 指令名:指令名列表。

使用示例:

代码语言:javascript复制
which     查看可执行文件的位置。
whereis   查看文件的位置。
locate    配合数据库查看文件位置。
find      实际搜寻硬盘查询文件名称。

14、whereis命令

**作用:**查找二进制程序、代码等相关文件路径

whereis命令 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。 whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

代码语言:javascript复制
语法:whereis(选项)(参数)
选项说明:
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。

参数:

  • 指令名:要查找的二进制程序、源文件和man手册页的指令名。

使用示例: (1)查看 ls 命令是否存在,执行哪个

代码语言:javascript复制
[root@localhost ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls

(2)查看 which

代码语言:javascript复制
[root@localhost ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
        /usr/bin/alias
        /usr/bin/which

(3)查看 cd

代码语言:javascript复制
[root@localhost ~]# which cd
/usr/bin/cd
(注意:显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)

(4)查看当前 PATH 配置

代码语言:javascript复制
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

15、locate命令

**作用:**文件查找工具

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。 locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab) locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”” 或”?”等)来指定范本样式,如指定范本为kcpaner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。 locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

代码语言:javascript复制
语法:locate [选择参数] [样式]
选项说明:
-b, --basename  # 仅匹配路径名的基本名称
-c, --count     # 只输出找到的数量
-d, --database DBPATH # 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing  # 仅打印当前现有文件的条目
-1 # 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的  权限资料。
-0, --null            # 在输出上带有NUL的单独条目
-S, --statistics      # 不搜索条目,打印有关每个数据库的统计信息
-q                    # 安静模式,不会显示任何错误讯息。
-P, --nofollow, -H    # 检查文件存在时不要遵循尾随的符号链接
-l, --limit, -n LIMIT # 将输出(或计数)限制为LIMIT个条目
-n                    # 至多显示 n个输出。
-m, --mmap            # 被忽略,为了向后兼容
-r, --regexp REGEXP   # 使用基本正则表达式
    --regex           # 使用扩展正则表达式
-q, --quiet           # 安静模式,不会显示任何错误讯息
-s, --stdio           # 被忽略,为了向后兼容
-o                    # 指定资料库存的名称。
-h, --help            # 显示帮助
-i, --ignore-case     # 忽略大小写
-V, --version         # 显示版本信息

常用参数:

  • -l  num(要显示的行数)
  • -f  将特定的档案系统排除在外,如将proc排除在外
  • -r  使用正则运算式做为寻找条件

使用示例: (1)查找和 pwd 相关的所有文件(文件名中包含 pwd)

代码语言:javascript复制
[root@localhost ~]# locate pwd
/etc/.pwd.lock
/usr/bin/pwd
...省略...

(2)搜索 etc 目录下所有以 sh 开头的文件

代码语言:javascript复制
[root@localhost ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells

(3)查找 /root 目录下,以 sh 结尾的文件

代码语言:javascript复制
[root@localhost ~]# locate -r '^/root.*sh$'
/root/test.sh

16、find命令

**作用:**在指定目录下查找文件

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

代码语言:javascript复制
语法:find(选项)(参数)

选项太多了,查文档去吧

参数:

  • 起始目录:查找文件的起始目录。

使用示例:

代码语言:javascript复制
#在/home目录下查找以.txt结尾的文件名

find /home -name "*.txt"

17、lsof命令

**作用:**用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

代码语言:javascript复制
语法:lsof (选项)

    -a:列出打开文件存在的进程;
    -c<进程名>:列出指定进程所打开的文件;
    -g:列出GID号进程详情;
    -d<文件号>:列出占用该文件号的进程;
     d<目录>:列出目录下被打开的文件;
     D<目录>:递归列出目录下被打开的文件;
    -n<目录>:列出使用NFS的文件;
    -i<条件>:列出符合条件的进程(协议、:端口、 @ip )
    -p<进程号>:列出指定进程号所打开的文件;
    -u:列出UID号进程详情;
    -h:显示帮助信息;
    -v:显示版本信息

使用示例:

代码语言:javascript复制
[root@iZ4q179d4eyom2Z ~]# lsof -i:80
COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
AliYunDun  1195 root   18u  IPv4   17649      0t0  TCP iZ4q179d4eyom2Z:59522->100.100.30.26:http (ESTABLISHED)
nginx     26154 root   22u  IPv4 3919233      0t0  TCP *:http (LISTEN)
nginx     30019  www   22u  IPv4 3919233      0t0  TCP *:http (LISTEN)
nginx     30020  www   22u  IPv4 3919233      0t0  TCP *:http (LISTEN)

四、状态管理

1. 日期时间

代码语言:javascript复制
#显示或设置系统日期与时间
root@iZ4q179d4eyom2Z:~# date
Tue 27 Jun 2023 08:29:26 PM CST

#日历
root@iZ4q179d4eyom2Z:~# cal
     June 2023        
Su Mo Tu We Th Fr Sa  
             1  2  3  
 4  5  6  7  8  9 10  
11 12 13 14 15 16 17  
18 19 20 21 22 23 24  
25 26 27 28 29 30    

#机器运行时间
root@iZ4q179d4eyom2Z:~# uptime
 20:34:19 up 29 days, 22:29,  2 users,  load average: 0.00, 0.02, 0.07

#显示已登录用户的信息
root@iZ4q179d4eyom2Z:~# w
 20:34:51 up 29 days, 22:30,  2 users,  load average: 0.08, 0.03, 0.07
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    59.49.106.4      20:17   17:34  10.46s  0.04s -bash
root     pts/1    110.176.5.243    20:29    1.00s  0.03s  0.00s w

2. 系统版本

代码语言:javascript复制
#查看红帽系列系统
cat /etc/redhat-release

#通用
uname -a

#通用
cat /proc/version

3. 进程管理

3.1 程序、进程、服务

1、程序是静态的

2、进程是动态的

3、服务是注册到操作系统的

代码语言:javascript复制
#显示包含mysql的服务
systemctl list-unit-files |grep mysql

cat /etc/services |grep mysql
3.2 运行程序

1、前台运行

代码语言:javascript复制
./xxx

2、后台运行

代码语言:javascript复制
nohub ./xxx &
3.3 top
3.4 ps
代码语言:javascript复制
#常用于查看某个进程有没有启动
ps -ef

ps -ef |grep mysql

#显示的最为详细
ps -aux
3.5 pstree
代码语言:javascript复制
#进程树显示进程号
pstree -p

#根据进程名称搜索
pstree mysql

#结合一下
pstree -p | grep ssh

4. 服务管理

4.1 systemctl

命令

作用

systemctl status *.service

查看所有服务状态

systemctl start mysql.service

启动服务

systemctl restart mysql.service

重启服务

systemctl stop mysql.service

暂停服务

systemctl enable mysql.service

开机自启动服务

systemctl disable mysql.service

停止开机自启动服务

5. 停止程序

5.1 kill

信号量

含义

服务停止

0

EXIT

程序退出

1

HUB

挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化

2

INT

表示结束进程,但并不是强制性的

3

QUIT

退出

9

KILL

杀死进程,强制结束进程

11

SEGV

段错误

15

TERM

正常结束进程,kill默认信号

代码语言:javascript复制
#常用为
kill -9 pid

6. 内存管理

1. free
代码语言:javascript复制
#默认单位大小为kb
free

#显示的单位更容易识别
free -h

#以MB为单位显示内存使用情况
free -m

7. 磁盘使用情况

7.1 du

命令

作用

du /usr

显示使用情况

du -h /usr

--human-readable用恰当的单位

du -h /root --max-depth=1

加上层级限制

du -h --max-depth=1

sort -hr

降序排列

du -ah /root

sort -hr

head -n 3

前三个大文件

du -ah --exclude="*/.*"

排除隐藏目录

du -kt -10M ./*

找出10M以上的文件

常用:

代码语言:javascript复制
#可视化单位
du -h /usr

#一级一级分析
du -h /usr --max-depth=1

#再降序排序
du -h --max-depth=1 | sort -hr

#前三个大文件
du -ah /root | sort -hr | head -n 3

8. 综合命令

代码语言:javascript复制
%user:用于表示用户模式下消耗的CPU时间的比例,
%nice:通过nice改变了进程调度优先级的进程,在用户模式下消耗的
CPU时间的比例;
%system:系统模式下消耗的CPU时间的比例;
%iowait:CPU等待磁盘I/O导致空闲状态消耗的时间比例;
%steal:利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用
的时间比例;
%ide:CPU空闲时间比例。

9. 定时任务

工具:cron

cron表达式:https://tool.lu/crontab

命令:

代码语言:javascript复制
#删除任务remove
crontab -u root -r

#把文件添加到某个用户的任务
crontab -u root time.cron

#列举任务list
crontab -u root -l

#编辑任务edit
crontab -u root -e

#日志地址
/var/log/cron

五、其他命令

1.shell

代码语言:javascript复制
#查看当前shell
echo $SHELL
#切换shell
chsh -s /bin/csh

shell名称

程序路径

bonrne shell

/usr/bin/sh或/bin/sh

C Shell

/usrbin/csh

K Shell

usr/bin/ksh

Bourne Again Shell

/bin/bash

Z Shell

/bin/zsh或/usr/bin/zsh

Windows:cmd、Power Shell

六、常用操作

1.命令帮助

  • man command(manual)——具体参数和使用方法
  • whatis command——命令的简要说明
  • info command——详细介绍
  • help command——Linux内置命令

2.关机重启

关机:

代码语言:javascript复制
poweroffshutdown -h nowhalt -p

重启:

代码语言:javascript复制
reboot

3.快捷键及命令

操作

作用

Tab键

补全命令和目录(自动提示)

方向键

上一条命令:↑;下一条命令↓

Ctrl r

搜索历史命令,回车执行

!cd:

重复执行最近一次,以 cd开头的历史命令

Ctrl Insert

复制

Shift Insert

粘贴

Alt Insert

复制并粘贴

Ctrl E

移动到光标行尾

Ctrl A

移动到光标行首

Ctrl K

清除光标后所有内容

Ctrl U

清除光标前所有内容

clear

清除屏幕

history

查看历史命令

history -

清除历史命令

4.别名配置alias

查看别名:alias 设置别名(以bash为例):vim ~/.bashrc

代码语言:javascript复制
#格式:
alias short='xxx;xxx'
#生效:
source ~/.bashrc

5.通配符

符号

指代

*

任意字符

?

单个字符

[]

匹配范围中的,比如[0-9][a-z]

{}

ll {*.log,*.txt}

^

取反ll*[^txt]*查找不是.txt结尾

6.系统环境变量

  • 查看全部变量:env
  • 查看单个变量:echo $XXX
  • 用户变量:~/.bashrc
  • 系统变量:/etc/profile

0 人点赞