Linux命令(Ubuntu)

ls

ls 查看当前文件夹下的内容

  • -a显示指定目录下所有子目录与文件,包括隐藏文件(以”.“开头的文件为隐藏文件)
  • -l以列表方式显示文件的详细信息
  • -h配合 -l以人性化的方式显示文件大小

ls -l的详细信息,从左到右依次是:

  • 权限,第一个字符如果是d表示目录
  • 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
  • 拥有者,家目录下文件/目录的拥有者通常都是当前用户
  • ,在Linux中,很多时候会出现组名和用户名相同的情况
  • 大小
  • 时间
  • 名称
    1

通配符:

  • *代表任意个数字符
  • ? 代表任意一个字符
  • [] 表示可以匹配字符组中的任意一个
  • [abc] 匹配a、b、c中的任意一个
  • [a-f] 匹配从a到f范围内的任意一个字符

pwd

pwd查看当前所在文件夹

cd

cd[目录名] 切换文件夹

  • cd 切换到当前用户的主目录(/home/用户目录)
  • cd ~ 切换到当前用户的主目录(/home/用户目录)
  • cd . 保持在当前目录不变
  • cd .. 切换到上级目录
  • cd - 可以在最近两次工作目录之间来回切换

touch

touch[文件名]

  • 如果文件不存在,可以创建一个空白文件
  • 如果文件已经存在,可以修改文件的末次修改日期

mkdir

mkdir[目录名] 创建目录

  • -p可以递归创建目录,即-p后面接路径

rm

rm[文件名] 删除指定的文件

  • -f强制删除,忽略不存在的文件,无需提示
  • -r递归的删除目录下的内容,删除文件夹时必须加此参数

clear

clear清屏

小技巧:

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示
  • tab键自动补全

拷贝和移动命令

tree

tree 可以以树状图列出文件目录结构

  • -d只显示目录

cp

cp 将给出的文件目录复制到另一个文件目录
格式:cp 源文件 目标文件

  • -f已经存在的目标文件直接覆盖,不会提示
  • -i覆盖文件前提示
  • -r若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

mv

mv 可以用来移动文件或者目录,也可以给文件或者目录重命名
格式:mv 源文件 目标文件

  • -i 覆盖文件前提示

文件内容命令

cat

cat命令可以用来查看文件内容、创建文件、文件合并、追加文件内容等功能
cat会一次显示所有的内容,适合查看内容较少的文本文件
格式:cat 文件名

  • -b对非空输出行编号
  • -n对输出的所有行编号
    注:Linux中还有一个nl的命令和cat -b的效果等价

more

more命令可以用于分屏显示文件内容,每次只显示一页内容,适合于查看内容较多的文本文件
格式:more 文件名

  • 空格键 显示手册页的下一屏
  • Enter键 一次滚动手册页的一行
  • b 回滚一屏
  • f 前滚一屏
  • q 退出
  • /word 搜索word字符串

grep

grep搜索文本文件内容
格式:grep 搜索文本 文件名

  • -n 显示匹配行及行号
  • -v 显示不包含匹配文本的所有行(相当于求反)
  • -i 忽略大小写
  • ^a 行首,搜寻以a开头的行
  • ke$ 行尾,搜寻以ke结束的行

其他

echo

echo会在终端中显示参数指定的文字,通常会和重定向联合使用
格式:echo 内容

重定向>和>>

Linux允许将命令执行结果重定向到一个文件,将本应显示在终端上的内容 输出/追加指定文件中,其中:
> 表示输出,会覆盖文件原有内容
>> 表示追加,会将内容追加到已有文件的末尾
例:
(1)echo hello world > a
hello world输出到a文件中(若a文件已存在则会覆盖a文件内容)
(2)ls -lh > a
ls -lh的查询结果输出到a文件中
(3)echo hello world >> a
hello world追加到a文件中
(4)ls >> a
ls的查询结果追加到a文件中
(5)tree >> a
tree的查询结果追加到a文件中

管道|

Linux允许将一个命令的输出可以通过管道做为另一个命令的输入
常用的管道命令:

  • more:分屏显示内容
  • grep:在命令执行结果的基础上查询指定的文本

远程管理常用命令

关机/重启

shutdown命令可以安全关闭或者重新启动系统
格式:shutdown 选项 时间

  • -r 重新启动

提示:
(1)不指定选项和参数,默认表示1分钟之后关闭电脑
(2)远程维护服务器时,最好不要关闭系统,而应该重新启动系统

例:
(1)重新启动操作系统,其中now表示现在
shutdown -r now
(2)立即关机,其中now表示现在
shutdown now
(3)系统在今天的20:25分会关机
shutdown 20:25
(4)系统再过十分钟后自动关机
shutdown +10
(5)取消之前指定的关机计划
shutdown -c

查看或配置网卡信息

ifconfig

ifconfig可以查看/配置计算机当前的网卡配置信息
(1)查看网卡配置信息
ifconfig
(2)查看网卡对应的ip地址
ifconfig | grep inet

