shell命令是由三部分组成的分别为命令本身、选项(可选)、参数(可选)。
选项:同一命令采用不同的选项,其功能也不相同。选项可以有一个“-”,也可以有多个,甚至可以没有。选项通常以“-”开头,当有多个选项时,可以只使用一个“-”符号。
参数:执行该命令所需的对象,如文件、目录等。根据命令不同,参数可以有一个、多个或没有。
命令用于显示指定工作目录下之的内容目录文件等
-a | 显示所有文件及目录(?.? ?靠头的隐藏文件也将列出) |
-d | 只列出目录,不递归列出目录中的文件,只显示目录本身不显示目录中的内容 |
-l | 以长格式显示文件和目录信息,包含权限、所有者、大小。创作时间等信息 |
-r | 倒序显示文件和目录 |
-t | 将按照修改时间排序,最新的文件再最前面 |
-A | 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) |
-F | 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" |
-R | ?递归显示目录中的所有文件和子目录。 |
root@serein-virtual-machine:~/fisco# ls -a
. .. build_chain.sh console console.tar.gz .fisco fisco-bcos webase webase-deploy.zip
root@serein-virtual-machine:~/fisco# ls -d
.
root@serein-virtual-machine:~/fisco# ls -l
总用量 79284
-rwxr--r-- 1 root root 72216 11月 23 08:18 build_chain.sh
drwxr-xr-x 8 502 staff 4096 11月 23 09:43 console
-rw-r--r-- 1 root root 50440597 11月 23 09:05 console.tar.gz
-rwxr-xr-x 1 root root 30593416 12月 14 00:23 fisco-bcos
drwxr-xr-x 2 root root 4096 12月 14 00:23 webase
-rw-r--r-- 1 root root 57906 4月 18 2023 webase-deploy.zip
root@serein-virtual-machine:~/fisco# ls -r
webase-deploy.zip webase fisco-bcos console.tar.gz console build_chain.sh
root@serein-virtual-machine:~/fisco# ls -t
fisco-bcos webase console console.tar.gz build_chain.sh webase-deploy.zip
root@serein-virtual-machine:~/fisco# ls -A
build_chain.sh console console.tar.gz .fisco fisco-bcos webase webase-deploy.zip
root@serein-virtual-machine:~/fisco# ls -F
build_chain.sh* console/ console.tar.gz fisco-bcos* webase/ webase-deploy.zip
root@serein-virtual-machine:~/fisco# ls -R
~表示当前用户的家目录,./表示当前目录,../表示上一级目录
语法: cd + 路径
//当前目录
serein@serein-virtual-machine:~$ cd ./
//返回上一级目录
serein@serein-virtual-machine:~$ cd ../
//进入指定目录
serein@serein-virtual-machine:/home$ cd ./serein/
返回上上级目录
serein@serein-virtual-machine:~$ cd ../../
用于查看文件内容,将内容打印带控制台上
语法 :cat +选项(可选)+文件名
选项
-n | 由 1 开始对所有输出的行数编号。 |
-b | 和 -n 相似,只不过对于空白行不编号。 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行。 |
-v | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。 |
-E | 在每行结束处显示 $。 |
-T | 将 TAB 字符显示为 ^I。 |
-A | 等价于 -vET。 |
-e | 等价于"-vE"选项; |
-t | 等价于"-vT"选项; |
用于修改文件或目录的权限,需要超级用户?root?的权限才能执行此命令。
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
在指定目录下查找文件和目录。
它可以使用不同的选项来过滤和限制查找的结果。
语法:find [路径] [匹配条件] [动作]
路径?是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
选项
-name?pattern | 按文件名查找,支持使用通配符?* ?和?? 。 |
-type | 按文件类型查找,可以是?f (普通文件)、d (目录)、l (符号链接)等。 |
-size [+-]size[cwbkMG] | 按文件大小查找,支持使用?+ ?或?- ?表示大于或小于指定大小,单位可以是?c (字节)、w (字数)、b (块数)、k (KB)、M (MB)或?G (GB)。 |
-mtime days | 按修改时间查找,支持使用?+ ?或?- ?表示在指定天数前或后,days 是一个整数表示天数。 |
-user username | 按文件所有者查找。 |
-group groupname | 按文件所属组查找。 |
动作:?可选的,用于对匹配到的文件执行操作
find 命令中用于时间的参数如下:
-amin n
:查找在 n 分钟内被访问过的文件。-atime n
:查找在 n*24 小时内被访问过的文件。-cmin n
:查找在 n 分钟内状态发生变化的文件(例如权限)。-ctime n
:查找在 n*24 小时内状态发生变化的文件(例如权限)。-mmin n
:查找在 n 分钟内被修改过的文件。-mtime n
:查找在 n*24 小时内被修改过的文件。在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
例如:-mtime 0?表示查找今天修改过的文件,-mtime -7?表示查找一周以前修改过的文件。
关于时间 n 参数的说明:
+n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法:mv [选项] 源文件 目标文件
选项
-b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 |
-i | 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 |
-f | 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 |
-n | 不要覆盖任何已存在的文件或目录。 |
-u | 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。 |
命令用于删除一个文件或者目录。
注意:rm命令删除的时候将会将文件永久删除,是不可逆的,无法找回,请谨慎使用,尽量减少rm命令的使用,使用时请仔细确认文件和目录是否正确!!!!!!
语法 : rm + 选项+文件?
-i | 删除前逐一询问确认。 |
-f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 |
-r | 将目录及以下之档案亦逐一删除。 |
令主要用于复制文件或目录。
语法:cp [选项] 源文件 目标文件
选项
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。 |
-d | 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 |
-r | 用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。 |
-i | 在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答?y?时目标文件将被覆盖。 |
-u | 仅复制源文件中更新时间较新的文件。 |
-v | 显示详细的复制过程。 |
-p | 显示详细的复制过程。 |
-f | 强制复制,即使目标文件已存在也会覆盖,而且不给出提示。 |
-l | 不复制文件,只是生成链接文件。 |
?rcp命令用于复制远程文件或目录。
rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。
语法:rcp [-pr][源文件或目录][目标文件或目录]
选项
-p | 保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。 |
-r | 递归处理,将指定目录下的文件与子目录一并处理。 |
rcp root@218.6.132.5:./testfile testfile #复制远程文件到本地
rcp root@218.6.132.5:home/rootlocal/testfile testfile
#要求当前登录账户cmd 登录到远程主机
rcp 218.6.132.5:./testfile testfile
touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。常用于新文件的创建
语法:touch [选项] 文件名
选项:
?-a | 改变档案的读取时间记录。 |
-m | 改变档案的修改时间记录。 |
-c | 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 |
-f | 不使用,是为了与其他 unix 系统的相容性而保留。 |
-r | 使用参考档的时间记录,与 --file 的效果一样。 |
-d | 设定时间与日期,可以使用各种不同的格式。 |
-t | 设定档案的时间记录,格式与 date 指令相同。 |
--no-create | 不会建立新档案。 |
如果只想更改文件的访问时间而不修改文件内容,可以使用 -a 选项,如下所示:
touch -a file.txt
如果只想更改文件的修改时间而不修改文件内容,可以使用 -m 选项,如下所示:
touch -m file.txt
如果要使用指定的时间值设置文件的时间戳,可以使用 -d 选项,后跟时间值,如下所示:
touch -d "2022-01-01 10:30:00" file.txt
这将把文件 file.txt 的时间戳设置为指定的日期和时间。
scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp?是不加密的,scp 是 rcp 的加强版。
参数
which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法:which [文件...]
选项
-n<文件名长度> | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 |
-p<文件名长度> | 与-n参数相同,但此处的<文件名长度>包括了文件的路径。 |
-w | 指定输出时栏位的宽度。 |
sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法:sed [选项] '脚本' 文件
选项
-e<script> | 以选项中指定的script来处理输入的文本文件。 |
-f<script文件> | 以选项中指定的script文件来处理输入的文本文件。 |
-h | 显示帮助。 |
-n | 仅显示script处理后的结果。 |
-V | 显示版本信息。 |
脚本中的编辑指令可以是以下形式之一:
s/模式/替换/
:在每一行中查找模式并将其替换为指定的内容。地址 s/模式/替换/
:只在满足地址条件的行中查找模式并替换。地址1,地址2 s/模式/替换/
:在满足地址1和地址2之间的行中查找模式并替换。地址 d
:删除满足地址条件的行。地址1,地址2 d
:删除满足地址1和地址2之间的行。地址 a\文本
:在满足地址条件的行之后添加文本。地址 i\文本
:在满足地址条件的行之前插入文本。a | 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ |
c | 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! |
d | 删除,因为是删除啊,所以 d 后面通常不接任何东东; |
i | 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); |
p | 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ |
s | 取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦! |
例如,要在文件 file.txt 中将所有的 "apple" 替换为 "orange",可以使用以下命令:
sed 's/apple/orange/' file.txt
如果要将替换操作应用到文件中的每一行,可以使用 g 选项:
sed 's/apple/orange/g' file.txt
要在第3行之后添加一行文本 "Hello",可以使用以下命令:
sed '3 a\Hello' file.txt
要删除包含 "apple" 的行,可以使用以下命令:
sed '/apple/d' file.txt
这只会在输出中删除匹配的行,不会修改原始文件。
?wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法:wc [-clw][--help][--version][文件...]
选项
-c | 只显示Bytes数。 |
-l | 显示行数。 |
-w | 只显示字数。 |
tree命令用于以树状图列出目录的内容。
执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
语法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
选项
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
?useradd 命令用于建立用户帐号。
useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
语法:?useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的起始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 制定用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s<shell> 指定用户登入后所使用的shell。
-u<uid> 指定用户ID。
添加一般用户
# useradd tt
为添加的用户指定相应的用户组
# useradd -g root tt
创建一个系统用户
# useradd -r tt
为新添加的用户指定home目录
# useradd -d /home/myd tt
建立用户且制定ID
# useradd caojh -u 544
清屏
mkdir directory
rmdir directory
root@serein-virtual-machine:~/fisco# pwd
/root/fisco
more file_name
less file_name
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秒 |
?语法:kill + 选项+ ID
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
ifconfig
ip addr show
利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 。
chown 需要超级用户?root?的权限才能执行此命令。
语法:chown [-cfhvR] [--help] [--version] user[:group] file...
选项
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
-c | 生成档案文件,创建打包文件 |
-x | 解开档案文件 |
-v | 列出归档接档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面是.tar文件所以必须放在选项的最后 |
可以压缩为gz格式加-z选项
tar -czvf archive.tar.gz directory_name # 压缩目录
tar -xzvf archive.tar.gz # 解压文件
echo "Hello, World!"
命令用于查找文件里符合条件的字符串或正则表达式。常与tail、ps,等命令连用
语法:grep [options] pattern [files]
选项:
-i | 忽略大小写进行匹配。 |
-v | 反向查找,只打印不匹配的行。 |
-n | 显示匹配行的行号。 |
-r | 递归查找子目录中的文件。 |
-l | 只打印匹配的文件名。 |
-c | 只打印匹配的行数。 |
命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法:ps [options] [--help]
选项
-A:显示所有进程。
-e:显示所有进程,除了执行ps命令终端下的进程。
-f:以ASCII字符显示树状结构,表达程序间的相互关系。
-H:显示树状结构,表示程序间的相互关系。
-N:显示所有的进程,除了执行ps指令终端机下的程序之外。
-s:采用程序信号的格式显示程序状况。
-S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
-u:以用户为主的格式来显示程序状况。
-x:显示所有进程,不以终端机来区分。
命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
立即关机:shutdown -h now
语法:shutdown [-t seconds] [-rkhncfF] time [message]
选项
-t seconds : 设定在几秒钟之后进行关机程序。
-k : 并不会真的关机,只是将警告讯息传送给所有使用者。
-r : 关机后重新开机。
-h : 关机后停机。
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
-c : 取消目前已经进行中的关机动作。
-f : 关机时,不做 fsck 动作(检查 Linux 档系统)。
-F : 关机时,强迫进行 fsck 动作。
time : 设定关机的时间。
message : 传送给所有使用者的警告讯息。
重新启动
解压zip格式压缩包
语法:unzip +zip格式压缩包
passwd username
netstat -tuln # 显示所有TCP和UDP端口
ss -tuln # 使用Socket Stat查看网络连接
history
dd [选项] [源文件或设备] [目标文件或设备]
f=filename:输入文件名,默认为标准输入,即指定源文件。
of=filename:输出文件名,默认为标准输出,即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion_options:转换选项,用于指定数据转换的方式。例如,使用conv=notrunc将不截断目标文件,使用conv=sync将用空字符填充输入块尾部的空格,等等。
示例用法:
拷贝文件:
shell
dd if=source.txt of=destination.txt
转换文件格式:
shell
dd if=input.txt of=output.bin conv=notrunc,sync
指定块大小:
shell
dd if=input.txt of=output.txt bs=1024 count=10000 ibs=512 obs=512 skip=20 seek=20000
?注意:
sudo su //进入root用户