小编Mik*_*kel的帖子

将命令的输出存储在 shell 变量中

我有一个操作cut,我想将结果分配给一个变量

var4=echo ztemp.xml |cut -f1 -d '.'
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ztemp.xml 不是命令

var4never的值被赋值;我正在尝试为其分配以下输出:

echo ztemp.xml | cut -f1 -d '.'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

command-line scripting bash shell-script coreutils

30
推荐指数
3
解决办法
14万
查看次数

Linux 中“/etc/init.d”和“/etc/rcX.d”目录之间有什么联系?

我正在从一本名为“ Linux 命令行和 Shell 脚本圣经,第二版”的书中学习命令行。这本书是这么说的:

一些 Linux 实现包含一个在启动时自动启动的进程表。在 Linux 系统上,该表通常位于特殊文件 /etc/inittabs 中。

其他系统(例如流行的 Ubuntu Linux 发行版)使用 /etc/init.d 文件夹,其中包含用于在启动时启动和停止单个应用程序的脚本。脚本通过 /etc/rcX.d 文件夹下的条目启动,其中 X 是运行级别。

可能因为我是 linux 新手,我不明白引用的第二段是什么意思。有人可以用更简单的语言解释相同的内容吗?

linux init-script sysvinit

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

在 bash 提示符下只显示当前目录和父目录

我是 bash 的新手,希望我的提示显示在 tcsh 中的一些微不足道的东西,但经过良好的谷歌搜索后,我仍然无法做到。

我希望我的提示只包含当前和父目录,如下所示:

/parent/currentdir $
Run Code Online (Sandbox Code Playgroud)

在 tcsh 中,这是通过以下方式实现的:

set prompt = "%C2 %"
Run Code Online (Sandbox Code Playgroud)

然而,到目前为止,在 bash 中,我只发现我必须解析 pwd 才能获得相同的输出。

有没有更简单的方法,比如:

export PS1="$(some_command) $" 
Run Code Online (Sandbox Code Playgroud)

bash prompt

23
推荐指数
3
解决办法
4万
查看次数

制作日志文件

有没有什么办法可以在linux中借助一些库函数或系统调用在/var/log/中创建一个日志文件来维护/var/log/中的一些数据。我也想知道我们应该遵循什么标准来编写和处理日志。谢谢

linux c logs syslog

22
推荐指数
1
解决办法
6万
查看次数

如何编写在登录时执行的shell脚本?

我正在尝试在 Ubuntu 11.10 Linux 发行版中编写 bash shell 脚本,它将在登录系统时自动执行。但我无法弄清楚在脚本中写什么,它会在登录时自动执行。

login ubuntu shell-script profile

22
推荐指数
1
解决办法
12万
查看次数

如何在不影响文件的情况下递归应用 chmod 目录?

在我申请chmod -R一个目录后,里面的所有东西(文件和目录)的权限都会改变。如何x在不修改文件的情况下向目录添加执行/搜索 ( ) 权限?

shell find chmod

20
推荐指数
2
解决办法
7917
查看次数

~/.inputrc 文件来源不正确

我有为某些键绑定创建的 ~/.inputrc 文件。

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C":forward-word
"\e[1;5D":backward-word
"\e[5C":forward-word
"\e[5D":backward-word
"\e\e[C":forward-word
"\e\e[D":backward-word
Run Code Online (Sandbox Code Playgroud)

每当我尝试运行时source ~/.inputrc,它都会给我以下错误:

\e[1;5C:forward-word: 命令未找到。\e[1;5D:backward-word: 命令未找到。\e[5C:forward-word: 命令未找到。\e[5D:backward-word: 命令未找到。\e\e[C:forward-word: 命令未找到。\e\e[D:backward-word: 命令未找到。

当我打开一个新终端时它也不起作用,我没有收到错误但是我的 ctrl 组合键在新终端中也不起作用。我自己创建了这个文件,因为我没有 root 访问权限来更改 /etc/inputrc.conf 。有人可以帮我吗?谢谢。

编辑:我也尝试过在冒号 (:) 符号后带有空格的文件。它不起作用。我也试过让它可执行(chmod +x ~/.inputrc),没有用。

编辑:我意识到这个程序仅适用于“bash”,而我正在运行“tcsh”。对于“csh”,使用.bindings文件而不是.inputrc文件并使用bindkey语法。

bash tcsh readline

18
推荐指数
3
解决办法
1万
查看次数

Red Hat Enterprise Linux 6.5 的等效 CentOS 是什么?

根据CentOS 网站,他们使用来自 Red Hat 的源代码,但我不清楚使用什么版本的 Red Hat 源代码来构建每个版本的 CentOS。

有等价的数字吗?例如,CentOS 6.5 是否等同于/基于 Red Hat Enterprise Linux 6.5?

rhel version centos

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

为什么在 Linux 上的“time.h”中定义了“timer_t”而不是 OS X

当我阅读 C 源代码文件时,我发现了这个声明。(此源码是为linux系统程序编写的,这是很重要的信息)

#include <time.h>
#include <stdio.h>

static timer_t* _interval_timer;
...
Run Code Online (Sandbox Code Playgroud)

起初,我想更多地了解“timer_t”。所以我用谷歌搜索“time.h”来获取标题信息。但是,没有任何关于'timer_t'的词,只提到了'time_t'。

出于好奇,我在我的 'mac' 计算机中搜索并打开了 'time.h' c 标准库文件(如您所知,/usr/include 文件夹存储 c 标准库文件。)但该文件与之前在 google 上搜索到的文件相同。

最后,我使用虚拟机打开我的linux os(ubuntu)并打开linux c标准库文件夹中的'time.h'(文件夹路径与OSX相同)。正如我所料,Linux 中的“time.h”文件声明了 timer_t。

我在下面添加了声明“timer_t”类型的代码行。

#if !defined __timer_t_defined && \
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t)
# define __timer_t_defined      1

# include <bits/types.h>

/* Timer ID returned by `timer_create'.  */
typedef __timer_t timer_t;
Run Code Online (Sandbox Code Playgroud)

我的问题是这个。

  1. 为什么 'timer_t' 只在 linux c 标准库中定义?

  2. 这种情况经常发生吗?我的意思是,不同操作系统之间是否有任何不同定义的功能或属性?

linux c darwin

13
推荐指数
1
解决办法
7938
查看次数

如何显示别名的含义

我可以compgen -a用来列出所有别名:

$ compgen -a
egrep
fgrep
grep
l
la
ll
ls
Run Code Online (Sandbox Code Playgroud)

llall在 my 中定义~/.bashrc

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
Run Code Online (Sandbox Code Playgroud)

我可以运行什么命令来查看别名扩展为什么?我找到了whatis,whereiswhich,但他们没有做我想要的。

shell bash alias

11
推荐指数
1
解决办法
7340
查看次数