运行“su -c”时环境会发生什么变化?
我问的原因是这种神秘的行为:
bash$ which firefox
/usr/local/bin/firefox
bash$ su - user -c "echo $PATH"
bin:/usr/bin:/sbin:/usr/sbin:/opt/java/bin:/usr/local/bin:...
bash$ su - user -c "firefox ..."
-bash: firefox: command not found
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在寻找一种方法来删除当前输入的命令行,而不会在Backspace键上浪费几秒钟。
例如,我滚动了 bash 历史记录并有一个很长的命令行,当我按下时会执行Enter:
~$ aptitude search openssl | grep dev
Run Code Online (Sandbox Code Playgroud)
但现在我决定不想执行这个命令。我可以在不删除整行的情况下快速获得空提示Backspace吗?在 Windows cmd 上,您只需按一下Escape它就消失了。这种行为将是我想要的。
有时我会做一个命令,比如
unzip tons_of_files.zip
Run Code Online (Sandbox Code Playgroud)
我会忘记把 -d 指向一个子目录。这会导致当前文件夹充满大量与现有文件混合的文件。
删除所有这些新文件和/或将它们移动到新目录的最佳方法是什么?我想避免手动检查目录并确定文件是存档的一部分还是已经存在。
我的 bash 提示符显示了我的主机名。如果我改变我的主机名和hostname命令,在/etc/hosts,/etc/hostname并且$HOSTNAME,提示仍然使用旧名称。是否可以在不注销的情况下进行更新?
我知道我可以做,!commands但我想以某种方式在 vim 中集成一个 shell。或者我可以使用 screen 并拆分屏幕,以便 vim 占据说,一半的屏幕?
我试图在stackoverflow上标记一个类似于我的问题(在Linux文件系统上查找非UTF8文件名)以引出进一步的答复,到目前为止没有运气,所以这里再次......
我和上面链接中的 OP 有同样的问题,convmv 是修复自己文件系统的好工具。因此,我的问题是学术性的,但我发现“查找”无法找到非标准的 ascii 字符这一点令人不满意(实际上我无法相信)。
有没有人知道使用什么选项组合来查找包含非标准字符的文件名的文件名似乎是 unicode FS,在我的情况下,字符似乎是 8 位扩展的 ascii 而不是 unicode,文件来自一台 Windows 机器(iso-8859-1),我经常需要获取它们。我很想看看 find 和/或 grep 如何与 convvv 做同样的事情。
示例文件:
> ls
Abc?def ÉÈéèáà-rest everest éverest
> ls -b
Abc\251def ÉÈéèáà-rest everest éverest
Run Code Online (Sandbox Code Playgroud)
第一个文件来自 Windows(或用 模拟touch $(printf "Abc\xA9def"))。
> find . -regex '.*[^a-zA-Z./].*'
./ÉÈéèáà-rest
> ls | egrep '[^a-zA-Z]'
ÉÈéèáà-rest
Run Code Online (Sandbox Code Playgroud)
几乎全部都丢失了(连字符保存了该文件,可以用彩色 grep 看到)。这里发生的一切都不是我所期望的:find 和 grep 都无法将重音字母视为超出提供的范围 [^a-zA-Z./]。
> find . -regex '.*é.*'
./éverest
./ÉÈéèáà-rest
> ls | egrep 'é'
ÉÈéèáà-rest
éverest
> …Run Code Online (Sandbox Code Playgroud) 有没有办法在同一台机器上的不同目录上更改提示?例如,我想要一个简单的提示“[\W] \$”在开发目录中。
想法?
在我的 Bash 脚本中,我必须处理带有空格的文件名。这些是我的脚本中的重要行:
mp3file="/media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\ Vol.5\ \[MP3PRO\]/01\ -\ Nofx\ -\ Pump\ up\ the\ Valium.mp3"
echo "Command: mp3info -x `echo $mp3file`"
mp3info -x `echo $mp3file`
Run Code Online (Sandbox Code Playgroud)
不幸的是,该命令不起作用,因为文件名被拆分:
mp3info: invalid option -- '\'
mp3info: invalid option -- '\'
Error opening MP3: /media/d/Music/zz_Hardcore/Sampler/Punk-O-Rama\: No such file or directory
Error opening MP3: Vol.5\: No such file or directory
Error opening MP3: \[MP3PRO\]/01\: No such file or directory
Error opening MP3: Nofx\: No such file or directory
Error opening MP3: Pump\: No such file or directory
Error …Run Code Online (Sandbox Code Playgroud) 通常,对于某些命令,例如apt-get install xxx,我忘记先添加sudo,然后需要重新键入它。我想要的是在这种情况下,我只需输入一个简单的命令,例如resudo. 它将 sudo 我的最后一个命令sudo apt-get install xxx。在 bash 中可能吗?
我想使用 ANSI 转义码自定义我的 bash 提示,并注意到在某些 howtos 中,代码被包含在内\[,\]而在其他人中则没有。
例如,这些对我来说同样有效:
PS1='\e[0;32m foo '
PS1='\[\e[0;32m\] foo '
Run Code Online (Sandbox Code Playgroud)
我想知道它有什么区别?