标签: syntax

在一行中将函数写入 ~/.bashrc

为什么当我尝试将一个函数仅在一行中写入.bashrc文件时,

list(){ ls -a }
Run Code Online (Sandbox Code Playgroud)

我得到错误?

bash: /home/username/.bashrc: line num: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

但是当我用多行写它时可以吗?

list(){
    ls -a
}
Run Code Online (Sandbox Code Playgroud)

scripts bashrc syntax

48
推荐指数
3
解决办法
2万
查看次数

如何在bash中的多行上格式化“if”语句(条件)?

我有一个 Bash shell 函数,它接受一个参数并在需要时对其执行一些操作。

do_something() {
  if [need to do something on $1]
  then
    do it
    return 0
  else
    return 1
  fi
}
Run Code Online (Sandbox Code Playgroud)

我想用几个参数调用这个方法,并检查是否至少有一个成功。

我试过类似的东西:

if [ do_something "arg1" ||
     do_something "arg2" ||
     do_something "arg3" ]
then
  echo "OK"
else
  echo "NOT OK"
fi
Run Code Online (Sandbox Code Playgroud)

另外,我想确保即使第一个条件为真,所有其他条件仍将被评估。

什么是正确的语法?

bash syntax

27
推荐指数
3
解决办法
7万
查看次数

标准语法和 BSD 语法有什么区别?

我见过许多接受“BSD 语法”及其标准语法的命令。以ps命令为例:

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu
Run Code Online (Sandbox Code Playgroud)

那么这两条路线有什么区别呢?一般来说,当他们在 BSD 语法中说我应该记住哪些元素时?这种语法是否也仅适用于它们在 BSD 中的那些命令?

command-line syntax

24
推荐指数
2
解决办法
2万
查看次数

这个语法是什么意思?

我是终端的新手,正在尝试学习如何使用它。

这些线有什么作用?它们是如何工作的?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts date syntax

16
推荐指数
2
解决办法
4860
查看次数

-exec 缺少的参数是什么?

我使用以下命令清除一个目录,其中包含超过 30 天的文件和目录,并将它们移动到一个存档目录,如果没有人要求取回他们的文件,我可以在几周后将其删除。目标目录有用户名的子目录,归档目录也有。

这是我使用的命令:

find /path/to/directory/username/ -mtime +30 -exec mv "{}" /path/to/archive/username/ \;
Run Code Online (Sandbox Code Playgroud)

我建议修改此版本来回答有关 ask ubuntu 的问题,另一个用户编辑了代码以更改行尾\;+因为它更快(并且更正确?)。看这里

但是,+如果该-exec命令ls -lh不在我使用的实际命令中,则以这种方式使用是有效的。如果我尝试它,+我会收到一条错误消息:

find: missing argument to '-exec'
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它会这样,或者正确的命令是什么。请不要只是发布命令更正,我想了解而不是盲目地遵循建议。

command-line bash find syntax

15
推荐指数
2
解决办法
1479
查看次数

bash 空运算符“:”,冒号有什么意义?

BASH 脚本中的“空”运算符有什么意义?我知道if当您无话可说但需要一个命令来让程序正常运行时,它被用作命令后面的占位符。但它的总体用途是什么?你会在什么时候使用它?什么时候使用它才有意义?

bash scripts syntax

13
推荐指数
4
解决办法
9240
查看次数

使用'-< <( ... )'的命令输出重定向

我需要提取一个shasum。这有效,但谁能解释为什么?

sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Run Code Online (Sandbox Code Playgroud)

我熟悉这个$( )构造,但找不到<( ),加上 的文档-<,我认为它正在重定向到标准输入sed

我知道有更简单的方法,但这种结构让我望而却步。

bash redirect syntax

12
推荐指数
2
解决办法
4857
查看次数

带字母表的 for 循环

这在 OSX 上完美运行

#!/bin/bash
chars=( {a..z} )
n=3
for ((i=0; i<n; i++))
do
  echo "${chars[i]}"
done
Run Code Online (Sandbox Code Playgroud)

但是当我在 Ubuntu 上运行它时,出现以下错误。

ForLoopAlphabetTest.sh: 2: ForLoopAlphabetTest.sh: Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)

我似乎无法解决问题。有什么建议?

bash scripts syntax

12
推荐指数
2
解决办法
8030
查看次数

终端命令中“'”(撇号)的含义

出于某种奇怪的原因,我尝试了“'”作为标识符中的单词分隔符,如下所示:

$ export foo'bar=1
> 
> ^C
$ 
Run Code Online (Sandbox Code Playgroud)

结果如上所示,id est提示更改为“>”,系统显然在等待我的更多信息。如您所见,我必须按 ctrl-C 才能逃脱。使用其他命令也会发生同样的情况,例如

$ ls foo'bar
$ mkdir foo'bar
Run Code Online (Sandbox Code Playgroud)

我很好奇这一切的意义,这就是“'”在终端命令中的特殊含义(实际上它非常特殊,甚至在 id 内部也被拆开)。

额外:顺便说一句,我还想知道在类 Unix 和 Windows 系统下的文件和文件夹名称中的特殊或其他无效字符集(以获得安全的公共子集)(特别是所有非 ASCII?)。

谢谢你,丹尼斯

command-line syntax

11
推荐指数
2
解决办法
6124
查看次数

当上一个命令完成时运行另一个命令

今天我打开gnome-terminal并写了

ls && sleep 4 && gnome-terminal
Run Code Online (Sandbox Code Playgroud)

ls命令完成后打开另一个终端并等待4秒。
因此,在之前的命令完全运行(包括sleep 4)后,它成功地打开了一个新终端。

之后,下次我输入新命令时

ls -lR && sleep 4 && gnome-terminal
Run Code Online (Sandbox Code Playgroud)

该命令ls -lR在 3 秒后完成,但之后没有任何命令sleep 4gnome-terminal成功运行。

问题是什么?

command-line bash syntax

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

syntax ×10

bash ×7

command-line ×5

scripts ×4

bashrc ×1

date ×1

find ×1

redirect ×1