Linux 常用命令

Linux 命令语法:

  • 命令 【选项】 【参数】

  • 当有多个选项时,可以写在一起

  • 一般选项有简化和完整写法,如 -a 和 --all 等效

文件命令 #

pwd #

打印当前工作目录

  • 英文:print working directory
$ pwd
/c/Users/luojian
1
2

ls #

列出目录内容

  • 英文:list

  • 常用选项:

    • -l:(line)按行输出,详细信息展示
    • -a:(all)显示所有文件,包括隐藏文件
    • -h:(humanity)人性化的方式显示文件大小

    另外,这些参数可以组合使用,例如 ls -la,按行显示当前目录下所有文件的详细信息

cd #

切换目录

  • 英文:change directory
  • 按 Tab 键可以补全命令和目录
cd		# 进入用户主目录(home)
cd ~	# 进入用户主目录
cd /	# 进入根目录
cd .	# 当前目录
cd ..	# 返回上级目录
cd ../..	# 返回上两级目录
cd dir	# 进入dir目录,dir为相对路径或者绝对路径
1
2
3
4
5
6
7

mkdir #

创建目录/文件夹

  • 英文:make directory
mkdir temp	# 在当前目录下创建文件夹temp
mkdir test/temp	# 在当前目录下的test文件夹中创建temp目录
1
2

rmdir #

删除目录/文件夹

  • 英文:remove directory

rm #

删除文件

  • 英文:remove
  • 常用选项
    • -f:(force)忽略不存在的文件,强制删除,不会出现警告信息
    • -i:(interactive)互动模式,在删除前会询问用户是否确认删除
    • -r:(recursive, 递归的)将列出的全部目录及其子目录递归删除

mv #

移动或者重命名文件

  • 英文:move
  • 常用选项
    • -f:如果目标文件已存在,不会询问而直接覆盖
    • -i:若目标文件已经存在,会询问是否覆盖
    • -u:(update)若目标文件已经存在,且比目标文件新,才会更新
mv file1 file2 file3 dir	# 将文件file1、file2、file3移动到目录dir中
mv file1 file2	# 将文件file1重命名为file2
mv * ../	# 移动当前文件夹下的所有文件到上一级目录
1
2
3

cp #

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

  • 英文:copy
  • 常用选项
    • -f:强制复制文件或目录,不论目标文件或目录是否已经存在
    • -i:覆盖既有文件前先询问用户
    • -r:递归处理,将指定目录下的所有文件和子目录递归处理

touch #

更新文件的访问时间或者创建一个空文件

touch a.txt	# 当a.txt已经存在时,将a.txt的访问时间更新为当前时间;当a.txt不存在时,创建空文件a.txt
1

vim #

创建或打开文件并使用vim编辑器编辑

vim a.txt	# a.txt不存在时,创建a.txt,同时使用vim编辑器打开a.txt
1

vim编辑器有三种模式:命令模式(command mode)、输入模式(insert mode)和底线命令模式(last line mode):

刚刚启动vim,即 vim a.txt时,进入命令模式,此时输入i(或任意非esc键进入输入模式),输入模式下可对文件进行编辑,输入模式下按esc键,退出输入模式,切换到命令模式,此时按:(英文冒号)进入底线命令模式,此时:

  • q:退出vim
  • w:保存文件
  • wq:保存并退出

cat #

连接多个文件并打印到标准输出(打印文件内容到控制台)

主要用途:

  • 显示文件内容,如果没有文件或文件为 - 则读取标准输入。
  • 将多个文件的内容进行连接并打印到标准输出。
  • 显示文件内容中的不可见字符(控制字符、换行符、制表符等)。

常用选项:

  • -s:压缩连续的空行到一行
  • -n:对所有行编号,从1开始编号
  • -b:只对非空行编号,从1开始编号
cat 1.log 2.log 3.log	# 合并显示多个文件
echo '######' | cat - 1.log	# 将标准输入的内容和文件内容一并显示
1
2

