1. 前言

这篇主要是记录自己常用到Linux命令。

2. cd

用于切换当前工作目录

语法:

cd dirName

如:

cd /usr

// 切换到home目录
cd ~

// 切换到目前目录位置的上一层目录
cd ..

// 进入上一次工作路径
cd -

3. ls

查看指定工作目录下的内容

语法:

ls [options] [name...]
options

-a 列出所有文件和目录,包括 . 开头的隐藏文件

-l 列出除影藏文件外其它问价,可将文件型态、权限、拥有者、文件大小等资讯详细列出

-r 按文件名反序显示(原定依英文字母次序)

-t 按文件修改时间排序

-S 按文件大小排序

-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

-R 按文件名正序显示

如:

列出以a开头的目录详细内容

ls -l a*

4. pwd

查看当前工作目录路径。

5. mkdir

用于创建文件夹。

mkdir [options] dirName

options:

  • m: 对新建目录设置权限,也可以用 chmod 命令设置;

  • p: 多级目录不存在,则自动建立不存在的目录,即可一次建立多个目录。

如:

// 在当前目录下创建test目录
mkdir test

// 给/usr下创建目录img,并且添加权限700
mkdir -m 700 /usr/img

mkdir -p -m 750 /usr/img/test/img

6. rm

用于删除文件或者目录。文件一旦通过rm命令删除,则无法恢复。

rm [options] name...

options

  • -i 删除前逐一询问确认。

  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

  • -r 将目录及以下之档案亦逐一删除。

如:

// 删除任何 .log 文件,m默认会询问
rm *.log

// 删除任何 .log 文件,不询问
rm -rf *.log

7. rmdir

删除空的目录。

rmdir [-p] dirName

-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

注意:删除非空目录会报错

rmdir: failed to remove ‘test/’: Directory not empty

如:

rmdir test

8. cp

将源文件复制至目标文件

cp [options] source dest
options

-a:复制整个目录,保留目录下所有属性。

-d:复制时保留链接。

-f:覆盖已经存在的目标文件而不给出提示。

-i:覆盖目标文件之前给出提示,如文件存在会确认是否覆盖。

-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-l:不复制文件,只是生成链接文件。

如:

将img整个目录复制到目录images,有文件重复则提示是否覆盖

cp -ai img images

9. mv

移动文件或修改文件名

mv [options] source dest
mv [options] source... directory
options

-b: 当目标文件或目录存在时,覆盖前先行备份

-i: 当目标文件或目录存在时,会先询问是否覆盖旧文件。

-f: 当目标文件或目录存在时,不会询问,直接覆盖旧文件。

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

-n: 不要覆盖任何已存在的文件或目录。

如:

// 将t1.go重命名为t2.go
mv t1.go t2.go

// 将t1.go移动到test目录
mv t1.go test

// 将t1.go移动到test、test1目录
mv t1.go test test1

10. touch

用于修改文件,文件不存在会创建文件

touch [options] 文件
options

a 改变档案的读取时间记录。

m 改变档案的修改时间记录。

c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

f 不使用,是为了与其他 unix 系统的相容性而保留。

r 使用参考档的时间记录,与 --file 的效果一样。

d 设定时间与日期,可以使用各种不同的格式。

t 设定档案的时间记录,格式与 date 指令相同。

--no-create 不会建立新档案。

如:

修改了文件main.go的时间属性为当前系统时间,如文件不存则直接创建

touch main.go

11. cat

将文件内容输出到设备上

语法:

cat [options] fileName
options

-n 由 1 开始对所有输出的行数编号。

-b 和 -n 相似,只不过对于空白行不编号。

-s 当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 在每行结束处显示 $。

-T 将 TAB 字符显示为 ^I。

-A 等价于 -vET。

-e 等价于"-vE"选项;

-t 等价于"-vT"选项;

如:

// 显示整个文件:
cat 1.log