提示:

  • 一台计算机中可能会有一个物理网卡多个虚拟网卡,在Linux中物理网卡的名字通常以ensXX表示
  • 127.0.0.1被称为本地回环/环回地址,一般用来测试本机网卡是否正常

ping

ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢
提示:
在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用ctrl + c
例:
(1)检测到目标主机是否连接正常
ping IP地址/域名
(2)检测本地网卡工作正常
ping 127.0.0.1

ssh

格式:ssh [-p port] user@remote

  • user是在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote是远程机器的地址,可以是IP/域名,或者是别名
  • portSSH Server 监听的端口,如果不指定,就默认值22

提示:
(1)使用exit退出当前用户的登录
(2)ssh这个终端命令只能在Linux或者Unix系统下使用,如果在Windows系统中,可以安装Putty或者Xshell客户端软件即可

scp

scp就是secure copy,是一个在Linux下用来进行远程拷贝文件的命令
它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写-P,而不是小写的

  • -r 若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
  • -P 若远程SSH服务器的端口不是22,需要使用大写字母-P选项指定端口

格式:
(1)把本地当前目录下的01.py文件复制到 远程 家目录下的Desktop/01.py
注意:“:”后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py
(2)把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py
scp -P port user@remote:Desktop/01.py 01.py
(3)加上-r选项可以传送文件夹,把当前目录下的demo文件夹复制到远程家目录下的Desktop
scp -r demo user@remote:Desktop
(4)把远程家目录下的Desktop复制到当前目录下的demo文件夹
scp -r user@remote:Desktop demo

注意:scp这个终端命令只能在Linux或者UNIX系统下使用

免密码登录

  • 配置公钥
    执行ssh-keygen即可生成SSH钥匙,一路回车即可

  • 上传公钥到服务器
    执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

组管理

格式:

  • groupadd 组名 添加组
  • groupdel 组名 删除组
  • cat /etc/group 确认组信息
  • chgrp 组名 文件/目录名 修改文件/目录的所属组
  • chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

提示:
(1)创建组/删除组的终端命令都需要通过sudo执行
(2)组信息保存在/etc/group文件中
(3)/etc目录是专门用来保存系统配置信息的目录

用户管理

注意:创建用户/删除用户/修改其他用户密码的终端命令都需要通过sudo执行

创建用户/设置密码/删除用户

(1)添加新用户
useradd -m -g 组 新建用户名

  • -m 自动建立用户家目录
  • -g 指定用户所在的组,否则会建立一个和用户名同名的组

(2)设置用户密码
passwd 用户名
如果是普通用户,直接用passwd可以修改自己的账户密码

(3)删除用户
userdel -r 用户名

  • -r 选项会自动删除用户家目录

(4)确认用户信息
cat /etc/passwd | grep 用户名
新建用户后,用户信息会保存在/etc/passwd文件中

提示:

  • 创建用户时,默认会创建一个和用户名同名的组名
  • 用户信息保存在/etc/passwd文件中

查看用户信息

(1)查看用户UID和GID信息
id [用户名]
(2)查看当前所有登录的用户列表
who
(3)查看当前登录用户的账户名
whoami

passwd文件
/etc/passwd文件存放的时用户的信息,由6个冒号组成的7个信息,分别是

  1. 用户名
  2. 密码(x,表示加密的密码)
  3. UID(用户标识)
  4. GId(组标识)
  5. 用户全名或本地帐号
  6. 家目录
  7. 登录使用的Shell,就是登录之后使用的终端命令,ubuntu默认是dash

usermod

usermod可以用来设置用户的主组/附加组登录Shell

  • 主组:通常在新建用户时指定,在/etc/passwd的第4列GID对应的组
  • 附加组:在/etc/group中最后一列表示改组的用户列表,用于指定用户的附加权限

注:设置了用户的附加组之后,需要重新登录才能生效!

格式:
(1)修改用户的主组(passwd中的GID)
usermod -g 组 用户名
(2)修改用户的附加组
usermod -G 组 用户名
(3)修改用户登录Shell
usermod -s /bin/bash 用户名

注:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中:
useradd -G sudo 用户名

which

提示:

  • /etc/passwd是用于保存用户信息的文件
  • /etc/bin/passwd是用于修改用户密码的程序

which可以查看执行命令所在位置,例如:
(1)which ls(输出“/bin/ls”)
(2)which useradd(输出“/usr/sbin/useradd”)

bin和sbin

  • 在Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin
  • /bin(binary)是二进制执行文件目录,主要用于具体应用
  • /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/bin(user commands for application)后期安装的一些软件
  • /usr/sbin(super user commands for application)超级用户的一些管理程序

注:
cd这个终端命令是内置在系统内核中的,没有独立文件,因此用which无法找到

切换用户

(1)切换用户,并且切换目录
su - 用户名

  • -可以切换到用户家目录,否则保持位置不变

(2)退出当前登录账户
exit

注:
su不接用户名,可以切换到root,但是不安全

修改文件权限

chown

chown修改拥有者

格式:
chown 用户名 文件名 | 目录名

chgrp

chgrp修改组

