Linux命令

Linux中命令比较多,本篇博客记录在开发中常用的简单的Linux命令

1.Linux 命令格式

command [-options] [parameter1] …

  • [] 表示是可选的,在命令中可以不用

  • options 表示命令的选项,可以按需执行一些操作

  • parameter 表示命令的参数,比如pathname等

  • 对于不熟悉的命令,可以使用man命令,或者--help参数查看帮助手册的部分内容,在这个帮助文档里可以看到这些命令的功能和参数。但是注意到并不是所有的命令都有--help选项,但是所有的命令都可以在man手册中看到

    man手册中有命令和一些函数,这样就不可避免的有一些命令和函数是同名的,如此就需要使用不同的参数来查找man手册。可以使用 man [number] [name] 的形式来区分,比如查找命令使用数字1(缺省值),数字3表示库函数

  • 使用tab键可以自动补全命令,这对Linux的使用来说十分方便

  • 使用方向键可以按序查找之前使用过的命令

  • 使用history命令可以查看最近使用的多条命令

  • alias 可以查看命令的别名


2.Linux常用命令

2.1 文件管理命令

2.1.1 ls

用来查看命令(Windows中的dir命令)

  • -a: 用来查看包括隐藏目录的所有目录(以.开头的文件名、路径名就是隐藏的)

  • -l: 就是以列表的方式查看详细目录,包括目录的类型、目录的子目录个数(普通文件的硬链接个数)、所属、大小、最后修改时间

  • -h: 以人性化的方式查看文件的详细目录,更加具体地说是更人性化显示文件的大小(使用时需要配合-l使用)

  • 通配符:

    • * : 可以替代所有的字符,字符数不限
    • ? : 可以替代一个字符
    • [abc] : 可以替代a、b、c中任意一个字符
    • [a-f] : 可以替代a到f中任意一个字符

    注意当输入a-f时并不代表通配符

    当需要查找含有的目录名时,可以使用转义字符\ ,当然很多命令的\ 都是使用转义字符的

2.1.2 输出重定向:>

举例说明输出重定向的作用

ls > test.txt

表示将原来输出到屏幕上的输出到test.txt文件中,若不存在这个文件,则创建这个文件;若已经存在这个文件,则将删掉原先内容再重新输入内容

ls >> test.txt

使用这个命令,就可以在已经存在的文件后面追加输入内容

2.1.3 显示命令

  • cat:查看文件内容
  • more:分屏显示文件内容,使用空格翻页、使用q退出
  • less:分屏显示文件内容,功能更为齐全,可以上下翻页

2.1.4 管道命令: |

一个命令的输入是另一个命令的输出

举例说明

ls | grep std

将ls命令的输出放在管道的一端作为grep命令的输入,grep命令是查找关键字(文本搜索)命令。那么这个命令的作用就是将在ls的输出内容中查找含有std的项

2.1.5 清屏:clear

使用clear命令就可以清除屏幕上的内容(Windows中是cls),但是注意并不是指删除,向上翻还是可以看到上面输出的内容的。可以使用快捷键ctrl + L 来替代这个命令

2.1.6 切换工作目录:cd

cd pathname : 切换到pathname表示的目录,表示方法可以用绝对路径,也可以使用相对路径

  • ~:表示家目录
  • -:上一次的目录

2.1.7 查看当前工作目录:pwd

输入pwd命令就可以看到自己当前所在的工作目录

2.1.8 创建目录:mkdir

相当于Windows中的新建文件夹操作

  • -p:嵌套创建文件夹

2.1.9 删除目录:rmdir

就是字面意思,删除一个目录

  • 只能删除空目录
  • -p:连级删除空目录

2.1.10 删除命令:rm

rm [option] pathname

  • -r:删除目录
  • -f:强制删除,目录
  • -i:询问是否删除

2.1.11 创建链接:ln

可以理解为Windows中的创建快捷方式,Linux中的链接分为软链接和硬链接

ln 源文件 链接文件

ln -s 源文件 链接文件

  • 软链接并不占用磁盘空间,当源文件删除之后则软链接失效
  • 硬链接:更像是将文件copy了一份,两个文件占据相同的空间,但是修改其中一个文件时,另一个文件也会被同步修改,当删除源文件,硬链接文件还在。硬链接只能链接普通文件,不能链接目录

2.1.12 查看或合并文本内容:cat

cat file :查看文件内容

cat file1 file2 > file3 :使用重定向命令,将file1 file2 文件中的内容重定向合并到文件file3

