标签: osx

从每个文件中删除换行符、空格和制表符

假设我有一个包含 10K 文本文件的文件夹。我想从每个文件中删除每个空格、 制表符换行符

我怎样才能有效地做到这一点?

osx shell-script text-processing

0
推荐指数
1
解决办法
4468
查看次数

是什么导致“意外标记‘do’附近出现语法错误”,我该如何解决?

我不断收到此错误:

./install.sh 
./install.sh: line 28: syntax error near unexpected token `do'
./install.sh: line 28: `                do'
Run Code Online (Sandbox Code Playgroud)

运行此代码时(正在进行中):

# Set the prompt string:
PS3='Choose folder: ';

function choose() {

    # This works:
    #select folder;
    #do test -n "$folder" && echo You chose: $REPLY\) $folder && break;
    #echo 'Wrong entry, try again.';
    #continue;
    #done;

    select folder;
    do
        case $folder in
            'q')
                echo 'Exiting …';
                break;
                ;;
            *)
                do
                    test -n '$folder' && echo You chose: $REPLY\) $folder && break;
                    echo 'Wrong entry, …
Run Code Online (Sandbox Code Playgroud)

osx bash select

0
推荐指数
1
解决办法
3944
查看次数

我的复制命令有什么问题?

我对我的 mac 做了以下操作,目的是复制/etc进去 /tmp尝试一些东西:

$cd /tmp    
$cp -a /etc .  
$cd etc  
-bash: cd: etc: No such file or directory  
$ls -all etc  
lrwxr-xr-x@ 1 jim jim 11 Dec 18 17:44 etc -> private/etc    
Run Code Online (Sandbox Code Playgroud)

发生了什么?我不明白。这是什么etc -> private/etc,为什么etc不是 中的目录/tmp

osx cp etc symlink

0
推荐指数
1
解决办法
92
查看次数

OS X:BSD `find /etc` 只打印 `/etc`

find/etc明显的方式调用时无法列出目录的内容,我不确定解释是什么。

find /etc只是显示/etc,即使目录中有其他文件。

$ find /etc
/etc
Run Code Online (Sandbox Code Playgroud)

$ find /./etc
/./etc
Run Code Online (Sandbox Code Playgroud)

并作为根

$ sudo find /etc
/etc
Run Code Online (Sandbox Code Playgroud)

但是,/etc运行时可以看到里面的一些文件find /etc/.

$ find /etc/. | head
find: /etc/./cups/certs: Permission denied
/etc/.
/etc/./afpovertcp.cfg
/etc/./afpovertcp.cfg~orig
/etc/./aliases
Run Code Online (Sandbox Code Playgroud)

其他命令,例如ls显示/etc...的内容

$ ls -1 /etc | head
afpovertcp.cfg
afpovertcp.cfg~orig
aliases
aliases.db
Run Code Online (Sandbox Code Playgroud)

这是预期的行为find吗?

osx find

0
推荐指数
1
解决办法
84
查看次数

创建后运行别名

alias xxx=echo && xxx ok不起作用,因为别名在之后不可用&&。但一行代码最适合我的任务。

如何定义别名并在 bash 的同一行中使用?

osx shell alias

0
推荐指数
1
解决办法
179
查看次数

如果要检查的文件安装在不同的位置,如何验证校验和?

我使用 OS X 并有几个从不同的外部硬盘生成的校验和文件。

如果校验和文件与要检查的文件位于同一位置,那么我可以简单地运行,例如:

shasum -c sums.sha1
Run Code Online (Sandbox Code Playgroud)

但就我而言sums.sha1,位于~/Desktop/sums.sha1并且要验证的文件位于/Volumes/fr-ubb-1(外部驱动器,只读)。

我知道不可能将位置参数传递给shasum. 使用不同位置的文件运行校验和文件验证的最佳做法是什么?

osx hashsum

0
推荐指数
1
解决办法
133
查看次数

mv 引发错误消息但文件已移动

我承认我不是 unix 命令的专家,但我将一个文件移动到另一个目录并收到一条错误消息 - 但该文件已被移动。为什么会mv: rename to to /Users/billtubbs/Library/Script Libraries/to: No such file or directory引发此消息“ ”?是不是因为 Library 是一个受保护的文件夹而我应该使用sudo ...

这是在 Mac OS X 10.13.4 上的终端中:

BillsMacBookPro:Scripts billtubbs$ ls ~/Library/'Script Libraries'
BillsMacBookPro:Scripts billtubbs$ mv FileHandlers.scpt to ~/Library/'Script Libraries'
mv: rename to to /Users/billtubbs/Library/Script Libraries/to: No such file or directory
BillsMacBookPro:Scripts billtubbs$ ls
Address Book Scripts                    Terminal scripts
Applications                            Test Script read html page .scpt
Bus Data                                Test script parse html form.scpt
Firefox scripts                         TextDataFromFile.scpt
ListHandlers.scpt                       TextHandlers.scpt
Mail …
Run Code Online (Sandbox Code Playgroud)

osx terminal darwin mv

0
推荐指数
1
解决办法
254
查看次数

在bash_profile中创建函数时export -f语句的作用

我发现一个文件通过以下方式bash_profile使用了该语句:export -f

# Run xelatex and BibTeX
function xelatex_bibtex {
    xelatex -shell-escape "${1}.tex" &&
        bibtex "${1}" &&
        xelatex -shell-escape "${1}.tex" &&
        xelatex -shell-escape "${1}.tex"
}
export -f xelatex_bibtex
Run Code Online (Sandbox Code Playgroud)

然而,没有定义的函数export -f似乎工作得很好:

# Search for synonyms
function syn {
    wn "${1}" -synsn
}
Run Code Online (Sandbox Code Playgroud)

在使用方面创建便利功能时,什么是作用export -f以及什么被认为是良好实践?bash_profileexport

osx function bash-functions bash-profile

0
推荐指数
1
解决办法
2375
查看次数

为什么 zsh 在 OS X 上错误地列出了我的提示?

我想弄清楚为什么 zsh 的提示看起来像这样:

zsh 提示示例

(以文本形式):

\[\]\u\[\] at \[\]\h\[\] in \[\]\w\[\]$(__git_ps1) \[\]$(git_diff)\n\[\]($(date +'1:MikesMBP.local ')) \[\]$\[\]
Run Code Online (Sandbox Code Playgroud)

我希望它在调用 zsh 之前像在 bash 中一样正常列出我的密码和用户名。这是我的 .zshrc:

# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory autocd beep extendedglob nomatch notify
bindkey -v
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/Users/mike/.zshrc'

autoload -Uz compinit
compinit
# End of lines added by compinstall
Run Code Online (Sandbox Code Playgroud)

这只是第一次启动 zsh 时创建的标准配置。我已经尝试了内置的 OS X zsh 和自制软件的 zsh,它们产生了相同的错误。你看到会导致这种情况的东西吗?

osx shell prompt zsh

0
推荐指数
1
解决办法
306
查看次数

尝试添加 ~/.bash_profile 后,所有命令均无效

我试图添加JAVA_HOME路径变量。
我下载了 Java JDK 并完成了以下操作:

  • nano ~/.bash_profile
  • 添加了以下几行并保存了文件:

    export JAVA_HOME=$(/usr/libexec/java_home)
    
    export PATH=$JAVA_HOME/bin=$PATH
    
    Run Code Online (Sandbox Code Playgroud)
  • source ~/.bash_profile

之后,我尝试使用以下命令再次打开 bash 文件:

nano ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

表明:

-bash: nano: command not found
Run Code Online (Sandbox Code Playgroud)

我尝试过其他的命令太多,如brew doctorcurlvimjava -version等。所有这些节目不能找到命令。

解决这个问题的方法是什么?如何恢复我的系统?

更新:我使用的解决方案:

我运行以下命令来设置 Mac OS 在命令行中使用的标准默认路径:

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
Run Code Online (Sandbox Code Playgroud)

osx bash-profile

0
推荐指数
1
解决办法
1327
查看次数

在 Mac OS 恢复模式下,为什么 mv 在 bash 3.2 中的这个(bash)shell 脚本中失败?

我正在尝试在恢复模式期间在 Mac 上使用 bash 脚本移动一些文件。启动进入恢复后,我可以通过在终端中手动输入命令来成功移动文件。然而,一个目标是记录该过程并使其可移植,因此需要一个脚本。当我尝试mv从脚本运行命令时,出现错误No such file or directory。当我手动输入文件路径时,我已经确认该命令可以正确执行,但脚本继续出错。

