Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从终端创建多行文件时如何缩进?_Linux_Bash_Ubuntu - Fatal编程技术网

Linux 从终端创建多行文件时如何缩进?

Linux 从终端创建多行文件时如何缩进?,linux,bash,ubuntu,Linux,Bash,Ubuntu,因此,我需要一个命令使输出如下所示: [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = ssh://git@github.com/user/address.git f

因此,我需要一个命令使输出如下所示:

    [core]
            repositoryformatversion = 0
            filemode = true
            bare = false
            logallrefupdates = true
    [remote "origin"]
            url = ssh://git@github.com/user/address.git
            fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
            remote = origin
            merge = refs/heads/master
我试过以下方法

printf "[core]\n    repositoryformatversion = 0\n   filemode = true\n   bare = false\n  logallrefupdates = true\n   logallrefupdates = true\n[remote "origin"]\n    url = ssh://git@github.com/user/address.git\n   fetch = +refs/heads/*:refs/remotes/origin/*\n[branch "master"]\n    remote = origin\n   merge = refs/heads/master" > config
但是它创建了一个包含这些内容的文件

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
logallrefupdates = true
[remote origin]
url = ssh://git@github.com/user/address.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch master]
remote = origin
merge = refs/heads/master
config='
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = ssh://git@github.com/user/address.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
'

printf '%s\n' "$config" > config

我如何才能使它以第一次声明的格式输出?

在“\n”之后可以使用“\t”来创建选项卡。

在“\n”之后可以使用“\t”来创建选项卡。

根本不要使用
printf
。只需将here文档与
cat
一起使用即可:

cat <<'EOF' > config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = ssh://git@github.com/user/address.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
EOF

根本不要使用
printf
。只需将here文档与
cat
一起使用即可:

cat <<'EOF' > config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = ssh://git@github.com/user/address.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
EOF

你写的应该有用。也许您使用的是带有内置printf的非标准shell。或者您定义了printf的别名或函数。请创建不带缩进的文件,然后:
sed-E的/^[^[]/\t&/'file
saavedra29的答案有效您所写的应该有效。可能您使用的是带有内置printf的非标准shell。或者您定义了printf的别名或函数。创建文件时不带缩进,然后:
sed-E's/^[^]/\t&/'file
saavedra29的答案有效。你能解释为什么这更好吗?我对TerminalPrimary是新手,它更可读。输入看起来像输出,而不是嵌入
\n
转义序列来表示换行符。你能解释为什么这更好吗?我对TerminalPrimary是新手,它更可读。输入看起来像是ike输出,而不是嵌入
\n
转义序列来表示换行符。