2.1.13 文本搜索:grep

grep [options] 搜索文本 filename

  • -v:求反,显示不包括匹配文本的所有行

  • -n :显示匹配行和行号

  • -i :忽略大小写

  • 搜索内容可以是正则表达式,下面是grep 命令常用的正则表达式

    • ^a :查找以a开头的行
    • ke$:查找以ke结尾的行
    • []:匹配方括号中的一个字符的行,比如 [Ss]in 表示查找Sin 或者sin
    • .:匹配一个字符,相当于2.1.1中提到的通配符的?
  • 搜索文本内容可以使用引号或双引号

2.1.14 查找文件:find

find pathname options expression

  • -name :按照名称查找,可以使用通配符 find ./ -name *.c 查找当前目录下后缀为.c的文件
  • -size :按照大小查找,find ./ -size 2M 查找当前目录下大小为2M的文件,find ./ -size +4k -size -2M 查找当前目录下大小大于4k、小于2M 的文件
  • -perm :按照权限查找,find ./ -perm 0777 查找当前目录下权限为777的文件或目录(前面的0表示8进制)
  • -type:按照文件类型查找
    • f : 普通文件
    • d:目录
    • b:块设备
    • c:字符设备
    • s:socket
    • p:管道

2.1.15 复制文件:cp

cp 源文件 目标文件

  • -r:拷贝文件夹
  • -i:有提示
  • -v:显示拷贝进度,拷贝大文件时可用
  • -a:拷贝所有信息,原封不动的拷贝一份,包括文件属性

2.1.16 移动文件:mv

mv 源文件 目标文件

  • -f:有覆盖不提示
  • -i:有提示
  • -v : 显示移动进度

目标文件若是一个路径就是移动,也可以指定一个名字,可以改名

2.1.17 查看文件属性:file

使用此命令可以查看文件属性

2.1.18 归档管理:tar

  • -c:创建打包文件
  • -v:显示进度
  • -f:后面跟文件名,使用时要放在后面
  • -x:解包
  • -C:解包到指定路劲时需要加这个选项
  • -z:同时压缩或者解压

常见使用方法

  • tar -cvf files file1 file1file1 file2 打包到files文件中
  • tar -xvf filesfiles解包到当前路径
  • tar -xvf -C files ../c/files解包到上一级目录中的c目录中

查看目录的大小 du pathname -h

2.1.19 文件压缩工具:gzip(bzip2)

对于已经打包的文件进行压缩,也可以解压.gz.bz2)压缩包

gzip pathname :在当前路径压缩已经打包文件

  • -dbzip2-z):解压,gzip -d pathname
  • -r:递归压缩,压缩目录,使用此选项时要指定生成的压缩包的名称

注意:打包和压缩可以合并一起使用,tar命令加上-z选项就是压缩,同理也可以解压解包一起执行

对于bzip2 使用的选项是-j

所以实际上常用的是

压缩:tar -zcvf xxx.tar.gz file1 file2...

tar -jcvf xxx.tar.bz2 file1 file2 ...

解压:tar -zxvf xxx.tar.gz [-C pathname]

tar -jxvf xxx.tar.bz2 [-C pathname]

2.1.20 压缩解压缩工具:zip unzip rar

zip -r files file1 file2 :压缩

unzip -d pathname files:解压

rar -a file :压缩

rar -x file :解压

2.1.21 which

此命令用来查看命令的可执行程序是放在哪一个文件夹下的

which command

2.2.22 echo

输出命令,比如

1
2
echo "HELLO"
echo $PATH

2.2 用户、权限管理

Linux十分适合多用户使用,Linux中有很好的用户和权限管理工具

2.2.1 查看当前用户:whoami 、who、w

输入这三个命令都可以查看用户信息,一个命令比一个命令详细

2.2.2 退出登录账号:exit

退出当前登录账号至上一个登录账号,若没有上一个登录账号,则退出终端

2.2.3 切换用户:su

su username

  • 如果是切换到root用户,只需要输入su,因为一个Linux系统只允许有一个root用户

2.2.4 添加、删除组:groupadd、groupdel

  • groupadd name:添加组,名称为name
  • groupdel name:删除名称为name的组,有用户就不可以删除
  • cat /etc/group:查看用户组

创建一个用户时,熊默认创建一个用户组,组的名字与用户的名字相同

2.2.5 修改用户所在组:usermod

usermod -g groupname username

将username用户改到groupname组

可以使用cat /etc/passwd 查看用户信息,下面是截取的一些用户信息

