1. 切换用户
su – oracle — 使用户环境变量生效
2. 检查监听
lsnrctl status — 查看状态
lsnrctl start — 启动监听
3. 登录SqlPlus
sqlplus /nolog
4. 登录数据库
sqlplus / as sysdba
5. 启动数据库
startup
6.关闭数据库
shutdown

xuenhua’s 站点
1. 切换用户
su – oracle — 使用户环境变量生效
2. 检查监听
lsnrctl status — 查看状态
lsnrctl start — 启动监听
3. 登录SqlPlus
sqlplus /nolog
4. 登录数据库
sqlplus / as sysdba
5. 启动数据库
startup
6.关闭数据库
shutdown
我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具–curl。
curl
curl是一个向服务器传输数据的工具,它支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议,这里只针对http进行讲解一些常用的用法,具体安装请自行搜索。
打开百度
curl http://www.baidu.com
接着你就会看到百度的页面源代码输出。
如果要把这个网页保存下来,可以这样:
curl http://www.baidu.com > /tmp/baidu.html
你会看到一条进度条,然后源码就被重定向到了/tmp/baidu.html。
或者:
curl -o /tmp/baidu.html http://www.baidu.com
GET请求
默认直接请求一个url就是发出一个get请求,参数的话直接拼接在url里就好了,如
curl http://www.baidu.com/s?wd=curl
上述请求会上百度发起一条查询请求,参数是wd=url
POST请求
curl -d “name=test&page=1” http://www.baidu.com
-d 参数指定表单以POST的形式执行。
只展示Header
curl -I http://www.baidu.com
可以看到只返回一些header信息
HTTP/1.1 200 OK
Date: Fri, 07 Nov 2014 09:48:58 GMT
Content-Type: text/html; charset=utf-8
Connection: Keep-Alive
Vary: Accept-Encoding
Set-Cookie: BAIDUID=E9DB2F0AC95CB6BFDAD9D5CFDCED0A12:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUPSID=E9DB2F0AC95CB6BFDAD9D5CFDCED0A12; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=9725_9165_1465_7800_9452_9498_6504_9509_6018_9700_9757_9531_9478_7798_9453_9793_9024; path=/; domain=.baidu.com
P3P: CP=” OTI DSP COR IVA OUR IND COM “
Cache-Control: private
Cxy_all: baidu+3057b288b211c770a1463cc8519b62a8
Expires: Fri, 07 Nov 2014 09:48:17 GMT
X-Powered-By: HPHP
Server: BWS/1.1
BDPAGETYPE: 1
BDQID: 0xfa28eff900012706
BDUSERID: 0
显示通信过程
-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息
curl -v www.baidu.com
* Adding handle: conn: 0x7ffe4b003a00
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* – Conn 0 (0x7ffe4b003a00) send_pipe: 1, recv_pipe: 0
* About to connect() to www.baidu.com port 80 (#0)
* Trying 61.135.169.125…
* Connected to www.baidu.com (61.135.169.125) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.30.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 07 Nov 2014 09:49:49 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: Keep-Alive
< Vary: Accept-Encoding
< Set-Cookie: BAIDUID=062E02D23FBB651CF8455B699DF02B64:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
< Set-Cookie: BAIDUPSID=062E02D23FBB651CF8455B699DF02B64; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
< Set-Cookie: BDSVRTM=0; path=/
< Set-Cookie: BD_HOME=0; path=/
< Set-Cookie: H_PS_PSSID=7744_1429_7801_9583_9499_6506_6018_9769_9699_9757_9532_9477_7799_9453_9716_9023; path=/; domain=.baidu.com
< P3P: CP=” OTI DSP COR IVA OUR IND COM “
< Cache-Control: private
< Cxy_all: baidu+7dcb6b3c03d32c334d42f311919a14d6
< Expires: Fri, 07 Nov 2014 09:49:20 GMT
< X-Powered-By: HPHP
* Server BWS/1.1 is not blacklisted
< Server: BWS/1.1
< BDPAGETYPE: 1
< BDQID: 0xadb706860000088f
< BDUSERID: 0
如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。
curl –trace output.txt www.baidu.com
或者
curl –trace-ascii output.txt www.baidu.com
运行后,请打开output.txt文件查看。
HTTP方法
curl默认的HTTP方法是GET,使用-X参数可以支持其他动词。
curl -X POST www.example.com
curl -X DELETE www.example.com
Referer字段
有时你需要在http request头信息中,提供一个referer字段,表示你是从哪里跳转过来的。
curl –referer http://www.example.com http://www.example.com
User Agent字段
这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。
iPhone4的User Agent是
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
curl可以这样模拟:
curl –user-agent “[User Agent]” [URL]
增加头信息
有时需要在http request之中,自行增加一个头信息。–header参数就可以起到这个作用。
curl –header “Content-Type:application/json” http://example.com
来自 <http://stormzhang.com/devtools/2014/11/07/use-curl-debug/>
-H, —header LINE Custom header to pass to server (H)
-d, —data DATA HTTP POST data (H)
示例命令
| 1 | curl -H “Content-Type: application/json” -d ‘{“object_kind”:”merge_request”,”object_attributes”:{“id”:22,”target_branch”:”master”,”source_branch”:”master”,”source_project_id”:57,”author_id”:9,”assignee_id”:null,”title”:”Master Title”,”created_at”:”2014-07-02T02:31:20.000Z”,”updated_at”:”2014-07-02T02:36:33.008Z”,”milestone_id”:null,”state”:”closed”,”merge_status”:”unchecked”,”target_project_id”:55,”iid”:7,”description”:”description_content”}}’ http://10.0.6.122:9002/merge_request |
来自 <https://cloud.tencent.com/developer/article/1328118>
curl -v -H “Content-Type:application/json” \
-H “Authorization:Basic Y2xpZW50Q3JlZGVudGlhbHNJZDpzZWNyZXQ=” \
-X POST http://172.16.5.172:3396/crm/oauth/token?grant_type=client_credentials
请求soup
curl -X POST -d @testrequest.xml \
–header “Content-Type:application/json” \
http://localhost:8080/services/xxxxService
testrequest.xml
<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:ent=”http://entity.xxx.com”>
<soapenv:Header/>
<soapenv:Body>
<ent:getTableData>
<!–Optional:–>
<ent:oaUsername>zhangsan</ent:oaUsername>
</ent:getTableData>
</soapenv:Body>
</soapenv:Envelope>
首先我们通过man 来看看 ls其中有几项;
–sort=WORD
sort by WORD instead of name: none -U, extension -X, size -S, time -t, version -v
–time=WORD
with -l, show time as WORD instead of modification time: atime -u, access -u, use -u, ctime -c, or status -c; use specified time as sort key if –sort=time
–time-style=STYLE
with -l, show times using style STYLE: full-iso, long-iso, iso, locale, +FORMAT. FORMAT is interpreted like ‘date’; if FORMAT is FORMAT1<newline>FORMAT2, FORMAT1
applies to non-recent files and FORMAT2 to recent files; if STYLE is prefixed with ‘posix-’, STYLE takes effect only outside the POSIX locale
ls -lS 按大小降序
ls -l | sort -n -k5 按大小升序
ls -lrt 按时间降序
ls -lnt 按时间升序
ls -l | sort -k9 按文件名升序(这是ls的默认输出方式)
ls -lr 按文件名降序
ls -l | sort -rk9 按文件名降序
附:
ls对当前目录和文件大小排序
du -s * | sort -nr
只对当前目录排序,并用直观的大小显示出来
for i in $(ls -l |grep ‘^d’ |du -s * |sort -nr|awk ‘{print $2}’);do du -sh $i;done
Vi ~/.vimrc 添加以下内容
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
<< EOF 是执行一命令,命令从<<EOF行开始到EOF出现的地方结束。例如:
ftp -n << EOF
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
bye
EOF
<< – EOF 与 << EOF 只有细微的差别(在菜单式命令中每行的开头可以不必顶格),下面这段代码使用<<EOF会出错,必须使用<<-EOF
ftp -n <<- EOF
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
bye
EOF
EOF并不是唯一的,例如可以这样:
ftp -n <<- !
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
在使用sed对日志或者其它文本进行parse的过程当中,有时候我们需要引用外部变量的值,
或者获取一个shell命令执行的结果,以便达到更加可观的输出结果。这里介绍如何做到。
sed中使用变量替换
1.sed命令使用双引号的情况下,使用$var直接引用
$ echo|sed “s/^/$RANDOM.rmvb_/g”
29328.rmvb_
# 上面例子引用了一个环境变量$RANDOM的值
2.sed命令使用单引号的情况下,使用'”$var”‘引用
类似,我们可以看到
$ echo|sed ‘s/^/'”$RANDOM”‘.rmvb_/g’
31338.rmvb_
sed中执行外部命令
1.sed命令使用单引号的情况下使用’`shell command`’或者’$(shell command)’引用命令执行的结果
还是以上面案例分析,例子如下
$ echo|sed ‘s/^/’`echo $RANDOM`’.rmvb_/g’
8063.rmvb_
# 上面的例子使用了旧式的命令替换,也可以采用新式的命令替换方法,如下
$ echo|sed ‘s/^/’$(echo $RANDOM)’.rmvb_/g’
18554.rmvb_
# 下面例子取用当前日期作为结果的一部分,如下
$ echo|sed ‘s/^/’$(date +”%Y%m%d”)’.rmvb_/g’
20120108.rmvb_
2.sed命令使用双引号的情况下直接`shell command`或者$(shell command)引用命令执行的结果
类似的,双引号的情况,如下
$ echo|sed “s/^/$(date +”%Y%m%d”).rmvb_/g”
20120108.rmvb_
# 使用环境变量$RANDOM以及旧式命令替换的例子
$ echo|sed “s/^/`echo $RANDOM`.rmvb_/g”
4988.rmvb_
总结
在sed语句里面,变量替换或者执行shell命令,双引号比单引号少绕一些弯子