Linux 虚拟机常用命令

一、文件/文件夹管理

1. ls命令

就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。

 ls -a 列出目录所有文件,包含以.开始的隐藏文件

 ls -A 列出除.及..的其它文件

 ls -r 反序排列

 ls -t 以文件修改时间排序

 ls -S 以文件大小排序

 ls -h 以易读大小显示

 ls -l 或 ll,除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

2. cd 命令

changeDirectory的缩写,作用是切换文件夹

(1)进入根目录

     cd /

(2)进入"家"目录

     cd ~

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

     cd -

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

     cd !$

(5)返回当前目录的上一级目录

     cd ..

拓展:家目录即用户的目录如root 用户目录,根目录则是最上层,即根目录包含家目录

3. pwd命令

查看当前所在目录的路径

(1)查看当前路径

     pwd

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

     pwd -P

4. mkdir命令

创建文件夹

(1)在指定目录下创建文件夹,若这个指定目录不存在则报错

     mkdir 【文件夹路径+文件夹名】

(2)在指定目录下创建文件夹,若这个指定目录不存在则 创建这个目录

     mkdir -p 【文件夹路径+文件夹名】

5. rmdir 命令

删除空文件夹,注意这个目录只能删除空文件夹

(1)删除一个空目录

     rmdir 【文件】

(2)删除一个空目录,如果删除后使上级目录也为空,则一并删除

     rmdir -p【文件】

6. rm 命令

删除一个目录中的一个或多个文件或目录,如果没有使用 - r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状 rm [选项] 文件

(1)删除任何.txt文件;删除前逐一询问确认

     rm -i *.txt

(2)删除test子目录及子目录中所有档案删除,并且不用一一确认

     rm -rf test

(3)删除以-k开头的文件

     rm -- -k*

7. mv 命令

移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。

当第二个参数为目录时,可刚多个文件以空格分隔作为第一参数,移动多个文件到参数2指定的目录中。

(1)将文件test.log重命名为test1.txt

     mv test.log test1.txt

(2)将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中

     mv llog1.txt log2.txt log3.txt /test3

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

     mv -i log1.txt log2.txt

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

     mv * ../

8. find 命令

用于在文件树中查找文件,并作出相应的处理

 命令格式:

     find pathname -options [-print -exec -ok ...]

 命令参数:

     pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

     -print: find命令将匹配的文件输出到标准输出。

     -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。

     -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 命令选项:

     -name 按照文件名查找文件

     -perm 按文件权限查找文件

     -user 按文件属主查找文件

     -group  按照文件所属的组来查找文件。

     -type  查找某一类型的文件,诸如:

               b - 块设备文件

               d - 目录

               c - 字符设备文件

               l - 符号链接文件

               p - 管道文件

               f - 普通文件

     -size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小

     -amin n   查找系统中最后N分钟访问的文件

     -atime n  查找系统中最后n*24小时访问的文件

     -cmin n   查找系统中最后N分钟被改变文件状态的文件

     -ctime n  查找系统中最后n*24小时被改变文件状态的文件

     -mmin n   查找系统中最后N分钟被改变文件数据的文件

     -mtime n  查找系统中最后n*24小时被改变文件数据的文件

     (用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )

     -maxdepth n 最大查找目录深度

     -prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略

     -newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

9. cp 命令

将源文件复制至目标文件,或将多个源文件复制至目标目录。

注意 :命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

     -i 提示

     -r 复制目录及目录内所有项目

     -a 复制的文件与原文件时间一样

10. touch 命令

创建一个或多个空文件

(1) 创建一个新的空文件
touch file.txt
 
(2) 创建多个新的空文件
touch file1.txt file2.txt file3.txt

二、 系统管理

1. fdisk命令

fdisk命令是Linux操作系统中一个用于分区硬盘的命令行工具。它可以用来创建、删除、调整分区以及设置分区属性等操作

fdisk -l           #查看系统分区信息

#为一块新的SCSI硬盘进行分区
# 进入交互式分区工具(/dev/sda为示例)
fdisk /dev/sda
 
# 创建新分区
n
# 按照提示设置分区大小和起始位置
 
# 删除分区
d
# 选择要删除的分区号
 
# 修改分区类型
t
# 选择要修改的分区号
# 按照提示选择新的分区类型
 
