iOS之认识Shell2-常用的命令参考1

5,082 阅读7分钟

这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

常用命令参考

linux-command
linux-command

ag命令

ag超快的文件搜索工具,与grep相比,搜索速度更快。

https://www.cnblogs.com/michael-xiang/p/10466890.html

c++filt命令

c++filt命令可用于解析C++Java中被修饰的符号,比如变量与函数名称。

https://blog.csdn.net/K346K346/article/details/88225726

tree命令

tree命令以树状图列出目录的内容。

https://wangchujiang.com/linux-command/c/tree.html

cp命令

cpcopy的缩写,cp命令用于复制文件/文件夹。

https://jianrry.com/archives/100/

参数:

-a, --archive                     等于-dR --preserve=all--backup[=CONTROL 为每个已存在的目标文件创建备份
-b                                类似--backup 但不接受参数--copy-contents 在递归处理是复制特殊文件内容
-d                                等于--no-dereference --preserve=links
-f, --force                       如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
-i, --interactive                 覆盖前询问(使前面的 -n 选项失效)
-H                                跟随源文件中的命令行符号链接
-l, --link                        链接文件而不复制
-L, --dereference                 总是跟随符号链接
-n, --no-clobber                  不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference              不跟随源文件中的符号链接
-p                                等于--preserve=模式,所有权,时间戳--preserve[=属性列表 保持指定的属性
                                  (默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
-R, -r, --recursive               复制目录及目录内的所有项目
-t --target-directory=DIRECTORY   将所有源文件拷贝到目标目录
-T, --no-target-directory         目标为文件而不是文件夹

ln命令

所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种:

  • 硬链接(hard link),意思是一个档案可以有多个名称;

    1. 硬链接,以文件副本的形式存在。但不占用实际空间;
    2. 不允许给目录创建硬链接;
    3. 硬链接只有在同一个文件系统中才能创建;
  • 软链接(symbolic link),意思是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。

    1. 软链接,以路径的形式存在。类似于快捷方式;
    2. 软链接可以跨文件系统,硬链接不可以;
    3. 软链接可以对一个不存在的文件名进行链接;
    4. 软链接可以对目录进行链接。
https://wangchujiang.com/linux-command/c/ln.html

sed命令

通常要进行文本处理,sed是一个非常强大的文本处理命令工具。 配合正则表达式可以进行文本搜索、替换、插入、删除等操作。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变。

https://man.linuxde.net/sed

grep

grep命令全称是Global Regular Expression Print,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
主要参数:

https://wangchujiang.com/linux-command/c/grep.html

ls命令

ls命令用来显示目标列表。

https://wangchujiang.com/linux-command/c/ls.html#!kw=grep

drwxr-xr-x   2 root root 48 2020-11-27 13:34 test/

第一个栏位,表示文件的属性。件基本上分为三个属性:可读(r),可写(w),可执行(x)。数字表示:1表示可执行权限,2表示可写权限,4表示可读权限。
第一个字母表示文件类型:

  • -,普通文件。
  • d,目录,是dirtectory的缩写。
  • l,符号链接。
  • b,块设备文件。
  • c,字符设备文件。 紧接着的3*3个字符分3组,各指示此文件的读、写、执行权限,对于ownergroupothers而言。

因为Linux/Unix是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):

rwx(Owner)r-x(Group)r-x(Other)
      
第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。

第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的`Home`,那这一栏大概都是它的账号名称。

第四个栏位,表示所属的组(`group`)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当[系统管理员]希望给予某使用者特殊权限时,才可能会给他另一个组。

第五栏位,表示文件大小。文件大小用`byte`来表示,而空目录一般都是`1024byte`,当然可以用其它参数使文件显示的单位不同,如使用`ls –k`就是用`kb`显示一个文件的大小单位,不过一般我们还是以`byte`为主。  

第六个栏位,表示最后一次修改时间。以“月,日,时间”的格式表示,如`Aug 15 5:46`表示`8月15日早上5:46分`。

第七个栏位,表示文件名。我们可以用`ls –a`显示隐藏的文件名。

`–rwxr-xr-x`转换成权限数字为755。即:
1. `rwx`即4+2+1=7;
2. `r-x`即4+1=5;
3. `r-x`即4+1=5。

stat命令

stat命令用于显示文件或文件系统的详细信息。在显示文件信息时,比ls命令更加详细。

https://wangchujiang.com/linux-command/c/stat.html

参数:

-L, --dereference: 跟随符号链接解析原文件而非符号链接;
-f, --file-system: 显示文件所在文件系统信息而非文件信息;
-c,--format=FORMAT: 以指定格式输出,而非默认格式;
--printf=FORMAT: 以指定格式输出,而非默认格式。与--format作用类似,但可以解释反斜杠转义字符,比如换行符\n;
-t, --terse: 简洁模式输出,只显示摘要信息;
--help: 显示帮助信息;
--version: 显示版本信息。

显示文件信息可用格式控制符如下:

%a:以八进制显示访问权限
%A:以可读形式显示访问权限
%b:显示占有块数
%B:显示每一块占有的字节数
%C:SELinux security context string
%d:十进制显示文件所在设备号
%D:十六进制显示文件所在设备号
%f:十六进制显示文件类型
%F:文件类型。Linux下文件类型主要分为普通文件、目录、字符设备文件、块设备文件、符号链接文件、套接字等
%g:文件所有者组ID
%G:文件所有者组名称
%h:文件硬链接数
%i:inode号
%m:文件所在磁盘分区挂载点,比如/data
%n:文件名称
%N:单引号括起来的文件名称,如果是软链接,则同时显示指向的文件名称
%o:optimal I/O transfer size hint
%s:实际文件大小,单位字节
%t:major device type in hex, for character/block device special files
%T:minor device type in hex, for character/block device special files
%u:所有者用户ID
%U:所有者用户名称
%w:文件创建时间,输出-表示无法得知
%W:文件创建时间,输出Unix时间戳,0表示无法得知
%x:可读形式输出最后访问时间atime
%X:Unix时间戳输出最后访问时间atime
%y:可读形式输出最后修改时间mtime
%Y:Unix时间戳输出后修改时间mtime
%z:可读形式输出最后状态改变时间ctime
%Z:Unix时间戳输出最后状态改变时间ctime

显示文件系统信息可用格式控制符有:

%a:非超级用户可使用的自由block数
%b:文件系统总block数
%c:文件系统总文件节点数
%d:可用文件节点数
%f:可用文件block数
%i:十六进制文件系统ID
%l:最大文件名称长度
%n:文件名称
%s:一个块的大小,单位字节(for faster transfers)
%S:一个块的基本大小,单位字节(用于统计block的数量)
%t:十六进制输出文件系统类型
%T:可读形式输出文件系统类型