我可以像这样打印我当前的工作目录
myPrompt$ pwd
/Users/me/myDir
Run Code Online (Sandbox Code Playgroud)
我希望我的外壳看起来像这样
/Users/me/myDir$ pwd
/Users/me/myDir
Run Code Online (Sandbox Code Playgroud)
那可能吗?我该怎么做?
一位同事建议通过以下命令创建一个随机密钥:
tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 32 | xargs
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
tr:非法字节序列
我担心/dev/urandom我的系统上没有。我试着用谷歌搜索找出如何安装这个文件,但我发现是空的。我试过了locate urandom,结果也是空的。(实际上,它找到了手册页,但这无济于事)
如何urandom在我的 Mac OSX 系统上使用?(狮子)
为了从所有 git 命令获得彩色输出,我设置了以下内容:
git config --global color.ui true
Run Code Online (Sandbox Code Playgroud)
但是,这会产生这样的输出git diff,git log

而像git status显示正常这样的命令

为什么仅在某些命令中无法识别转义的颜色代码,我该如何解决?
我xterm-256color在 OS X 10.8.2 和 zsh 上使用 iTerm 2(终端类型)作为我的外壳
zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)
git --version
git version 1.7.9.6 (Apple Git-31.1)
Run Code Online (Sandbox Code Playgroud) 在 Linux 中,据我所知,在所有 Unix 系统中,终端模拟器默认运行交互式、非登录 shell。这意味着,对于 bash,启动的 shell 将:
当启动非登录 shell 的交互式 shell 时,bash 会从
/etc/bash.bashrc和读取并执行命令~/.bashrc(如果这些文件存在)。这可以通过使用--norc选项来禁止 。该
--rcfile文件选项将强制bash读取和文件,而不是执行命令/etc/bash.bashrc和~/.bashrc。
对于登录 shell:
当 bash 作为交互式登录 shell 或作为具有
--login选项的非交互式 shell 调用时,它首先从文件中读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按该顺序查找~/.bash_profile、~/.bash_login、 和~/.profile,并从第一个存在且可读的命令中读取和执行命令。
--noprofile当 shell 启动时可以使用该选项来禁止这种行为。
在OSX上,但是,默认壳(这是bash)的开始在缺省终端(Terminal.app)实际上源~/.bash_profile或~.profile等等。换句话说,它的作用就像一个登录shell。
主要问题:为什么默认的交互式 shell 是 OSX 上的登录 shell?为什么 OSX 选择这样做?这意味着所有提及更改内容的基于 shell 的内容的说明/教程~/.bashrc在 OSX 上都将失败,反之亦然~/.profile。尽管如此,尽管可以对 Apple 提出许多指控,但雇用无能或愚蠢的开发人员并不是其中之一。据推测,他们有充分的理由这样做,那为什么呢?
子问题:Terminal.app 是否真的运行了一个交互式登录 shell …
我在我的 mac 上使用以下命令:
$find . -name “*.java” -exec sed -i ’s/foo/bar/g’ {} \;
Run Code Online (Sandbox Code Playgroud)
而且似乎没有效果。
我在目录中有两个以 .java 结尾的文件,它们都包含 foo 文本。我错过了什么吗?
编辑:征求意见的结果
[aafghani-03:~/test amirafghani]$ find . -name "*.java" -exec sed -i 's/foo/bar/g' {} \;
sed: 1: "./bar.java": invalid command code .
sed: 1: "./foo.java": invalid command code .
Run Code Online (Sandbox Code Playgroud) 命令
$ find ~ -name .DS_Store -ls -delete
Run Code Online (Sandbox Code Playgroud)
适用于 Mac OS X,但
$ find ~ -name __pycache__ -type d -ls -delete
Run Code Online (Sandbox Code Playgroud)
没有 - 找到目录但未删除。
为什么?
附注。我知道我能做到
$ find ~ -name __pycache__ -type d -ls -exec rm -rv {} +
Run Code Online (Sandbox Code Playgroud)
问题是,为什么 find -delete不不工作。
我刚刚格式化了microSD卡,想运行一个dd命令。不幸的是dd命令失败:
$ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2
dd: /dev/rdisk2: Resource busy
$
Run Code Online (Sandbox Code Playgroud)
互联网上的每个人都说我需要先卸载磁盘。当然,可以做到这一点并继续前进。但我想了解为什么/在 OS X 中究竟是什么让设备忙碌?我该如何诊断?
到目前为止,我尝试过:
列出打开的文件:
$ lsof /dev/disk2
$ lsof /dev/disk2s1
$
Run Code Online (Sandbox Code Playgroud)
还:
$ lsof /Volumes/UNTITLED
$
Run Code Online (Sandbox Code Playgroud)列出处理文件的用户:
$ fuser -u /dev/disk2
/dev/disk2:
$ fuser -u /dev/disk2s1
/dev/disk2s1:
$
Run Code Online (Sandbox Code Playgroud)
还:
$ fuser -u /Volumes/UNTITLED
$
Run Code Online (Sandbox Code Playgroud)检查系统消息:
$ sudo dmesg | grep disk
$
Run Code Online (Sandbox Code Playgroud)
还:
$ sudo dmesg | grep /Volumes/UNTITLED
$
Run Code Online (Sandbox Code Playgroud)我的环境
操作系统:
Darwin Eugenes-MacBook-Pro-2.local 15.3.0 Darwin Kernel Version 15.3.0: Thu …Run Code Online (Sandbox Code Playgroud)与 Mac 用户讨论后,我得到了几个版本的 Mac OS X 来源。众所周知,在 BSD 中有一些根,但是有多少,在哪里?
有人说 Mac OS X 有一个 FreeBSD 内核,上面的所有实用程序使它成为特定于 Mac 的操作系统。(这里不讨论用户应用程序,只讨论所有的init、ls、cd、 和其他人。binutils?)
其他人说 Mac OS X 是 Darwin 内核,即纯 Mac,并且 OS 实用程序来自 BSD。
真相在哪里?
我知道 OSX 和 Linux 之间有很多区别,但是是什么让它们如此完全不同,以至于它们根本不兼容?
我需要创建一个 shell 脚本来检查文件是否存在,如果文件不存在,则创建它并继续执行下一个命令,或者只是继续执行下一个命令。我所拥有的不会那样做。
#!/bin/bash
# Check for the file that gets created when the script successfully finishes.
if [! -f /Scripts/file.txt]
then
: # Do nothing. Go to the next step?
else
mkdir /Scripts # file.txt will come at the end of the script
fi
# Next command (macOS preference setting)
defaults write ...
Run Code Online (Sandbox Code Playgroud)
回报是
line 5: [!: command not found
mkdir: /Scripts: File exists
Run Code Online (Sandbox Code Playgroud)
不知道该怎么办。谷歌搜索给我带来的每个地方都表明了一些不同的东西。