# 保存分区表更改
w

2. chown命令

更改文件或目录的所有者(owner)的命令

帮助记忆:【change owner】

用法:

chown [选项] <新所有者> <文件/目录>

常用选项:

  • -R 递归地修改指定目录下的所有文件和子目录的所有者。

  • --reference=<参考文件/目录> 从参考文件/目录中获取所有者和所属组的信息,并应用到目标文件/目录上。

示例:

1.将文件file.txt的所有者改为root用户:

chown root file.txt

2.将目录dir1以及其子目录和文件的所有者改为user1:

chown -R user1 dir1

3.根据参考文件ref.txt的所有者和所属组信息,将目录dir2下的所有文件和子目录的所有者和所属组一致化:

java 复制代码
chown --reference=ref.txt -R dir2

注意:使用chown命令需要具有足够的权限,一般需要以root用户或具有sudo权限的用户身份执行。

3. chgrp命令

改变文件或目录所属群组(group)的命令

帮助记忆:【change group】

用法:

java 复制代码
chgrp [参数] [属组GID|属组名称] [文件|目录]

选项:

java 复制代码
-R	递归处理,将指定目录下的所有文件及子目录一起更改
-v	显示命令执行过程

示例:

把文件ztj.sh属组由root更改为ztj

java 复制代码
chgrp -v ztj ztj.sh 

4. chmod 命令

改变linux系统文件或目录的访问权限的命令

该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l 或 ll查找

示例:

java 复制代码
 以文件log2012.log为例:

     -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

java 复制代码
 常用参数:

     -c 当发生改变时,报告处理信息

     -R 处理指定目录以及其子目录下所有文件

 权限范围:

     u :目录或者文件的当前的用户

     g :目录或者文件的当前的群组

     o :除了目录或者文件的当前用户或群组之外的用户或者群组

     a :所有的用户及群组



 权限代号:

     r :读权限,用数字4表示

     w :写权限,用数字2表示

     x :执行权限,用数字1表示

     - :删除权限,用数字0表示

     s :特殊权限

示例:

java 复制代码
(1)增加文件t.log所有用户可执行权限

     chmod a+x t.log

(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息

     chmod u=r t.log -c

(3)给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

     chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)

(4)将test目录及其子目录所有文件添加可读权限

     chmod u+r,g+r,o+r -R text/ -c

5. useradd命令

useradd命令是一个Linux系统中用于添加新用户的命令。

java 复制代码
基本语法:

useradd [选项] 用户名

选项:

-c, --comment COMMENT:设置用户描述信息

-d, --home HOME_DIR:设置用户的主目录

-e, --expiredate EXPIRE_DATE:设置账号的失效日期

-f, --inactive INACTIVE:设置账号的非活动期限

-g, --gid GROUP:设置用户所属的主要组

-G, --groups GROUPS:设置用户所属的其他附加组

-m, --create-home:创建用户的主目录

-s, --shell SHELL:设置用户的登录Shell

-k, --skel SKEL_DIR:指定用于创建用户家目录的骨架目录

-p, --password PASSWORD:设置用户的密码

-r, --system:创建系统账号

-U, --user-group:同时创建与用户名同名的用户组

-M, --no-create-home:不创建用户主目录

示例:

java 复制代码
(1)创建一个名为"testuser"的新用户,并指定用户描述信息和主目录:

useradd -c "Test User" -d /home/testuser testuser

(2)创建一个新用户"devuser",并将其添加到"developers"组中:

useradd -G developers devuser

(3)创建一个系统账号"sysuser",并设置其主目录为"/var/sysuser":

useradd -r -d /var/sysuser sysuser

6. groupadd命令

groupadd命令是用于在Linux系统中创建一个新的用户组的命令。

java 复制代码
它的基本语法如下:

groupadd [选项] 组名

其中,选项可以包括:

-g GID:指定新用户组的GID(组ID)。

-o:允许新用户组的GID与已存在用户组的GID重复。

-r:创建一个系统用户组。

示例:

java 复制代码
例如,要创建一个名为"testgroup"的用户组,可以使用以下命令:

groupadd testgroup

7. passwd命令

