Linux常用命令总结

目录

目录和文件

sudo

pwd

ls

cd

touch

tree

cp

mv

mkdir

rmdir

rm

nano

cat

more

head

tail

grep

echo

管道 |

apt-get

poweroff

 

文件权限

ls查看权限

chmod 修改权限

文件默认权限

一个使用Python的技巧

 

远程管理

shutdown

ifconfig

ping

ssh基础

scp

ssh高级

 

用户权限

chmod

sudo

组管理终端命令

查看用户信息

password文件

usermod

which

bin/sbin

切换用户

修改文件权限

系统信息

时间和日期

磁盘信息

进程信息

其他

find

ln

tar

gzip

bzip2

apt

配置软件源


友情链接:

https://zhouzhuming.tech/categories/Linux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/

目录和文件

sudo

$ sudo su
# SuperUserDo(简写成”sudo”),根目录权限

pwd

~/Documents$ pwd
# 获取当前所在的路径(绝对路径)

ls

~$ ls
# 显示当前目录的所有文件和文件夹

~$ ls -l
# 输出详细信息 -l (long 的简写). 这个指令会打印出文件的权限 (-rw-rw-r-- 之后我们在细说这个), 用户名, 文件大小, 修改日期, 文件名

~$ ls -a
# -a (all 的简写) 显示所有文件 . 这里还会显示隐藏的文件 (以 . 开头的)

~$ ls -lh
# -lh (human), 直接 -l 不方便人看, 这个指令是为了方便给人观看的. 注意这里的文件大小使用了 K, MB, GB 之类概括

~$ ls --help
# 还有很多其他的功能, 我们可以通过 --help 来查看

cd

~$ cd Documents/
# 跳转到对应的Documents目录

~/Documents$ cd ..
# 返回上一级目录

~$ cd Documents/Folder1/
# 去往子文件夹Folder1

~/Documents/Folder1$ cd -
# 返回你刚刚所在的目录(也就是你的上一条命令所在的目录)

~/Documents/Folder1$ cd ../../
# 向上返回两次(再往上返回可以依次类推)

~/Documents/Folder1$ cd ~
# 去往当前用户的主目录

touch

~/Documents$  touch file2.txt
# 建立一个文件名为file2的空的文本文档

~/Documents$  touch file3.txt file4.txt file5.txt
# 同时建立三个空的文本文档(也可以不指定文件的扩展名)

tree

~/Documents$  tree [目录名]
# 查看当前目录下的文件目录结构

~/Documents$  tree -d [目录名]
# 只会显示当前目录下的目录结构而不显示文件结构

~/Documents$  tree /f>tree.txt
# 将生成的文件目录树写入到tree.txt

cp

~$ cp 源文件 目标文件

~/Documents$ cp file1 file1copy
# 将file1复制成file1copy

~/Documents$ cp -i file1 file1copy
# -i (interactive) 注意: 如果 file1copy 已经存在, 它将会直接覆盖已存在的 file1copy, 如果要避免直接覆盖, 我们在 cp 后面加一个选项。
# 在这句问句后面打上 “Yes”, “Y”, 或者任何大小写形式的 “y” 和 “yes”, 它将进行覆盖操作. 直接回车或者打其他字母, 就会放弃复制这项操作。

~/Documents$ cp file1 Folder1/
# 将file1复制到文件夹Folder1

~/Documents$ cp -R Folder1/ Folder2/
# 复制文件夹, 需要加上 -R (recursive)

~/Documents$ cp file* Folder1/
# 复制多个文件。复制名字部分相同的多个文件到某个文件夹, * 是说"你就找文件名前面是 file 的文件, 后面是什么名字无所谓"

~/Documents$ cp file2.txt file5.txt Folder1/
# 或者你可以单独选定几个文件, cp 会默认最后一个选项是要复制去的文件夹. 比如把 file2.txt 和 file5.txt 复制去 Folder1/

mv

~/Documents$ mv file1 Folder1/
# 将file1移动到文件夹Folder1

~/Documents$ mv -i file1 file1rename
#  重命名文件file1为file1rename。因为移动文件到原始的地点, 但是以不同的文件名。所以这种做法不就是在重命名嘛!(加上`-i`覆盖文件前提示)

~/Documents$ mv -f file1 Folder2/
#  将文件file1强制移动到Folder2文件夹下。如果目标文件已经存在,不会询问而会直接覆盖。

mkdir

~/Documents$ mkdir  Folder2/
# 在Documents文件夹下创建一个文件夹Folder2

~/Documents$ mkdir  Folder2/folder
# 在文件夹Folder2里面再创建一个子文件夹folder

