标签: bash

Ubuntu 的 ls 可以显示 unicode 字符,但是 tree 不能,即使使用 tree --charset unicode

Ubuntu 10.04ls可以显示 unicode 字符,但tree不能显示,即使使用tree --charset unicodeutf8。有没有办法解决。 echo可以解释转义字符,除非cat list.txt | echo -e不起作用(list.txt来自 tree > list.txt

更新:tree -H www.somewhere.com可以输出unicode(应该是UTF-8)但现在看来这是唯一的方法——作为一个网页。

$ ls -R
.:
list2.txt  list.txt  ????????????????.txt  ??

./??:
??2.txt  ??.txt

$ tree --charset unicode
.
|-- list2.txt
|-- list.txt
|-- \344\271\205\346\234\252\345\234\250\351\201\212\350\241\214\345\240\264\345\220\210\351\234\262\351\235\242\347\232\204\345\211\215\347\270\275\347\265\261\346\235\216\347\231\273\350\274\235.txt
`-- \351\201\212\350\241\214
    |-- \345\244\247\345\256\2662.txt
    `-- \345\244\247\345\256\266.txt

1 directory, 5 files

$ tree --charset utf8
.
??? list2.txt
??? list.txt
??? \344\271\205\346\234\252\345\234\250\351\201\212\350\241\214\345\240\264\345\220\210\351\234\262\351\235\242\347\232\204\345\211\215\347\270\275\347\265\261\346\235\216\347\231\273\350\274\235.txt
??? \351\201\212\350\241\214
    ??? \345\244\247\345\256\2662.txt …
Run Code Online (Sandbox Code Playgroud)

bash unicode ls tree ubuntu

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

在 /etc/profile 中调整 $PATH 不会影响 root

PATH在 in 中添加了一个目录/etc/profile。这适用于我的用户帐户,但不适用于 root。将它添加到我的很容易,/root/.bashrc但我想了解有什么问题。这是一个大部分未修改的 Debian 6,所以我认为我的更改应该可以解决问题。

这是我的/etc/profile

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else …
Run Code Online (Sandbox Code Playgroud)

linux root bash path

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

Linux bash shell 用键盘复制前几行(不是历史)

是否可以使用键盘在终端窗口中选择一些不在当前编辑行中的文本?(例如,为了复制先前命令输出的一部分)。

linux bash

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

符号链接到当前文件夹作为绝对路径而不输入整个路径

符号链接是保存相对路径的快捷方式:

~/foo? ln -s . ~/bar/foo
~/foo? ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .
Run Code Online (Sandbox Code Playgroud)

该文件~/bar/foobar当前目录的符号链接,即它本身

如果我想在另一个目录中创建一个符号链接到我当时所在的目录怎么办?所以在上面的例子中,我在~/foo,我想创建~/bar/foo一个符号链接到~/foo. 当然,我当前的目录可能比 5 个字符长很多,而且可能不太容易输入。

bash symbolic-link ln

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

使用ssh知道哪个IP在linux中执行了某个命令

许多用户使用 ssh 访问一个服务器。我试图找出哪个用户执行了某个命令。

我可以知道当前访问服务器的用户列表,who 我也会知道使用history.

但是如何知道哪个用户cp file1.sh file2.sh在服务器中执行了命令?用户已执行命令并退出

linux ssh bash command-history

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

我应该在哪里导出环境变量,以便 bash/dash、交互式/非交互式、登录/非登录的所有组合都可以选择它?

这是问题的动机:

我在 Unity 桌面上使用 Ubuntu 12.04 LTS 2。在我的 .bashrc 文件中,我将几个目录附加到我的 PATH 变量并定义了一些环境变量,例如 JAVA_HOME。当我从终端启动应用程序(运行 bash,我的默认 shell)时,这很好用,但是对于使用 Unity 启动器的几个快捷方式,它们运行的​​应用程序似乎被定义为使用 #!/bin/sh,别名为 /bin/dash,并且它们不会获取 ~/.bashrc 或 ~/.profile 的内容。

我想我可以更改所有这些快捷方式以使用 /bin/bash 而不是 /bin/sh 来强制它接受 .bashrc 更改,但这似乎真的很hacky。

鉴于 Ubuntu 12.04(默认情况下)将 /bin/sh 别名为 /bin/dash 并且我的默认 shell 是 /bin/bash,是否有一个地方我可以选择修改 PATH 并定义环境变量(如果我想要的话)在所有这些情况下在场:

  1. 每当我创建一个非登录 bash shell(统一使用终端)
  2. 每当我创建一个登录 bash shell(例如,通过 ssh 远程登录)
  3. 每当我使用 Unity 应用程序启动器时(假设启动器使用 /bin/sh)。
  4. 每当执行 cron 作业时(假设 /etc/crontab 中的 SHELL=/bin/sh)。

如果我理解正确,我猜是:

  • (1)/(2) 和 (3)/(4) 是不同的,因为 (1)/(2) 是 bash 而 (3)/(4) 是破折号。
  • (1) 和 (2) 是不同的,因为 bash …

linux bash ubuntu-12.04

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

如何获取脚本生成的所有子进程的列表

语境:

用户向我提供他们的自定义脚本来运行。这些脚本可以是任何类型的脚本,例如启动多个 GUI 程序、后端服务的脚本。我无法控制脚本的编写方式。这些脚本可以是阻塞类型,即执行等待直到所有子进程(顺序运行的程序)退出

#exaple of blocking script
echo "START"
first_program 
second_program 
echo "DONE"
Run Code Online (Sandbox Code Playgroud)

或非阻塞类型,即在后台分叉子进程并退出类似的类型

#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
Run Code Online (Sandbox Code Playgroud)

我想要达到什么目标?

用户提供的脚本可以是上述两种类型中的任何一种,也可以是两者的混合。我的工作是运行脚本并等待它启动的所有进程退出,然后关闭节点。如果它是阻塞类型,情况很简单,即获取脚本执行进程的 PID 并等待 ps -ef|grep -ef PID 没有更多条目。非阻塞脚本给我带来了麻烦

有没有办法获得通过执行脚本产生的所有子进程的 PID 列表?任何指针或提示将不胜感激

unix bash shell process bash-scripting

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

当 curl 获得非 200 HTTP 状态时退出 bash 脚本

我有一个 bash 脚本设置来执行一些 curl 请求

for currency in EUR INR JPY
do
  curl -i --data '{"currency": "'$currency'"}' -H "Accept: application/json" -H "Content-Type: application/json" http://0.0.0.0:8080/price && echo
done
Run Code Online (Sandbox Code Playgroud)

如果其中一个 curl 响应以 http 状态 != 200 返回,有没有办法让脚本退出?

我还想保留标准的 curl 输出,例如我不想要一个只打印 http 状态代码的解决方案。

干杯

script bash shell shell-script curl

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

在 boot2docker for Windows 中从主机挂载目录

我正在运行 docker 1.6 并boot2docker在 Windows 8.1 机器上运行。当我使用 Boot2Docker Start 快捷方式时,它会将我带到一个 cygwin bash 提示符,我可以在其中本地运行 docker 命令。

我在从我的用户文件夹安装目录时遇到问题。我试过了:

$ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我收到错误:

invalid value "C:\\Users\\someone\\AppData\\Roaming/Bitcoin:/datadir"
for flag -v: \Users\someone\AppData\Roaming/Bitcoin:/datadir 
is not an absolute path 
See 'c:\Program Files\Boot2DockeForWindows\docker.exe run --help'.
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时,我得到了相同的结果:

$ docker run -d --name abe -v "$APPDATA/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v "/c/users/someone/AppData/Roaming/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v ~/AppData/Roaming/Bitcoin:/datadir poliver/bitcoin-abe
Run Code Online (Sandbox Code Playgroud)

我也试过:

$ docker run -d --name abe …
Run Code Online (Sandbox Code Playgroud)

windows cygwin bash windows-8.1 docker

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

如何让`make`识别别名命令

我正在安装MOOG,当make -f Makefile.maclap我收到错误时:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error 1
Run Code Online (Sandbox Code Playgroud)

经过网上研究,我认为,由于我有 gcc-5,因此我的计算机上不存在命令 g77。

因此,我根据堆栈交换问题alias g77=/usr/local/bin/gfortran-5尝试使用 gfortran 编译 fortran 代码。

现在,当我g77看到gfortran-5: fatal error: no input files compilation terminated,表明它g77正在作为编译的工作。

但是当我make -f Makefile.maclap仍然收到错误时:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error …
Run Code Online (Sandbox Code Playgroud)

bash command-line compile make

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