wendell:x:1000:1000:,,,:/home/wendell:/bin/bash

其中wendell代表用户名,第一个1000代表用户id,第二个1000代表用户所在组的id

2.2.6 添加、删除用户:useradd、userdel

useradd:

  • -d:指定创建用户的主目录,如果不使用这个,则系统自动在/home/目录下创建与用户名同名的主目录
  • -m:自动创建主目录
  • -g:指定组名称
  • -s :指定一个shell,如/bin/bash

每个用户必须有一个主目录

adduser是一个脚本命令,使用起来简单很多,但是这个脚本不能创建带有大小字母的用户名

userdel:

  • -r:在删除用户时同时删除主目录

2.2.7 设定用户密码:passwd

passwd username

2.2.8 修改文件权限:chmod

chmod u/g/o/a+/-rwx file

chmod u/g/o/a=rwx file

chmod 三位数字代码 file

数字法也可以使用加减号来操作

1
2
chmod -001 filename
chmod +001 filename

2.2.9 修改文件所属:chown、chgrp

chown username file

chgrp groupname file


2.3. 系统管理

2.3.1 查看系统日历:cal

  • cal:可查看日历,可指定具体地日期
  • date:可以显示现在的时间

2.3.2 静态查看进程信息:ps

可以理解成Windows中的人物管理器,进程卡死时可能会用到这个命令

这个命令的选项可以不加-,也可以加-

  • -a:显示终端上运行的所有进程,包括其他用户运行的进程
  • -u:显示进程的详细状态
  • -x:显示没有控制终端的进程
  • -w:显示加宽,以便显示更多的信息
  • -r:只显示正在运行的进程

下面是使用ps -aux 后显示的信息

1
2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root 1 0.0 0.2 37592 5592 ? Ss 2019 0:12 /sbin/init splash

字面意思,第一个root表示这个进程是root用户执行的;PID表示进程号;CPU表示CPU占用率;MEM表示内存占用率;VSZ表示占用的虚拟内存的大小,申请内存值;RSS表示占用的内存大小,实际占用的物理内存;TTY表示终端的次要装置号码;STAT表示进程的状态;START表示进程开始时间;TIME表示执行的时间;COMMAND表示执行的指令。

下面对表示状态的字母进行一个解读:

  • D:不可中断的静止
  • R:正在执行
  • S:静止状态
  • T:暂停执行
  • Z:不存在但暂时无法消除
  • W:没有足够的内存分页可以分配
  • <:高优先序的进程
  • N:低优先序的进程
  • L:有内存分页分配并锁在内存中

2.3.3 动态显示进程:top

动态显示进程,q 退出显示

2.3.4 终止进程:kill

kill PID:PID就是查看到的进程号

  • -9:强制杀死进程

2.3.5 后台执行:$、jobs、fg

在执行的命令后面加上一个$ 符号之后,程序会在后台执行,终端依旧可以使用

在执行过程中也可以使用快捷键ctrl+z 切换到后台执行,使用jobs命令可以查看后台正在运行的程序,使用fg id 可以重新打开后台命令,其中id指的是使用jobs查看到的后台程序前的id

2.3.6 查看大小命令:df、du

  • df pathname:查看目录所挂载分区的目录的使用情况

  • du pathname:查看目录、文件所占用的磁盘空间

  • -h:以更人性化的方式查找

2.3.7 查看或配置网络信息:ifconfig

使用ifconfig 能够查看一些本机的网络信息,当然,一些修改一些网络配置可能也需要使用此命令

2.3.8 ping

这个命令和Windows中的ping命令是一样的,能够ping通表示能够给对方发送信息,但不代表对方能给你发送信息,要相互能给ping通才可以双向通信

2.3.9 挂载、卸载:mount umount

挂载U盘命令

1
sudo mount deviceName dirName

卸载目录命令,但是卸载时你不能在你那个目录中

1
sudo umount dirName

3. Ubuntu

3.1 软件

1
2
3
4
5
sudo apt-get install software  #下载
sudo apt-get remove software #移除
sudo apt-get update #更新软件列表
sudo apt-get clean #清理所有安装包
sudo apt-get upgrade #更新软件

deb包安装

1
2
sudo dpkg -i *.deb	#安装
sudo dpkg -r sublime-text #卸载

源码安装:看readme文件一般可以找到安装方法

  • © 2019-2022 Wendell
  • Powered by Hexo Theme Ayer

请我喝杯咖啡吧~

支付宝
微信