我曾尝试使用双引号 ( ") 和美元符号 ( $)、美元符号 ( $) 和大括号 ( {}) 以及其他一些用于变量评估的组合。它们都因相同的错误而失败。我还尝试在 src 上使用尾部斜杠,在 src 上使用通配符 ( *),并在 src 和 dest 上使用尾部斜杠。我完全被难住了。这可能是特定于 MacOS 恢复模式的,但是既然提示宣布-bash-3.2,这肯定是 bash 3.2 shell?

请帮助 - 甚至我们的高级开发人员都被这个问题难住了......
这与不正确的解析有关吗?我注意到/*目的地的末尾有一个,我没有指定......

脚本是:

#! /bin/bash
#_# Setup
echo 'Setting up variables'
SYSDIR='/Volumes/Macintosh\ HD/System'
EXTDIR='Library/Extensions'
USERDIR='/Volumes/Macintosh\ HD/Users/admin'

#_# Bluetooth
echo 'Mitigating Bluetooth'
BLUE='IOBluetoothFamily.kext'
mkdir -p "$USERDIR/delete_me/$BLUE"
mv "$SYSDIR/$EXTDIR/$BLUE"/* "$USERDIR/delete_me/$BLUE"

echo …
Run Code Online (Sandbox Code Playgroud)

osx bash shell-script system-recovery

0
推荐指数
1
解决办法
351
查看次数

Mac bash 上的日期命令

我在 Ubuntu 中有一个小脚本,我想在 Mac 上使用。该date功能是不一样的,所以它没有语法上

这是原始的 Ubuntu BASH 脚本;

function pass () {
    pass="$(ldapsearch -Y GSSAPI -Q -H ldap:///dc%3Dant%2Cdc%3Damazon%2Cdc%3Dcom -b DC=ant,DC=amazon,DC=com -s sub cn=$1 | grep -Ew 'pwdLastSet:' | awk '{print $2}')"
    pass_epoch="$(((pass / 10000000) - 11644473600))"
    pass_epoch_exp="$((pass_epoch + 86400*90))"
    today="$(date +%s)"
    countdown_epoch="$(expr $pass_epoch_exp - $today)"
    countdown="$((countdown_epoch / 86400))"
    pwdSet_date="$(date -d @$pass_epoch)"
    expires_date=$(date -d "@$((pass_epoch + 86400*90))")
    echo "pwdLastSet: "$pwdSet_date
    echo "pwdExpires: "$expires_date
    echo "  daysLeft: "$countdown
}

usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] …
Run Code Online (Sandbox Code Playgroud)

osx bash date

0
推荐指数
1
解决办法
5400
查看次数

递归(嵌套)grep 给出“无效字符范围”错误

我有一个文件test.xml(如下所示)。这个grep有效:

grep '<appointment-id internal:ref=1.2.3/>' test.xml
Run Code Online (Sandbox Code Playgroud)

输出是:

    <appointment-id internal:ref=1.2.3/>
Run Code Online (Sandbox Code Playgroud)

但这失败了:

grep "$(grep '<appointment-id internal:ref=1.2.3/>' test.xml)" test.xml
Run Code Online (Sandbox Code Playgroud)

输出是:

grep: invalid character range
Run Code Online (Sandbox Code Playgroud)

内容test.xml

<note>
    <to>Jim</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Some text</body>
    <appointment-id internal:ref=1.2.3/>
</note>
Run Code Online (Sandbox Code Playgroud)

我已将两个grep命令(简单命令和嵌套命令)放入带有set -x. 这是该脚本的精确副本?&?粘贴:

set -x
grep '<appointment-id internal:ref=1.2.3/>' test.xml
grep "$(grep '<appointment-id internal:ref=1.2.3/>' test.xml)" test.xml
exit 0
Run Code Online (Sandbox Code Playgroud)

这是它的输出:

++ grep '<appointment-id internal:ref=1.2.3/>' test.xml
    <appointment-id internal:ref=1.2.3/>
+++ grep '<appointment-id internal:ref=1.2.3/>' test.xml
++ grep '    <appointment-id internal:ref=1.2.3/>' test.xml
grep: invalid character range
++ exit …
Run Code Online (Sandbox Code Playgroud)

osx grep regular-expression

-1
推荐指数
1
解决办法
480
查看次数