~/Documents$ mkdir  -p  A/B/C/D
# 可以递归的创建目录,此处创建了4个目录

rmdir

~/Documents$ rmdir  Folder3
# 删除文件夹Folder3(rmdir只能移除空文件夹!!!)

rm

~/Documents$ rm  file1
# 删除单个文件filer1

~/Documents$ rm -i file2
# -i 或 -I 有提示地移除文件 (为了避免误删)
# -i 会每个要移除的文件都进行提示

~/Documents$ rm -I file2 fil3 file4 file5
# -I 超过3个文件才进行提示

~/Documents$ rm -f file1
# 强制删除,忽略不存在的文件,无需提示

~/Documents$ rm -r Folder1/
# -r 或 -R (recursively) 用来删文件夹(递归的删除目录下的内容)
# 和 rmdir 不同, rm -r 可以在文件夹中有文件的情况下删除这个文件夹. 比如我的 Folder1 里有 file1 和 file2 两个文件.

nano

~/Documents$ touch  p1.py
# 在Documents目录下创建一个python文件

~/Documents$ nano  p1.py
# 用nano命令执行这个文件

cat

~/Documents$ cat -b p1.py 
~/Documents$ cat -n p1.py 
# -b表示对文件的非空输出行编号
# -n表示对文件的所有行输出行编号

~/Documents$ cat  p1.py > p2.py
~/Documents$ cat  p2.py
# > 将文件的内容放到另一个文件里,这里我们将p1.py的内容写入到p2.py里面。

~/Documents$ cat  p1.py p2.py > p3.py
~/Documents$ cat  p3.py
# > 将多个文件的内容打包一起放入另一个文件,这里我们将p1.py的内容和p1.py的内容一同写入到p2.py里面。
# 在显示的时候,两个文件的内容会分开显示

~/Documents$ cat  p2.py >> p3.py
~/Documents$ cat  p3.py
# >> 将内容添加在一个文件末尾,这里我们将p2.py的内容添加到p3.py的末尾。

more

~/Documents$ more  p1.py
# 分屏查看p1.py文件的内容。如果要查看后续的内容,可以按住空格键(显示手册页的下一屏)或者回车键(一次滚动手册页的一行)
# b:回滚一屏  f:前滚一屏  q:退出
~/Documents$ head -n 5 p2.py
# head [-n number] filename
# -n :后面接数字,代表显示几行的意思

tail

~/Documents$ tail -n 6 p3.py
# tail [-n number] filename
# -n :后面接数字,代表显示几行的意思

grep

$ grep [-acinv] [--color=auto] 搜寻字符串 filename
# -a : 将 binary 文件以 text 文件的方式进行搜寻
# -c : 计算找到个数
# -i : 忽略大小写
# -n : 输出行号
# -v : 反向选择,亦即显示出 没有搜寻字符串内容 的那一行
# --color=auto :找到的关键字加颜色显示

~/Documents$ grep hello p1.python
# 在p1.py文件中搜索"hello"这个单词

$ grep -n 'the' regular_express.txt
# 以下为相应的显示结果
# 8:I can't finish the test.
# 12:the symbol '*' is represented as start.
# 15:You are the best is mean you are the no. 1.
# 16:The world Happy is the same with "glad".
# 18:google is the best tools for search keyword

$ grep -n 'go\{2,5\}g' regular_express.txt

echo

~/Documents$ echo Hello World > 1.txt
~/Documents$ echo Python >> 1.txt
# 将'Hello World'写入到1.txt中
# 将'Python'追加到1.txt文件的末尾

管道 |

~/Documents$ ls -lha | more

apt-get

~ sudo apt-get update

~ sudo dnf update

~ sudo apt-get install 
# 安装相应的软件或工具

poweroff

~$ sudo poweroff

 

文件权限

ls查看权限

在 Terminal 中查看文件的权限的命令可以用ls -l 或者ls -lh。如果你只是想单独看看某一个具体的文件的权限,只需要在后面加上相应的文件名就可以了,比如ls -lh p1.py

Linux常用命令总结_第1张图片

  • Type: 很多种 (最常见的是 - 为文件, d 为文件夹, 其他的还有ln … 这种东西, 真正自己遇到了, 网上再搜就好, 一次性说太多记不住的)。

  • User: 后面跟着的三个空是使用 User 的身份能对这个做什么处理 (r 可读; w 可写; x 可执行; - 不能完成某个操作)。

  • Group: 一个 Group 里可能有一个或者多个 user, 这些权限的样式和 User 一样。

  • Others: 除了 User 和 Group 以外人的权限。

chmod 修改权限

~$ chmod [谁] [怎么修改] [哪个文件]

