程序员:“我要跑路了,告诉我命令行是rm -rf /*
的那我的你当心点。”前端
“rm -rf
” 引起的血案都在菜鸟程序员中常常出现,初初入行的先后端们基础不扎实。 react
容易出现没有图形用户界面 (GUI
)就无从下手,连部署应用都不会的尴尬局面。git
窃觉得,熟悉掌握Linux
下的Vim
和经常使用的命令是每一个程序员的必修课。程序员
并且,连微软都拥抱Linux terminal
,推出了Windows Terminal
。你还有 什么理由不学?github
grep
:查找文件中的关键字$ grep "string" [选项] file
复制代码
使用grep
命令查找文件中的全部React
关键字:django
-i
选项能够在文件中不区分大小写地搜索字符串。它匹配"REACT
","REact
"和"react
"等词。$ grep -i "REact" file
复制代码
-c (count)
选项,能够找到给定字符串/模式匹配的行数$ grep -c "react" index.js
复制代码
更多的选项能够查看下图:后端
ls
:列出当前路径中的文件和目录。$ ls
复制代码
ls
列出当前路径中的文件和目录。ruby
pwd
: 显示工做目录$ pwd
复制代码
cat
:查看文件的内容$ cat somefile.js
复制代码
$ cat filename
复制代码
$ cat > filename
复制代码
只能建立新文件,不能编辑已有文件。 3. 将几个文件合并为一个文件。bash
$cat file1 file2 > file
复制代码
如下例子,将index.js
拷贝一份为index2.js
cookie
echo
:字符串的输出$ echo "some text"
复制代码
这是一个内置命令,主要用于Shell脚本和批处理文件中,以将状态文本输出到屏幕或文件。
touch
:建立文件$ touch somefile
复制代码
touch
命令用于建立没有任何内容的文件。
touch
建立文件和
cat
查看文件内部的。因为新建立的
index2.js
文件为空,所以
cat
不返回任何内容。
如下是cat
和touch
之间的主要区别:
cat
,用于建立包含内容的文件。touch
,建立一个没有任何内容的空文件。mkdir
:建立一个新的空目录$ mkdir some-directory
复制代码
mkdir
在当前路径中建立一个新的空目录
rm
:删除文件/目录$ rm [选项] someFile
复制代码
rm
命令用于删除一个文件或者目录。
选项:
-i
删除前逐一询问确认。-f
即便原档案属性设为惟读,亦直接删除,无需逐一确认。-r
将目录及如下之档案亦逐一删除。rmdir
:删除空目录$ rmdir some-directory
复制代码
若是目录中没有内容,该命令将删除目录。不然返回提示xxx not empty
:
tail
:查看文档的内容$ tail [选项] somefile
复制代码
默认显示文档的最后 10 行
几个经常使用的参数:
-f
,循环读取。tail -f notes.log
复制代码
此命令显示 notes.log
文件的最后 10 行。当将某些行添加至 notes.log
文件时,tail
命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C
)组合键中止显示。+
,从xx行到结尾tail +20 notes.log
复制代码
显示文件 notes.log
的内容,从第 20 行至文件末尾。-c
,最后xx行。tail -c 10 notes.log
复制代码
显示文件 notes.log
的最后 10 个字符:tail
命令在查看崩溃报告或之前的历史记录日志时颇有用:
# tail /var/log/messages
Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2
复制代码
find
:搜索文件$ find path -name filename
复制代码
find
命令能够快速查找文件或目录。当你正在处理具备数百个文件和多个目录的大型项目时,此功能颇有用。
查找全部名为index.js
的文件:
查找指定类型的文件:
$ find . -name "*.js"
复制代码
mv
:移动文件$ mv somefile /to/some/other/path
复制代码
该mv命令将文件或目录从一个位置移动到另外一个位置。
支持移动单个文件,多个文件和目录。
wget
:下载文件的工具$ wget someurl
复制代码
Wget
是一个免费软件包,用于使用HTTP,HTTPS,FTP和FTPS
(最普遍使用的Internet
协议)检索文件。
这是一个非交互式的命令行工具,所以能够很容易地从脚本,CRON做业,不支持X-Windows
的终端等中调用它。
Wget
具备许多使检索大型文件或镜像整个Web或FTP站点变得容易的功能,包括:
REST
和RANGE
恢复停止的下载。UNIX
的操做系统以及Microsoft Windows
上运行HTTP
代理,cookie
和持久的HTTP
链接.tree
:以树状图列出目录的内容常在写文档时须要列一下文件目录结构,这个时候tree
命令就能帮个忙了。某些Linux
、macOS
上没有tree
命令,须要执行安装:
Homebrew
,若没有则执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制代码
tree
命令brew install tree
复制代码
效果:
(base) xxx$ tree
.
├── djangoStudy
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 5 files
复制代码
|
:管道命令一般状况下,咱们在终端只能执行一条命令,而后按下回车执行,那么如何执行多条命令呢?
command1;command2;command3;
简单的顺序指令能够经过 ;
来实现。which command1 && command2 || command3
&&
: 若是前一条命令执行成功则执行下一条命令,和JavaScript
中用法一致&&
命令相反,执行不成功时执行下一个。$?
: 存储上一次命令的返回结果// 栗子:
$ which git>/dev/null && git --help // 若是存在git命令,执行git --help命令
$ echo $?
复制代码
而管道命令则能够衔接各类命令的输出输入,使得连锁操做变得简单。
管道是一种通讯机制,一般用于进程间的通讯(也可经过socket进行网络通讯),它表现出来的形式将前面每个进程的输出(stdout)直接做为下一个进程的输入(stdin)
$ 指令1 | 指令2 | …
复制代码
管道命令的注意事项:
例子: 一、分页显示 /etc
目录 中内容的详细信息
$ ls -l /etc | more
复制代码
二、将一个字符串输入到一个文件中
$ echo "Hello World" | cat > hello.txt
复制代码
若是你以为这篇内容对你挺有启发,我想邀请你帮我三个小忙:
GitHub
博客里拿全部文章的源文件:
前端劝退指南:github.com/roger-hiro/…