summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CWRU/CWRU.chlog43
-rw-r--r--CWRU/CWRU.chlog~51
-rw-r--r--bashline.c83
-rw-r--r--bashline.c~95
-rw-r--r--bracecomp.c8
-rw-r--r--builtins/printf.def2
-rw-r--r--builtins/shopt.def2
-rw-r--r--doc/bash.123
-rw-r--r--doc/bashref.texi17
-rw-r--r--doc/version.texi4
-rw-r--r--externs.h2
-rw-r--r--lib/sh/shquote.c91
-rw-r--r--po/zh_CN.po809
-rw-r--r--tests/errors.right4
14 files changed, 698 insertions, 536 deletions
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index 9da74b20..e627c32e 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -12136,3 +12136,46 @@ lib/sh/strtrans.c
code converts them to wide characters and uses iswprint to check
valid wide chars. From a patch sent by Roman Rakus
<rrakus@redhat.com>
+
+ 9/7
+ ---
+lib/sh/shquote.c
+ - sh_backslash_quote: change to be table-driven so we can use a
+ different table if we want to
+ - sh_backslash_quote: takes a second char table[256] argument;
+
+externs.h
+ - sh_backslash_quote: add second argument to function prototype
+
+bashline.c,braces.c,parse.y,builtins/printf.def
+ - change callers of sh_backslash_quote to add second argument
+
+bashline.c
+ - filename_bstab: table of characters to pass to sh_backslash_quote;
+ characters with value 1 will be backslash-quoted
+ - set_filename_bstab: turn on characters in filename backslash-quote
+ table according to passed string argument
+ - call set_filename_bstab every time rl_filename_quote_characters is
+ assigned a value
+ - bash_quote_filename: call sh_backslash_quote with filename_bstab
+ as second argument. This allows other characters in filenames to
+ be quoted without quoting, for instance, a dollar sign in a shell
+ variable reference
+
+ 9/8
+ ---
+bashline.c
+ - complete_fullquote: new variable, controls table passed to
+ sh_backslash_quote. If non-zero (the default), the standard set
+ of shell metacharacters -- as in bash versions up to and including
+ bash-4.2 -- gets backslash-quoted by the completion code. If zero,
+ sh_backslash_quote gets the table with the characters in the
+ variable reference removed, which means they are removed from the
+ set of characters to be quoted in filenames
+
+ 9/10
+ ----
+bashline.c
+ - bash_filename_stat_hook: new function, designed to expand variable
+ references in filenames before readline passes them to stat(2)
+ to determine whether or not they are a directory
diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~
index 7fc45b7e..007fdb2d 100644
--- a/CWRU/CWRU.chlog~
+++ b/CWRU/CWRU.chlog~
@@ -12121,3 +12121,54 @@ support/shobj-conf
- handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
to darwin stanzas. Fixes readline bug reported by Vincent
Sheffer <vince.sheffer@apisphere.com>
+
+lib/sh/strtrans.c
+ - ansic_wshouldquote: check a string with multi-byte characters for
+ characters that needs to be backslash-octal escaped for $'...'
+ - ansic_shouldquote: if is_basic fails for one character, let
+ ansic_wshouldquote examine the rest of the string and return what
+ it returns. From a patch sent by Roman Rakus <rrakus@redhat.com>
+
+ 8/30
+ ----
+lib/sh/strtrans.c
+ - ansic_quote: changes to quote (or not) multibyte characters. New
+ code converts them to wide characters and uses iswprint to check
+ valid wide chars. From a patch sent by Roman Rakus
+ <rrakus@redhat.com>
+
+ 9/7
+ ---
+lib/sh/shquote.c
+ - sh_backslash_quote: change to be table-driven so we can use a
+ different table if we want to
+ - sh_backslash_quote: takes a second char table[256] argument;
+
+externs.h
+ - sh_backslash_quote: add second argument to function prototype
+
+bashline.c,braces.c,parse.y,builtins/printf.def
+ - change callers of sh_backslash_quote to add second argument
+
+bashline.c
+ - filename_bstab: table of characters to pass to sh_backslash_quote;
+ characters with value 1 will be backslash-quoted
+ - set_filename_bstab: turn on characters in filename backslash-quote
+ table according to passed string argument
+ - call set_filename_bstab every time rl_filename_quote_characters is
+ assigned a value
+ - bash_quote_filename: call sh_backslash_quote with filename_bstab
+ as second argument. This allows other characters in filenames to
+ be quoted without quoting, for instance, a dollar sign in a shell
+ variable reference
+
+ 9/8
+ ---
+bashline.c
+ - complete_fullquote: new variable, controls table passed to
+ sh_backslash_quote. If non-zero (the default), the standard set
+ of shell metacharacters -- as in bash versions up to and including
+ bash-4.2 -- gets backslash-quoted by the completion code. If zero,
+ sh_backslash_quote gets the table with the characters in the
+ variable reference removed, which means they are removed from the
+ set of characters to be quoted in filenames
diff --git a/bashline.c b/bashline.c
index 372c59ac..ca1c9ffb 100644
--- a/bashline.c
+++ b/bashline.c
@@ -116,13 +116,15 @@ static int bash_backward_kill_shellword __P((int, int));
static char *restore_tilde __P((char *, char *));
static char *bash_filename_rewrite_hook __P((char *, int));
+
static void bash_directory_expansion __P((char **));
+static int bash_filename_stat_hook __P((char **));
static int bash_directory_completion_hook __P((char **));
static int filename_completion_ignore __P((char **));
static int bash_push_line __P((void));
static rl_icppfunc_t *save_directory_hook __P((void));
-static void reset_directory_hook __P((rl_icppfunc_t *));
+static void restore_directory_hook __P((rl_icppfunc_t));
static void cleanup_expansion_error __P((void));
static void maybe_make_readline_line __P((char *));
@@ -151,6 +153,7 @@ static int return_zero __P((const char *));
static char *bash_dequote_filename __P((char *, int));
static char *quote_word_break_chars __P((char *));
+static void set_filename_bstab __P((const char *));
static char *bash_quote_filename __P((char *, int, char *));
static int putx __P((int));
@@ -251,12 +254,20 @@ int dircomplete_spelling = 0;
/* Expand directory names during word/filename completion. */
int dircomplete_expand = 0;
+/* When non-zero, perform `normal' shell quoting on completed filenames
+ even when the completed name contains a directory name with a shell
+ variable referene, so dollar signs in a filename get quoted appropriately.
+ Set to zero to remove dollar sign (and braces or parens as needed) from
+ the set of characters that will be quoted. */
+int complete_fullquote = 1;
+
static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
/* )) */
static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/
static char *custom_filename_quote_characters = 0;
+static char filename_bstab[256];
static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
@@ -541,6 +552,7 @@ initialize_readline ()
/* characters that need to be quoted when appearing in filenames. */
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
rl_filename_quoting_function = bash_quote_filename;
rl_filename_dequoting_function = bash_dequote_filename;
@@ -589,6 +601,7 @@ bashline_reset ()
rl_completion_entry_function = NULL;
rl_ignore_some_completions_function = filename_completion_ignore;
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
set_directory_hook ();
}
@@ -1311,6 +1324,7 @@ attempt_shell_completion (text, start, end)
rl_ignore_some_completions_function = filename_completion_ignore;
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
/* Determine if this could be a command word. It is if it appears at
the start of the line (ignoring preceding whitespace), or if it
@@ -2799,6 +2813,56 @@ restore_directory_hook (hookf)
rl_directory_rewrite_hook = hookf;
}
+static int
+bash_filename_stat_hook (dirname)
+ char **dirname;
+{
+ char *local_dirname, *new_dirname, *t;
+ int should_expand_dirname, return_value;
+ WORD_LIST *wl;
+ struct stat sb;
+
+ local_dirname = *dirname;
+ should_expand_dirname = return_value = 0;
+ if (t = mbschr (local_dirname, '$'))
+ should_expand_dirname = '$';
+ else if (t = mbschr (local_dirname, '`')) /* XXX */
+ should_expand_dirname = '`';
+
+#if defined (HAVE_LSTAT)
+ if (should_expand_dirname && lstat (local_dirname, &sb) == 0)
+#else
+ if (should_expand_dirname && stat (local_dirname, &sb) == 0)
+#endif
+ should_expand_dirname = 0;
+
+ if (should_expand_dirname)
+ {
+ new_dirname = savestring (local_dirname);
+ wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */
+ if (wl)
+ {
+ free (new_dirname);
+ new_dirname = string_list (wl);
+ /* Tell the completer we actually expanded something and change
+ *dirname only if we expanded to something non-null -- stat
+ behaves unpredictably when passed null or empty strings */
+ if (new_dirname && *new_dirname)
+ {
+ *dirname = new_dirname;
+ return_value = STREQ (local_dirname, *dirname) == 0;
+ }
+ free (local_dirname);
+ free (new_dirname);
+ dispose_words (wl);
+ }
+ else
+ free (new_dirname);
+ }
+
+ return (return_value);
+}
+
/* Handle symbolic link references and other directory name
expansions while hacking completion. This should return 1 if it modifies
the DIRNAME argument, 0 otherwise. It should make sure not to modify
@@ -2872,6 +2936,7 @@ bash_directory_completion_hook (dirname)
}
custom_filename_quote_characters[j] = '\0';
rl_filename_quote_characters = custom_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
}
}
else
@@ -3494,6 +3559,20 @@ quote_word_break_chars (text)
return ret;
}
+/* Use characters in STRING to populate the table of characters that should
+ be backslash-quoted. The table will be used for sh_backslash_quote from
+ this file. */
+static void
+set_filename_bstab (string)
+ const char *string;
+{
+ const char *s;
+
+ memset (filename_bstab, 0, sizeof (filename_bstab));
+ for (s = string; s && *s; s++)
+ filename_bstab[*s] = 1;
+}
+
/* Quote a filename using double quotes, single quotes, or backslashes
depending on the value of completion_quoting_style. If we're
completing using backslashes, we need to quote some additional
@@ -3559,7 +3638,7 @@ bash_quote_filename (s, rtype, qcp)
rtext = sh_single_quote (mtext);
break;
case COMPLETE_BSQUOTE:
- rtext = sh_backslash_quote (mtext);
+ rtext = sh_backslash_quote (mtext, complete_fullquote ? 0 : filename_bstab);
break;
}
diff --git a/bashline.c~ b/bashline.c~
index df48fdbe..4ea319ae 100644
--- a/bashline.c~
+++ b/bashline.c~
@@ -121,7 +121,6 @@ static int bash_directory_completion_hook __P((char **));
static int filename_completion_ignore __P((char **));
static int bash_push_line __P((void));
-static void set_directory_hook __P((void));
static rl_icppfunc_t *save_directory_hook __P((void));
static void reset_directory_hook __P((rl_icppfunc_t *));
@@ -152,6 +151,7 @@ static int return_zero __P((const char *));
static char *bash_dequote_filename __P((char *, int));
static char *quote_word_break_chars __P((char *));
+static void set_filename_bstab __P((const char *));
static char *bash_quote_filename __P((char *, int, char *));
static int putx __P((int));
@@ -250,7 +250,14 @@ int force_fignore = 1;
int dircomplete_spelling = 0;
/* Expand directory names during word/filename completion. */
-int dircomplete_expand = 1;
+int dircomplete_expand = 0;
+
+/* When non-zero, perform `normal' shell quoting on completed filenames
+ even when the completed name contains a directory name with a shell
+ variable referene, so dollar signs in a filename get quoted appropriately.
+ Set to zero to remove dollar sign (and braces or parens as needed) from
+ the set of characters that will be quoted. */
+int complete_fullquote = 1;
static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:";
static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
@@ -258,6 +265,7 @@ static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:";
static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/
static char *custom_filename_quote_characters = 0;
+static char filename_bstab[256];
static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;
@@ -542,6 +550,7 @@ initialize_readline ()
/* characters that need to be quoted when appearing in filenames. */
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
rl_filename_quoting_function = bash_quote_filename;
rl_filename_dequoting_function = bash_dequote_filename;
@@ -590,6 +599,7 @@ bashline_reset ()
rl_completion_entry_function = NULL;
rl_ignore_some_completions_function = filename_completion_ignore;
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
set_directory_hook ();
}
@@ -1312,6 +1322,7 @@ attempt_shell_completion (text, start, end)
rl_ignore_some_completions_function = filename_completion_ignore;
rl_filename_quote_characters = default_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
/* Determine if this could be a command word. It is if it appears at
the start of the line (ignoring preceding whitespace), or if it
@@ -2755,13 +2766,20 @@ bash_filename_rewrite_hook (fname, fnlen)
}
/* Functions to save and restore the appropriate directory hook */
-static void
+/* This is not static so the shopt code can call it */
+void
set_directory_hook ()
{
if (dircomplete_expand)
- rl_directory_completion_hook = bash_directory_completion_hook;
+ {
+ rl_directory_completion_hook = bash_directory_completion_hook;
+ rl_directory_rewrite_hook = (rl_icppfunc_t *)0;
+ }
else
- rl_directory_rewrite_hook = bash_directory_completion_hook;
+ {
+ rl_directory_rewrite_hook = bash_directory_completion_hook;
+ rl_directory_completion_hook = (rl_icppfunc_t *)0;
+ }
}
static rl_icppfunc_t *
@@ -2793,6 +2811,56 @@ restore_directory_hook (hookf)
rl_directory_rewrite_hook = hookf;
}
+static int
+bash_directory_stat_hook (dirname)
+ char **dirname;
+{
+ char *local_dirname, *new_dirname, *t;
+ int should_expand_dirname, return_value;
+ WORD_LIST *wl;
+ struct stat sb;
+
+ local_dirname = *dirname;
+ should_expand_dirname = return_value = 0;
+ if (t = mbschr (local_dirname, '$'))
+ should_expand_dirname = '$';
+ else if (t = mbschr (local_dirname, '`')) /* XXX */
+ should_expand_dirname = '`';
+
+#if defined (HAVE_LSTAT)
+ if (should_expand_dirname && lstat (local_dirname, &sb) == 0)
+#else
+ if (should_expand_dirname && stat (local_dirname, &sb) == 0)
+#endif
+ should_expand_dirname = 0;
+
+ if (should_expand_dirname)
+ {
+ new_dirname = savestring (local_dirname);
+ wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */
+ if (wl)
+ {
+ free (new_dirname);
+ new_dirname = string_list (wl);
+ /* Tell the completer we actually expanded something and change
+ *dirname only if we expanded to something non-null -- stat
+ behaves unpredictably when passed null or empty strings */
+ if (new_dirname && *new_dirname)
+ {
+ *dirname = new_dirname;
+ return_value = STREQ (local_dirname, *dirname) == 0;
+ }
+ free (local_dirname);
+ free (new_dirname);
+ dispose_words (wl);
+ }
+ else
+ free (new_dirname);
+ }
+
+ return (return_value);
+}
+
/* Handle symbolic link references and other directory name
expansions while hacking completion. This should return 1 if it modifies
the DIRNAME argument, 0 otherwise. It should make sure not to modify
@@ -2866,6 +2934,7 @@ bash_directory_completion_hook (dirname)
}
custom_filename_quote_characters[j] = '\0';
rl_filename_quote_characters = custom_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
}
}
else
@@ -3488,6 +3557,20 @@ quote_word_break_chars (text)
return ret;
}
+/* Use characters in STRING to populate the table of characters that should
+ be backslash-quoted. The table will be used for sh_backslash_quote from
+ this file. */
+static void
+set_filename_bstab (string)
+ const char *string;
+{
+ const char *s;
+
+ memset (filename_bstab, 0, sizeof (filename_bstab));
+ for (s = string; s && *s; s++)
+ filename_bstab[*s] = 1;
+}
+
/* Quote a filename using double quotes, single quotes, or backslashes
depending on the value of completion_quoting_style. If we're
completing using backslashes, we need to quote some additional
@@ -3553,7 +3636,7 @@ bash_quote_filename (s, rtype, qcp)
rtext = sh_single_quote (mtext);
break;
case COMPLETE_BSQUOTE:
- rtext = sh_backslash_quote (mtext);
+ rtext = sh_backslash_quote (mtext, complete_fullquote ? 0 : filename_bstab);
break;
}
diff --git a/bracecomp.c b/bracecomp.c
index cb218a2b..8698e441 100644
--- a/bracecomp.c
+++ b/bracecomp.c
@@ -75,8 +75,8 @@ really_munge_braces (array, real_start, real_end, gcd_zero)
if (real_start == real_end)
{
- x = array[real_start] ? sh_backslash_quote (array[real_start] + gcd_zero)
- : sh_backslash_quote (array[0]);
+ x = array[real_start] ? sh_backslash_quote (array[real_start] + gcd_zero, 0)
+ : sh_backslash_quote (array[0], 0);
return x;
}
@@ -115,7 +115,7 @@ really_munge_braces (array, real_start, real_end, gcd_zero)
if (start == end)
{
x = savestring (array[start] + gcd_zero);
- subterm = sh_backslash_quote (x);
+ subterm = sh_backslash_quote (x, 0);
free (x);
}
else
@@ -126,7 +126,7 @@ really_munge_braces (array, real_start, real_end, gcd_zero)
x = (char *)xmalloc (tlen + 1);
strncpy (x, array[start] + gcd_zero, tlen);
x[tlen] = '\0';
- subterm = sh_backslash_quote (x);
+ subterm = sh_backslash_quote (x, 0);
free (x);
result_size += strlen (subterm) + 1;
result = (char *)xrealloc (result, result_size);
diff --git a/builtins/printf.def b/builtins/printf.def
index 04f4ebc6..58889013 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -553,7 +553,7 @@ printf_builtin (list)
else if (ansic_shouldquote (p))
xp = ansic_quote (p, 0, (int *)0);
else
- xp = sh_backslash_quote (p);
+ xp = sh_backslash_quote (p, 0);
if (xp)
{
/* Use printstr to get fieldwidth and precision right. */
diff --git a/builtins/shopt.def b/builtins/shopt.def
index 1fa58c82..95294f03 100644
--- a/builtins/shopt.def
+++ b/builtins/shopt.def
@@ -100,6 +100,7 @@ extern int hist_verify, history_reediting, perform_hostname_completion;
extern int no_empty_command_completion;
extern int force_fignore;
extern int dircomplete_spelling, dircomplete_expand;
+extern int complete_fullquote;
extern int enable_hostname_completion __P((int));
#endif
@@ -159,6 +160,7 @@ static struct {
{ "compat40", &shopt_compat40, set_compatibility_level },
{ "compat41", &shopt_compat41, set_compatibility_level },
#if defined (READLINE)
+ { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
{ "direxpand", &dircomplete_expand, shopt_set_complete_direxpand },
{ "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL },
#endif
diff --git a/doc/bash.1 b/doc/bash.1
index 01bf16e3..57f5a5ac 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
-.\" Last Change: Fri Sep 2 14:19:38 EDT 2011
+.\" Last Change: Thu Sep 8 09:39:24 EDT 2011
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2011 September 2" "GNU Bash 4.2"
+.TH BASH 1 "2011 September 8" "GNU Bash 4.2"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -8993,6 +8993,25 @@ parameter expansion as a special character. The single quotes must match
quoted. This is the behavior of posix mode through version 4.1.
The default bash behavior remains as in previous versions.
.TP 8
+.B complete_fullquote
+If set,
+.B bash
+quotes all shell metacharacters in filenames and directory names when
+performing completion.
+If not set,
+.B bash
+removes metacharacters such as the dollar sign from the set of
+characters that will be quoted in completed filenames
+when these metacharacters appear in shell variable references in words to be
+completed.
+This means that dollar signs in variable names that expand to directories
+will not be quoted;
+however, any dollar signs appearing in filenames will not be quoted, either.
+This is active only when bash is using backslashes to quote completed
+filenames.
+This variable is set by default, which is the default bash behavior in
+versions through 4.2.
+.TP 8
.B direxpand
If set,
.B bash
diff --git a/doc/bashref.texi b/doc/bashref.texi
index 532cd3d4..814623bf 100644
--- a/doc/bashref.texi
+++ b/doc/bashref.texi
@@ -4562,6 +4562,23 @@ parameter expansion as a special character. The single quotes must match
quoted. This is the behavior of @sc{posix} mode through version 4.1.
The default Bash behavior remains as in previous versions.
+@item complete_fullquote
+If set, Bash
+quotes all shell metacharacters in filenames and directory names when
+performing completion.
+If not set, Bash
+removes metacharacters such as the dollar sign from the set of
+characters that will be quoted in completed filenames
+when these metacharacters appear in shell variable references in words to be
+completed.
+This means that dollar signs in variable names that expand to directories
+will not be quoted;
+however, any dollar signs appearing in filenames will not be quoted, either.
+This is active only when bash is using backslashes to quote completed
+filenames.
+This variable is set by default, which is the default Bash behavior in
+versions through 4.2.
+
@item direxpand
If set, Bash
replaces directory names with the results of word expansion when performing
diff --git a/doc/version.texi b/doc/version.texi
index 38eb8a19..55c1c660 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -2,9 +2,9 @@
Copyright (C) 1988-2011 Free Software Foundation, Inc.
@end ignore
-@set LASTCHANGE Fri Sep 2 14:19:16 EDT 2011
+@set LASTCHANGE Thu Sep 8 09:39:10 EDT 2011
@set EDITION 4.2
@set VERSION 4.2
-@set UPDATED 2 September 2011
+@set UPDATED 8 September 2011
@set UPDATED-MONTH September 2011
diff --git a/externs.h b/externs.h
index 09244fa4..2d7e83d3 100644
--- a/externs.h
+++ b/externs.h
@@ -312,7 +312,7 @@ extern char *sh_single_quote __P((const char *));
extern char *sh_double_quote __P((const char *));
extern char *sh_mkdoublequoted __P((const char *, int, int));
extern char *sh_un_double_quote __P((char *));
-extern char *sh_backslash_quote __P((char *));
+extern char *sh_backslash_quote __P((char *, const char *));
extern char *sh_backslash_quote_for_double_quotes __P((char *));
extern int sh_contains_shell_metas __P((char *));
diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c
index a1e9146b..602ce9b9 100644
--- a/lib/sh/shquote.c
+++ b/lib/sh/shquote.c
@@ -32,6 +32,50 @@
#include "syntax.h"
#include <xmalloc.h>
+/* Default set of characters that should be backslash-quoted in strings */
+static const char bstab[256] =
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0, 0, 0, /* TAB, NL */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 1, 1, 1, 0, 1, 0, 1, 1, /* SPACE, !, DQUOTE, DOL, AMP, SQUOTE */
+ 1, 1, 1, 0, 1, 0, 0, 0, /* LPAR, RPAR, STAR, COMMA */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 0, 1, 1, /* SEMI, LESSTHAN, GREATERTHAN, QUEST */
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 1, 0, /* LBRACK, BS, RBRACK, CARAT */
+
+ 1, 0, 0, 0, 0, 0, 0, 0, /* BACKQ */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0, /* LBRACE, BAR, RBRACE */
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
/* **************************************************************** */
/* */
/* Functions for quoting strings to be re-read as input */
@@ -165,51 +209,24 @@ sh_un_double_quote (string)
going through the shell parser, which will protect the internal
quoting characters. */
char *
-sh_backslash_quote (string)
+sh_backslash_quote (string, table)
char *string;
+ char *table;
{
int c;
- char *result, *r, *s;
+ char *result, *r, *s, *backslash_table;
result = (char *)xmalloc (2 * strlen (string) + 1);
+ backslash_table = table ? table : bstab;
for (r = result, s = string; s && (c = *s); s++)
{
- switch (c)
- {
- case ' ': case '\t': case '\n': /* IFS white space */
- case '\'': case '"': case '\\': /* quoting chars */
- case '|': case '&': case ';': /* shell metacharacters */
- case '(': case ')': case '<': case '>':
- case '!': case '{': case '}': /* reserved words */
- case '*': case '[': case '?': case ']': /* globbing chars */
- case '^':
- case '$': case '`': /* expansion chars */
- case ',': /* brace expansion */
- *r++ = '\\';
- *r++ = c;
- break;
-#if 0
- case '~': /* tilde expansion */
- if (s == string || s[-1] == '=' || s[-1] == ':')
- *r++ = '\\';
- *r++ = c;
- break;
-
- case CTLESC: case CTLNUL: /* internal quoting characters */
- *r++ = CTLESC; /* could be '\\'? */
- *r++ = c;
- break;
-#endif
-
- case '#': /* comment char */
- if (s == string)
- *r++ = '\\';
- /* FALLTHROUGH */
- default:
- *r++ = c;
- break;
- }
+
+ if (backslash_table[c] == 1)
+ *r++ = '\\';
+ else if (c == '#' && s == string) /* comment char */
+ *r++ = '\\';
+ *r++ = c;
}
*r = '\0';
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a62ce7cb..ab17b93d 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,16 +1,18 @@
# Chinese (Simplified) translation for bash package
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Xin Ye <alyex.ye@gmail.com>, 2010
+# Xin Ye <alyex.ye@gmail.com>, 2010.
+# Aron Xu <happyaron.xu@gmail.com>, 2011.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 4.1\n"
+"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-28 22:09-0500\n"
-"PO-Revision-Date: 2010-06-29 10:16+0800\n"
-"Last-Translator: Alex Ye <alyex.ye@gmail.com>\n"
+"PO-Revision-Date: 2011-09-07 10:32+0800\n"
+"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -18,7 +20,7 @@ msgstr ""
#: arrayfunc.c:50
msgid "bad array subscript"
-msgstr "坏的数组下标"
+msgstr "数组下标不正确"
#: arrayfunc.c:313 builtins/declare.def:487
#, c-format
@@ -71,7 +73,7 @@ msgstr "`%s': 无效的别名"
#: builtins/bind.def:120 builtins/bind.def:123
msgid "line editing not enabled"
-msgstr "行编辑未启用"
+msgstr "未启用行编辑"
#: builtins/bind.def:206
#, c-format
@@ -119,7 +121,7 @@ msgid ""
msgstr ""
"返回当前子例程调用的上下文\n"
" \n"
-" 不带 EXPR 时, 返回"
+" 不带 EXPR 时,返回"
#: builtins/cd.def:235
msgid "HOME not set"
@@ -245,7 +247,7 @@ msgstr "受限的"
#: builtins/common.c:312
#, c-format
msgid "%s: not a shell builtin"
-msgstr "%s: 不是shell内建"
+msgstr "%s: 不是 shell 内建"
#: builtins/common.c:321
#, c-format
@@ -281,7 +283,7 @@ msgstr "%s: 无效的动作名"
#: builtins/complete.def:853
#, c-format
msgid "%s: no completion specification"
-msgstr "%s: 没有补完声明"
+msgstr "%s: 没有补全声明"
#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
@@ -293,7 +295,7 @@ msgstr "警告: -C 选项可能不像您预期的那样工作"
#: builtins/complete.def:826
msgid "not currently executing completion function"
-msgstr "目前不在执行补完功能"
+msgstr "当前未执行补完功能"
#: builtins/declare.def:124
msgid "can only be used in a function"
@@ -311,7 +313,7 @@ msgstr "%s: 只读函数"
#: builtins/declare.def:474
#, c-format
msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: 无法以这种方式摧毁数组变量"
+msgstr "%s: 无法以这种方式销毁数组变量"
#: builtins/declare.def:481
#, c-format
@@ -335,7 +337,7 @@ msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s"
#: builtins/enable.def:459
#, c-format
msgid "%s: not dynamically loaded"
-msgstr "%s: 不是动态加载"
+msgstr "%s: 未以动态方式加载"
#: builtins/enable.def:474
#, c-format
@@ -372,11 +374,11 @@ msgstr "%s: 无法执行: %s"
#: builtins/exit.def:65
#, c-format
msgid "logout\n"
-msgstr "登出\n"
+msgstr "注销\n"
#: builtins/exit.def:88
msgid "not login shell: use `exit'"
-msgstr "不是登录shell: 使用 `exit'"
+msgstr "不是登录 shell: 使用 `exit'"
#: builtins/exit.def:120
#, c-format
@@ -408,7 +410,7 @@ msgstr "当前"
#: builtins/fg_bg.def:158
#, c-format
msgid "job %d started without job control"
-msgstr "不带任务控制的情况下启动了任务 %d"
+msgstr "在不带任务控制的情况下启动了任务 %d"
#: builtins/getopt.c:110
#, c-format
@@ -422,7 +424,7 @@ msgstr "%s: 选项需要一个参数 -- %c\n"
#: builtins/hash.def:92
msgid "hashing disabled"
-msgstr "哈希已禁用"
+msgstr "已禁用哈希"
#: builtins/hash.def:138
#, c-format
@@ -438,15 +440,12 @@ msgstr "命中\t命令\n"
#, c-format
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell命令匹配关键字`"
+msgstr[0] "Shell 命令匹配关键字 `"
#: builtins/help.def:168
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"没有与 `%s' 匹配的帮助主题。尝试 `help help' 或者 `man -k %s' 或者 `info %"
-"s'。"
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "没有与 `%s' 匹配的帮助主题。尝试 `help help' 或 `man -k %s' 或 `info %s'。"
#: builtins/help.def:185
#, c-format
@@ -464,12 +463,12 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表.\n"
-"输入 `help 名称' 以得到有关函数`名称'的更多信息.\n"
-"使用 `info bash' 来获得关于 shell 的更多一般性信息\n"
-"使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息.\n"
+"这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表。\n"
+"输入 `help 名称' 以得到有关函数`名称'的更多信息。\n"
+"使用 `info bash' 来获得关于 shell 的更多一般性信息。\n"
+"使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息。\n"
"\n"
-"名称旁边的星号 (*) 意味着该命令被禁用.\n"
+"名称旁边的星号(*)表示该命令被禁用。\n"
"\n"
#: builtins/history.def:154
@@ -505,7 +504,7 @@ msgstr "未知错误"
#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567
msgid "expression expected"
-msgstr "期待表达式"
+msgstr "需要表达式"
#: builtins/mapfile.def:172
#, c-format
@@ -551,9 +550,9 @@ msgid "`%s': missing format character"
msgstr "`%s': 缺少格式字符"
#: builtins/printf.def:448
-#, fuzzy, c-format
+#, c-format
msgid "`%c': invalid time format specification"
-msgstr "%s: 无效的超时声明"
+msgstr "`%c': 无效的时间格式声明"
#: builtins/printf.def:635
#, c-format
@@ -567,12 +566,12 @@ msgstr "警告: %s: %s"
#: builtins/printf.def:840
msgid "missing hex digit for \\x"
-msgstr "使用了\\x但缺少十六进制数"
+msgstr "使用了 \\x 但缺少十六进制数"
#: builtins/printf.def:855
-#, fuzzy, c-format
+#, c-format
msgid "missing unicode digit for \\%c"
-msgstr "使用了\\x但缺少十六进制数"
+msgstr "使用了 \\%c 但缺少 unicode 数"
#: builtins/pushd.def:195
msgid "no other directory"
@@ -605,17 +604,15 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"显示当前记住的目录列表. 目录\n"
-" 通过 `pushd' 命令加入这个列表; 您可以\n"
-" 使用 `popd' 命令对列表进行遍历.\n"
+"显示当前记住的目录列表。 目录\n"
+" 通过 `pushd' 命令加入这个列表;您可以\n"
+" 使用 `popd' 命令对列表进行遍历。\n"
" \n"
" 选项:\n"
" -c\t删除所有元素以清除目录栈\n"
@@ -627,10 +624,10 @@ msgstr ""
" \n"
" 参数:\n"
" +N\t以 dirs 不带选项输出的顺序显示列表从左起第N个条目,\n"
-" \t从 0 开始.\n"
+" \t从 0 开始。\n"
" \n"
" -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n"
-"\t从 0 开始."
+"\t从 0 开始。"
#: builtins/pushd.def:705
msgid ""
@@ -656,27 +653,27 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"在目录栈顶部加入一个目录, 或者轮转\n"
-" 目录栈, 是当前工作目录成为新的栈顶\n"
-" 不带参数时,交换栈顶的两个目录.\n"
+"在目录栈顶部加入一个目录,或者论询\n"
+" 目录栈,是当前工作目录成为新的栈顶\n"
+" 不带参数时,交换栈顶的两个目录。\n"
" \n"
" 选项:\n"
" -n\t抑制增加栈中目录时通常的改变目录的操作,\n"
" \t从而只有栈被操作。\n"
" \n"
" 参数:\n"
-" +N\t轮转栈使得第N个目录(`dirs' 的\n"
-" \t输出列表中左起,从0开始)\n"
+" +N\t轮转栈使得第N个目录(`dirs' 的\n"
+" \t输出列表中左起,从0开始)\n"
" \t升至栈顶。\n"
" \n"
-" -N\t轮转栈使得第N个目录(`dirs' 的\n"
-" \t输出列表中右起,从0开始)\n"
+" -N\t轮转栈使得第N个目录(`dirs' 的\n"
+" \t输出列表中右起,从0开始)\n"
" \t升至栈顶\n"
" \n"
" dir\t添加目录至栈顶,并\n"
" \t使其成为新的当前工作目录。\n"
" \n"
-" `dirs' 内嵌命令显示目录栈."
+" `dirs' 内建命令显示目录栈."
#: builtins/pushd.def:730
msgid ""
@@ -708,13 +705,13 @@ msgstr ""
" 参数:\n"
" +N\t从 `dirs' 输出的列表中,\n"
" \t删除左起第N个条目,计数从0开始。例如:`popd +0'\n"
-" \t删除第一个目录, `popd +1' 删除第二个。\n"
+" \t删除第一个目录,`popd +1' 删除第二个。\n"
" \n"
" -N\t从 `dirs' 输出的列表中,\n"
" \t删除右起第N个条目,计数从0开始,例如:`popd -0'\n"
-" \t删除最后一个条目, `popd -1' 删除倒数第二个。\n"
+" \t删除最后一个条目,`popd -1' 删除倒数第二个。\n"
" \n"
-" `dirs' 内嵌变量显示目录栈。"
+" `dirs' 内建变量显示目录栈。"
#: builtins/read.def:252
#, c-format
@@ -728,21 +725,21 @@ msgstr "读错误: %d: %s"
#: builtins/return.def:73
msgid "can only `return' from a function or sourced script"
-msgstr "只能从函数或者源脚本`返回'"
+msgstr "只能从函数或者源脚本返回(`return')"
#: builtins/set.def:771
msgid "cannot simultaneously unset a function and a variable"
-msgstr "无法同时反设定一个函数和一个变量"
+msgstr "无法同时取消设定一个函数和一个变量"
#: builtins/set.def:808
#, c-format
msgid "%s: cannot unset"
-msgstr "%s: 无法反设定"
+msgstr "%s: 无法取消设定"
#: builtins/set.def:815
#, c-format
msgid "%s: cannot unset: readonly %s"
-msgstr "%s: 无法反设定: 只读 %s"
+msgstr "%s: 无法取消设定: 只读 %s"
#: builtins/set.def:826
#, c-format
@@ -760,7 +757,7 @@ msgstr "位移计数"
#: builtins/shopt.def:264
msgid "cannot set and unset shell options simultaneously"
-msgstr "无法同时设定和反设定 shell 选项"
+msgstr "无法同时设定和取消设定 shell 选项"
#: builtins/shopt.def:329
#, c-format
@@ -774,7 +771,7 @@ msgstr "需要文件名参数"
#: builtins/source.def:155
#, c-format
msgid "%s: file not found"
-msgstr "%s: 没有找到文件"
+msgstr "%s: 文件未找到"
#: builtins/suspend.def:101
msgid "cannot suspend"
@@ -782,7 +779,7 @@ msgstr "无法挂起"
#: builtins/suspend.def:111
msgid "cannot suspend a login shell"
-msgstr "无法挂起一个登录shell"
+msgstr "无法挂起一个登录 shell"
#: builtins/type.def:234
#, c-format
@@ -802,7 +799,7 @@ msgstr "%s 是函数\n"
#: builtins/type.def:296
#, c-format
msgid "%s is a shell builtin\n"
-msgstr "%s 是 shell 内嵌\n"
+msgstr "%s 是 shell 内建\n"
#: builtins/type.def:317 builtins/type.def:391
#, c-format
@@ -812,7 +809,7 @@ msgstr "%s 是 %s\n"
#: builtins/type.def:337
#, c-format
msgid "%s is hashed (%s)\n"
-msgstr "%s 已被哈希 (%s)\n"
+msgstr "%s 已经哈希操作(%s)\n"
#: builtins/ulimit.def:376
#, c-format
@@ -822,7 +819,7 @@ msgstr "%s: 无效的 limit 参数"
#: builtins/ulimit.def:402
#, c-format
msgid "`%c': bad command"
-msgstr "`%c': 坏的命令"
+msgstr "`%c': 命令错误"
#: builtins/ulimit.def:431
#, c-format
@@ -864,7 +861,7 @@ msgstr "上一个命令: %s\n"
#: error.c:173
#, c-format
msgid "Aborting..."
-msgstr "放弃..."
+msgstr "中止..."
#: error.c:406
msgid "unknown command error"
@@ -872,25 +869,25 @@ msgstr "未知的命令错误"
#: error.c:407
msgid "bad command type"
-msgstr "坏的命令类型"
+msgstr "错误的命令类型"
#: error.c:408
msgid "bad connector"
-msgstr "坏的条件连接符"
+msgstr "错误的条件连接符"
#: error.c:409
msgid "bad jump"
-msgstr "坏的跳转"
+msgstr "错误的跳转"
#: error.c:447
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: 为绑定变量"
+msgstr "%s: 未绑定的变量"
#: eval.c:181
#, c-format
msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\a 等待输入超时:自动登出\n"
+msgstr "\a 等待输入超时:自动注销\n"
#: execute_cmd.c:504
#, c-format
@@ -917,19 +914,19 @@ msgid "%s: command not found"
msgstr "%s: 未找到命令"
#: execute_cmd.c:4959
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s"
-msgstr "%s 是 %s\n"
+msgstr "%s: %s"
#: execute_cmd.c:4995
#, c-format
msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: 坏的解释器"
+msgstr "%s: %s: 解释器错误"
#: execute_cmd.c:5144
#, c-format
msgid "cannot duplicate fd %d to fd %d"
-msgstr "无法复制文件描述符 %d 到 文件描述符 %d"
+msgstr "无法复制文件描述符 %d 到文件描述符 %d"
#: expr.c:256
msgid "expression recursion level exceeded"
@@ -953,11 +950,11 @@ msgstr "除0"
#: expr.c:517
msgid "bug: bad expassign token"
-msgstr "错误:坏的表达式赋值符号"
+msgstr "错误:表达式赋值符号错误"
#: expr.c:564
msgid "`:' expected for conditional expression"
-msgstr "条件表达式期待 `:'"
+msgstr "条件表达式需要 `:'"
#: expr.c:832
msgid "exponent less than 0"
@@ -973,7 +970,7 @@ msgstr "缺少 `)'"
#: expr.c:959 expr.c:1282
msgid "syntax error: operand expected"
-msgstr "语法错误: 期待操作数"
+msgstr "语法错误: 需要操作数"
#: expr.c:1284
msgid "syntax error: invalid arithmetic operator"
@@ -982,7 +979,7 @@ msgstr "语法错误: 无效的算术运算符"
#: expr.c:1308
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (错误符号是 \"%s\")"
+msgstr "%s%s%s: %s (错误符号是 \"%s\")"
#: expr.c:1366
msgid "invalid arithmetic base"
@@ -1052,7 +1049,7 @@ msgstr "信号 %d"
#: jobs.c:1459 jobs.c:1484
msgid "Done"
-msgstr "完成"
+msgstr "已完成"
#: jobs.c:1464 siglist.c:123
msgid "Stopped"
@@ -1061,7 +1058,7 @@ msgstr "已停止"
#: jobs.c:1468
#, c-format
msgid "Stopped(%s)"
-msgstr "已停止 (%s)"
+msgstr "已停止(%s)"
#: jobs.c:1472
msgid "Running"
@@ -1070,7 +1067,7 @@ msgstr "运行中"
#: jobs.c:1486
#, c-format
msgid "Done(%d)"
-msgstr "完成 (%d)"
+msgstr "已完成(%d)"
#: jobs.c:1488
#, c-format
@@ -1084,12 +1081,12 @@ msgstr "未知状态"
#: jobs.c:1578
#, c-format
msgid "(core dumped) "
-msgstr "(吐核)"
+msgstr "(核心已转储)"
#: jobs.c:1597
#, c-format
msgid " (wd: %s)"
-msgstr "(工作目录:%s)"
+msgstr " (工作目录: %s)"
#: jobs.c:1805
#, c-format
@@ -1133,7 +1130,7 @@ msgstr "%s: 行 %d: "
#: jobs.c:3552 nojobs.c:814
#, c-format
msgid " (core dumped)"
-msgstr "(吐核)"
+msgstr " (核心已转储)"
#: jobs.c:3564 jobs.c:3577
#, c-format
@@ -1155,7 +1152,7 @@ msgstr "initialize_job_control: setpgid"
#: jobs.c:3707
#, c-format
msgid "cannot set terminal process group (%d)"
-msgstr "无法设定终端进程组 (%d)"
+msgstr "无法设定终端进程组(%d)"
#: jobs.c:3712
msgid "no job control in this shell"
@@ -1193,11 +1190,11 @@ msgstr "free: 用未分配的块作为参数被调用"
#: lib/malloc/malloc.c:896
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: 检测到下溢; mh_nbytes越界"
+msgstr "free: 检测到下溢;mh_nbytes 越界"
#: lib/malloc/malloc.c:902
msgid "free: start and end chunk sizes differ"
-msgstr "free: 起始和终结块大小不一致"
+msgstr "free: 其实和末尾块大小不一致"
#: lib/malloc/malloc.c:1001
msgid "realloc: called with unallocated block argument"
@@ -1205,26 +1202,26 @@ msgstr "realloc: 用未分配的块作为参数被调用"
#: lib/malloc/malloc.c:1016
msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: 检测到下溢; mh_nbytes越界"
+msgstr "realloc: 检测到下溢;mh_nbytes 越界"
#: lib/malloc/malloc.c:1022
msgid "realloc: start and end chunk sizes differ"
-msgstr "realloc: 起始和终结块大小不一致"
+msgstr "realloc: 其实和末尾块大小不一致"
#: lib/malloc/table.c:177
#, c-format
msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: 分配表已经充满了 FIND_ALLOC?\n"
+msgstr "register_alloc: 分配表已经充满了 FIND_ALLOC?\n"
#: lib/malloc/table.c:184
#, c-format
msgid "register_alloc: %p already in table as allocated?\n"
-msgstr "register_alloc: %p 在表中显示为已分配?\n"
+msgstr "register_alloc: %p 在表中显示为已分配?\n"
#: lib/malloc/table.c:220
#, c-format
msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: %p 在表中显示为已释放?\n"
+msgstr "register_free: %p 在表中显示为已释放?\n"
#: lib/sh/fmtulong.c:101
msgid "invalid base"
@@ -1243,7 +1240,7 @@ msgstr "%s: 无效的服务"
#: lib/sh/netopen.c:306
#, c-format
msgid "%s: bad network path specification"
-msgstr "%s: 坏的网络路径声明"
+msgstr "%s: 错误的网络路径声明"
#: lib/sh/netopen.c:346
msgid "network operations not supported"
@@ -1288,7 +1285,7 @@ msgstr "语法错误: 需要算数表达式"
#: make_cmd.c:325
msgid "syntax error: `;' unexpected"
-msgstr "语法错误: 期待 `;'"
+msgstr "语法错误: 需要 `;'"
#: make_cmd.c:326
#, c-format
@@ -1298,7 +1295,7 @@ msgstr "语法错误: `((%s))'"
#: make_cmd.c:575
#, c-format
msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document: 坏的指令类型 %d"
+msgstr "make_here_document: 错误的指令类型 %d"
#: make_cmd.c:659
#, c-format
@@ -1331,11 +1328,11 @@ msgstr "条件表达式中有语法错误"
#: parse.y:4112
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr "未预期的符号 `%s' ,期待 `)'"
+msgstr "未预期的符号 `%s' ,需要 `)'"
#: parse.y:4116
msgid "expected `)'"
-msgstr "期待 `)'"
+msgstr "需要 `)'"
#: parse.y:4144
#, c-format
@@ -1349,11 +1346,11 @@ msgstr "一元条件运算符使用了未预期的参数"
#: parse.y:4194
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "未预期的符号 `%s',期待二元条件运算符"
+msgstr "未预期的符号 `%s',需要二元条件运算符"
#: parse.y:4198
msgid "conditional binary operator expected"
-msgstr "期待二元条件运算符"
+msgstr "需要二元条件运算符"
#: parse.y:4220
#, c-format
@@ -1419,7 +1416,7 @@ msgstr "progcomp_insert: %s: 空的补完声明"
#: print_cmd.c:296
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr "print_command: 坏的条件连接符 `%d'"
+msgstr "print_command: 错误的条件连接符 `%d'"
#: print_cmd.c:368
#, c-format
@@ -1533,7 +1530,7 @@ msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信
#: shell.c:1825
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "请输入 `%s -c help' 以获得关于 shell 内嵌命令的更多信息.\n"
+msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n"
#: shell.c:1826
#, c-format
@@ -1595,11 +1592,11 @@ msgstr "段错误"
#: siglist.c:99
msgid "Bad system call"
-msgstr "坏的系统调用"
+msgstr "错误的系统调用"
#: siglist.c:103
msgid "Broken pipe"
-msgstr "破裂的管道"
+msgstr "管道破裂"
#: siglist.c:107
msgid "Alarm clock"
@@ -1611,7 +1608,7 @@ msgstr "已终止"
#: siglist.c:115
msgid "Urgent IO condition"
-msgstr "紧急输入输出情形"
+msgstr "紧急 I/O 状况"
#: siglist.c:119
msgid "Stopped (signal)"
@@ -1627,15 +1624,15 @@ msgstr "子进程已死或者停止"
#: siglist.c:139
msgid "Stopped (tty input)"
-msgstr "已停止 (tty 输入)"
+msgstr "已停止(tty 输入)"
#: siglist.c:143
msgid "Stopped (tty output)"
-msgstr "已停止 (tty 输出)"
+msgstr "已停止(tty 输出)"
#: siglist.c:147
msgid "I/O ready"
-msgstr "输入输出准备完毕"
+msgstr "I/O 就绪"
#: siglist.c:151
msgid "CPU limit"
@@ -1650,12 +1647,13 @@ msgid "Alarm (virtual)"
msgstr "报警(虚拟)"
#: siglist.c:163
+#, fuzzy
msgid "Alarm (profile)"
msgstr "报警(总结)"
#: siglist.c:167
msgid "Window changed"
-msgstr "窗口改变"
+msgstr "窗口已改变"
#: siglist.c:171
msgid "Record lock"
@@ -1663,15 +1661,15 @@ msgstr "记录锁"
#: siglist.c:175
msgid "User signal 1"
-msgstr "用户定义信号1"
+msgstr "用户信号1"
#: siglist.c:179
msgid "User signal 2"
-msgstr "用户定义信号2"
+msgstr "用户信号2"
#: siglist.c:183
msgid "HFT input data pending"
-msgstr "HFT输入数据挂起"
+msgstr "HFT 待输入数据"
#: siglist.c:187
msgid "power failure imminent"
@@ -1683,27 +1681,27 @@ msgstr "系统即将崩溃"
#: siglist.c:195
msgid "migrate process to another CPU"
-msgstr "迁移进程至另一个CPU"
+msgstr "迁移进程至另一个 CPU"
#: siglist.c:199
msgid "programming error"
-msgstr "程序错误"
+msgstr "编程错误"
#: siglist.c:203
msgid "HFT monitor mode granted"
-msgstr "HFT显示器模式授与"
+msgstr "已授予 HFT 监视模式"
#: siglist.c:207
msgid "HFT monitor mode retracted"
-msgstr "HFT显示器模式撤销"
+msgstr "已撤销 HFT 监视模式"
#: siglist.c:211
msgid "HFT sound sequence has completed"
-msgstr "HFT声音序列已完成"
+msgstr "已完成 HFT 声音序列"
#: siglist.c:215
msgid "Information request"
-msgstr "状态请求"
+msgstr "信息请求"
#: siglist.c:223
msgid "Unknown Signal #"
@@ -1717,7 +1715,7 @@ msgstr "未知信号 #%d"
#: subst.c:1333 subst.c:1502
#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "坏的替换:在 %2$s 中没有闭合的 `%1$s'"
+msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'"
#: subst.c:2795
#, c-format
@@ -1772,7 +1770,7 @@ msgstr "%s: 子串表达式 < 0"
#: subst.c:7271
#, c-format
msgid "%s: bad substitution"
-msgstr "%s: 坏的替换"
+msgstr "%s: 错误的替换"
#: subst.c:7347
#, c-format
@@ -1780,48 +1778,46 @@ msgid "$%s: cannot assign in this way"
msgstr "$%s: 无法这样赋值"
#: subst.c:7684
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "未来版本的 shell 会强制估值为算数替换"
#: subst.c:8149
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "坏的替换:在 %s 中没有闭合的 \"`\""
+msgstr "错误的替换: 在 %s 中没有闭合的 \"`\""
#: subst.c:9036
#, c-format
msgid "no match: %s"
-msgstr "没有匹配: %s"
+msgstr "无匹配: %s"
#: test.c:146
msgid "argument expected"
-msgstr "期待参数"
+msgstr "需要参数"
#: test.c:155
#, c-format
msgid "%s: integer expression expected"
-msgstr "%s: 期待整数表达式"
+msgstr "%s: 需要整数表达式"
#: test.c:263
msgid "`)' expected"
-msgstr "期待 `)'"
+msgstr "需要 `)'"
#: test.c:265
#, c-format
msgid "`)' expected, found %s"
-msgstr "期待`)' , 得到 %s"
+msgstr "需要`)',得到 %s"
#: test.c:280 test.c:698 test.c:701
#, c-format
msgid "%s: unary operator expected"
-msgstr "%s: 期待一元表达式"
+msgstr "%s: 需要一元表达式"
#: test.c:449 test.c:741
#, c-format
msgid "%s: binary operator expected"
-msgstr "%s: 期待二元表达式"
+msgstr "%s: 需要二元表达式"
#: test.c:816
msgid "missing `]'"
@@ -1829,23 +1825,22 @@ msgstr "缺少 `]'"
#: trap.c:207
msgid "invalid signal number"
-msgstr "无效的信号编号"
+msgstr "无效的信号数"
#: trap.c:337
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr "run_pending_traps: trap_list[%d] 中的坏值: %p"
+msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p"
#: trap.c:341
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr "run_pending_traps: 信号处理器是 SIG_DFL, 重新发送 %d (%s) 给自己"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: 信号处理器是 SIG_DFL,重新发送 %d (%s) 给自己"
#: trap.c:393
#, c-format
msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: 坏的信号 %d"
+msgstr "trap_handler: 错误的信号 %d"
#: variables.c:363
#, c-format
@@ -1855,7 +1850,7 @@ msgstr "`%s' 函数定义导入错误"
#: variables.c:755
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr "shell 层次 (%d) 太高, 重置为 1"
+msgstr "shell 层次 (%d) 太高,重置为 1"
#: variables.c:1932
msgid "make_local_variable: no function context at current scope"
@@ -1903,51 +1898,42 @@ msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: 追踪文件描述符的值无效"
#: version.c:46
-#, fuzzy
msgid "Copyright (C) 2011 Free Software Foundation, Inc."
-msgstr "自由软件基金会 版权所有 2009"
+msgstr "版权所有 (C) 2011 自由软件基金会"
#: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"许可证 GPLv3+: GNU GPL 许可证版本3或者更高 <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:83
#, c-format
msgid "GNU bash, version %s (%s)\n"
-msgstr "GNU bash, 版本 %s (%s)\n"
+msgstr "GNU bash,版本 %s (%s)\n"
#: version.c:91 version2.c:88
#, c-format
msgid "This is free software; you are free to change and redistribute it.\n"
-msgstr "这是自由软件,您可以自由地更改和重新发布。\n"
+msgstr "本软件是自由软件,您可以自由地更改和重新发布。\n"
#: version.c:92 version2.c:89
#, c-format
msgid "There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr "在法律允许的范围内没有担保.\n"
+msgstr "在法律许可的情况下特此明示,本软件不提供任何担保。\n"
#: version2.c:86
#, c-format
msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-msgstr "自由软件基金会 版权所有 2009\n"
+msgstr "版权所有 (C) 2009 自由软件基金会\n"
#: version2.c:87
#, c-format
-msgid ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"许可证 GPLv2+: GNU GPL 许可证版本2或者更高 <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "许可证 GPLv2+: GNU GPL 许可证第二版或者更新版本 <http://gnu.org/licenses/gpl.html>\n"
#: xmalloc.c:91
#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: 无法分配 %lu 字节 (%lu 字节已分配)"
+msgstr "%s: 无法分配 %lu 字节(已分配 %lu 字节)"
#: xmalloc.c:93
#, c-format
@@ -1957,7 +1943,7 @@ msgstr "%s: 无法分配 %lu 字节"
#: xmalloc.c:163
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: 无法分配 %lu 字节 (%lu 字节已分配)"
+msgstr "%s: %s:%d: 无法分配 %lu 字节(已分配 %lu 字节)"
#: xmalloc.c:165
#, c-format
@@ -1973,12 +1959,8 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] 名称 [名称 ...]"
#: builtins.c:51
-msgid ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVS] [-m 键映射] [-f 文件名] [-q 名称] [-u 名称] [-r 键序列] [-x "
-"键序列:shell命令] [键序列:行读取函数 或 行读取命令]"
+msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpvsPVS] [-m 键映射] [-f 文件名] [-q 名称] [-u 名称] [-r 键序列] [-x 键序列:shell命令] [键序列:行读取函数 或 行读取命令]"
#: builtins.c:54
msgid "break [n]"
@@ -1990,16 +1972,15 @@ msgstr "continue [n]"
#: builtins.c:58
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell 内嵌 [参数 ...]]"
+msgstr "builtin [shell 内建 [参数 ...]]"
#: builtins.c:61
msgid "caller [expr]"
msgstr "caller [表达式]"
#: builtins.c:64
-#, fuzzy
msgid "cd [-L|[-P [-e]]] [dir]"
-msgstr "cd [-L|-P] [目录]"
+msgstr "cd [-L|[-P [-e]]] [目录]"
#: builtins.c:66
msgid "pwd [-LP]"
@@ -2011,25 +1992,23 @@ msgstr ":"
#: builtins.c:70
msgid "true"
-msgstr "真"
+msgstr "true"
#: builtins.c:72
msgid "false"
-msgstr "伪"
+msgstr "false"
#: builtins.c:74
msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] 命令 [参数 ...]"
#: builtins.c:76
-#, fuzzy
msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFilrtux] [-p] [名称[=值] ...]"
+msgstr "declare [-aAfFgilrtux] [-p] [名称[=值] ...]"
#: builtins.c:78
-#, fuzzy
msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFilrtux] [-p] 名称[=值] ..."
+msgstr "typeset [-aAfFgilrtux] [-p] 名称[=值] ..."
#: builtins.c:80
msgid "local [option] name[=value] ..."
@@ -2088,12 +2067,8 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [模式 ...]"
#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 "
-"[参数...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...]"
#: builtins.c:125
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2104,33 +2079,24 @@ msgid "disown [-h] [-ar] [jobspec ...]"
msgstr "disown [-h] [-ar] [任务声明 ...]"
#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -"
-"l [信号声明]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]"
#: builtins.c:134
msgid "let arg [arg ...]"
msgstr "let 参数 [参数 ...]"
#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字"
-"符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]"
#: builtins.c:138
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:140
-#, fuzzy
msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o 选项名] [参数 ...]"
+msgstr "set [--abefhkmnptuvxBCHP] [-o 选项名] [--] [参数 ...]"
#: builtins.c:142
msgid "unset [-f] [-v] [name ...]"
@@ -2141,9 +2107,8 @@ msgid "export [-fn] [name[=value] ...] or export -p"
msgstr "export [-fn] [名称[=值] ...] 或 export -p"
#: builtins.c:146
-#, fuzzy
msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-af] [名称[=值] ...] 或 readonly -p"
+msgstr "readonly [-aAf] [名称[=值] ...] 或 readonly -p"
#: builtins.c:148
msgid "shift [n]"
@@ -2218,9 +2183,7 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case 词 in [模式 [| 模式]...) 命令 ;;]... esac"
#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
msgstr "if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi"
#: builtins.c:194
@@ -2280,41 +2243,24 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] 格式 [参数]"
#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全局模式] [-W 词"
-"语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]"
#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-"
-"F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [-W 词语列表] [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]"
#: builtins.c:237
msgid "compopt [-o|+o option] [-DE] [name ...]"
msgstr "compopt [-o|+o 选项] [-DE] [名称 ...]"
#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"mapfile [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] "
-"[数组]"
+msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]"
#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] "
-"[数组]"
+msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]"
#: builtins.c:254
msgid ""
@@ -2331,13 +2277,12 @@ msgid ""
" -p\tPrint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"定义或显示别名。\n"
" \n"
-" 不带参数时, `alias' 以可重用的格式\n"
+" 不带参数时,`alias' 以可重用的格式\n"
" `alias 名称=值'在标准输出设备上打印别名列表。\n"
" \n"
" 否则,对于每个给定值的名称定义一个别名。\n"
@@ -2360,10 +2305,10 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
-"从别名定义列表中删除每一个“名字‘。\n"
+"从别名定义列表中删除每一个“名字”。\n"
" \n"
" 选项:\n"
-" -a\t删除所有的别名定义.\n"
+" -a\t删除所有的别名定义。\n"
" \n"
" 返回成功,除非“名字“不是一个已存在的别名。"
@@ -2379,24 +2324,20 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
@@ -2449,7 +2390,7 @@ msgid ""
msgstr ""
"退出 for、while、或 until 循环\n"
" \n"
-" 退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了N,则打破N重\n"
+" 退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了N,则跳出N重\n"
" 循环\n"
" \n"
" 退出状态:\n"
@@ -2479,22 +2420,20 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
" not a shell builtin.."
msgstr ""
-"执行 shell 内嵌。\n"
+"执行 shell 内建。\n"
" \n"
-" 带参数 ARGs 执行 SHELL-BUILTIN 内嵌,并且不做命令查询\n"
-" 在希望以 shell 函数的形式来重新实现 shell 内嵌,\n"
-" 并且希望在函数之内执行该 shell 内嵌的情况下有用处。\n"
+" 带参数 ARGs 执行 SHELL-BUILTIN 内建,并且不做命令查询\n"
+" 在希望以 shell 函数的形式来重新实现 shell 内建,\n"
+" 并且希望在函数之内执行该 shell 内建的情况下有用处。\n"
" \n"
" 退出状态:\n"
-" 以 SHELL-BUILTIN 内嵌的退出状态为准,或者如果 SHELL-BUILTIN不是一个 "
-"shell 内嵌时\n"
+" 以 SHELL-BUILTIN 内建的退出状态为准,或者如果 SHELL-BUILTIN不是一个 shell 内建时\n"
" 为假。."
#: builtins.c:365
@@ -2526,26 +2465,19 @@ msgstr ""
" 果为0。"
#: builtins.c:383
-#, fuzzy
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2558,8 +2490,7 @@ msgid ""
" The default is to follow symbolic links, as if `-L' were specified.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"改变 shell 工作目录。\n"
@@ -2570,7 +2501,7 @@ msgstr ""
" 变量 CDPATH 定义了含有 DIR 的目录的搜索路径。\n"
" CDPATH 变量中不同的目录名称由分号(:)分隔。\n"
" 一个空的目录名称和当前目录是一样的。如果 DIR 变量由\n"
-" 斜杠 (/) 打头,则 CDPATH 变量不会被使用。\n"
+" 斜杠(/) 打头,则 CDPATH 变量不会被使用。\n"
" \n"
" 如果路径找不到,并且 shell 选项`cdable_vars' 被设定,\n"
" 则参数词被假定为一个变量名。如果该变量有值,则它的值\n"
@@ -2579,12 +2510,13 @@ msgstr ""
" 选项:\n"
" -L\t强制跟随符号链接。\n"
" -P\t使用物理目录结构而不跟随符号链接\n"
-" \n"
+" -e\t如果使用了 -P 参数,但不能成功确定当前工作目录时,\n"
+" \t返回非零的返回值。 \n"
" \n"
" 默认情况下跟随符号链接,如同指定 `-L'。\n"
" \n"
" 退出状态:\n"
-" 如果目录改变则返回0,否则非零。"
+" 如果目录改变,或在使用 -P 选项时 $PWD 修改成功时返回0,否则非零。"
#: builtins.c:414
msgid ""
@@ -2659,8 +2591,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2681,7 +2612,7 @@ msgstr ""
" 选项:\n"
" -p\t使用 PATH 变量的一个默认值以确保所有的标准工具\n"
" \t都能被找到。\n"
-" -v\t打印 COMMAND 命令的描述,和 `type' 内嵌相似\n"
+" -v\t打印 COMMAND 命令的描述,和 `type' 内建相似\n"
" -V\t打印每个 COMMAND 命令的详细描述\n"
" \n"
" 退出状态\n"
@@ -2718,8 +2649,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -2732,24 +2662,24 @@ msgstr ""
" \n"
" 选项:\n"
" -f\t限制动作或显示函数名称和定义\n"
-" -F\t限制仅显示函数名称(以及行号和调试时\n"
-" \t源文件名)\n"
+" -F\t限制仅显示函数名称(以及行号和调试时\n"
+" \t源文件名)\n"
" -p\t显示每个 NAME 变量的属性和值\n"
" \n"
" 设定属性的选项:\n"
-" -a\t使 NAME 成为下标数组(如果支持)\n"
-" -A\t使 NAME 成为关联数组 (如果支持)\n"
-" -i\t使 NAME 带有 `integer' (整数)属性\n"
+" -a\t使 NAME 成为下标数组(如果支持)\n"
+" -A\t使 NAME 成为关联数组 (如果支持)\n"
+" -i\t使 NAME 带有 `integer' (整数)属性\n"
" -l\t将 NAME 在赋值时转为小写\n"
" -r\t将 NAME 变为只读\n"
-" -t\t使 NAME 带有 `trace' (追踪)属性\n"
+" -t\t使 NAME 带有 `trace' (追踪)属性\n"
" -u\t将 NAME 在赋值时转为大写\n"
" -x\t将 NAME 导出\n"
" \n"
" 用 `+' 代替 `-' 会关闭指定选项。\n"
" \n"
-" 带有整数属性的变量在赋值时将使用算术估值(见\n"
-" `let' 命令)\n"
+" 带有整数属性的变量在赋值时将使用算术估值(见\n"
+" `let' 命令)\n"
" \n"
" 在函数中使用时,`declare' 使 NAME 成为本地变量,和 `local'\n"
" 命令一致。\n"
@@ -2833,7 +2763,7 @@ msgstr ""
" -E\t显式地抑制对于反斜杠转义的解释\n"
" \n"
" `echo' 对下列反斜杠字符进行转义:\n"
-" \\a\t警告(响铃)\n"
+" \\a\t警告(响铃)\n"
" \\b\t退格\n"
" \\c\t抑制更多的输出\n"
" \\e\t转义字符\n"
@@ -2843,9 +2773,9 @@ msgstr ""
" \\t\t横向制表符\n"
" \\v\t纵向制表符\n"
" \\\\\t反斜杠\n"
-" \\0nnn\t以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是\n"
+" \\0nnn\t以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是\n"
" \t0到3个八进制数字\n"
-" \\xHH\t以 HH (十六进制)为值的八比特字符。HH可以是\n"
+" \\xHH\t以 HH (十六进制)为值的八比特字符。HH可以是\n"
" \t一个或两个十六进制数字\n"
" \n"
" 退出状态:\n"
@@ -2899,36 +2829,35 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-"启用和禁用 shell 内嵌。\n"
+"启用和禁用 shell 内建。\n"
" \n"
-" 启用和禁用 shell 的内嵌命令。禁用使您能够执行一个和内嵌\n"
+" 启用和禁用 shell 的内建命令。禁用使您能够执行一个和内建\n"
" 命令同名的磁盘上的命令,而无须使用完整的路径名。\n"
" \n"
" \n"
" 选项:\n"
-" -a\t打印一个内嵌的列表,并显示其中每一个是否启用\n"
-" -n\t禁用每一个 NAME 内嵌或者显示一个被禁用的内嵌的列表\n"
-" -p\t以可重用的格式打印一个内嵌的列表\n"
-" -s\t仅打印Posix `special' 内嵌的名称\n"
+" -a\t打印一个内建的列表,并显示其中每一个是否启用\n"
+" -n\t禁用每一个 NAME 内建或者显示一个被禁用的内建的列表\n"
+" -p\t以可重用的格式打印一个内建的列表\n"
+" -s\t仅打印Posix `special' 内建的名称\n"
" \n"
" 控制动态加载的选项:\n"
-" -f\t从共享对象 FILENAME 文件中加载 NAME 内嵌\n"
-" -d\t删除以 -f 选项加载的内嵌\n"
+" -f\t从共享对象 FILENAME 文件中加载 NAME 内建\n"
+" -d\t删除以 -f 选项加载的内建\n"
" \n"
-" 不带选项时,每一个 NAME 内嵌都被启用。\n"
+" 不带选项时,每一个 NAME 内建都被启用。\n"
" \n"
-" 如果要使用 $PATH 中找到的 `test' 而不是 shell 内嵌的版本,\n"
+" 如果要使用 $PATH 中找到的 `test' 而不是 shell 内建的版本,\n"
" 输入 `enable -n test'。\n"
" \n"
" 退出状态:\n"
-" 返回成功,除非 NAME 不是一个 shell 内嵌或者有错误发生。"
+" 返回成功,除非 NAME 不是一个 shell 内建或者有错误发生。"
#: builtins.c:619
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -2988,7 +2917,7 @@ msgstr ""
" \n"
" \n"
" OPTSTRING 字符串包含待识别的选项字母;如果一个字母后面跟\n"
-" 着分号,则该选项期待一个参数,而该参数应用空格与选项分开。\n"
+" 着分号,则该选项需要一个参数,而该参数应用空格与选项分开。\n"
" \n"
" \n"
" 每次启动时,getopts 会将下一个选项放到 shell 变量 $name\n"
@@ -3005,15 +2934,15 @@ msgstr ""
" 须的选项没有找到,getopts 放一个 ':' 到 NAME 变量中并且设\n"
" 置 OPTARG 变量为找到的选项字符。如果 getopts 不在沉默模\n"
" 式中,并且遇到了一个无效的选项,getopts 放置一个 '?' 到 NAME \n"
-" 变量中并且反设定 OPTARG变量。如果必须的选项没有找到,\n"
-" 一个'?'会被放入 NAME变量中,OPTARG 将被反设定,并且会\n"
+" 变量中并且取消设定 OPTARG变量。如果必须的选项没有找到,\n"
+" 一个'?'会被放入 NAME变量中,OPTARG 将被取消设定,并且会\n"
" 打印一个诊断信息。\n"
" \n"
" 如果 shell 变量 OPTERR 的值为0,getopts 禁用\n"
" 错误信息的打印,即使 OPTSTRING 变量的第一个字符不是一\n"
" 个冒号。OPTERR 的默认值为1.\n"
" \n"
-" Getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n"
+" Getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n"
" 更多的参数,它们反而会被解析。\n"
" \n"
" 退出状态:\n"
@@ -3025,8 +2954,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3034,13 +2962,11 @@ msgid ""
" -c\t\texecute COMMAND with an empty environment\n"
" -l\t\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"使用指定命令替换 shell。\n"
" \n"
@@ -3075,8 +3001,7 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"退出一个登录 shell.\n"
@@ -3088,15 +3013,13 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3110,8 +3033,7 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"从历史列表中显示或者执行命令。\n"
" \n"
@@ -3125,7 +3047,7 @@ msgstr ""
" \t\t然后是 vi\n"
" -l \t列出行而不编辑\n"
" -n\t列举时省略行号\n"
-" -r\t反转行的顺序(最新行在前)\n"
+" -r\t反转行的顺序(最新行在前)\n"
" \n"
" 用 `fc -s [模式=替换 ...] [命令]' 的格式,COMMAND 命令会在 OLD=NEW\n"
" 替换之后被重新执行。\n"
@@ -3161,10 +3083,8 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3184,8 +3104,7 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\t\tforget the remembered location of each NAME\n"
@@ -3240,12 +3159,11 @@ msgid ""
" PATTERN\tPattern specifiying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
-"显示内嵌命令的相关信息。\n"
+"显示内建命令的相关信息。\n"
" \n"
-" 显示内嵌命令的简略信息。如果指定了 PATTERN 模式,\n"
+" 显示内建命令的简略信息。如果指定了 PATTERN 模式,\n"
" 给出所有匹配 PATTERN 模式的命令的详细帮助,否则打\n"
" 印一个帮助主题列表\n"
" \n"
@@ -3288,8 +3206,7 @@ msgid ""
" \n"
" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3429,7 +3346,7 @@ msgstr ""
" -l\t列出信号名称;如果参数后跟 `-l'则被假设为信号编号,\n"
" \t而相应的信号名称会被列出\n"
" \n"
-" Kill 成为 shell 内嵌有两个理由:它允许使用任务编号而不是进程号,\n"
+" Kill 成为 shell 内建有两个理由:它允许使用任务编号而不是进程号,\n"
" 并且在可以创建的进程数上限达到是允许进程被杀死。\n"
" \n"
" 退出状态:\n"
@@ -3443,8 +3360,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3510,7 +3426,7 @@ msgstr ""
" \t&=, ^=, |=\t赋值\n"
" \n"
" Shell 变量允许作为操作数。表达式中的变量的名称会被取代\n"
-" 以值(强制转换为等宽的整数)。表达式中的变量不需要打开\n"
+" 以值(强制转换为等宽的整数)。表达式中的变量不需要打开\n"
" 整数属性。\n"
" \n"
" \n"
@@ -3526,16 +3442,13 @@ msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
" delimiters.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3547,15 +3460,13 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
" \t\tcharacters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any delimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
" \t\tattempting to read\n"
" -r\t\tdo not allow backslashes to escape any characters\n"
" -s\t\tdo not echo input coming from a terminal\n"
-" -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
+" -t timeout\ttime out and return failure if a complete line of input is\n"
" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n"
" \t\tvariable is the default timeout. TIMEOUT may be a\n"
" \t\tfractional number. If TIMEOUT is 0, read returns success only\n"
@@ -3564,8 +3475,7 @@ msgid ""
" -u fd\t\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
+" The return code is zero, unless end-of-file is encountered, read times out,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"从标准输入读取一行并将其分为不同的域。\n"
@@ -3669,8 +3579,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3710,7 +3619,7 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
-"设定或反设定 shell 选项和位置参数的值。\n"
+"设定或取消设定 shell 选项和位置参数的值。\n"
" \n"
" 改变 shell 选项和位置参数的值,或者显示 shell 变量的\n"
" 名称和值。\n"
@@ -3719,7 +3628,7 @@ msgstr ""
" -a 标记修改的或者创建的变量为导出。\n"
" -b 立即通告任务终结。\n"
" -e 如果一个命令以非零状态退出,则立即退出。\n"
-" -f 禁用文件名生成(模式匹配)。\n"
+" -f 禁用文件名生成(模式匹配)。\n"
" -h 当查询命令时记住它们的位置\n"
" -k 所有的赋值参数被放在命令的环境中,而不仅仅是\n"
" 命令名称之前的参数。\n"
@@ -3796,8 +3705,7 @@ msgid ""
" -f\ttreat each NAME as a shell function\n"
" -v\ttreat each NAME as a shell variable\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -3805,7 +3713,7 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-"反设定 shell 变量和函数的值和属性。\n"
+"取消设定 shell 变量和函数的值和属性。\n"
" \n"
" 对每一个 NAME 名称,删除对应的变量或函数。\n"
" \n"
@@ -3813,10 +3721,10 @@ msgstr ""
" -f\t将每个 NAME 名称当作函数对待\n"
" -v\t将每个 NAME 名称当作变量对待\n"
" \n"
-" 不带选项时,unset 首先尝试反设定一个变量,如果\n"
-" 失败,再尝试反设定一个函数。\n"
+" 不带选项时,unset 首先尝试取消设定一个变量,如果\n"
+" 失败,再尝试取消设定一个函数。\n"
" \n"
-" 某些变量不可以被反设定;请查看 `readonly'。\n"
+" 某些变量不可以被取消设定;请查看 `readonly'。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 NAME 名称为只读。"
@@ -3826,8 +3734,7 @@ msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -3988,8 +3895,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4010,8 +3916,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4036,7 +3941,7 @@ msgid ""
msgstr ""
"对条件表达式进行估值。\n"
" \n"
-" 根据 EXPR 表达式的估值以状态0(真)或1(伪)退出。\n"
+" 根据 EXPR 表达式的估值以状态0(真)或1(伪)退出。\n"
" 表达式可以是一元或者二元的。一元表达式通常用于检测\n"
" 文件状态。同时还有字符串操作符和数字比较操作符。\n"
" \n"
@@ -4064,8 +3969,8 @@ msgstr ""
" -G 文件 如果文件被您的组所有则为真。\n"
" -N 文件 如果文件上次被读取之后修改过则为真。\n"
" \n"
-" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(根据\n"
-" 修改日期)。\n"
+" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(根据\n"
+" 修改日期)。\n"
" \n"
" FILE1 -ot FILE2 如果 file1 文件旧于 file2 文件则为真。\n"
" \n"
@@ -4113,15 +4018,14 @@ msgid ""
msgstr ""
"估值条件表达式。\n"
" \n"
-" 是内嵌命令 \"test\" 的同义词,但是最后一个参数必须是\n"
+" 是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n"
" 字符 `]',以匹配起始的 `['。"
#: builtins.c:1320
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4140,8 +4044,7 @@ msgstr ""
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4150,41 +4053,33 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
" Signal names are case insensitive and the SIG prefix is optional. A\n"
" signal may be sent to the shell with \"kill -signal $$\".\n"
" \n"
" Exit Status:\n"
-" Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"对信号和其他事件设陷阱。\n"
" \n"
" 定义一个处理器,在 shell 接收到信号和其他条件下执行。\n"
" \n"
" ARG 参数是当 shell 接收到 SIGNAL_SPEC 信号时读取和执行的命令。\n"
-" 如果没有指定 ARG 参数(并且只给出一个 SIGNAL_SPEC 信号)或者\n"
+" 如果没有指定 ARG 参数(并且只给出一个 SIGNAL_SPEC 信号)或者\n"
" 或者 ARG 参数为 `-',每一个指定的参数会被重置为原始值。如果 ARG 参数\n"
" 是一个空串,则每一个 SIGNAL_SPEC 信号会被 shell 和它启动的命令忽略。\n"
" \n"
@@ -4232,8 +4127,7 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"显示命令类型的信息。\n"
" \n"
@@ -4241,15 +4135,15 @@ msgstr ""
" \n"
" 选项:\n"
" -a\t显示所有包含名称为 NAME 的可执行文件的位置;\n"
-" \t包括别名、内嵌和函数。仅当 `-p' 选项没有使用时\n"
+" \t包括别名、内建和函数。仅当 `-p' 选项没有使用时\n"
" -f\t抑制 shell 函数查询\n"
" -P\t为每个 NAME 名称惊醒 PATH 路径搜索,即使它是别名、\n"
-" \t内嵌或函数,并且返回将被执行的磁盘上文件的名称。\n"
+" \t内建或函数,并且返回将被执行的磁盘上文件的名称。\n"
" -p\t返回将被执行的磁盘上文件的名称,或者当 `type -t NAME'\n"
" \t不返回 `file' 时,不返回任何值。\n"
" -t\t返回下列词中的任何一个`alias'、`keyword'、\n"
" \t`function'、`builtin'、`file'或者`',如果 NAME 是相应的\n"
-" \t一个别名、shell 保留字、shell 函数、shell 内嵌、\n"
+" \t一个别名、shell 保留字、shell 函数、shell 内建、\n"
" \t磁盘文件或没有找到。\n"
" \n"
" 参数:\n"
@@ -4262,8 +4156,7 @@ msgstr ""
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4307,13 +4200,13 @@ msgstr ""
" 资源的控制。\n"
" \n"
" 选项:\n"
-" -S\t使用 `soft'(软)资源限制\n"
-" -H\t使用 `hard'(硬)资源限制\n"
+" -S\t使用 `soft'(软)资源限制\n"
+" -H\t使用 `hard'(硬)资源限制\n"
" -a\t所有当前限制都被报告\n"
" -b\t套接字缓存尺寸\n"
" -c\t创建的核文件的最大尺寸\n"
" -d\t一个进程的数据区的最大尺寸\n"
-" -e\t最高的调度优先级(`nice')\n"
+" -e\t最高的调度优先级(`nice')\n"
" -f\t有 shell 及其子进程可以写的最大文件尺寸\n"
" -i\t最多的可以挂起的信号数\n"
" -l\t一个进程可以锁定的最大内存尺寸\n"
@@ -4377,13 +4270,11 @@ msgid ""
" Waits for the process identified by ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
-" status is zero. If ID is a a job specification, waits for all "
-"processes\n"
+" status is zero. If ID is a a job specification, waits for all processes\n"
" in the job's pipeline.\n"
" \n"
" Exit Status:\n"
-" Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
+" Returns the status of ID; fails if ID is invalid or an invalid option is\n"
" given."
msgstr ""
"等待任务完成并返回退出状态。\n"
@@ -4405,8 +4296,7 @@ msgid ""
" and the return code is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
+" Returns the status of ID; fails if ID is invalid or an invalid option is\n"
" given."
msgstr ""
"等待进程完成并且返回退出状态。\n"
@@ -4553,17 +4443,12 @@ msgstr ""
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -4643,8 +4528,7 @@ msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -4725,12 +4609,9 @@ msgstr ""
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -4751,13 +4632,12 @@ msgstr ""
"执行条件命令。\n"
" \n"
" 根据条件表达式 EXPRESSION 的估值返回状态0或1。表达式按照\n"
-" `test' 内嵌的相同条件组成,或者可以有下列操作符连接而成:\n"
+" `test' 内建的相同条件组成,或者可以有下列操作符连接而成:\n"
" \n"
" ( EXPRESSION )\t返回 EXPRESSION 表达式的值\n"
" ! EXPRESSION\t\t如果 EXPRESSION表达式为假则为真,否则为假\n"
" EXPR1 && EXPR2\t如果 EXPR1 和 EXPR2 表达式均为真则为真,否则为假\n"
-" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表达式中有一个为真则为真,否则为"
-"假\n"
+" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表达式中有一个为真则为真,否则为假\n"
" \n"
" 当使用 `==' 和 `!=' 操作符时,操作符右边的字符串被用作模式并且执行一个\n"
" 匹配。当使用 `=~' 操作符时,操作符右边的字符串被当作正则表达式来进行\n"
@@ -4836,7 +4716,7 @@ msgstr ""
" HOSTTYPE\t当前版本的 BASH 在其之上运行的 CPU 类型。\n"
" IGNOREEOF\t控制 shell 收到文件结束符作为单一输入后的\n"
" \t\t动作。如果设定这个变量,则它的值是 shell 退出之前在\n"
-" \t\t一个空行上可以连续看到的文件结束符数量(默认为10)。\n"
+" \t\t一个空行上可以连续看到的文件结束符数量(默认为10)。\n"
" \t\t未设定时,文件结束符标志着输入的结束。\n"
" MACHTYPE\t描述当前运行 Bash 的系统的字符串。\n"
" MAILCHECK\tBash 检测新邮件的频率,以秒为单位。\n"
@@ -4904,15 +4784,15 @@ msgstr ""
" \t进行操作。\n"
" \n"
" 参数:\n"
-" +N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中左起,从零开始)\n"
+" +N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中左起,从零开始)\n"
" \t将移动到栈顶。\n"
" \n"
-" -N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中右起,从零开始)\n"
+" -N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中右起,从零开始)\n"
" \t将移动到栈顶。\n"
" \n"
" dir\t将 DIR 目录添加到栈顶,并且使其成为当前工作目录。\n"
" \n"
-" `dirs' 内嵌显示目录栈。\n"
+" `dirs' 内建显示目录栈。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的参数或者目录转换失败。"
@@ -4953,13 +4833,13 @@ msgstr ""
" \t进行操作。\n"
" \n"
" 参数:\n"
-" +N\t删除第 N 个目录(`dirs' 显示的目录列表中左起,从零开始)。\n"
+" +N\t删除第 N 个目录(`dirs' 显示的目录列表中左起,从零开始)。\n"
" \t例如: `popd +0' 删除第一个目录,popd +1' 删除第二个。\n"
" \n"
-" -N\t删除第 N 个目录(`dirs' 显示的目录列表中右起,从零开始)。\n"
+" -N\t删除第 N 个目录(`dirs' 显示的目录列表中右起,从零开始)。\n"
" \t例如: `popd -0'删除最后一个目录,,`popd -1' 删除倒数第二个。\n"
" \n"
-" `dirs' 内嵌显示目录栈。\n"
+" `dirs' 内建显示目录栈。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的参数或者目录变换失败。"
@@ -4981,12 +4861,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
" Exit Status:\n"
@@ -5018,8 +4896,7 @@ msgid ""
"Set and unset shell options.\n"
" \n"
" Change the setting of each shell option OPTNAME. Without any option\n"
-" arguments, list all shell options with an indication of whether or not "
-"each\n"
+" arguments, list all shell options with an indication of whether or not each\n"
" is set.\n"
" \n"
" Options:\n"
@@ -5033,7 +4910,7 @@ msgid ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
msgstr ""
-"设定和反设定 shell 选项。\n"
+"设定和取消设定 shell 选项。\n"
" \n"
" 改变每个 shell 选项 OPTNAME的设定。不带参数\n"
" 时,列出所有 shell 选项并标注每一个选项是否被\n"
@@ -5043,8 +4920,8 @@ msgstr ""
" -o\t限制 OPTNAME 为定义用于`set -o' 的选项\n"
" -p\t打印每个 shell 选项并标注它的状态。\n"
" -q\t抑制输出\n"
-" -s\t启用(设定)每个 OPTNAME 选项\n"
-" -u\t禁用(反设定)每个 OPTNAME 选项\n"
+" -s\t启用(设定)每个 OPTNAME 选项\n"
+" -u\t禁用(取消设定)每个 OPTNAME 选项\n"
" \n"
" 退出状态:\n"
" 如果 OPTNAME 选项被启用则返回成功;如果是\n"
@@ -5059,28 +4936,22 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf"
-"(1)\n"
+" In addition to the standard format specifications described in printf(1)\n"
" and printf(3), printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
+" %(fmt)T output the date-time string resulting from using FMT as a format\n"
" string for strftime(3)\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"在 FORMAT 变量的控制下格式化并打印 ARGUMENTS 参数。\n"
@@ -5089,8 +4960,7 @@ msgstr ""
" -v var\t将输出赋值给 shell 变量 VAR 而不显示在标准输出上\n"
" \n"
" FORMAT 变量是包含三种对象的字符串:简单地被拷贝到标准输出的普通字符;\n"
-" 被变换之后拷贝到标准输入的转义字符;以及每个都会影响到下个参数的打印"
-"的 格式化声明。\n"
+" 被变换之后拷贝到标准输入的转义字符;以及每个都会影响到下个参数的打印的 格式化声明。\n"
" \n"
" 在 printf(1)、printf(3) 中描述的标准控制声明之外,printf解析:\n"
"、 \n"
@@ -5104,10 +4974,8 @@ msgstr ""
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5149,8 +5017,7 @@ msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5170,12 +5037,9 @@ msgstr ""
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5211,7 +5075,7 @@ msgstr ""
" \n"
" 参数:\n"
" \n"
-" 每个 NAME 名称都对应一个之前以通过 `complete' 内嵌定义了补完声明的\n"
+" 每个 NAME 名称都对应一个之前以通过 `complete' 内建定义了补完声明的\n"
" 命令。如果不提供 NAME 名称,当前生成补完的函数必须调用 compopt,\n"
" 并且当前执行的补完生成器选项会被修改。\n"
" \n"
@@ -5223,24 +5087,18 @@ msgstr ""
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied.\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0.\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n"
" -s count \tDiscard the first COUNT lines read.\n"
" -t\t\tRemove a trailing newline from each line read.\n"
-" -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
+" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-" -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
+" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n"
" \n"
" Arguments:\n"
" ARRAY\t\tArray variable name to use for file data.\n"
@@ -5250,13 +5108,11 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"从标准输入读取行到下表数组变量中。\n"
@@ -5305,8 +5161,7 @@ msgstr ""
#~ "; this extra information can be used to\n"
#~ " provide a stack trace.\n"
#~ " \n"
-#~ " The value of EXPR indicates how many call frames to go back before "
-#~ "the\n"
+#~ " The value of EXPR indicates how many call frames to go back before the\n"
#~ " current one; the top frame is frame 0."
#~ msgstr ""
#~ "; 这个额外信息可被用于\n"
diff --git a/tests/errors.right b/tests/errors.right
index b3e0125f..07c95de9 100644
--- a/tests/errors.right
+++ b/tests/errors.right
@@ -101,10 +101,6 @@ kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill
./errors1.sub: line 1: .: -i: invalid option
.: usage: . filename [arguments]
./errors1.sub: line 9: shift: -4: shift count out of range
-./errors1.sub: line 5: return: -1: invalid option
-return: usage: return [n]
./errors1.sub: line 14: break: -1: loop count out of range
-./errors1.sub: line 20: return: -2: invalid option
-return: usage: return [n]
after f
./errors.tests: line 264: `!!': not a valid identifier