unix命令

Ubuntu学习总结-08 Ubuntu运行Shell脚本报 shell /bin/bash^M: bad interpreter错误问题解决

▼魔方 西西 提交于 2020-02-25 11:45:45
  错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A. 可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的 (1). vi filename 然后用命令 :set ff? 可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看. (2). 用joe filename 如果是DOS格式的, 那么行尾会有很多绿色的^M字样出现. 你也可以用上述办法把它转为UNIX格式的. (3). 用od -t x1 filename 如果你看到有0d 0a 这样的字符, 那么它是dos格式的, 如果只有0a而没有0d, 那么它是UNIX格式的, 同样可以用上述方法把它转为UNIX格式的. 转换不同平台的文本文件格式可以用 1. unix2dos或dos2unix这两个小程序来做. 很简单. 在djgpp中这两个程序的名字叫dtou和utod, u代表unix, d代表dos 2. 也可以用sed 这样的工具来做: sed 's/^M//' filename > tmp_filename mv -f tmp_filename filename 来做 说明:^M并不是按键shift + 6产生的

UNIX环境高级编程--10. 信号

ぐ巨炮叔叔 提交于 2020-02-24 23:19:48
第十章 信号 信号是软中断,提供了一种处理异步事件的方法。例如,终端用户键入终端键,会通过信号机制停止一个进程, 或及早终止管道中的下一个程序。 每个信号都有一个名字,SIG开头。例如: SIGABRT:夭折信号,当进程调用abort函数时产生。 SIGALRM:闹钟信号,由alarm函数设定时器超时后将产生此信号。 当信号出现时,可以告诉内核按下列三种方式之一进行处理: (1)忽略此信号。butSIGKILL和SIGSTOP不能忽略。他们向内核和超级用户提供了使进程终止或停止的可靠方法。另外,硬件异常产生的信号也不能忽略。 (2)捕捉信号。 (3)执行系统默认动作。 函数signal: UNIX系统信号机制最简单的接口是signal函数。 void (*signal (int signo, void (*func)(int))) (int); 返回值:成功,返回以前的信号处理配置;出错,返回SIG_ERR。 signo信号名(SIGABRT等); func取值可以是: 常量SIG_IGN 表示忽略此信号 常量SIG_DFL 表示接到此信号后动作是系统默认动作 函数地址 信号发生时,调用该函数。 函数kill和raise: kill和raise函数用来发送信号。 kill函数将信号发送给进程或进程组。raise函数则允许进程向自身发送信号。 调用 raise(signo);

BOOST 之filesystem, path

