问题:
我需要在我的C#应用程序中进行一些系统调用。不幸的是,这在Linux上的行为与在UNIX上不同。
现在我习惯于在运行时切换操作系统,如下所示
If Environment.OSVersion.Platform = System.PlatformID.Unix Then
' Linux/Unix '
ElseIf Environment.OSVersion.Platform = System.PlatformID.MacOSX Then
' Apple '
Else
' Windows '
End If
现在的问题是
众所周知,DOS/Windows文件中的行尾与Unix/Linux中的行尾不同,所以每当我打开使用Windows创建的文件时,我都会看到每行后面都有成百上千个^M。许多人建议使用以下方法来解决此问题:
set fileformat=dos
我尝试过这个方法,但它不起作用,因为据我所知,它告诉Vim如何“保存”文件,而不是如何“读取”文件。我想要的是保持行尾的原样,无论是Linux、Windows还是MAC,正确地读取它们,并在编辑后使用相同的格式保存文件。
有什么想法吗?
因此,我下载了Ubuntu,并通过虚拟机运行它,并期望(希望)能够运行Linux。在输入uname -a之后,我认为一切都很好(第一个输出),但是当我开始做一些密码处理时,它说输入新的UNIX密码(第二个输出)。这是否意味着我正在运行UNIX,或者这并不重要?基于这两个输出,有人能告诉我我是在运行UNIX还是Linux吗?(我使用的是Mac,这可能会影响输入新UNIX密码这一事实。我认为不应该这样做,因为我正在虚拟机上运行终端。)
trevor@trevor-VirtualBox:/$ uname -a
Linux trevor-VirtualBox 3.11.0-15-generic #25
假设我有一个以Unix格式创建的文件。现在,在将该文件发送到窗口之前,必须完成EOL转换。
我需要在bash中这样做,这就是我到目前为止所拥有的:
为了简单起见,假设我的文件名为file_linux.txt,它提供以下输出:
cat -A file_linux.txt
first line$
second line$
third line$
file file_linux.txt
file_linux.txt: ASCII text
因此,似乎我只需要在$符号之前添加回车(^M或\r)。
我的想法是使用sed将$替换为\r$,方法如下:
sed 's/$/\r$/g' fil
我有一个自定义身份验证应用程序,它需要通过STDIN提供用户密码。例如,我可以在命令行上运行以下命令(在linux中): echo "P455w0rd" | authenticate -A username 退出状态是0或1,我需要使用它来确定身份验证是通过还是失败。身份验证应用程序阻止从STDIN读取密码。我可以使用(Edit)从PHP运行身份验证应用程序: $username = $_POST['username'];
$password = $_POST['password'];
// I need to run this shell c