help
$ command --help
显示command命令的帮助信息
$ ls --help
显示 ls 命令的帮助信息
man
$ man command
查阅command命令的使用手册
$ man ls
查阅 ls 命令的使用手册
ls
就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。
常用参数
-a 列出目录所有文件,包含以.开始的隐藏文件
-A 列出除.及…的其它文件
-r 反序排列
-t 以文件修改时间排序
-S 以文件大小排序
-h 以易读大小显示
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
示例:
$ ls -l a*
列出当前目录中所有以"a"开头的目录的详细内容
cd
切换当前目录
$ cd [目录名]
$ cd /
切换至根目录
$ cd ~
切换至home目录
$ cd -
切换至上一次的目录
$ cd !$
把上个命令的参数作为cd参数使用
pwd
$ pwd
查看当前所在目录
$ pwd -P
查看软链接的实际路径
mkdir
创建目录
常用参数
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录
示例:
$ mkdir test
当前工作目录下创建名为 test 的文件夹
$ mkdir -p /aaa/test/t1
在 aaa 目录下创建路径为 test/t1 的目录,若不存在,则创建
touch
改文件或者目录的时间属性,包括访问时间和修改时间,若文件不存在,会创建新的文件
常用参数
-a 修改文件的存取时间
-c 仅修改文件时间,若文件不存在则不创建新文件。与 --no-create 的效果一样
-d 后面可以接想要修订的日期而不用当前的日期,也可以使用–date=“日期或时间”
-m 改变档案的修改时间mtime
-r 使用参考文件的时间记录作为指定文件的时间,与 --file 的效果一样
-t 设定时间而不用目前的时间,格式为[YYYYMMDDhhmm]
–version 列出版本讯息
$ touch testfile
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间
$ touch file
创建一个名为“file”的新的空白文件
$ touch -a file.txt
修改file.txt的存取时间为当前时间
$ touch -ct 202211051505 file.txt
修改file.txt的存取时间为指定时间
mv
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
常用参数
-i 如果存在同名文件,则向用户询问是否覆盖
-f 如果存在同名文件则覆盖已有同名文件,不进行任何提示
-b 如果存在同名文件在覆盖前为其创建一个备份
-u 当源文件比目标文件新,或者目标文件不存在时,才执行移动操作
-t 移动多个文件至某一指定目录时,使用-t参数,此时目录在前,文件在后
$ v test ttt
重命名文件test 为 ttt
$ mv test1.log test2.log aaa
将test1.log、test2.log文件移动到aaa目录中
$ mv -i log1.txt log2.txt
将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
$ mv * ../
移动当前文件夹下的所有文件到上一级目录
cp
将源文件复制至目标目录,或将多个源文件复制至目标目录
常用参数
-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖
-p 保留源文件或目录的所有属性
-r 递归复制文件和目录
-b 覆盖已存在的文件目标前将目标文件备份
-v 详细显示cp命令执行的操作过程
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l 对源文件建立硬连接,而非复制文件
-s 对源文件建立符号连接,而非复制文件
$ cp -ai a.txt test
复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖
$ cp -s a.txt ink_a.txt
为 a.txt 建立一个链接(快捷方式)
rm
删除一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。
rm [选项] 文件…
常用参数
-i 以进行交互方式删除
-f 强制删除,忽略不存在的文件
-r 递归删除目录下的内容,删除目录必须加此参数
$ rm -i *.log
删除任何 .log 文件,删除前逐一询问确认
$ rm -rf test
删除 test 子目录及子目录中所有文件,并且不用一一确认
$ m -f a*
删除以 a 开头的所有文件
clear
$ clear
清屏
重定向
将命令执行结果重定向到一个文件
> 会覆盖原有内容
>> 追加写入,将内容追加到已有内容法的末尾
$ ls -al > file.log
将ls命令执行结果写入到file.log文件中
cat
文件内容较少时,可以使用cat命令查看
常用参数
-b 对非空输出行号
-n 输出所有行号
$ cat filename
一次显示整个文件
$ cat file1 file2
将两个文件内容合并显示
$ cat file1 file2 > file
将几个文件合并为一个文件
$ cat file1 >> file
将file1中的内容追加写入到file中
less
用于分屏显示文件内容,在查看之前不会加载整个文件。
常用参数
-N 显示每行的行号
常用操作命令
b 向上滚动一屏
f 向下滚动一屏
空格键 向下滚动一屏
Enter 向下滚动 1 行
Q 退出less 命令
/word 搜索word字符串
$ less file
more
功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读
常用参数
+n 从第 n 行开始显示more +3 file
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-s 把连续的多个空行显示为一行
常用操作命令
Enter 向下滚动 1 行
f 向下滚动一屏
空格键 向下滚动一屏
b 向上滚动一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
grep
根据关键词搜索文本文件内容
$ grep [option] pattern file|dir
常用参数
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配内容和行号
-i 忽略大小写
-R 递归查找文件夹
$ grep as test.log
在test.log 中查询包含as的内容
$ grep -n as test.log
在test.log 中查询包含as的内容,并显示行数
管道符
一个命令的输出可以通过管道作为另一个命令的输入
常用的管道命令:less、grep
$ ls -al /usr/bin | grep -n ast
在 ls 命令的结果中查询包含 ast 的内容
$ less test4.log | grep tt
在less命令的结果中查询包含 tt 的内容
head
用来显示文件的开头,默认显示文件的开头 10 行
常用参数
-n<行数> 显示的行数(行数为负数表示从最后向前数)
$ head -5 test.log
显示 test.log 文件中前 5 行的内容
$ head test.log -n 5
显示 test.log 文件中前 5 行的内容
$ head -n 5 t.log
显示 test.log 文件中前 5 行的内容
tail
显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用参数
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
$ tail -5 test.log
显示 test.log 文件中后 5 行的内容
$ tail -n 5 test.log
显示 test.log 文件中后 5 行的内容
$ tail test.log -n 5
显示 test.log 文件中后 5 行的内容
动态输出到文件
比如日志内容不断写入日志文件
$ ping baidu.com >> ping_log
将ping baidu.com的输出动态写入到ping_log文件中
$ tail -f ping_log
动态查看ping_log文件中的信息
查看系统版本信息
$ cat /proc/version
显示正在运行的内核版本
Linux version 4.19.90-vhulk2107.1.0.h699.hcev1.x86_64 (abuild@szxrtosci10000) (gcc version 7.3.0 (GCC)) #1 SMP Sat Jul 31 09:58:46 UTC 2021
$ uname -a
显示电脑以及操作系统的相关信息获取系统发型版本信息
Linux hecs-409732 4.19.90-vhulk2107.1.0.h699.hcev1.x86_64 #1 SMP Sat Jul 31 09:58:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
列出所有版本信息
重启系统
$ reboot
立即重启
$ shutdown -r now
立刻重启
$ shutdown -r 10
10分钟后自动重启
$ shutdown -r 20:35
在20:35重启
关闭系统
$ halt
立刻关机
$ poweroff
立刻关机
$ shutdown -h now
立刻关机
$ shutdown -h 10
10分钟后自动关机
ps
显示当前进程的状态,默认只显示登录用户的进程
常用选项
-e 列出全部的进程
-f 显示全部的列(显示全字段)
-a 显示所有进程,包含其他用户进程
-u 显示进程的详细状态
-x 显示没有控制中端的进程
$ ps -ef
查看进程信息
$ ps -aux
查看当前系统中进程的详细信息
$ ps -ef | grep nmon
在所有程序中过滤出nmon进程
$ ps -aux | grep nmon
kill
根据pid 结束进程
kill 进程id(pid)
$ kill 1063
结束pid为1063的进程,进程自行结束
$ # kill -9 1064
强制结束 pid为1064的进程
杀死指定用户的所有进程
$ kill -9 $(ps -ef | grep hnlinux)
过滤出hnlinux用户进程
$ kill -u hnlinux
top
$ top
动态显示进程信息,相当于命令行版的任务管理器
netstat
显示各种网络相关信息,常用于查看软件打开的端口信息。
一般root权限才能查看详细的端口信息
常用参数
-a 显示所有已打开的端口
-p 显示进程的 pid 和进程名
-n 不用别名显示,只用数字显示
-t 显示所有的tcp协议端口
-u 显示所有的udp协议端口
$ netstat -a
显示详细的网络状况
$ netstat -anptu | grep mysql
查看所有的进程和端口使用情况,结合grep查找指定程序打开的端口
lsof
列出当前系统打开文件,需要 root 用户的权限来执行。
$ lsof -i 端口号
查看端口占用情况
$ lsof -i 3306
查看占用3306端口号的程序
$ lsof abc.txt
显示开启文件abc.txt的进程
$ lsof -c abc
显示abc进程现在打开的文件
$lsof -c -p 1234
列出进程号为1234的进程所打开的文件
chmod
控制用户对文件的权限的命令
文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
$ chmod [-cfvR] [--help] [--version] mode file...
mode : 权限设定字串,格式如下 :
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明
-c 若该文件权限确实已经更改,才显示其更改动作
-f 若该文件权限无法被更改也不要显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
r=4,w=2,x=1
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
$ ls -l
查看文件权限信息
数字方式修改文件权限:
$ chmod 764 file
file文件拥有者可读写执行、用户组可读写、其他人只读
字母方式修改文件权限:
$ chmod ugo+r file1.txt
\ $ chmod a+r file1.txt
将文件 file1.txt 设为所有人皆可读取
$ chmod ug+w,o-w file1.txt file2.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,用户组可写入,但其他以外的人则不可写入
which
$ which [文件...]
用于查找文件位置
which指令会在环境变量$PATH设置的目录里查找符合条件的文件
$ which diff
查看指令"diff"的绝对路径,输出结果:/usr/bin/diff
su
切换账号
$ su -
切换到root用户
$ su - 用户名
切换到指定用户,并切换目录 如:$ su - admin
who
$ who
显示当前登录系统的用户
$ who -H
显示出标题栏
$ whoami
显示当前登录的用户
$ # who -q
显示登录账户 和登录人数
exit
退出登录
如果是ssh远程登录,则退出登录账户
如果是切换后的登录用户,则退出当前账号返回上一个账号
passwd
更改使用者的密码
$ passwd admin
设置admin用户的密码
find
在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
$ find 路径 -name 文件名
文件名可以模糊匹配,路径省略表示当前目录
$ find /root -name f_demo
从 /root 目录下查找 f_demo文件 , 查找结果:/root/bbb/adir/f_demo
$ # find . -name "*.py"
在当前目录及其子目录下查找后缀为 .py 的文件
$ find . -type f
查找当前目录及其子目录中的所有文件
$ find . -ctime 20
查找当前目录及其子目录下所有最近 20 天内更新过的文件
$ find / -type f -size 0 -exec ls -l {} \
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径
ln
为某一个文件在另外一个位置建立一个同步的链接,修改链接文件,源文件也会同步修改。
$ ln -s test1.log l_test1.log
给文件创建软链接,为test1.log文件创建软链接l_test1.log,如果test1.log丢失,l_test1.log将失效
$ ln t1 l_t1
给文件创建硬链接,test和test1各项属性相同,以文件副本形式存在,删除t1文件,l_t1文件仍存在
tar
文件打包工具,只打包不压缩。
$ tar -cvf 打包文件.tar 被打包文件/路径...
打包文件
$ tar -xvf 打包文件.tar
解包文件
常用参数
-c 建立新的备份文件
-v 显示指令执行过程
-f 指定备份文件, f必须放在最后
-x 从备份文件中还原文件
-z 通过gzip指令处理备份文件
-t 列出备份文件的内容
$ tar -cvf a.tar adir
将adir目录打包为 a.tar
$ tar -xvf a.tar
解包a.tar
gzip
压缩/解压缩
tar与gzip结合使用实现文件打包、压缩,压缩后的扩展名一般用xxx.tar.gz
$ tar -zcvf 压缩文件.tar.gz 被压缩的文件/路径...
打包并压缩文件
$ tar -zxvf 解压文件.tar.gz
解压缩
$ tar -zxvf 解压文件.tar.gz -C 目标路径
解压缩到指定路径
常用参数
-r 压缩所有子目录
-d 指定文件解压缩
-C指定解压目录
$ tar -zcvf a.tar.gz adir
将adir目录打包并压缩未a.tar.gz
$ tar -zxvf
a.tar.gz` 解压a.tar.gz
zip和unzip
$ zip -r 压缩文件 被压缩文件
压缩文件
$ unzip 解压后的目录 打包文件.zip
解压缩文件` 解压文件
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-q 不显示指令执行过程
-d 指定解压目录
$ zip -r adirzip adir
将adir目录及子目录压缩为 adirzip.zip
$ unzip -d bbb/ adirzip.zip
将adirzip.zip解压到bbb目录中
$ unzip adirzip.zip
将adirzip.zip解压到当前目录中
vim
基本上 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 退出程序
q! 强制退出
w 保存文件
按ESC键可随时退出底线命令模式
yum
yum是一个在Linux系统中常用的软件包管理器,提供了查找、安装、删除 某一个活一组甚至全部软件包的命令。
yum [options] [command] [package]...
options: 选项
- -h 查找帮助
- -y 当安装过程提示选择全部为yes
- -q 不显示安装过程
command:要进行的操作
package:操作的对象
yum常用命令:
$ yum list
列出所有可安装的软件清单
$ yum search
查找软件包
$ yum install <package_name>
安装指定软件
$ yum update
更新所有软件
$ yum remove <package_name>
删除软件包