20230724

Linux rm(英文全拼:remove)命令用于删除一个文件或者目录。
rm [options] name…
参数:

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

if [ $# -ne 1 ];then

$# 是启动脚本时携带的参数个数
-ne 是不等于
这个语句的意思是“如果shell的启动参数不等于1个”
$# 表示提供到shell脚本或者函数的参数总数;
$1 表示第一个参数。

-ne 表示 不等于

另外:
整数比较
-eq 等于,如:if [“ a " − e q " a" -eq " a"eq"b” ]
-ne 不等于,如:if [“ a " − n e " a" -ne " a"ne"b” ]
-gt 大于,如:if [“ a " − g t " a" -gt " a"gt"b” ]
-ge 大于等于,如:if [“ a " − g e " a" -ge " a"ge"b” ]
-lt 小于,如:if [“ a " − l t " a" -lt " a"lt"b” ]
-le 小于等于,如:if [“ a " − l e " a" -le " a"le"b” ]
< 小于(需要双括号),如:((“ a " < " a" < " a"<"b”))
<= 小于等于(需要双括号),如:((“ a " < = " a" <= " a"<="b”))

大于(需要双括号),如:((“ a " > " a" > " a">"b”))
= 大于等于(需要双括号),如:((“ a " > = " a" >= " a">="b”))

另外:$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.

shell中#*,##*,#*,##*,% *,%% *的含义及用法
介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。
假设定义了一个变量为:
代码如下:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 .  及其左边的字符串:file.txt
${file##*.}:删掉最后一个 .  及其左边的字符串:txt
${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)
${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt

Relocation truncated to fit解决办法
这种情况一般出现在汇编代码中。有些跳转指令的跳转范围很小。而当要跳转到的地址超出了范围,那么就会报错!

对于x86:

最终的原因是使用参数-mcmodel=kernel,只能使用最高2G最低2G的内存空间,如果想使用更多的大内存空间,应该使用-mcmodel=large。

对于ppc:

mcmodel对于ppc并不适用,我们在网上搜索找到了-mlongcall参数,加入到base_cflags中。

这对于c源码文件很有效果。可是如果写在汇编里的跳转指令,则没法了。

这时候,也许我们应该想想是否可以改汇编。或者,把跳转指令后面跟的跳转地址放在跳转指令的跳转范围之内。

对于MIPS:

用mipsel-linux-gcc编译出现错误:

修改Makefile的编译选项为:CFLAGS = -msingle-float -mips32 -Wa,-xgot -mno-abicalls -fno-pic即可

i386 、x86_64 、ppc是指CPU的架构

1、i386:是指兼容Intel 80386处理器
x86或80x86是英代爾Intel首先开发制造的一种微处理器体系结构的泛称。
該系列較早期的處理器名稱是以數字來表示,並以“86”作為結尾,包括Intel 8086、80186、80286、80386以及80486,因此其架構被稱為“x86”。由於數字並不能作為註冊商標,因此Intel及其競爭者均在新一代處理器使用可註冊的名稱,如Pentium。現時Intel把x86-32稱為IA-32,全名為Intel Architecture, 32-bit。不過由於x86包括16位的處理器,這樣的命名也出現麻煩

2、x86_64:AMD64
又稱「x86-64」或「x64」,是一種64位元的電腦處理器架構。它是建基於現有32位元的x86架構,由AMD公司所開發,應用AMD64指令集的自家產品有Athlon 64、Athlon 64 FX、Athlon 64 X2、Turion 64、Opteron及最新的Sempron處理器

3、ppc:IBM® POWER Architecture 体系
是RISC指令集的CPU

4、AArch64是ARMv8 架构的一种执行状态。

为了更广泛地向企业领域推进,需要引入 64 位构架。同时也需要在 ARMv8 架构中引入新的 AArch64 执行状态。AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。

5、S390X

s390x 是 IBM System z 系列 (zSeries)大型机 (mainframe) 硬件平台,是银行或者大型企业或者科研单位用的,大部分用户接触不到。

.sv与.svh
.sv文件用于正常编写systemverilog文件,而最近接触到了.svh文件。

.svh一般用于开发VIP时,将一些类、成员变量、方法定义在内部,具体方法实现通过extern在另一个文件中声明,在实际中既你可以看到VIP的类以及成员、方法、结构层次,但是无法看到具体的功能实现,功能实现会在别的.sv文件中被加密。通常把需要`include到别的package的文件设成.svh。

运用时要注意

1、package内的类应该用`include分隔为单独的文件。

2、include按照编译顺序排列。(是一个代码的“平铺”,所以是有先后顺序的)

3、include中不应该还包含include。(即被include的文件内部不要再有别的文件include)

你可能感兴趣的:(服务器,vcs)