passwd命令是一个在Linux系统中用于更改用户密码的命令。它允许用户更改自己的密码或者管理员更改其他用户的密码。

如果你想要更改自己的密码,只需要在终端中输入passwd命令,然后按照提示输入当前密码和新密码即可。

如果你是管理员,想要更改其他用户的密码,需要使用sudo passwd <用户名>命令。其中"<用户名>"是你想要更改密码的用户的用户名。然后按照提示输入管理员密码和新密码即可。

常用选项:

java 复制代码
-d 用户名    #删除用户密码也能登陆
-S 用户名    #查询账号密码

示例:

java 复制代码
$ passwd
当前密码:*******
新的密码:*******
重新输入新的密码:*******
java 复制代码
$ sudo passwd alice
[sudo] password for admin: ******
新的密码:*******
重新输入新的密码:*******

需要注意的是,passwd命令只能由管理员或用户本人执行,普通用户不能更改其他用户的密码。另外,为了保护账户安全,密码应该复杂且定期更换。

8. usermod命令

usermod命令是用于修改用户账户的命令。它可以用来修改用户的用户名、用户ID、所属组、用户主目录、登录shell等信息。

使用usermod命令需要管理员权限,具体使用方法如下:

java 复制代码
(1)修改用户名:usermod -l new_username old_username

示例:usermod -l user1 user2,将用户user2的用户名修改为user1。

(2)修改用户ID:usermod -u new_user_id username

示例:usermod -u 1001 user1,将用户名为user1的用户的用户ID修改为1001。

(3)修改所属组:usermod -g group_name username

示例:usermod -g group1 user1,将用户名为user1的用户的所属组修改为group1。

(4)修改用户主目录:usermod -d new_home_directory username

示例:usermod -d /home/user1 user1,将用户名为user1的用户的用户主目录修改为/home/user1。

(5)修改用户登录shell:usermod -s new_login_shell username

示例:usermod -s /bin/bash user1,将用户名为user1的用户的登录shell修改为/bin/bash。

注意:使用usermod命令修改用户信息时,需要谨慎操作,避免对系统造成影响或引起安全问题。

9. Userdel命令

userdel命令用于删除用户账户及其关联的用户组和用户主目录。当执行userdel命令时,用户账户将被标记为已删除,但用户主目录默认情况下不会被自动删除。

常用选项:

java 复制代码
-r:删除用户账户及其用户主目录。使用此选项将同时删除用户主目录,确保用户的所有数据都被清除。

-f:强制删除用户账户。即使用户当前登录,也会被强制删除。

-Z:删除用户账户时,不会删除用户的安全上下文。

10. 系统服务控制操作

java 复制代码
service [servicename] start/stop/restart 或
/etc/init.d/[servicename] start/stop/restart 

11. 查看硬件信息

注意有些命令无法使用是因为没有下载该命令的插件

java 复制代码
uname -a     查看内核版本
cat /etc/issue 查看ubuntu版本
lsusb         查看usb设备
sudo ethtool eth0 查看网卡状态
cat /proc/cpuinfo 查看cpu信息
lshw         查看当前硬件信息
sudo fdisk -l  查看磁盘信息
df -h         查看硬盘剩余空间
free -m       查看当前的内存使用情况
ps -A         查看当前有哪些进程

12. kill 命令

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程(即 kill -9),使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

常用选项:

java 复制代码
     -l  信号,若果不加信号的编号参数,则使用"-l"参数会列出全部的信号名称

     -a  当处理当前进程时,不限制命令名和进程号的对应关系

     -p  指定kill 命令只打印相关进程的进程号,而不发送任何信号

     -s  指定发送信号

     -u  指定用户

13. 重启和关闭 Linux 系统

java 复制代码
reboot Init 6 或 reboot 或 shutdown -r now   重启LINUX系统
halt Init 0 Shutdown --h now   关闭LINUX系统

三、 打包/解压(tar)

tar命令

用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。

弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

     常用参数:

     -c 建立新的压缩文件

     -f 指定压缩文件

     -r 添加文件到已经压缩文件包中

     -u 添加改了和现有的文件到压缩包中

     -x 从压缩包中抽取文件

     -t 显示压缩文件中的内容

     -z 支持gzip压缩

     -j 支持bzip2压缩

     -Z 支持compress解压文件

     -v 显示操作过程

     gzip实例:压缩gzip fileName .tar.gz和.tgz  解压:gunzip filename.gz或gzip -d filename.gz

     对应:tar zcvf filename.tar.gz     tar zxvf filename.tar.gz

     bz2实例:压缩bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2

     对应:tar jcvf filename.tar.gz         解压:tar jxvf filename.tar.bz2