格式:
递归修改文件|目录的组
chgrp -R 组名 文件名 | 目录名

chmod

chmod可以修改用户/组文件/目录的权限
格式1:
chmod +/-rwx 文件名|目录名
说明:

  • - 减号,表示减少权限,后面接减少的权限
  • + 加号,表示增加权限,后面接增加的权限
  • r
  • w
  • x 执行
  • 会一次性修改拥有者/组权限

例:

  1. 减少01.py文件的读写权限
    chmod -rw 01.py
  2. 增加01.py文件的读权限
    chmod +r 01.py

格式2:
chmod -R 755 文件名 | 目录名

  • chmod在设置权限时,可以简单地使用三个数字分别对应拥有者/组和其他用户的权限
    2

常见数字组合(u表示用户/g表示组/o表示其他):

  • 777===>u=rwx,g=rwx,o=rwx
  • 755===>u=rwx,g=rx,o=rx
  • 644===>u=rw,g=r,o=r

例:

  1. 将01.py的权限修改为u=rwx,g=rx,o=r
    chmod 754 01.py
  2. 将123.txt的权限修改为u=rw,g=r,o=-
    chmod 640 123.txt
  3. 将test目录以及目录下的所有文件权限修改为u=rwx,g=rwx,o=rx
    chmod -R 775 test

系统信息

日期和时间

  1. 查看系统时间
    date
  2. 查看日历,-y选项可以查看一年的日历
    cal

磁盘信息

  1. disk free显示磁盘剩余空间
    df -h
  2. disk usage显示目录下的文件大小
    du -h[目录名]
    • -h以人性化的方式显示文件大小

进程信息

  1. process status 查看进程的详细状况
    ps aux

    • ps选项说明:
      1. a 显示终端上的所有进程,包括其他用户的进程
      2. u 显示进程的详细状态
      3. x显示没有控制终端的进程
        注:ps默认只会显示当前用户通过终端启动的应用程序
  2. 动态显示运行中的进程并且排序,要退出top可以直接输入q
    top

  3. 终止指定代号的进程,-9表示强行终止
    kill [-9] 进程代号

其他

查找文件

find命令常用来在特定的目录下搜索符合条件的文件
格式:
查找指定路径下扩展名是“.py”的文件,包括子目录
find [路径] -name "*.py"

  • 如果省略路径,表示在当前文件下查找
  • 可以用通配符

例:

  1. 搜索桌面目录下,文件名包含1的文件
    find -name "*1*"
  2. 搜索桌面目录下,所有以”.txt”为扩展名的文件
    find -name "*.txt"
  3. 搜索桌面目录下,以数字1开头的文件
    fing -name "1*"

软链接

建立文件的软链接,类似于Windows下的快捷方式
ln -s 被链接的源文件 链接文件

注意:

  • 没有-s选项建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,硬链接几乎不用
  • 源文件最好用绝对路径,这样移动链接文件后仍然能够正常使用
  • 链接文件即快捷方式的名称

硬链接

在使用ln创建链接时,如果没有-s选项,会创建一个硬链接,而不是软链接
3

打包/解包

tar是Linux中最常用的备份工具,可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件
格式:

  1. 打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径……
  2. 解包文件
    tar -xvf 打包文件.tar

选项说明:

  • c 生成档案文件,创建打包文件
  • x 解开档案文件
  • v 列出归档解档的详细过程,显示进度
  • f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后(其他选项随意)

压缩/解压缩

gzip

  • targzip命令结合可以实现文件打包和压缩

    • tar只负责打包文件,但不压缩
    • gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz
  • tar命令中有有一个选项 -z可以调用gzip,从而可以方便的实现压缩和解压缩的功能

格式:

  1. 压缩文件
    tar -zcvf 打包文件.tar.gz 被压缩的文件/路径……
  2. 解压缩文件
    tar -zxvf 打包文件.tar.gz
  3. 解压缩到指定路径
    tar -zxvf 打包文件.tar.gz -C 目标路径
    • -C解压缩到指定路径,要解压缩的目录必须存在

bzip2(two)

  • tarbzip2命令结合可以实现文件打包和压缩(用法和gzip一样)

    • tar只负责打包文件,但不压缩
    • bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2
  • tar命令中有有一个选项 -j可以调用bzip2,从而可以方便的实现压缩和解压缩的功能

格式:

  1. 压缩文件
    tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径……
  2. 解压缩文件
    tar -jxvf 打包文件.tar.bz2
  3. 解压缩到指定路径
    tar -jxvf 打包文件.tar.bz2 -C 目标路径
    • -C解压缩到指定路径,要解压缩的目录必须存在

软件安装

通过apt安装/卸载软件

apt(Advanced Packing Tool)
格式:

  1. 安装软件
    sudo apt install 软件包
  2. 卸载软件
    sudo apt remove 软件名
  3. 更新已安装的包
    sudo apt upgrade

配置软件源

  • 如果希望在ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务
  • 更换完成之后,再安装软件都会从新设置的服务器下载软件了
  • 所谓镜像源,就是所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内的服务器通常速度会快一些
    4