赞
踩
命令 | 描述 |
---|---|
cat | 在面板打印文件内容,只读文件 |
sed | 编辑文件 |
sudo -i | 切换管理员 |
& | 后台运行,解放窗口live-server & |
/etc/bashrc
所有用户/root/.bashrc
root用户/home/ [username] /.bashrc
适用于一般用户username~/.bashrc
当前用户#! /bin/bash
webdir="/home/ubuntu/webapp"
# 切换工作目录
cd "$webdir"
echo "开始在${webdir}目录下更改"
git pull
cd "dist"
tar -cf myblob.tar ./*
可以将需要的文本输出到文件中。更改文件内容,输出需要用到输出重定向。
echo -[en] "Hello Word" \\-e转义 -n换行
echo -e "\033[31m 红色字体 \033[0m"
echo -e "\033[32m 绿色字体 \033[0m"
echo -e "\033[33m 黄色字体 \033[0m"
echo -e "123\n123" text.txt
//循环输出
for((i=0;i<10;i++));
do
echo -ne "\033[3${i}m $i \033[0m"
done
echo ""
history [-cw] [历史命令保存文件]
-c:clear
-w:write
alias 别名='原命令'
vim /root/.bashrc
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
> #覆盖输出
>> #追加输出
0>> #输出
>> #标准输出
2>> #错误输出
date >> out.log
ll error 2>> err.log
命令 | 格式 | 作用 |
---|---|---|
; | 命令1 ; 命令2 | 按顺序执行 |
&& | 命令1 && 命令2 | 命令1正确执行命令2会执行 |
|| | 命令1 || 命令2 | 命令1不正确执行命令2会执行 |
命令 | 格式 |
---|---|
-m num | 显示最大匹配次数 |
-n | 显示行号 |
-r | 递归查询 |
-i | 不区分大小写 |
-l | 只列出匹配的文件名 |
-L | 列出不匹配的文件名 |
-w | 只匹配整个单词,而不是字符串的一部分 |
-C | 匹配的上下文分别显示[number]行 |
grep demo text.txt
grep demo -r * //查询当前目录所有文件包含目录
grep console -rnC 2 *
grep 123 -nr *|grep log -n //
grep -nd skip demo * //跳过子目录
#! /bin/bash
ARGS=`grep -m 1 -n 'asd' ascll.txt|cut -f1 -d:`
`sed -ie "${ARGS}s/asd/test_repllace/" ascll.txt`
所有带有输出的都可以使用输出重定向来新建文件,并且将内容写进文件。或者重写或者追加。
文件编码:set fileencoding :set fileencoding=utf-8
命令 | 描述 |
---|---|
-i | 在源文件上修改 |
-n | 只会把经过 sed 命令处理的行输出到屏幕上 |
s | 格式为“行范围s/旧字串/新字串/g” |
d | 删除,删除指定的行 |
a \ | 追加,在当前行后添加一行或多行 |
i \ | 插入, 在当前行前插入一行或多行 |
-f | 脚本文件名:从 sed 脚本中读入 sed 操作 |
`` | |
`` |
sed 's/asd/aaaaaa/' ascll.txt
sed -e 's/asd/aaaaaa/' ascll.txt
sed -ie 's/asd/aaaaaa/' ascll.txt
sed '3i hello\nworld\nwl' text.txt
cut -b 2,3 ascll.txt
cut -f1 -d:
用法:
command 1 | command 2
他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
str='asdfgh'
echo ${#str} #获取长度->6
str=plkj
echo "length:${#str}" #拼接->length:4
echo ${#str}123qwe"asd" #拼接->4123qweasd
echo "qwe"+"asd" #拼接->qwe+asd
str=123456
echo ${str:1:2} #截取-> 23
命令 | 格式 |
---|---|
match | |
substr | 截取expr substr STRING START NUM |
index | 抓取第一个字符数字串出现的位置 |
length | 计算字串长度 |
|、&、<、<=、=、+、=、*、% | 运算 |
expr length qwe #->3
expr index 123456 4 #->4
expr length qwe #->3
expr substr 123456 2 2 #->23
expr 1 + 1 # ->2
expr 1 \* 3 # ->3
命令 | 描述 |
---|---|
-b | 二进制文件 |
-B | 只在设置的目录下查找二进制文件 |
-m | 说明文件 |
-s | 原始代码文件 |
-u | 查找不包含指定类型的文件 |
find path -option [ -print ] [ -exec -ok command ] {} \;
命令 | 描述 |
---|---|
-name | 根据文件名称查找(严格区分大小写,如果文件名中间有空格,则必须把文件名用双引号引起来) |
-iname | 根据文件名查找(不区分大小写) |
-regex | “PATTERN” 正则表达式匹配。-regex不是匹配文件名,而是匹配完整的文件名(包括路径) |
-user | 根据文件属主进行查找 |
-group | 根据文件属组进行查找 |
-uid | 根据文件的uid查找 |
-gid | 根据用户的gid查找 |
find ./* -iname Test.js
find /var/log/ -name "*.log"
find ./* -regex ".*/te[^/\.]*$" //找以te开头的目录
find ./* -regex ".*/te[^/]*\..*$" //找以te开头的带后缀的文件
删除后缀
find . -name '*.exe' -type f -print -exec rm -rf {} \;
可以列出本机所有java进程的pid。
jps [ options ] [ hostid ]
命令 | 格式 |
---|---|
-q | 仅输出VM标识符,不包括class name,jar name,arguments in main method |
-m 输出main method的参数
-l 输出完全的包名,应用主类名,jar的完全路径名
-v 输出jvm参数
-V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域, 1 表 示 第 一 个 域 , 1表示第一个域, 1表示第一个域,n表示第n个域。默认域分隔符是"空白键" 或 “[tab]键”
awk '{print $2}' data.txt # 默认空格和Tab键分隔,打印第二段
awk -F, '{print $2}' data.txt # 逗号分隔,打印第二段
# 是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -cf all.tar *.jpg
# 解压 tar包
tar -xvf file.tar
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的
命令 | 描述 |
---|---|
-c | 建立压缩档案create |
-x | 解压 |
-t | 查看内容 |
-r | 向压缩归档文件末尾追加文件 |
-u | 更新原压缩包中的文件 |
这是配合使用的命令
命令 | 描述 |
---|---|
-z | 有gzip属性的 |
-j | 有bz2属性的 |
-Z | 有compress属性的 |
-v | 显示所有过程 |
-O | 将文件解开到标准输出 |
下面的参数-f是必须的
命令 | 描述 |
---|---|
-f | 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。filename |
ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等
命令 | 描述 |
---|---|
-A | 所有的进程均显示出来,与 -e 具有同样的效用 |
-u | 以用户为主的进程状态 |
-a | 显示现行终端机下的所有进程,包括其他用户的进程 |
-x | 通常与 a 这个参数一起使用,可列出较完整信息 |
apt-get install lsof
List Open Files 列出当前系统打开文件的工具。
命令 | 描述 |
---|---|
lsof abc.txt | 显示开启文件abc.txt的进程 |
lsof -c abc | 显示出以字母 abc 开头进程现在打开的文件 |
lsof -p 1234 | 列出进程号为1234的进程所打开的文件 |
lsof -g gname/gid | 显示归属gname或gid的进程情况 |
lsof -u uname/uid | 显示归属uname或uid的进程情况 |
lsof +d /usr/local/ | 显示目录下被进程开启的文件 |
lsof +D /usr/local/ | 同上,但是会搜索目录下的目录,时间较长 |
lsof -i | 用以显示符合条件的进程情况 |
apt-get install net-tools
netstat -tap | grep node
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
命令 | 描述 |
---|---|
-a | (all)显示所有选项,netstat默认不显示LISTEN相关 |
-t | (tcp)仅显示tcp相关选项 |
-u | (udp)仅显示udp相关选项 |
-n | 拒绝显示别名,能显示数字的全部转化成数字。(重要) |
-l | 仅列出有在 Listen (监听) 的服務状态 |
-p | 显示建立相关链接的程序名(macOS中表示协议 -p protocol) |
-r | 显示路由信息,路由表 |
-e | 显示扩展信息,例如uid等 |
-s | 按各个协议进行统计 (重要) |
-c | 每隔一个固定时间,执行该netstat命令。 |
tail -f 100 log.log
循环查看日志
命令 | 描述 |
---|---|
-f | 循环读取 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
-c<数目> | 显示的字节数 |
-n<行数> | 显示文件的尾部 n 行内容 |
–pid=PID | 与-f合用,表示在进程ID,PID死掉之后结束 |
-q | –quiet, --silent 从不输出给出文件名的首部 |
-s | –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 |
head -2 log.log
命令 | 描述 |
---|---|
-n | 显示文件的前n行 |
-c n | 显示文件的前n个字节 |
more功能类似 cat,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
more -10 -c log.log
参数 | 描述 |
---|---|
+n | 从笫n行开始显示 |
-n | 定义屏幕大小为n行 |
+/pattern | 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 |
-c | 从顶部清屏,然后显示 |
-d | 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能 |
-l | 忽略Ctrl+l(换页)字符 |
-p | 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似 |
-s | 把连续的多个空行显示为一行 |
-u | 把文件内容中的下画线去掉 |
命令 | 描述 |
---|---|
Enter | 向下n行,需要定义。默认为1行 |
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,服务器之间复制文件,而且scp传输是加密的。
scp local_file remote_username@remote_ip:remote_folder
参数 | 描述 |
---|---|
-r | 递归复制整个目录 |
-q | 不显示传输进度条 |
-p | 保留原文件的修改时间,访问时间和访问权限 |
-C | 允许压缩 |
-F ssh_config | 指定一个替代的ssh配置文件,此参数直接传递给ssh |
从远程服务器复制到本地服务器:
scp remote_username@remote_ip:remote_folder local_folder
# example
scp -r wangli@172.16.126.155:/home/wangli/workspace/commons-lang-2.6 ./
后台运行程序
nohup live-server --port=10086 &
exit
内存使用量
硬盘使用量
wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。参考
# 下载网页 小些o
curl -o linux.html http://www.linux.com
# 下载文件 大写O
curl -O http://download.redis.io/redis-stable.tar.gz
安装应用。
# 更新本地cache
sudo apt-get update
# 搜索
sudo apt-cache search npm
# 安装mysql
sudo apt-get install mysql-server mysql-client
高级
# 卸载但不删除配置
apt-get remove xxxx
# 卸载并且删除相关配置
sudo apt-get remove nodejs --purge
# 卸载所有自动安装且不再使用的软件包
sudo apt-get autoremove xxxx
常用;
sudo apt-get install git
sudo apt-get install nodejs-legacy
sudo apt-get install npm
sudo npm install npm@latest -g
sudo npm install -g n
sudo apt-get install nginx
安装 nginx
定时任务
1、Linux和Mac下操作crontab都是一致的
2、配置文件都在/etc/crontab下,如果没有就创建。
3、测试发现直接使用crontab -e命令创建的定时任务是放在临时文件夹的,重启会删除,并且与/etc/crontab文件无关联。
第一步:
crontab -e
进入编辑界面
第二步:配置定时作业输入
* * * * * /bin/echo "11" >> /Users/apple/test/test/shell/log.log
简单的打印任务,每秒执行一次,后面的路径记得使用绝对路径。
# 全局设置
vim ~/.vimrc
# 设置行号
:set nu
# 删除多行
:1,15d
# 设置tab
:set expandtab # 将tab按键设置为空格
:set ts=4 # 设置为四个空格
# 使用鼠标
set mouse=a # n 普通模式,v 可视模式,i 插入模式,c 命令行模式,a 以上所有的模式
set mouse= # 不设置任何模式,关闭鼠标模式
# 显示匹配的括号
set showmatch
# 安装插件管理器
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
# 安装vue插件
git clone https://github.com/posva/vim-vue.git ~/.vim/pack/plugins/start/vim-vue
# 或者
vim
:PluginInstall "posva/vim-vue"
配置信息:
set nocompatible " 这是必需的 filetype off " 这是必需的 " 在此设置运行时路径 set rtp+=~/.vim/bundle/Vundle.vim " vundle初始化 call vundle#begin() " 或者传递一个 Vundle 安装插件的路径 "call vundle#begin('~/some/path/here') " 让 Vundle 管理 Vundle, 必须 Plugin 'VundleVim/Vundle.vim' " 下面是不同支持幅度的例子 " 保持 Plugin 命令 在 vundle#begin 和 end 之间 " plugin 在 GitHub 仓库 Plugin 'tpope/vim-fugitive' " 来自http://vim-scripts.org/vim/scripts.html的插件 " Plugin 'L9' " 未托管在GitHub上的Git插件 " Plugin 'git://git.wincent.com/command-t.git' " 本地机器上的git软件库(即编写自己的插件时) " Plugin 'file:///home/gmarik/path/to/plugin' " sparkup vim脚本在名为vim的该软件库子目录下。 " 传递路径,合理设置运行时路径。 Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " 安装 L9 并避免名称冲突 " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} "每个插件都应该在这一行之前 call vundle#end() " 这是必需的 filetype plugin indent on " 这是必需的 " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。