// 从键盘创建一个文件,直接在界面输入内容,按ctrl+c键可退出
cat > 2.log

// 将几个文件合并为一个文件:
cat f1.log f2.log > file.log

12. more

类似于cat,more会按一页一页展示,按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。

more [options] fileName
options

+n 从笫 n 行开始显示

-n 定义屏幕大小为n行

+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示

-c 从顶部清屏,然后显示

-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

-l 忽略Ctrl+l(换页)字符

-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

-s 把连续的多个空行显示为一行

-u 把文件内容中的下画线去掉

options

Enter 向下 n 行,需要定义。默认为 1 行

Ctrl+F 向下滚动一屏

空格键 向下滚动一屏

Ctrl+B 返回上一屏

= 输出当前行的行号

:f 输出文件名和当前行的行号

V 调用vi编辑器

!命令 调用Shell,并执行命令

q 退出more

13. less

less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页,并且 less 在查看之前不会加载整个文

more [options] fileName

命令格式:

  • 空格键 滚动一行

  • 回车键 滚动一页

  • [pagedown]: 向下翻动一页

  • [pageup]: 向上翻动一页

14. tail

用于查看文件的内容

tail [options] fileName
options

-f 循环读取

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

-n<行数> 显示文件的尾部 n 行内容

--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束

-q, --quiet, --silent 从不输出给出文件名的首部

-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

// 默认显示最后10行内容
tail blog.log

// 跟踪 blog.log 文件改变的情况
tail -f blog.log

// 查找出现 雨中笑 的行并跟踪 blog.log 文件改变的情况
tail -f 202009151727.log | grep '雨中笑'

15. grep

用于查找文件里符合条件的字符串

grep -C 5 main.go file 显示file文件里匹配main.go字串那行以及上下5行
grep -B 5 main.go file 显示main.go及前5行
grep -A 5 main.go file 显示main.go及后5行

16. which

查找某个文件,会在环境变量$PATH设置的目录里查找符合条件的文件。

which bash

17. whichis

用于查找文件,只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

options

-b 定位可执行文件。

-m 定位帮助文件。

-s 定位源代码文件。

-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B 指定搜索可执行文件的路径。

-M 指定搜索帮助文件的路径。

-S 指定搜索源代码文件的路径。

如:

whereis nginx.conf

18. locate

用于查找文件,会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

locate nginx.conf

19. find

用来在指定目录下查找文件,在文件树中查找文件,属于遍历硬盘查找文件,效率会比whereis 及 locate 低。

find pathname -[options] [-print -exec -ok ...]
options

-name 按照文件名查找文件

-perm 按文件权限查找文件

-user 按文件属主查找文件

-group 按照文件所属的组来查找文件。

-type 查找某一类型的文件,诸如:

b - 块设备文件

d - 目录

c - 字符设备文件

l - 符号链接文件

p - 管道文件

f - 普通文件

-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小

-amin n 查找系统中最后N分钟访问的文件

-atime n 查找系统中最后n*24小时访问的文件

-cmin n 查找系统中最后N分钟被改变文件状态的文件

-ctime n 查找系统中最后n*24小时被改变文件状态的文件

-mmin n 查找系统中最后N分钟被改变文件数据的文件

-mtime n 查找系统中最后n*24小时被改变文件数据的文件 (用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )

-maxdepth n 最大查找目录深度

-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略

-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项**

如:

// 在当前目录查找 以 .go 结尾的文件
find ./ -name '*.go'

// 查找 24 小时内修改过的文件
find -atime -1

exec

-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的, 考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。

实例:

在当前目录中查找更改时间在5日以前的文件并删除它们(无提醒)

find . -type f -mtime +5 -exec rm -f {} \;

20. chmod

控制用户对文件的权限的命令

chmod [options] mode file...
options

-c : 若该文件权限确实已经更改,才显示其更改动作

-f : 若该文件权限无法被更改也不要显示错误讯息

-v : 显示权限变更的详细资料

