标签: bash

我在哪里可以更改 Ubuntu 在登录时显示的文本?

当我在 ubuntu 12.04 中登录 shell 时,我总是可以看到此消息

Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Wed Dec 19 13:41:52

  System load:  0.73               Processes:               133
  Usage of /:   37.5% of 81.73GB   Users logged in:         0
  Memory usage: 3%                 
  Swap usage:   5%                 

  Graph this data and manage this system at https://landscape.canonical.com/

Last login: Wed Dec 19 13:36:52 2012 from
Run Code Online (Sandbox Code Playgroud)

哪里可以找到脚本?

注意:我已经看过了

  • ~/.bashrc
  • /etc/配置文件
  • /etc/bash.bashrc
  • /etc/profile.d/*

但我还没有找到

bash ubuntu

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

透明使用临时文件作为管道手段

正如我们许多人肯定知道的那样,让您的程序接受 stdin 输入总是一个好主意。很多程序确实允许使用 *nix 环境。这让我们可以做一些很酷的事情,比如管道 echo "foo" | less。很多时候人们会发现这cat barfile | baz在逻辑上等同baz barfile于在幕后它只是读取字符串。

如今,有更多的程序默认无法通过管道传输。一些程序具有仍然允许上述行为的标志,但许多程序没有。

现在,我的问题是,是否存在临时文件管道?

现在,由于我几乎不具备编写 Bash 的能力和在 Google 上大约 5 分钟的时间,我想出了这个

#!/bin/bash
if [ $# -ne 2 ]; then exit 1; fi
f=$(mktemp)
($1) > $f
if [ $? -eq 0 ]; then ($2 $f); else exit $?; fi
rm $f
Run Code Online (Sandbox Code Playgroud)

调用这个 fpipe,我们可以做一些事情,比如fpipe 'wget -O- www.example.com' bazbaz 是一个我们不能管道但可以做的程序baz file

我的问题是我们怎样才能做得更好。我怀疑有了更多的 Bash 知识,重新编写上面的脚本来接受任何数量的参数将是相当微不足道的(这样我们就可以做一些事情,比如fpipe 'foo x' bar baz在管道中我们可以做类似的事情foo x …

linux bash zsh shell pipe

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

删除一系列文本文件的最后 5 行的非常简单的脚本

出于某种原因,此脚本为每个原件输出三个文件,而不是一个。

一定犯了一些小错误 - 我是新手!

如果有人能解释为什么会发生这种情况,我将非常感激。

脚本:-

for f in *.txt
do
   noOfRows=$(cat $f | wc -l)
   relevantRows=$(expr $noOfRows - 5)
   head -n $relevantRows $f | tee ${f%.txt}-Amended.txt
done
Run Code Online (Sandbox Code Playgroud)

ls 命令的结果:-

E12-5_F2_NEG-Amended-Amended-Amended.txt  E12-5_M3_POS-Amended-Amended-Amended.txt
E12-5_F2_NEG-Amended-Amended.txt          E12-5_M3_POS-Amended-Amended.txt
E12-5_F2_NEG-Amended.txt                  E12-5_M3_POS-Amended.txt
E12-5_F2_NEG.txt                          E12-5_M3_POS.txt
E12-5_F2_POS-Amended-Amended-Amended.txt  E12-5_M4_NEG-Amended-Amended-Amended.txt
E12-5_F2_POS-Amended-Amended.txt          E12-5_M4_NEG-Amended-Amended.txt
E12-5_F2_POS-Amended.txt                  E12-5_M4_NEG-Amended.txt
E12-5_F2_POS.txt                          E12-5_M4_NEG.txt
E12-5_F5_NEG-Amended-Amended-Amended.txt  E12-5_M4_POS-Amended-Amended-Amended.txt
E12-5_F5_NEG-Amended-Amended.txt          E12-5_M4_POS-Amended-Amended.txt
E12-5_F5_NEG-Amended.txt                  E12-5_M4_POS-Amended.txt
E12-5_F5_NEG.txt                          E12-5_M4_POS.txt
E12-5_F5_POS-Amended-Amended-Amended.txt  E12-5_M7_NEG-Amended-Amended-Amended.txt
E12-5_F5_POS-Amended-Amended.txt          E12-5_M7_NEG-Amended-Amended.txt
E12-5_F5_POS-Amended.txt                  E12-5_M7_NEG-Amended.txt
E12-5_F5_POS.txt                          E12-5_M7_NEG.txt
E12-5_M3_NEG-Amended-Amended-Amended.txt  E12-5_M7_POS-Amended-Amended-Amended.txt
E12-5_M3_NEG-Amended-Amended.txt          E12-5_M7_POS-Amended-Amended.txt
E12-5_M3_NEG-Amended.txt                  E12-5_M7_POS-Amended.txt
E12-5_M3_NEG.txt                          E12-5_M7_POS.txt
Run Code Online (Sandbox Code Playgroud)

非常感谢,亚当

linux script bash shell ubuntu

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

从 vim 使用 bash 执行脚本

我正在尝试让 vim 执行我正在使用键映射编辑的脚本,例如ctrl+ x,所以我在vimrc

:map <C-x> :!exec_file %<CR>

要将文件名传递给我编写的脚本,该脚本解析扩展名并调用适当的解释器,到目前为止效果很好。

但是,我想知道是否可以bash使用脚本名称直接调用并执行它,因为我编辑的大多数脚本都有一个 shebang 行,所以我尝试了这个映射:

:map <C-x> :!bash %<CR>

但它不起作用,是否可以通过将其名称传递给 bash 来执行脚本?

bash vim

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

将多个文件一一gzip

我有 100 个文件,n1.txt、n2.txt ……我想对每个文件进行 gzip,但不是在一个文件中——最后我想要 100 个n*.txt.gz文件。

我如何在 Linux 中使用 Bash 做到这一点?

linux bash command-line gzip

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

如何使用腻子将“--noprofile”或“--norc”发送到 bash(在 Windows 上)

如何禁用.bashrc.profile,当我登录到Linux用腻子从Windows?
(在* nix: ssh hostname "bash --norc --profile"

bash login putty

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

如何比较shell脚本中的两个文件路径

我正在尝试将我的工作目录与脚本需要运行的正确目录进行比较。这是shell脚本的片段

CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
    echo "You are running script from correct directory"
fi
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我确保我在 /proj/project_a/scripts_shell (作为我目前的工作目录)中,但由于某种原因它无法在 if 语句中检测到这一点。因此它不会打印消息。

这有什么问题?

bash

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

bash - 我在 *.mp4 中为 i 做,然后在循环中我想使用 ${i} 但没有 .mp4。我怎样才能做到这一点?

基本上我这样做:

for i in *.mp4; 
do ffmpeg -i "${i}" -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "${i}-watermarked.mp4"; 
done;
Run Code Online (Sandbox Code Playgroud)

但这有效地执行此命令

do ffmpeg -i "video.mp4" -vf "movie=logo.png [watermark];\ 
 [in][watermark] overlay=10:10 [out]" -strict -2 -qscale 0 "video.mp4-watermarked.mp4"; 
Run Code Online (Sandbox Code Playgroud)

最后一点 - video.mp4-watermarked.mp4 是我的问题。我希望它是 video-watermarked.mp4。

我怎样才能做到这一点 ?

bash command-line

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

ps comm 格式总是剪切进程名称

我试图调用ps -o comm:1024 --pid 1391 --cols 1024 -w以获取完整的进程名称(并且仅此而已),但我总是以这个结束

COMMAND
notification-ar
Run Code Online (Sandbox Code Playgroud)

而进程名称是notification-area-applet。我还尝试了 -w、--cols 和 : 格式化程序的所有组合。cmd 和 args 给出进程的完整路径和参数。我也许可以从这些中获取进程名称,但仍然......

bash ps

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

当我 sudo su 时,我用户的 .bashrc 中定义的函数会导致错误

我在用户的 .bashrc 文件中定义了一个函数,它在我的命令提示符下显示我当前的 git 分支名称:

parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1="\\[$(tput setaf 7)\\]\\w \$(parse_git_branch)> \\[$(tput sgr0)\\]"
Run Code Online (Sandbox Code Playgroud)

当我 sudo 到 su 时,看起来我的 PS1 被结转了,并且在每个命令之后我都会收到错误bash: parse_git_branch: command not found

我可以更改什么,以便当我对另一个用户 sudo 时,使用其 PS1 而不是我用户的 PS1?

编辑:这似乎只发生在我使用源 Python virtualenv 之后。如果我在获取 virtualenv 之前 sudo su ,则不会发生此错误。

sudo bash python bashrc

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

标签 统计

bash ×10

linux ×3

command-line ×2

shell ×2

ubuntu ×2

bashrc ×1

gzip ×1

login ×1

pipe ×1

ps ×1

putty ×1

python ×1

script ×1

sudo ×1

vim ×1

zsh ×1