我是一名Java开发人员,我正在使用Ubuntu进行开发.该项目是在Windows中使用Eclipse创建的,它使用的是CP1252编码.
要转换为UTF-8,我使用了重新编码程序:
find Web -iname \*.java | xargs recode CP1252...UTF-8
Run Code Online (Sandbox Code Playgroud)
此命令会出现此错误:
recode: Web/src/br/cits/projeto/geral/presentation/GravacaoMessageHelper.java failed: Ambiguous output in step `CR-LF..data
Run Code Online (Sandbox Code Playgroud)
我已经关注它并在此处获得解决方案:http://fvue.nl/wiki/Bash_and_Windows#Recode:_Ambiguous_output_in_step_.60data..CR-LF.27 它说:
将行结尾从CR/LF转换为单个LF:使用vim编辑文件,给出命令:set ff = unix并保存文件.Recode现在应该运行没有错误.
很好,但我有很多文件要删除CR/LF字符,我无法打开每个人来做它.Vi不为bash操作提供命令行的任何选项.
sed可以用来做这个吗?怎么样 ?
谢谢=)
我一直在使用d2u转换行结尾.安装Puppy Linux后,我发现它没有附带d2u,但是dos2unix.然后我注意到默认情况下Ubuntu都丢失了.
转换行结尾的另一种方法是什么?
我有一个Linux服务器和许多具有许多操作系统的客户端.服务器从客户端获取输入文件.Linux具有行尾char LF,而Mac具有行尾char CR,而Windows具有行尾char CR + LF
服务器需要作为行尾char LF.使用java,我想确保该文件将始终使用linux eol char LF.我怎样才能实现它?
我有一个 docker-compose.yml 文件,我在其中定义了 php 的图像和构建。它是为带有 php、nginx 和 postgresql 和 postgis 的 Symfony 应用程序制作的:
version: '2'
services:
front:
image: nginx
ports:
- "81:80"
links:
- "engine:engine"
- "db:db"
volumes:
- ".:/home/docker:ro"
- "./docker/front/default.conf:/etc/nginx/conf.d/default.conf:ro"
engine:
build: ./docker/engine/
volumes:
- ".:/home/docker:rw"
- "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro"
links:
- "db:db"
working_dir: "/home/docker"
db:
image: camptocamp/postgres:9.6
ports:
- "5433:5432"
environment:
- "POSTGRES_DB=pfe"
- "POSTGRES_PASSWORD=admin"
- "POSTGRES_USER=admin"
- "PGDATA=/var/lib/postgresql/data/pgdata"
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上一切正常,但是当我尝试在 Windows 10 上运行相同的环境时,出现错误。
docker-compose exec engine bin/console doctrine:schema:create
/usr/bin/env: 'php\r': No such file or directory
Run Code Online (Sandbox Code Playgroud) 这个问题的目的是提供一个答案,每天的问题,其答案是"你中有DOS行结束",所以我们可以简单地关闭他们,因为这一个的副本,而无需重复同样的答案,令人生厌.
注意:这不是任何现有问题的副本.本问答的目的不仅仅是提供"运行此工具"的答案,而且还要解释这个问题,以便我们可以在这里指出任何有相关问题的人,他们会找到一个明确的解释,为什么他们在这里也被指出作为运行的工具,解决他们的问题.我花了几个小时阅读所有现有的问答,他们都缺乏对问题的解释,可用于解决问题的替代工具,和/或可能的解决方案的优缺点/警告.他们中的一些人已经接受了一些非常危险且永远不应该使用的答案.
现在回到将导致推荐的典型问题:
我有一个包含1行的文件:
what isgoingon
Run Code Online (Sandbox Code Playgroud)
当我使用这个awk脚本打印它来反转字段的顺序时:
awk '{print $2, $1}' file
Run Code Online (Sandbox Code Playgroud)
而不是看到我期望的输出:
isgoingon what
Run Code Online (Sandbox Code Playgroud)
我得到的行应该在行的末尾出现在行的开头,覆盖行开头的一些文本:
whatngon
Run Code Online (Sandbox Code Playgroud)
或者我将输出拆分为2行:
isgoingon
what
Run Code Online (Sandbox Code Playgroud)
问题是什么,我该如何解决?
我正在尝试在 unix 服务器上运行我在 Rstudio 中编写的脚本(在下面输入命令)。当我运行该命令时,它返回以下错误消息:
sbatch -N 1 --mem=10000 -p all ./myscript.R
Run Code Online (Sandbox Code Playgroud)
sbatch:错误:批处理脚本包含 DOS 换行符 (\r\n),而不是预期的 UNIX 换行符 (\n)
我该如何解决这个错误?我已经必须输入“#!/usr/bin/env Rscript #SBATCH --get-user-env”才能让 ssh 服务器意识到它是一个 R 脚本。
谢谢你!
我有一个相对简单的 dockerfile
FROM python:3.6.5-alpine
COPY somebinary /usr/local/bin/
COPY install.sh /install.sh
RUN /install.sh
Run Code Online (Sandbox Code Playgroud)
二进制文件被复制得很好(当我运行容器进行检查时),但脚本似乎没有被复制,所以当我尝试运行它时,我得到:
Step 4/5 : COPY install.sh /install.sh
---> 38ecc6dbad13
Step 5/5 : RUN /install.sh
---> Running in 0b06962d6e1b
/bin/sh: /install.sh: not found
The command '/bin/sh -c /install.sh' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)
我制作的任何其他测试文件也会发生同样的情况,当图像运行时它们不可用。其他人已经成功运行了完全相同的脚本,所以我怀疑这可能与我在 Windows 上通过 Git Bash 运行 docker 的事实有关?可能是权限问题吗?
e:我去尝试通过 powershell 运行并得到同样的错误,所以也许 git bash 是一个红鲱鱼
在我的项目中,有很多种环境(Windows、Linux、Mac OS)。
有些人一开始对Git的设置错误,所以在git存储库中,有些文件与CRLF混淆了(我希望git存储库中的所有文件都是LF)。
我怎样才能快速将repo中现有的CRLF全部修复为LF(我的开发环境仅限于一些简单的编辑器 - Visual Studio,Sakura Editor,...)。一行一行地修改结尾非常耗时。
感谢任何建议。
dos2unix ×4
docker ×2
java ×2
sed ×2
windows ×2
awk ×1
bash ×1
batch-file ×1
command-line ×1
end-of-line ×1
git ×1
lf ×1
line-breaks ×1
line-endings ×1
linux ×1
newline ×1
php ×1
r ×1
shell ×1
unix ×1
vim ×1