示例:

(1)将文件全部打包成tar包

     tar -cvf log.tar 1.log,2.log 或tar -cvf log.*

(2)将/etc下的所有文件及目录打包到指定目录,并使用gz压缩

     tar -zcvf /tmp/etc.tar.gz /etc

(3)查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)

     tar -ztvf /tmp/etc.tar.gz

(4)要压缩打包/home, /etc ,但不要 /home/dmtsai

     tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc


tar -c 创建包 --x 释放包 -v 显示命令过程 --z 代表压缩包
tar --cvf benet.tar /home/benet   把/home/benet目录打包
tar --zcvf benet.tar.gz /mnt   把目录打包并压缩
tar --zxvf benet.tar.gz        压缩包的文件解压恢复
tar --jxvf benet.tar.bz2        解压缩

四、 make 编译

1. make工具

人们通常利用 make 工具来自动完成编译工作

这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件

如果某个头文件被修改了,则重新编译所有包含该头文件的源文件

利用这种自动编译可大大简化开发工作,避免不必要的重新编译

2. make是如何工作的

1、make会在当前目录下找名字叫"Makefile"或"makefile"

2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到"main"这个文件,并把这个文件作为最终的目标文件

3、如果main文件不存在,或是main所依赖的后面的 .o 文件的文件修改时间要比main这个文件新,那么,他就会执行后面所定义的命令来生成main这个文件

4、如果main所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件

5、当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件make的终极任务,也就是执行文件main了

注:如果DEPENDENCIES中有一个或多个文件更新的话,COMMAND就要执行,这就是Makefile最核心的内容

make 编译
make install 安装编译好的源码包

五、 apt命令

apt命令是一个Linux系统中常用的包管理工具,用于安装、更新、卸载软件。

示例:

apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package - - reinstall 重新安装包
sudo apt-get -f install 修复安装"-f = --fix-missing"
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 是查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
sudo apt-get clean 清理所有软件缓存(即缓存在/var/cache/apt/archives目录里的deb包)

查看软件xxx安装内容    #dpkg -L xxx
查找软件                #apt-cache search 正则表达式
查找文件属于哪个包     #dpkg -S filename apt-file search filename
查询软件xxx依赖哪些包  #apt-cache depends xxx
查询软件xxx被哪些包依赖  #apt-cache rdepends xxx
增加一个光盘源       #sudo apt-cdrom add

系统升级
#sudo apt-get update
#sudo apt-get upgrade
#sudo apt-get dist-upgrade

清除所以删除包的残余配置文件
#dpkg -l |grep ^rc|awk '{print $2}' |tr ["\n"] [" "]|sudo xargs dpkg -P -

编译时缺少h文件的自动处理
#sudo auto-apt run ./configure

查看安装软件时下载包的临时存放目录
#ls /var/cache/apt/archives

备份当前系统安装的所有包的列表
#dpkg --get-selections | grep -v deinstall > ~/somefile

从上面备份的安装包的列表文件恢复所有包
#dpkg --set-selections < ~/somefile sudo dselect

清理旧版本的软件缓存
#sudo apt-get autoclean

清理所有软件缓存
#sudo apt-get clean

删除系统不再使用的孤立软件
#sudo apt-get autoremove

查看包在服务器上面的地址
#apt-get -qq --print-uris install ssh | cut -d\' -f2
相关推荐
o(╥﹏╥)10 分钟前
在 Ubuntu 上安装 VS Code
linux·运维·vscode·ubuntu·vs
AI慧聚堂34 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
不爱学英文的码字机器36 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye1 小时前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_433618441 小时前
shell 编程(三)
linux·运维·服务器
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花1 小时前
Jenkins 持续集成部署
运维·jenkins
Tlzns1 小时前
Linux网络——UDP的运用
linux·网络·udp
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen1 小时前
天融信Linux系统安全问题
linux·运维·系统安全