[谁]

  • u: 对于 User 修改
  • g: 对于 Group 修改
  • o: 对于 Others 修改
  • a: (all) 对于所有人修改

[怎么修改]

  • +-=: 作用的形式, 加上, 减掉, 等于某些权限
  • rwx 或者多个权限的组合, 比如 rx

[哪个文件]

  • 施加操作的文件, 可以为多个文件

也可以用数字来表示相应的权限,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。

文件默认权限

  • 文件默认权限:文件默认没有可执行权限,因此为666,也就是 -rw-rw-rw- 。

  • 目录默认权限:目录必须要能够进入,也就是必须拥有可执行权限,因此为777 ,也就是 drwxrwxrwx

一个使用Python的技巧

通常, .py 没有x 权限, 需要这样执行:

~/Documents/Folder1$ python3 p1.py

有了 x (可执行权限), 可以这样:

~/Documents/Folder1$ ./p1.py

有一个前提,需要在这个Python脚本p1.py的开头加上:

#!/usr/bin/python3
print("Hello World")

 

远程管理

shutdown

~/Documents$ shutdown 选项 时间
~/Documents$ shutdown -r
# -r表示重新启动系统

# 重新启动操作系统,其中 now 表示现在
$ shutdown -r now

# 立刻关机,其中 now 表示现在
$ shutdown now

# 系统在今天的 20:25 会关机
$ shutdown 20:25

# 系统再过十分钟后自动关机
$ shutdown +10

# 取消之前指定的关机计划
$ shutdown -c

ifconfig

# 查看网卡配置信息
$ ifconfig

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

ping

# 检测到目标主机是否连接正常
$ ping IP地址

# 检测本地网卡工作正常
$ ping 127.0.0.1

ssh基础

Linux常用命令总结_第2张图片

  • SSH客户端是一种使用Secure Shell(SSH)协议连接到远程计算机的软件程序
  • SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
    • 利用SSH协议可以有效防止远程管理过程中的信息泄露
    • 通过SSH协议可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
  • SSH的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度

1) 域名和端口号

域名:

  • 由一串用点分隔的名字组成,例如:www.baidu.com
  • IP地址的别名,方便用户记忆

端口号:

  • IP地址: 通过IP地址找到网络上的计算机
  • 端口号: 通过端口号可以找到计算机上运行的应用程序
    • SSH服务器的默认端口号是22,如果是默认端口号,在连接的时候,可以忽略
  • 常见服务器端口号:
序号 服务 端口号
01 SSH服务器 22
02 Web服务器 80
03 HTTPS服务器 443
04 FTP服务器 21

2) SSH客户端的简单使用

ssh [-p port] user@remote
  • user是在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote是远程机器的地址,可以是IP/域名,或者是后面会提到的别名
  • portSSH Server监听的端口,如果不指定,就默认为22
  • 使用exit退出当前用户的登录

scp

Linux常用命令总结_第3张图片

# 把本地当前目录下的01.py文件复制到远程Home目录下的Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py

# 把远程Home目录下的Desktop/01.py文件复制到本地当前目录下的01.py
scp -P port user@remote:Desktop/01.py 01.py

# 加上-r选项可以传送文件夹
# 把当前目录下的demo文件夹复制到远程Home目录下的Desktop
scp -r demo user@remote:Desktop

# 把远程Home目录下的Desktop复制到当前目录下的demo文件夹
scp -r user@remote:Desktop demo
选项 含义
-r 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口

ssh高级

  • 免密码登陆
  • 配置别名

1) 免密码登陆

步骤:

  • 配置公钥:
    • 执行ssh-keygen即可生成SSH钥匙,一路回车即可
  • 上传公钥到服务器:
    • 执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

Linux常用命令总结_第4张图片

 

非对称加密算法

  • 使用公钥加密的数据,需要使用私钥解密
  • 使用私钥加密的数据,需要使用公钥解密

2) 配置别名

配置别名可以让我们进一步偷懒,譬如用:ssh mac来替代上面这么一长串,那么就在 ~/.ssh/config里面追加以下内容:

Host mac
    HostName ip地址
    User itheima
    Port 22

 

用户权限

chmod

  • chmod可以修改用户/组文件/目录的权限
chmod +/-rwx 文件名|目录名

sudo

  • su是substitute user的缩写,表示使用另一个用户的身份
  • sudo命令用来以其他身份来执行命令,预设的身份为root
  • 用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码

组管理终端命令

序号 命令 作用
01 groupadd 组名 添加组
02 groupdel 组名 删除组
03 cat/etc/group 确认组信息
04 chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

查看用户信息

