linux
Linux 创建文件命令如何使用?
一、Linux 创建文件命令如何使用?
在 Linux 系统中,有多个命令可以用于创建文件。以下是其中的几个常见的命令和使用方法:
- touch
touch
命令可以创建一个空文件,或者修改一个已经存在的文件的时间戳。touch filename
这会在当前目录下创建一个名为filename
的空文件。 - cat
cat
命令可以用于创建一个文件,并且向其中添加文本内容。cat > filename
这会创建一个名为filename
的文件,并进入输入模式。你可以输入你想要添加到文件中的文本,按下Ctrl+D
结束输入。 - echo
echo
命令可以将文本输出到终端或者文件中。echo
"text" > filename
这会创建一个名为filename
的文件,并将文本"text"
写入其中。 - vi/vim
vi
或vim
是一个文本编辑器,可以创建、打开、编辑和保存文件。vi filename
这会打开一个名为filename
的文件。你可以使用i
进入插入模式,输入你想要添加到文件中的文本。完成后,按下Esc
键退出插入模式,然后输入:wq
保存并退出编辑器。
除了以上这些命令,还有其他一些命令也可以用于创建文件,如 nano
、emacs
、gedit
等。
二、Linux 创建文件命令是如何实现的?
Linux 创建文件命令,也就是touch命令呗~
此命令系统自带,官方提供源文件,请下载官方utilities,查看其源代码,如下:
Coreutils - GNU core utilities源代码可以分为以下几个主要步骤:
- 初始化和解析命令行参数:
使用getopt_long函数解析命令行参数,识别各种选项(如-a,-c,-d,-h,-m,-r,-t等)并设置相应的变量。
- 遍历文件列表并更新时间戳:
对于命令行参数中指定的每个文件,执行以下操作:
a. 尝试打开文件,如果需要创建文件(没有指定-c选项),则创建一个空文件。
b. 根据前面的设置,更新文件的访问和修改时间戳。如果指定了-h选项并且文件是符号链接,那么会更新符号链接本身的时间戳。
c. 关闭文件并记录操作结果。
- 基于所有文件的操作结果返回退出状态:
如果所有文件的时间戳都已成功更新,则返回成功退出状态(EXIT_SUCCESS);否则,返回错误退出状态(EXIT_FAILURE)。
C实现如下:
#include <config.h>
#include <stdio.h>
#include <getopt.h>
#include <sys/types.h>
#include <assert.h>
#include "system.h"
#include "argmatch.h"
#include "error.h"
#include "fd-reopen.h"
#include "parse-datetime.h"
#include "posixtm.h"
#include "posixver.h"
#include "quote.h"
#include "stat-time.h"
#include "utimens.h"
/* The official name of this program (e.g., no `g' prefix). */
#define PROGRAM_NAME "touch"
#define AUTHORS \
proper_name ("Paul Rubin"), \
proper_name ("Arnold Robbins"), \
proper_name ("Jim Kingdon"), \
proper_name ("David MacKenzie"), \
proper_name ("Randy Smith")
/* Bitmasks for `change_times'. */
#define CH_ATIME 1
#define CH_MTIME 2
/* Which timestamps to change. */
static int change_times;
/* (-c) If true, don't create if not already there. */
static bool no_create;
/* (-r) If true, use times from a reference file. */
static bool use_ref;
/* (-h) If true, change the times of an existing symlink, if possible. */
static bool no_dereference;
/* If true, the only thing we have to do is change both the
modification and access time to the current time, so we don't
have to own the file, just be able to read and write it.
On some systems, we can do this if we own the file, even though
we have neither read nor write access to it. */
static bool amtime_now;
/* New access and modification times to use when setting time. */
static struct timespec newtime[2];
/* File to use for -r. */
static char *ref_file;
/* For long options that have no equivalent short option, use a
non-character as a pseudo short option, starting with CHAR_MAX + 1. */
enum
{
TIME_OPTION = CHAR_MAX + 1
};
static struct option const longopts[] =
{
{"time", required_argument, NULL, TIME_OPTION},
{"no-create", no_argument, NULL, 'c'},
{"date", required_argument, NULL, 'd'},
{"reference", required_argument, NULL, 'r'},
{"no-dereference", no_argument, NULL, 'h'},
{GETOPT_HELP_OPTION_DECL},
{GETOPT_VERSION_OPTION_DECL},
{NULL, 0, NULL, 0}
};
/* Valid arguments to the `--time' option. */
static char const* const time_args[] =
{
"atime", "access", "use", "mtime", "modify", NULL
};
/* The bits in `change_times' that those arguments set. */
static int const time_masks[] =
{
CH_ATIME, CH_ATIME, CH_ATIME, CH_MTIME, CH_MTIME
};
/* Store into *RESULT the result of interpreting FLEX_DATE as a date,
relative to NOW. If NOW is null, use the current time. */
static void
get_reldate (struct timespec *result,
char const *flex_date, struct timespec const *now)
{
if (! parse_datetime (result, flex_date, now))
error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (flex_date));
}
/* Update the time of file FILE according to the options given.
Return true if successful. */
static bool
touch (const char *file)
{
bool ok;
int fd = -1;
int open_errno = 0;
struct timespec const *t = newtime;
if (STREQ (file, "-"))
fd = STDOUT_FILENO;
else if (! (no_create || no_dereference))
{
/* Try to open FILE, creating it if necessary. */
int default_permissions =
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
fd = fd_reopen (STDIN_FILENO, file,
O_WRONLY | O_CREAT | O_NONBLOCK | O_NOCTTY,
default_permissions);
/* Don't save a copy of errno if it's EISDIR, since that would lead
touch to give a bogus diagnostic for e.g., `touch /' (assuming
we don't own / or have write access to it). On Solaris 5.6,
and probably other systems, it is EINVAL. On SunOS4, it's EPERM. */
if (fd == -1 && errno != EISDIR && errno != EINVAL && errno != EPERM)
open_errno = errno;
}
if (change_times != (CH_ATIME | CH_MTIME))
{
/* We're setting only one of the time values. */
if (change_times == CH_MTIME)
newtime[0].tv_nsec = UTIME_OMIT;
else
{
assert (change_times == CH_ATIME);
newtime[1].tv_nsec = UTIME_OMIT;
}
}
if (amtime_now)
{
/* Pass NULL to futimens so it will not fail if we have
write access to the file, but don't own it. */
t = NULL;
}
ok = (fdutimensat (fd, AT_FDCWD, (fd == STDOUT_FILENO ? NULL : file), t,
(no_dereference && fd == -1) ? AT_SYMLINK_NOFOLLOW : 0)
== 0);
if (fd == STDIN_FILENO)
{
if (close (STDIN_FILENO) != 0)
{
error (0, errno, _("closing %s"), quote (file));
return false;
}
}
else if (fd == STDOUT_FILENO)
{
/* Do not diagnose "touch -c - >&-". */
if (!ok && errno == EBADF && no_create)
return true;
}
if (!ok)
{
if (open_errno)
{
/* The wording of this diagnostic should cover at least two cases:
- the file does not exist, but the parent directory is unwritable
- the file exists, but it isn't writable
I think it's not worth trying to distinguish them. */
error (0, open_errno, _("cannot touch %s"), quote (file));
}
else
{
if (no_create && errno == ENOENT)
return true;
error (0, errno, _("setting times of %s"), quote (file));
}
return false;
}
return true;
}
void
usage (int status)
{
if (status != EXIT_SUCCESS)
fprintf (stderr, _("Try `%s --help' for more information.\n"),
program_name);
else
{
printf (_("Usage: %s [OPTION]... FILE...\n"), program_name);
fputs (_("\
Update the access and modification times of each FILE to the current time.\n\
\n\
A FILE argument that does not exist is created empty, unless -c or -h\n\
is supplied.\n\
\n\
A FILE argument string of - is handled specially and causes touch to\n\
change the times of the file associated with standard output.\n\
\n\
"), stdout);
fputs (_("\
Mandatory arguments to long options are mandatory for short options too.\n\
"), stdout);
fputs (_("\
-a change only the access time\n\
-c, --no-create do not create any files\n\
-d, --date=STRING parse STRING and use it instead of current time\n\
-f (ignored)\n\
"), stdout);
fputs (_("\
-h, --no-dereference affect each symbolic link instead of any referenced\n\
file (useful only on systems that can change the\n\
timestamps of a symlink)\n\
-m change only the modification time\n\
"), stdout);
fputs (_("\
-r, --reference=FILE use this file's times instead of current time\n\
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n\
--time=WORD change the specified time:\n\
WORD is access, atime, or use: equivalent to -a\n\
WORD is modify or mtime: equivalent to -m\n\
"), stdout);
fputs (HELP_OPTION_DESCRIPTION, stdout);
fputs (VERSION_OPTION_DESCRIPTION, stdout);
fputs (_("\
\n\
Note that the -d and -t options accept different time-date formats.\n\
"), stdout);
emit_ancillary_info ();
}
exit (status);
}
int
main (int argc, char **argv)
{
int c;
bool date_set = false;
bool ok = true;
char const *flex_date = NULL;
initialize_main (&argc, &argv);
set_program_name (argv[0]);
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
atexit (close_stdout);
change_times = 0;
no_create = use_ref = false;
while ((c = getopt_long (argc, argv, "acd:fhmr:t:", longopts, NULL)) != -1)
{
switch (c)
{
case 'a':
change_times |= CH_ATIME;
break;
case 'c':
no_create = true;
break;
case 'd':
flex_date = optarg;
break;
case 'f':
break;
case 'h':
no_dereference = true;
break;
case 'm':
change_times |= CH_MTIME;
break;
case 'r':
use_ref = true;
ref_file = optarg;
break;
case 't':
if (! posixtime (&newtime[0].tv_sec, optarg,
PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))
error (EXIT_FAILURE, 0, _("invalid date format %s"),
quote (optarg));
newtime[0].tv_nsec = 0;
newtime[1] = newtime[0];
date_set = true;
break;
case TIME_OPTION: /* --time */
change_times |= XARGMATCH ("--time", optarg,
time_args, time_masks);
break;
case_GETOPT_HELP_CHAR;
case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
default:
usage (EXIT_FAILURE);
}
}
if (change_times == 0)
change_times = CH_ATIME | CH_MTIME;
if (date_set && (use_ref || flex_date))
{
error (0, 0, _("cannot specify times from more than one source"));
usage (EXIT_FAILURE);
}
if (use_ref)
{
struct stat ref_stats;
/* Don't use (no_dereference?lstat:stat) (args), since stat
might be an object-like macro. */
if (no_dereference ? lstat (ref_file, &ref_stats)
: stat (ref_file, &ref_stats))
error (EXIT_FAILURE, errno,
_("failed to get attributes of %s"), quote (ref_file));
newtime[0] = get_stat_atime (&ref_stats);
newtime[1] = get_stat_mtime (&ref_stats);
date_set = true;
if (flex_date)
{
if (change_times & CH_ATIME)
get_reldate (&newtime[0], flex_date, &newtime[0]);
if (change_times & CH_MTIME)
get_reldate (&newtime[1], flex_date, &newtime[1]);
}
}
else
{
if (flex_date)
{
struct timespec now;
gettime (&now);
get_reldate (&newtime[0], flex_date, &now);
newtime[1] = newtime[0];
date_set = true;
/* If neither -a nor -m is specified, treat "-d now" as if
it were absent; this lets "touch" succeed more often in
the presence of restrictive permissions. */
if (change_times == (CH_ATIME | CH_MTIME)
&& newtime[0].tv_sec == now.tv_sec
&& newtime[0].tv_nsec == now.tv_nsec)
{
/* Check that it really was "-d now", and not a time
stamp that just happens to be the current time. */
struct timespec notnow, notnow1;
notnow.tv_sec = now.tv_sec ^ 1;
notnow.tv_nsec = now.tv_nsec;
get_reldate (¬now1, flex_date, ¬now);
if (notnow1.tv_sec == notnow.tv_sec
&& notnow1.tv_nsec == notnow.tv_nsec)
date_set = false;
}
}
}
/* The obsolete `MMDDhhmm[YY]' form is valid IFF there are
two or more non-option arguments. */
if (!date_set && 2 <= argc - optind && posix2_version () < 200112
&& posixtime (&newtime[0].tv_sec, argv[optind],
PDS_TRAILING_YEAR | PDS_PRE_2000))
{
newtime[0].tv_nsec = 0;
newtime[1] = newtime[0];
date_set = true;
if (! getenv ("POSIXLY_CORRECT"))
{
struct tm const *tm = localtime (&newtime[0].tv_sec);
error (0, 0,
_("warning: `touch %s' is obsolete; use "
"`touch -t %04ld%02d%02d%02d%02d.%02d'"),
argv[optind],
tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
}
optind++;
}
if (!date_set)
{
if (change_times == (CH_ATIME | CH_MTIME))
amtime_now = true;
else
newtime[1].tv_nsec = newtime[0].tv_nsec = UTIME_NOW;
}
if (optind == argc)
{
error (0, 0, _("missing file operand"));
usage (EXIT_FAILURE);
}
for (; optind < argc; ++optind)
ok &= touch (argv[optind]);
exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
}
三、Linux下执行dd命令创建文件?
创建文件默认是使用缓存的,但缓存有限,而速度值是平均值,通过文件大小和使用的时间平均得来的,200兆比缓存大不多,所以时间肯定特别短,上边你也看到了,200兆只用了0。085秒,平均下来就是2.5G一秒咯
四、LINUX中,创建文件夹命令?
在linux当中,创建文件夹的命令是mkdir。
mkdir是Linux和类unix操作系统当中,用来创建文件夹的命令。常用的参数是-p,用来创建多层文件夹。也就是一个文件夹下有一个文件夹,然后在下面又有一个文件夹,以此类推。
五、linux创建pc端命令?
命令mkdir 创建文件夹,mkdir可以创建文件夹。
六、linux发送文件命令?
1.uuto命令
uuto命令可将文件传送到远端的UUCP主机,并在完成工作后,以邮件通知远端主机上的用户。
2.uupick命令
uupick命令是用来处理传送进来的文件。
3.tftp命令
tftp命令用于传输文件,tftp是简单的文字模式ftp程序,它所使用的指令和FTP类似。
4.ncftp命令
ncftp命令用于传输文件,当不指定用户名时,ncftp命令会自动尝试使用匿名账户anonymous去连接远程FTP 服务器,不需要用户输入账号和密码
5.ftpshut命令
ftpshut命令在指定的时间关闭FTP服务器
6.ftpwho命令
ftpwho命令用于显示目前所有以FTP登入的用户信息,执行这项指令可得知目前用FTP登入系统的用户有哪些人,以及他们正在进行的操作。
7.ftpcount命令
ftpcount命令用于显示目前以FTP登入的用户人数。
8.bye命令
bye命令用于中断FTP连线并结束程序。
9.ftp命令
ftp命令设置文件系统相关功能
七、linux文件挂载命令?
mount 命令用来挂载文件系统。其基本命令格式为:
mount -t type [-o options] device dir。
device:指定要挂载的设备,比如磁盘、光驱等。
dir:指定把文件系统挂载到哪个目录。
type:指定挂载的文件系统类型,一般不用指定,mount 命令能够自行判断。可通过读/proc/filesystems文件查看设备支持的文件系统类型。
options:指定挂载参数,比如 ro 表
八、如何用Linux命令创建快照?
在虚拟机上装一个最多人使用的 Ubuntu LTS 版本,一切搞定后做个稳定状态下的快照,然后虚拟机外部用ssh 接入使用其命令行界面。一旦把系统搞烂了,省得折腾,直接快照。当把命令行界面的 Linux 玩熟了,再去闲着蛋疼弄各种巨不稳定的 GUI 吧……千万别舍本逐末,毕竟 CLI 才是 Linux 的精髓啊……多么痛的领悟……
九、掌握Linux常用命令:轻松创建文件
Linux常用命令简介
Linux操作系统作为一个开源的操作系统,广泛应用于服务器系统以及嵌入式系统中。掌握Linux系统的常用命令对于系统管理员和开发人员来说非常重要,可以提高工作效率,简化操作流程。
创建文件的常用命令
在Linux系统中,有多种命令可以用来创建文件,常用的包括:touch、cat、echo等。
使用touch命令
touch命令是最常用的创建文件的命令之一,它的基本语法是:touch file.txt
,这条命令将会在当前目录下创建一个名为file.txt的空文件。
使用cat命令
cat命令不仅可以用来查看文件内容,还可以用来创建文件。通过cat > file.txt
,然后输入内容并按下Ctrl+D,即可创建一个带有内容的文件file.txt。
使用echo命令
echo命令通常用于在命令行输出文本,但也可以通过echo "Hello" > file.txt
的方式将"Hello"写入file.txt文件中,如果文件不存在,则会被创建。
其他相关命令
除了上述常用命令之外,还有一些其他命令可以创建文件,比如mkdir
命令可以创建目录,cp
命令可以复制文件等,这些命令在实际工作中也非常常用。
总之,熟练掌握这些Linux常用命令,能够帮助用户更加高效地进行文件和目录管理,提高工作效率。
感谢您阅读本文,相信通过本文的介绍,您能够更加轻松地掌握Linux系统中创建文件的常用命令。
十、linux常用命令:如何创建文件和文件夹?
假设我们在/home里创建
1、创建一个叫test的文件夹
输入 cd /home 回车 就到了home目录;
输入 mkdir test 就可以了。
2、在文件夹里添加(就是创建 一个文件,例如a.txt)
输入 touch test/
a.txt
回车。3、删除
输入 rm -rf test/ 回车。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...