bad interpreter: No such file or directory
在Windows环境下用Notepad 写了个shell脚本,上传到Linux平台后运行报错如下:
1
| /bin/sh^M: bad interpreter: No such file or directory
|
---|
| |
经过查阅资料才知道,这是文件格式导致的问题:使用vi/vim进入该shell文件,按下:
进入末行模式,输入set ff
查询文件格式,结果如下:
不同的操作系统使用了不同的符号来换行,可以简单参考下下面的表格:
系统 | 换行符 |
---|
DOS | CR/LF |
UNIX | LF |
MAC | CR |
如果通过Windows下的Git将文件提交到Linux上的服务器,也会收到换行符将被替换的消息通知。而解决方法也很简单,切换文件格式即可,如下:
通过vi/vim进入想要修改的文件,按下:
进入末行模式,输入set fileformat=unix
,接着按下ZZ
或者按下shift z z
或者输入:x
或者:wq
保存修改即可。
判断网络是否连通
ssh命令
有个通用命令,Windows和Linux都能使用,如下:
-v
表示调试模式,会打印出具体日志。-p
表示端口号。如果网络连通则会打印出来连接已建立Connection established
。如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| C:Users10191>ssh localhost -v -p 1313 OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2 debug1: Connecting to localhost [::1] port 1313. debug1: connect to address ::1 port 1313: Connection refused debug1: Connecting to localhost [127.0.0.1] port 1313. debug1: Connection established. debug1: identity file C:\Users\10191/.ssh/id_rsa type 0 debug1: identity file C:\Users\10191/.ssh/id_rsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_dsa type -1 debug1: identity file C:\Users\10191/.ssh/id_dsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_ecdsa type -1 debug1: identity file C:\Users\10191/.ssh/id_ecdsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_ed25519 type -1 debug1: identity file C:\Users\10191/.ssh/id_ed25519-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_xmss type -1 debug1: identity file C:\Users\10191/.ssh/id_xmss-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1 debug1: kex_exchange_identification: banner line 0: HTTP/1.1 400 Bad Request debug1: kex_exchange_identification: banner line 1: Content-Type: text/plain; charset=utf-8 debug1: kex_exchange_identification: banner line 2: Connection: close debug1: kex_exchange_identification: banner line 3: kex_exchange_identification: Connection closed by remote host
|
---|
| |
nc命令
如果服务器里无法使用ssh命令,可以使用下面的命令:
-v
表示可视化,-z
扫描时不发送数据,-w
后面跟的数字表示超时几秒。用法如下:
1 2 3 4 5 6 7
| // 端口能通 C:Users10191>nc -vz -w 2 1.2.3.70 8888 1.2.3.70 (1.2.3.70:8888) open // 端口不能通 C:Users10191>nc -vz -w 2 1.2.3.70 8889 nc: 1.2.3.70 (1.2.3.70:8889): Operation timed out
|
---|
| |
查看端口是否启用
lsof命令
该命令用于列出系统已经打开的所有文件,在Linux中任何事物都以文件形式存在,通过文件可以访问常规数据、网络连接和硬件等。但该命令需要访问核心内存和各种文件,因此需要root用户执行。
1 2 3 4
| lsof -i:port // 查39007端口是否启用 lsof -i:39007
|
---|
| |
netstat命令
| 1 2 3 4
| netstat -aptn // 查39007端口是否启用 netstat -aptn | grep 39007
|
| ---------- | ------------------------------------------------------------ |
| | |
查看和修改Linux的时区
查看当前时区
修改设置Linux服务器时区
1 2 3 4 5 6 7 8
| // Linux通用 tzselect // 仅限于RedHat Linux 和 CentOS timeconfig // 适用于Debian dpkg-reconfigure tzdata
|
---|
| |
复制相应的时区文件,替换系统时区文件;或者创建链接文件
1 2 3 4
| cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime // demo:设置中国时区使用亚洲/上海( 8) cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
---|
| |
查看和修改Linux的时间
查看时间和日期
设置时间和日期
1 2 3 4 5
| // 将系统日期设定成2009年11月3日的命令 date -s 11/03/2009 // 将系统时间设定成下午5点55分55秒的命令 date -s 17:55:55
|
---|
| |
将当前时间和日期写入BIOS,避免重启后失效
附注
1 2 3 4 5
| // 不加参数可以直接看到当前日期时间 date // 不加参数可以直接看到本月月历 cal
|
---|
| |
vi/vim打开文件提示Found a swap file by the name
swap文件来源
在使用vi或vim命令打开一个文件后,就会产生一个.(filename).swp的文件。如果编辑完成之后,正常退出,那么这个swp文件就会被自动删除。但是如果在操作该文件时发生了异常中断(非正常退出),就会在当前目录下生成了一个对应的swp
文件。
在Linux中,以.
开头的文件都是隐藏文件,可以通过使用ll -a
或者ls -a
来查看。
而这种swp文件是隐藏文件,有两个作用:
- 避免用多个程序编辑同一个文件时,产生两个不同的版本。
- 非常规退出时,文件恢复。
删除swp文件
只要将swp文件删除,就不会再出现这个提示。可以通过rm
命令来删除该文件。
禁止生成swp文件
如果想要禁止生成swp文件,可以通过修改vim的配置文件来实现。新建一个~/.vimrc
文件,在文件中添加一行代码:
这样该配置就只会对当前用户生效,你也可以直接修改/etc/vimrc
文件,效果是一样的。
通过swp文件来恢复文件
swp文件可以用来恢复文件,假如你有一个swp文件.my.ini.swp
,可以通过以下命令来恢复:
恢复文件之后可以把swp文件删除,不然每次打开my.ini文件时都会提示。
Linux命令英文全称
参考链接
- bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法
- DOS、Mac 和 Unix 文件格式 UltraEdit使用
- DOS文件转换成UNIX文件格式详解
- Linux系统查看当前时间的命令
- linux下vi操作Found a swap file by the name
- 非正常关闭vi编辑器时会生成一个.swp文件
- Linux怎么查看端口是否启用