序号 命令 作用
01 id[用户名] 查看用户 UID 和 GID 信息
02 who 查看当前所有登录的用户列表
03 whoami 查看当前登录用户的账户名

password文件

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中最后一列表示该组的用户列表,用于指定用户的附加权限
# 修改用户的主组(passwd 中的 GID)
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登录 Shell
usermod -s /bin/bash 用户名


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

which

  • /etc/passwd是用于保存用户信息的文件
  • /usr/bin/passwd是用于修改用户密码的程序
  • which命令可以查看执行命令所在的位置,例如:
which ls
# 输出
# /bin/ls

which useradd
# 输出
# /usr/sbin/useradd

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

bin/sbin

在Linux中,绝大多数可执行文件都是保存在/bin/sbin/usr/bin/usr/sbin

  • /binbinary)是二进制执行文件目录,主要用于具体应用
  • /sbinsystem binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/binuser commands for applications)后期安装的一些软件
  • /usr/sbinsuper user commands for applications)超级用户的一些管理程序

切换用户

序号 命令 作用 说明
01 su - 用户名 切换用户,并且切换目录 -可以切换到用户家目录,否则保持位置不变
02 exit 退出当前登录账户
  • su不接用户名,可以切换到root,但是不推荐使用,因为不安全
  • exit示意图如下:

Linux常用命令总结_第5张图片

修改文件权限

序号 命令 作用
01 chown 修改拥有者
02 chgrp 修改组
03 chmod 修改权限
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名

# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名

# 递归修改文件权限
chmod -R 755 文件名|目录名

# 直接修改文件|目录的 读|写|执行 权限,但是不能精确到 拥有者|组|其他
chmod +/-rwx 文件名|目录名

Linux常用命令总结_第6张图片

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

  • 777 ===> u=rwxg=rwxo=rwx
  • 755 ===> u=rwxg=rxo=rx
  • 644 ===> u=rwg=ro=r

 

系统信息

时间和日期

序号 命令 作用
01 date 查看系统时间
02 cal calendar查看日历,-y选项可以查看一年的日历

磁盘信息

序号 命令 作用
01 df -h disk free 显示磁盘剩余空间
02 du -h [目录名] disk usage 显示目录下的文件大小

选项说明:

参数 含义
-h 以人性化的方式显示文件大小

进程信息

所谓进程,通俗地说就是当前正在执行的一个程序

序号 命令 作用
01 ps aux process status 查看进程的详细状况
02 top 动态显示运行中的进程并且排序
03 kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止

ps默认只会显示当前用户通过终端启动的应用程序

ps选项功能说明

选项 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程
  • 使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃
  • 要退出top可以直接输入q

 

其他

find

find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件

序号 命令 作用
01 find [路径] -name “*.py” 查找指定路径下扩展名是 .py 的文件,包括子目录
find -name "*1*"
# 搜索桌面目录下,文件名包含 1 的文件

find -name "*.txt"
# 搜索桌面目录下,所有以 .txt 为扩展名的文件

ln

序号 命令 作用
01 ln -s 被链接的源文件 链接文件 建立文件的软链接,用通俗的方式讲类似于Windows下的快捷方式
  • 没有-s选项建立的是一个硬链接文件(两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
  • 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用

Linux常用命令总结_第7张图片

在Linux中,文件名文件的数据是分开存储的

  • 在Linux中,只有文件的硬链接数 == 0才会被删除
  • 使用ls -l可以查看一个文件的硬链接的数量(硬链接——有多少种方式可以访问文件或者目录)

tar

打包压缩是日常工作中备份文件的一种方式,tar 是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件

在不同的操作系统中,常用的打包压缩方式是不同的:

  • Windows常用rar
  • Mac常用zip
  • Linux常用tar.gz
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...

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

gzip

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

  • tar只负责打包文件,但不压缩
  • gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz

tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能

# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

# 解压缩文件
tar -zxvf 解包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 解包文件.tar.gz -C 目标路径
选项 含义
-C 解压缩到指定目录,注意:要解压缩的目录必须存在

bzip2

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

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

# 解压缩文件
tar -jxvf 解包文件.tar.bz2

apt

通过 apt 安装/卸载软件

  • apt是 Advanced Packaging Tool,是Linux下的一款安装包管理工具
  • 可以在终端中方便的安装/卸载/更新软件包
# 1. 安装软件
$ sudo apt install 软件包

# 2. 卸载软件
$ sudo apt remove 软件名

# 3. 更新已安装的包
$ sudo apt upgrade

配置软件源

  • 如果希望在ubuntu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务
  • 提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了

所谓镜像源,就是所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些!

Linux常用命令总结_第8张图片

Linux常用命令总结_第9张图片

你可能感兴趣的:(Linux)