旧街凉风 提交于 2020-02-24 18:54:42
目录[-] 使用 boost::filesystem 的第一个程序 清单 1. 用于确定某个文件的类型是否为 Directory 的代码 了解 Boost path 对象 清单 2. 创建 Boost path 对象的方法 清单 3. 使用本机格式初始化 path 清单 4. 使用可移植格式初始化 path path 成员函数概述 清单 5. 使用 path::iterator(begin 和 end 接口) 清单 6. 路径字符串的串联 错误处理 清单 7. Boost 中的错误处理 Boost Filesystem Library 中的函数类别 属性函数 文件系统操作函数 清单 8. Boost 中的重命名功能 实用工具 清单 9. 测试两个路径是否等效 杂项函数 清单 10. 使用 boost::basename 结束语 C++ 语言(实际上是 C++ 标准)的最常见问题之一是,缺乏定义良好的库来帮助处理文件系统查询和操作。由于这个原因,程序员不得不使用本机操作系统提供的应用程序编程接口(Application Program Interfaces,API),而这使得代码不能在平台之间移植。以下面的简单情况为例:您需要确定某个文件是否是 Directory 类型。在 Microsoft® Windows® 平台中,可以通过调用 GetAttributes 库函数(在

浅谈Linux与unix系统的来历

霸气de小男生 提交于 2020-02-24 16:56:32
在今天的UNIX是商业化的,UNIX系统大多是与硬件配套的,也就是说,大多数UNIX系统如AIX、HP-UX等是无法安装在 x86 服务器和个人计算机上的,UNIX系统是一个分时系统,而UNIX是至关重要的,在它最早被开发后的时间里,FreeBSD,Linux等操作系统都或多或少有来自UNIX 的启迪。UNIX 的出现最早是由大佬Ken Thompson在1970年用汇编语言来写出的,初代Unix公开后,引起学术界的广泛兴趣并对其源码索取,各大学和公司开始通过UNIX 源码对Unix进行了各种各样的改进和拓展,1973 年,KenThompson 和DennisRitchie 改掉UNIX 的汇编语言,自主编写语言,经过B语言到C语言,最终使用 C 语言编写内核的 UNIX 版本已相当稳定,且具有良好的可移植性,为 UNIX 的进一步推广和普及奠定了坚实的基础。 1978年伯克利大学推出改进和新功能而成的Unix,并命名为BSD,后来的FreeBSD就是在BSD、386BSD和4.4BSD一系列发展而来,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。FreeBSD 在 BSD 许可协议下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行。然而正是由于unix的不开源,才有了Richard Stallman发起GNU 计划,

python中os模块中文帮助

佐手、 提交于 2020-02-22 02:22:24
python中os模块中文帮助文档 文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8,个人博客: http://butlandblog.appspot.com/ 注此模块中关于unix中的函数大部分都被略过,翻译主要针对WINDOWS,翻译速度很快,其中很多不足之处请多多包涵。 这个模块提供了一个轻便的方法使用要依赖操作系统的功能。 如何你只是想读或写文件,请使用open() ,如果你想操作文件路径,请使用os.path模块,如果你想在命令行中,读入所有文件的所有行,请使用 fileinput模块。使用tempfile模块创建临时文件和文件夹,更高级的文件和文件夹处理,请使用shutil模块。 os.error 内建OSError exception的别名。 os.name 导入依赖操作系统模块的名字。下面是目前被注册的名字:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'. 下面的function和data项是和当前的进程和用户有关 os.environ 一个mapping对象表示环境。例如,environ['HOME'] ,表示的你自己home文件夹的路径(某些平台支持,windows不支持) ,它与C中的getenv("HOME")一致。

Rootkit 真刀真枪的权限保卫战

本秂侑毒 提交于 2020-02-19 07:08:01
Rootkit 真刀真枪的权限保卫战 作者:小珂 通常,我们在获得了对目标的控制权后,还想保持这种控制权限,于是就出现了木马后门,Rootkit之类的保护权限的手段。首先来说一下我们常见的应用层次的木马后门,比如我们常见的远程控制类的软件,像国外的Sub7,VNC,netbus,国内的冰河,灰鸽子,黑洞等等,这些大家都很熟悉就不详细介绍了。此类后门很容易被发现,现在的杀毒软件大多都能轻松的查杀,即使暂时查不到,用其它手段检测发现也不困难,而这次给大家介绍的是比一般木马后门潜伏的更深木马后门--Rootkit。 传统的Rootkit是一种比普通木马后门更为阴险的木马后门。它主要通过替换系统文件来达到目的,这样就会更加隐蔽,使检测变得比较困难。传统的Rootkit主要针对Unix平台,例如Linux、AIX、SunOs等操作系统,有些Rootkits可以通过替换DLL文件或更改系统来攻击Windows平台。Rootkit并不能让你直接获得权限,相反它是在你通过各种方法获得权限后才能使用的一种保护权限的措施,在我们获取系统根权限(根权限即root权限,是Unix系统的最高权限)以后,Rootkits提供了一套工具用来建立后门和隐藏行迹,从而让攻击者保住权限。 传统Rootkit对Unix的攻击 RootKits是如何实现后门的呢?为了理解Rootkits后门

MAC UNIX执行 CMD

帅比萌擦擦* 提交于 2020-02-17 02:07:32
在Solaris (Unix系统) 下,创建一个文件1.c 然后编辑1.c ,在1.c中添加如下代码 #include<stdlib.h> int main() { system("gedit"); //打开记事本 system(" ps -a"); //查看所有的进程 } [1]首先我们通过: cd /home/yincheng/ 桌面 进入1.c所在的目录位置 [2]然后我们通过: gcc 1.c 来编译 1.c文件生成一个a.out 文件 [3]再然后 通过 ./a.out 来运行生成的 a.out文件,打开记事本并且显示所有进程 2.在MAC系统下,同样能够运行ps –a命令, date命令(MAC是基于Unix基础和Solaris都是属于Unix),因此有很多的命令都是相同的 3.在MAC系统下,我们通过Xcode集成开发环境创建一个命令行项目,将其命名为GO 。 4.在GO项目的main.c文件中,我们添加两行代码: 第一行是包含头文件: #include<stdlib.h> 第二行是调用系统命令: system("ps -a"); 运行一下:打印出了所以正在运行的进程 (如红色框中所示) 5.修改system代码打开地图。 把system("ps -a"); 替换成 system("open /Applications/Maps.app"); 运行一下,打开地图 来源

the-art-of-command-line 2019-02-15

末鹿安然 提交于 2020-02-15 18:38:02
命令行的艺术 前言 基础 日常使用 文件及数据处理 系统调试 单行脚本 冷门但有用 仅限 OS X 系统 仅限 Windows 系统 更多资源 免责声明 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是 许多作者和译者 共同的成果。 这里的部分内容 首次 出现 于 Quora , 但已经迁移到了 Github,并由众多高手做出了许多改进。 如果你在本文中发现了错误或者存在可以改善的地方,请 贡献你的一份力量 。 前言 涵盖范围: 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到 覆盖面广 (涉及所有重要的内容), 具体 (给出具体的最常用的例子),以及 简洁 (避免冗余的内容,或是可以在其他地方轻松查到的细枝末节)。在特定应用场景下,本文的内容属于基本功或者能帮助您节约大量的时间。 本文主要为 Linux 所写,但在 仅限 OS X 系统 章节和 仅限 Windows 系统 章节中也包含有对应操作系统的内容。除去这两个章节外,其它的内容大部分均可在其他类 Unix 系统或

Linux下Fork与Exec使用

感情迁移 提交于 2020-02-15 10:04:29
一、引言   对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linux系统是真正实现多任务操作的系统,可以说,不使用多进程编程,就不能算是真正的Linux环境下编程。   多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。 下面,我们将介绍在Linux下编写多进程和多线程程序的一些初步知识。 二、多进程编程 什么是一个进程?进程这个概念是针对系统而不是针对用户的,对用户来说,他面对的概念是程序。当用户敲入命令执行一个程序的时候,对系统而言,它将启动一个进程。但和程序不同的是,在这个进程中,系统可能需要再启动一个或多个进程来完成独立的多个任务。多进程编程的主要内容包括进程控制和进程间通信,在了解这些之前,我们先要简单知道进程的结构。    2.1 Linux下进程的结构   Linux下一个进程在内存里有三部分的数据,就是"代码段"、"堆栈段"和"数据段"

查看Unix系统是32位还是64位

安稳与你 提交于 2020-02-09 02:31:42
#getconf查看OS位数 以下经过测试了 HP: getconf KERNEL_BITS Linux: getconf LONG_BIT AIX: getconf KERNEL_BITMODE #AIX上getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等. 例如: 确定磁盘 hdisk0 大小,若是 root 用户,则输入: getconf DISK_SIZE /dev/hdisk0 确定实际内存大小:getconf REAL_MEMORY 确定内核是32位或64位: getconf KERNEL_BITMODE 确定机器硬件是32位或64位:getconf HARDWARE_BITMODE 举例: root@aixsvr:/#getconf DISK_SIZE /dev/hdisk0 34732 root@aixsvr:/#getconf REAL_MEMORY 2097152 root@aixsvr:/#getconf KERNEL_BITMODE 64 root@aixsvr:/#getconf HARDWARE_BITMODE 64 root@aixsvr:/#bootinfo -y #显示AIX系统内核是32位还是64位 64 #AIX和Linux都支持getconf -a查看所有系统配置,HP不支持; 来源: https://www