Linux常用命令

Linux

Posted by Ekko on January 9, 2021

[TOC]


Linux 常用命令

pwd显示当前目录路径

pwd [–help] [–version]

  • –help 在线帮助
  • –version 显示版本信息

ls显示目录下文件

ls [-alrtAFR] [name…]

-alrtAFR 含义
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l(缩写ll常用) 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
-R 若目录下有文件,则以下之文件亦皆依序列出

file文件内容的简单描述

file “fileName”


cp复制文件和目录

cp [options] source destination

options 含义
-a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
-d 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式
-f 覆盖已经存在的目标文件而不给出提示
-i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-l 不复制文件,只是生成链接文件

cp /data/logs /data/log

cp –r test/ newtest :当前目录 test/ 下的所有文件复制到新目录 newtest 下

用户使用该指令复制目录时,必须使用参数 -r 或者 -R


mv移动/重命名文件和目录

mv [options] source destination

options 含义
-b 当目标文件或目录存在时,在执行覆盖钱,会为其创建一个备份
-i 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作
-f 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件
-n 不要覆盖任何已存在的文件或目录
-u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作

mv test.txt new.txt:文件 test 改名 new

mv info/ logs :info 目录放入 logs 目录中,logs 目录不存在,则将 info 改名为 logs

mv /usr/runoob/* /home :将 /usr/runoob 下的所有文件和目录移到 home 目录下


mkdir创建目录

mkdir [-p] dirName

  • -p 确保目录名称存在,不存在的就建一个

mkdir runoob : 建立一个名为 runoob 的子目录

mkdir dir1 dir2 dir3 : 创建三个目录,名为 dir1, dir2, dir3


rm删除文件或目录

rm [options] name…

options 含义
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除

删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”

rm test.txt : 删除文件,会有提示

rm homework : 无法删除目录”homework”: 是一个目录

rm -r homework : 是否删除 目录 “homework”? y


ln创建硬链接和符号链接

ln [参数] [源文件或目录] [目标文件或目录]

当需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间

硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统


grep查找打印匹配行

grep [-abcEFGhHilLnqrsvVwxy] [-A<显示列数>] [-B<显示列数>] [-C<显示行数>] [-d<进行动作>] [-e<范本样式>] [-f<范本文件>] [--help] [范本样式] [文件或目录...]

grep “被查找的字符串” 文件名

参数 含义
-a 或 –text 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 –byte-offset 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 –count 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> 指定字符串做为查找文件内容的样式。
-E 或 –extended-regexp 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 –fixed-regexp 将样式视为固定字符串的列表。
-G 或 –basic-regexp 将样式视为普通的表示法来使用。
-h 或 –no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 –with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 –ignore-case 忽略字符大小写的差别。
-l 或 –file-with-matches 列出文件内容符合指定的样式的文件名称。
-L 或 –files-without-match 列出文件内容不符合指定的样式的文件名称。
-n 或 –line-number 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 –only-matching 只显示匹配PATTERN 部分。
-q 或 –quiet或–silent 不显示任何信息。
-r 或 –recursive 此参数的效果和指定”-d recurse”参数相同。
-s 或 –no-messages 不显示错误信息。
-v 或 –invert-match 显示不包含匹配文本的所有行。
-V 或 –version 显示版本信息。
-w 或 –word-regexp 只显示全字符合的列。
-x –line-regexp 只显示全列符合的列。
-y 此参数的效果和指定”-i”参数相同。

grep test *file : 找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行

grep -r update /etc/acpi : 递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容


head/tail打印文件开头部分/结尾部分

tail [参数] [文件]

tail -C 5 ‘String’ fileName 表示 fileName 文件前后 5 行

tail -n 500 fileName 表示 fileName 文件后 500 行

head 命令打印文件的前十行,而 tail 命令打印文件的后十行。默认情况下,两个命令 都打印十行文本。可以通过”-n”选项来调整命令打印的行数

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容

tail 参数 含义
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用 表示在进程ID,PID死掉之后结束
-q, –quiet, –silent 从不输出给出文件名的首部
-s, –sleep-interval=S 与-f合用 表示在每次反复的间隔休眠S秒

head [参数] [文件]

head 参数 含义
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数
-n<行数> 显示的行数

键盘操作

移动光标

按键 含义
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Alt-f 光标前移一个字。
Alt-b 光标后移一个字。
Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作

文本编辑命令

按键 含义
Ctrl-d 删除光标位置的字符。
Ctrl-t 光标位置的字符和光标前面的字符互换位置。
Alt-t 光标位置的字和其前面的字互换位置。
Alt-l 把从光标位置到字尾的字符转换成小写字母。
Alt-u 把从光标位置到字尾的字符转换成大写字母。

剪切和粘贴命令

按键 含义
Ctrl-k 剪切从光标位置到行尾的文本。
Ctrl-u 剪切从光标位置到行首的文本。
Alt-d 剪切从光标位置到词尾的文本。
Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
Ctrl-y 把剪切环中的文本粘贴到光标位置。

id显示用户信息

id [-gGnru] [–help] [–version] [用户名称]

按键 含义
-g或–group  显示用户所属群组的ID。
-G或–groups  显示用户所属附加群组的ID。
-n或–name  显示用户,所属群组或附加群组的名称。
-r或–real  显示实际ID。
-u或–user  显示用户ID。
-help  显示帮助。
-version  显示版本信息

id 表示显示当前用户ID

输出 : uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t


chmod控制文件权限

chmod [-cfvR] [–help] [–version] mode file…

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

前十个字符是文件的属性。这十个字符的第一个字符表明文件类型

例如输入 ll 查看文件列表

-rw-rw-r–

  • 1 位字符: File Type 文件类型
  • 2、3、4 位字符: Owner 文件所有者
  • 5、6、7 位字符: Group 用户组
  • 8、9、10 位字符: Other Users 其它用户

八进制语法:

chmod文件权限.png

765 将这样解释:

所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

第一个字符属性 含义  
- 一个普通文件  
d 一个目录  
l 一个符号链接。注意对于符号链接文件,剩余的文件属性总是”rwxrwxrwx”,而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。  
c 一个字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机, 或者调制解调器
b 一个块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。  

例如: chmod 777 filename


ps进程

ps [options] [–help]

用于显示当前进程的状态,类似于 windows 的任务管理器

常用: ps -ef grep 进程号

-e 与 -A 相似,列出所有的进程

-f 做一个更为完整的输出


kill杀死程序

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数说明:

  • -l <信息编号>:若不加<信息编号>选项,则 -l 参数会列出全部的信息名称
  • -s <信息名称或编号>:指定要送出的信息
  • [程序]:[程序]可以是程序的PID或是PGID,也可以是工作编号

使用 kill -l 命令列出所有可用信号

最常用的信号是:

  • 1 (HUP):重新加载进程
  • 9 (KILL):杀死一个进程
  • 15 (TERM):正常停止一个进程

常用 kill -9 pid(进程号)

查看端口号命令:netstat grep 端口号
找到进程号,再获取进程的快照列表: ps -ef grep 进程名

netstat网络状态

常用 netstat grep 8080

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

参数说明:

  • -a或–all 显示所有连线中的Socket
  • -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址
  • -c或–continuous 持续列出网络状态
  • -C或–cache 显示路由器配置的快取信息
  • -e或–extend 显示网络其他相关信息
  • -F或–fib 显示路由缓存
  • -g或–groups 显示多重广播功能群组组员名单
  • -h或–help 在线帮助
  • -i或–interfaces 显示网络界面信息表单
  • -l或–listening 显示监控中的服务器的Socket
  • -M或–masquerade 显示伪装的网络连线
  • -n或–numeric 直接使用IP地址,而不通过域名服务器
  • -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称
  • -o或–timers 显示计时器
  • -p或–programs 显示正在使用Socket的程序识别码和程序名称
  • -r或–route 显示Routing Table
  • -s或–statistics 显示网络工作信息统计表
  • -t或–tcp 显示TCP传输协议的连线状况
  • -u或–udp 显示UDP传输协议的连线状况
  • -v或–verbose 显示指令执行过程
  • -V或–version 显示版本信息
  • -w或–raw 显示RAW传输协议的连线状况
  • -x或–unix 此参数的效果和指定”-A unix”参数相同
  • –ip或–inet 此参数的效果和指定”-A inet”参数相同

显示详细的网络状况: netstat -a

显示当前户籍UDP连接状况: netstat -nu

显示UDP端口号的使用情况: netstat -apu

显示网卡列表: netstat -i

显示网络统计信息: netstat -s

显示监听的套接口: netstat -l


find查找命令

find path -option [ -print ] [ -exec -ok command ] {} ;

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

  • -amin n : 在过去 n 分钟内被读取过
  • -anewer file : 比文件 file 更晚被读取过的文件
  • -atime n : 在过去n天内被读取过的文件
  • -cmin n : 在过去 n 分钟内被修改过
  • -cnewer file :比文件 file 更新的文件
  • -ctime n : 在过去n天内被修改过的文件
  • -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  • -name name:文件名称符合 name 的文件
  • -iname name: iname 会忽略大小写
  • -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
  • -type c : 文件类型是 c 的文件。
    • d: 目录
    • c: 字型装置文件
    • b: 区块装置文件
    • p: 具名贮列
    • f: 一般文件
    • l: 符号连结
    • s: socket
  • -pid n : process id 是 n 的文件

当前目录及其子目录下所有文件后缀为 .c 的文件: find . -name “*.c”

目前目录其其下子目录中所有一般文件列出: find . -type f

当前目录及其子目录下所有最近 20 天内更新过的文件列出:: find . -ctime -20

查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:: find /var/log -type f -mtime +7 -ok rm {} \;

当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件: find . -type f -perm 644 -exec ls -l {} \;

系统中所有文件长度为 0 的普通文件,并列出它们的完整路径: find / -type f -size 0 -exec ls -l {} \;

在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 ‘pathname’参数,波浪号~代表了你的$HOME目录 find ~ -name “*.txt” -print

当前目录及子目录中查找文件名以一个大写字母开头的文件 find . -name “[A-Z]*” -print

在/etc目录中查找文件名以host开头的文件 find /etc -name “host*” -print


vim/vi 文本编辑器

linux下vim.png

Vim是从 vi 发展出来的一个文本编辑器

vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式

输入模式:

在命令模式下按下i就进入了输入模式

在输入模式中,可以使用以下按键:

字符按键以及Shift组合,输入字符

  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式:

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

rz/sz上传下载命令

rz 命令(Receive ZMODEM): rz [OPTIONS]

常用 rz -y

使用 ZMODEM 协议,将本地文件批量上传到远程 Linux/Unix 服务器

注意不能上传文件夹

使用虚拟终端软件如 XShell、SecureCRT 或 PuTTY 来连接远程服务器后,使用 rz 命令可以上传本地文件到远程服务器。输入 rz 回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行 rz 命令的目录

OPTIONS参数:

  • -+, –append 将文件内容追加到已存在的同名文件
  • -a, –ascii 以文本方式传输
  • -b, –binary 以二进制方式传输,推荐使用
  • –delay-startup N 等待 N 秒
  • -e, –escape 对所有控制字符转义,建议使用
  • -E, –rename 已存在同名文件则重命名新上传的文件,以点和数字作为后缀
  • -p, –protect 对 ZMODEM 协议有效,如果目标文件已存在则跳过
  • -q, –quiet 安静执行,不输出提示信息
  • -v, –verbose 输出传输过程中的提示信息
  • -y, –overwrite 存在同名文件则替换
  • -X, –xmodem 使用 XMODEM 协议
  • –ymodem 使用 YMODEM 协议
  • -Z, –zmodem 使用 ZMODEM 协议
  • –version 显示版本信息
  • –h, –help 显示帮助信息

sz 命令(Send ZMODEM): rz [OPTIONS] FILES

通过 ZMODEM 协议,可将多个文件从远程服务器下载到本地

注意不能下载文件夹,如果下载文件夹,请先打包再下载

OPTIONS 与 rz 基本相似,或者 sz -h 查看命令

下载多个文件: sz file1 file2 file3


tar打包/解压命令

常用解压:tar -zxvf abc.tgz

常用打包:tar -zcvf abc.tgz