-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]
mode

u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

八进制语法

Linux系统下文件属性:drwxr-xr-x意思

drwxr-xr-x 18 root root 4096 May 20 13:51 wx

上述文件详细信息中drwxr-xr-x所代表的意思今天整理一下

d :第一位表示文件类型,d是目录文件、l是链接文件、-是普通文件、p是管道

rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行

r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限

r-x :第8-10位表示其他用户所具有的权限

字母代表

r:read就是读权限 --数字4表示

w:write就是写权限 --数字2表示

x:excute就是执行权限 --数字1表示

rwxr-xr-x 就可表示成 755

如:

chmod -R  777 wx/

21. chown

指定文件的拥有者改为指定的用户或组

chown [options] user[:group] file...
  • user : 新的文件拥有者的使用者 ID

  • group : 新的文件拥有者的使用者组(group)

options

-c : 显示更改的部分的信息

-f : 忽略错误信息

-h :修复符号链接

-v : 显示详细的处理信息

-R : 处理指定目录以及其子目录下的所有文件

如:

chown -R app.app bolg

22. df

显示磁盘空间使用情况,获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件

df [options]
options

-a 全部文件系统列表

-h 以方便阅读的方式显示信息

-i 显示inode信息

-k 区块为1024字节

-l 只显示本地磁盘

-T 列出文件系统类型

23. du

查看文件和目录磁盘空间使用情况

du [options] file
options

-a 显示目录中所有文件大小

-k 以KB为单位显示文件大小

-m 以MB为单位显示文件大小

-g 以GB为单位显示文件大小

-h 以易读方式显示文件大小

-s 仅显示总计

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

如:

// 显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc wx/ logs/

24. free

显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

free [options][-s <间隔秒数>]
options

-b 以Byte显示内存使用情况

-k 以kb为单位显示内存使用情况

-m 以mb为单位显示内存使用情况

-g 以gb为单位显示内存使用情况

-s<间隔秒数> 持续显示内存

-t 显示内存使用总合

如:

free

// 周期性查询内存使用情况
free -s 6

25. date

显示或设定系统的日期与时间。

参数

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。

-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。

-u  显示GMT。

%H 小时(00-23)

%I 小时(00-12)

%M 分钟(以00-59来表示)

%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。

%S 秒(以本地的惯用法来表示)

%a 星期的缩写。

%A 星期的完整名称。

%d 日期(以01-31来表示)。

%D 日期(含年月日)。

%m 月份(以01-12来表示)。

%w : 一周中的第几天 (0..6)

%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y 年份(以00-99来表示)。

%Y 年份(以四位数来表示)。

实例:

// 输出当前系统时间:Tue Nov 16 17:51:42 CST 2021
date

// 显示下一天的日期: 2021-11-17
date +%Y-%m-%d --date="+1 day"

// 显示数字日期:11/16/2021
date '+%x'

// 2周后日期:Tue Nov 30 17:54:35 CST 2021
date -d '2 weeks'

26. ps

用来查看当前运行的进程状态

ps [options]
options

-A 显示所有进程

a 显示所有进程

-a 显示同一终端下所有进程

c 显示进程真实名称

e 显示环境变量

f 显示进程间的关系

r 显示当前终端运行的进程

-aux 显示所有包含其它使用的进程

如:

ps -aux | grep nginx

27. kill

用于删除执行中的程序或工作。

// 杀死进程
kill 44172

// 彻底杀死进程
kill -9 44172

28. nohup

用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup Command [ Arg … ] [ & ]
  • Command:要执行的命令。

  • Arg:一些参数,可以指定输出文件。

  • &:让命令在后台执行,终端退出后命令仍旧执行。

如:

nohup ./blog.sh &

29. history

查看操作命令的历史记录

history

history | grep mysql

或者

cat ~/.bash_history
Copyright © yzx该文章修订时间: 2021-11-16 18:31:26

results matching ""

    No results matching ""