显示文件的开头部分

head file		# 显示file文件的前10行
head -n file	# 显示file文件的前n行
1
2

tail #

在控制台输出指定文件的末尾若干行

tail file	# 显示file文件的末尾10行
tail -6 file	# 显示file文件的末尾6行
tail -n +6 file		# 从第6行开始显示file文件
1
2
3

文件权限 #

chmod #

用来变更文件或目录的权限

Linux 系统中,每个用户的角色和权限划分的很细致也很严格,每个文件(目录)都设有访问访问许可权限,利用这种机制来决定某个用户通过某种方式对文件(目录)进行读、写、执行等操作。

操作文件或目录的用户,有三种不同类型:文件所有者、群组用户、其他用户。

文件或目录的权限又分为3种:只读、只写、可执行:

权限 权限数值 二进制 具体作用
r 4 00000100 read,读取。浏览目录、读取文件内容
w 2 00000010 write,写入。删除、移动目录或目录内文件,新增或修改文件内容
x 1 00000001 execute,执行。进入目录,执行文件

依照上面的表格,权限组合就是对应权限值求和:

7 = 4 + 2 + 1 读写运行权限

5 = 4 + 1 读和运行权限

4 = 4 只读权限

chmod 754 filename	# 将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户
chmod 777 filename	# 将filename文件的读写运行权限赋予给所有用户
1
2

进程管理 #

ps #

查看当前系统的进程状态

  • 英文:process

kill #

发送信号到进程

  • 常用选项
    • -s sig:信号名称
    • -n sig:信号名称对应的数字
    • -l:列出信号名称
kill PID	# 强制中止进程id为PID的进程
kill -s KILL PID	# 强制中止进程id为PID的进程
kill -n 9 PID	# 同上,强制中止进程id为PID的进程(KILL信号对应的数字为9)
1
2
3

系统信息 #

date #

显示当前的日期和时间

whoami #

显示当前的用户名

df #

查看磁盘空间占用情况

  • 常用选项
    • -a:列出所有的文件系统
    • -k:以KB为单位显示各文件系统的状态
    • -m:以MB为单位显示各文件系统的状态
    • -h:以人们较易阅读的 GB、MB、KB 等格式自行显示

搜索和连接 #

grep #

强大的文本搜索工具

  • 英文:global search regular expression and print out the line,全面搜索正则表达式并把行打印出来
  • 常用选项:
    • -n:输出匹配行时在行开头增加行序号
    • -c:统计文件中包含匹配项的行数
grep pattern file		# 在file文件中搜索出包含“pattern”的行并打印出来
grep -r pattern dir		# 递归搜索dir中匹配pattern的内容
command | grep pattern	# 搜索command输出中匹配pattern的内容
1
2
3

ssh #

openssh套件中的客户端连接工具,ssh端口号是22

ssh user@host	# 以user用户身份连接到host
ssh -p port user@host	# 在端口port以user用户身份连接到host
ssh-keygen	# 为当前用户生成 ssh 公钥 + 私钥
ssh-copy-id user@host	# 将秘钥添加到host到以实现无密码登录
1
2
3
4

命令快捷键 #

命令 含义
ctrl + c 强制终止当前命令
ctrl + l 清屏
ctrl + a 光标移动到命令行首
ctrl + e 光标移动到命令行尾
ctrl + u 从光标所在的位置删除到行首
ctrl + z 把命令放入后台
ctrl + r 在历史命令中搜索
ctrl + s 停止滚屏
ctrl + q 恢复滚屏

管道符号 #

多命令执行顺序 #

  1. ; 分号:没有任何逻辑关系的连接符。当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都会一条一条执行下去。
  2. || 逻辑或:当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。
  3. && 逻辑与:当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行,与 || 正好相反。

管道符 #

| 管道符:

  • 命令1 | 命令2
  • 命令1 的正确输出会作为命令2 的操作对象
  • 前面的命令执行失败,则会报错,若后面的命令无法处理前面命令的输出,也会报错