如何在命令行上编辑文件?

时间:2009-05-30 01:43:29

标签: php linux command-line

我正在尝试使用exec()函数(php)创建一个添加用户并在linux中创建public_html目录的php文件。

我可以将以下代码添加到php文件

exec(“useradd -d / home / username -m username”); exec(“mkdir / home / username / public_html”);

now ..我必须将public_html添加到smb.conf以在windows上运行public_html。

是否可以在命令行上编辑smb.conf?

当然,我将使用SSH作为root来执行php文件。

4 个答案:

答案 0 :(得分:3)

编辑:在阅读了Roy Rico的回答后,我相信我误解了这个问题。

您可以使用nano或vi。如果你是初学者,那么nano会更直接。只需像这样使用它:

nano /etc/samba/smb.conf

我相信ctrl + o将保存文件,ctrl + x将退出。

答案 1 :(得分:2)

您是否希望使用在命令行上执行的php脚本编辑文件,或者您是否打算自己使用命令行编辑命令行(使用交互式shell)?

如果您尝试使用php脚本编辑文件,则必须使用fopen,fwrite命令,并将文件访问权限提供给脚本,然后您可能会遇到很多安全问题关注等等。最重要的是,这不仅仅是一个快速的答案,可以在这里给你。

如果您使用的是交互式shell,那么vi和emacs是很棒的编辑器,但如果您以前从未使用它们,那将非常令人生畏。 pico和nano对那些不熟悉CL编辑的人更友好。

答案 2 :(得分:1)

大多数人使用Vim或Emacs作为命令行编辑器。就个人而言,我更喜欢emacs,但尝试两种方式,看看你喜欢哪种。

答案 3 :(得分:1)

查看parse_ini_file()功能。

然后,如果你想在ini文件里写,试试这个:

function writeini($file,$title,$item,$data) {
  $source = file($file);
  $t_match = "/^\[".$title."\]/i";
  $s_title = "";
  $c = "0";
  $o = "";
  foreach ($source as $temp) {
    $c++;
    if (preg_match("/^\[.+\]/i",$temp)) {
          if (preg_match($t_match,$l_title)) {
            $done = "yes";
            $f_write .= $item."=".$data."\n";
          }
          $l_title = $temp;
          $f_write .= $temp;
        } elseif (preg_match("/^".$item."=/i",$temp) && preg_match($t_match,$l_title)) {
          $done = "yes";
          $f_write .= $item."=".$data."\n";
          $l_title = "";
        } elseif ($c == count($source) && $done != "yes") {
          if (preg_match($t_match,$l_title)) {
            $f_write .= $temp.$item."=".$data."\n";
          } else {
                $f_write .= $temp."[".$title."]\n".$item."=".$data."\n";
          }
        } else {
          $f_write .= $temp;
        }
  }
  $ini_write = fopen($file,'w');
  fwrite($ini_write,$f_write);
  fclose($ini_write);
}