$ false
$ echo $?
1
$ if [[ false ]]; then echo 'do it'; fi
do it
$ test false && echo 'do it'
do it
$ COND=false
$ echo $COND
false
$ if [[ $COND -ne 0 ]]; then echo 'do it'; fi
$ if [[ $COND -ne true ]]; then echo 'do it'; fi
Run Code Online (Sandbox Code Playgroud)
这是废话 IMO,我在这里错过了什么?
- 更新
所以下面是它的过程:
$ COND=false
$ if ! $COND; then echo 'do it'; fi
do it
$ if $COND; then echo …Run Code Online (Sandbox Code Playgroud) 我在运行mysql命令时遇到了问题,并在网上看到了一些建议使用该service命令的问题的建议,似乎这是我默认应该拥有的东西。
我一直在安装一些自制程序包,所以我不确定这是否可能导致它?我以前从未使用过这个命令,所以我不完全确定。
尝试运行命令sudo service mysql start
返回
sudo: service: command not found
Run Code Online (Sandbox Code Playgroud)
我没有太多使用终端的经验,所以很抱歉。我看到很多评论表明服务命令位于/usr/sbin/并且也可能位于,/sbin/service但我在两者中都找不到它。
我的 .bash_profile 如下
export PATH=~/.composer/vendor/bin:$PATH
export PATH=/usr/local/php5/bin:$PATH
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:/home/user/bin
export PATH=$PATH:/sbin
Run Code Online (Sandbox Code Playgroud)
底部的两个导出来自其他问题的建议,但似乎都不起作用。
有任何想法吗?任何帮助将不胜感激。
我正在尝试使用以下命令查找特定文件类型的所有项目文件:
ls -ltR *.mb
Run Code Online (Sandbox Code Playgroud)
我知道在几个文件夹中有我想要的文件,但我没有得到任何结果。我做错了什么?
我在 bash 中使用 vi 编辑模式。我在 ~/.inputrc 中将“show-mode-in-prompt”设置为“on”。
显示模式提示(关闭)
如果设置为 On,则在提示开头添加一个字符串,指示编辑模式:emacs、vi 命令或 vi 插入。模式字符串是用户可设置的(例如,emacs-mode-string)。
所以现在我可以在我的提示开头看到编辑模式。
i:$ # This is ins mode
c?$ # This is cmd mode
i:$ cat ~/.inputrc
set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string "\1\e[1;32m\2i:\1\e[0m\2"
set vi-cmd-mode-string "\1\e[1;31m\2c?\1\e[0m\2"
set colored-stats on
i:$ echo $PS1
$
Run Code Online (Sandbox Code Playgroud)
不过,我真的很喜欢在我的提示末尾添加这个,并在当前目录前面加上,即
/current/dir/here $ i:
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否可以实现。我的第一个想法是在 PS1 中使用回车,但不幸的是这会覆盖模式字符串。
i:$ PS1='\r\w $ '
~/projects $
Run Code Online (Sandbox Code Playgroud)
我的第二个想法是以某种方式获取模式字符串并将其插入 $PROMPT_COMMAND,而不是让 readline 将其写入提示。我可以通过以下方式获取当前模式:
i:$ bind -v | grep keymap | awk '{print $3}'
vi-insert
Run Code Online (Sandbox Code Playgroud)
但是 PROMPT_COMMAND 值仅在发出提示之前执行,因此我不会看到模式更改。
第 …
假设我想将某个命令的输出通过管道传输到一个文件中。简单地……好吧,将它传送到一个文件,例如
some-command > file
Run Code Online (Sandbox Code Playgroud)
和管道它通过dd像
some-command | dd $MAYBE_SOME_OPTIONS_LIKE_BS of=file
Run Code Online (Sandbox Code Playgroud)
这个问题主要是为了满足我的好奇心,除非后一种形式有一些不可忽视的好处或用例,否则在实践中我会省去练习并选择前者。
crontab当我尝试检查我的 crontab 作业时,作业日志消息显示来自 mta#012 的错误状态 0x004b。
# grep CRON /var/log/syslog
[...]
Run Code Online (Sandbox Code Playgroud)
我得到这个日志:
Nov 26 08:00:01 stiitsrv9 CRON[26109]: (root) CMD (/usr/local/sbin/backup-sti-epfl-ch)
Nov 26 08:01:02 stiitsrv9 CRON[26108]: (root) MAIL (mailed 13311563 bytes of output but got status 0x004b from MTA#012)
[...]
Run Code Online (Sandbox Code Playgroud)
该crontab工作不工作。
此消息是什么意思,我该如何解决?
由于应用程序限制,我有两个用户需要使用相同的登录名。
这些用户对 shell 提示应该是什么样子有很大的不同意见。其中一位甚至坚持要修改色觉。这导致了 .bashrc PS1 争议。我已经给了他们脚本来设置他们自己的偏好,但是......让我们说这很复杂。
幸运的是,它们都从具有已知 IP 地址的位置连接。有没有一种方法可以将用户的远程 IP 地址合并到一个条件中,从而为他们提供他们想要的东西,而无需任何额外的步骤?他们通过 ssh 连接。
我在尝试使用 wget 下载时在 WSL 中遇到错误
wget -O quotefile.txt "https://www.google.com"
Run Code Online (Sandbox Code Playgroud)
输出
Will not apply HSTS. The HSTS database must be a regular and non-world-writable file.
ERROR: could not open HSTS store at '/home/atul/.wget-hsts'. HSTS will be disabled.
--2020-04-08 12:47:43-- https://www.google.com/
Resolving www.google.com (www.google.com)... 2404:6800:4002:80f::2004, 172.217.166.196
Connecting to www.google.com (www.google.com)|2404:6800:4002:80f::2004|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘quotefile.txt’
quotefile.txt [ <=> ] 14.68K --.-KB/s in 0.002s
2020-04-08 12:47:45 (6.43 MB/s) - ‘quotefile.txt’ saved [15029]
Run Code Online (Sandbox Code Playgroud)
为什么我收到这个错误
Run Code Online (Sandbox Code Playgroud)Will …
我刚刚注意到
ssh user@host >/tmp/out 2>/tmp/err
Run Code Online (Sandbox Code Playgroud)
可以写类似的东西
Warning the RAS host key...
...
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
stdout 和 stderr 都被重定向,但这仍然显示在 tty 中。
ssh这是怎么做的?ssh要这样做?它不违反 *nix 习语吗?ssh作为通过管道连接的 stdin/stdout/stderr 的子进程运行(或另一个具有类似行为的程序)时,我希望父进程看到子进程的输出。如果子进程像这样躲避stdout/stderr,父进程怎么捕获呢?我已经atrun使用以下命令启动了守护进程。
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Run Code Online (Sandbox Code Playgroud)
将我的用户名添加到/var/at/at.allow文件中。
$ cat /var/at/at.allow
myusername
Run Code Online (Sandbox Code Playgroud)
并使用at命令创建了一个作业。
$ at now + 1 minute
touch /tmp/x.log
^D
job 1 at Fri Jan 1 09:56:00 2021
Run Code Online (Sandbox Code Playgroud)
我可以看到使用atq命令安排的作业。
但是我看不到/tmp/x.log在预定时间之后创建的文件。有什么我在这里遗漏的,或者有没有办法调试这个问题?