常见命令工具收集

xsel:将文件内容复制到剪切板

1
2
3
4
$ cat README.TXT | xsel
$ cat README.TXT | xsel -b # 如有问题可以试试-b选项
$ xsel < README.TXT # 将readme.txt的文本放入剪贴板
$ xsel -c # 清空剪贴板

see: http://oldratlee.com/post/2012-12-23/command-output-to-clip

\ls:屏蔽alias别名

比如有alias:

1
alias ll='ls -l'

如果不想使用别名,只需要执行:

1
\ll

这时候会报错,屏蔽别名。

ppmtowinicon制作网站logo

1
pngtopnm cl.png | pnmquant 256|ppmtowinicon -output=cl.ico

notify-send发送通知消息

notify-send可以发送通知消息,如果要加入cronjob中,必须指定输出到显示器(env DISPLAY=:0):

1
*/1 * * * * env DISPLAY=:0 notify-send "H" "HHHHHHHHHHHHHHHHHHHHHHHHHH"

更多细节参考:https://developer.gnome.org/notification-spec/

zenity弹出对话框并获取内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Usage:
zenity [OPTION...]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-general Show general options
--help-calendar Show calendar options
--help-entry Show text entry options
--help-error Show error options
--help-info Show info options
--help-file-selection Show file selection options
--help-list Show list options
--help-notification Show notification icon options
--help-progress Show progress options
--help-question Show question options
--help-warning Show warning options
--help-scale Show scale options
--help-text-info Show text information options
--help-color-selection Show color selection options
--help-password Show password dialog options
--help-forms Show forms dialog options
--help-misc Show miscellaneous options
--help-gtk Show GTK+ Options
Application Options:
--calendar Display calendar dialog
--entry Display text entry dialog
--error Display error dialog
--info Display info dialog
--file-selection Display file selection dialog
--list Display list dialog
--notification Display notification
--progress Display progress indication dialog
--question Display question dialog
--warning Display warning dialog
--scale Display scale dialog
--text-info Display text information dialog
--color-selection Display color selection dialog
--password Display password dialog
--forms Display forms dialog
--display=DISPLAY X display to use

dialog终端图形对话框

没有GUI时候有点用,如:

1
dialog --title "Test" --backtitle "H" --calendar "11/24/2013" 7 60 24 11 2013

创建war文件

更多:http://www.techbar.me/linux-shell-tips/

1
jar -cvf name.war file

thunderbird显示邮件空白

使用thunderbird邮件客户端后,有些邮件发现是空白的,啥也没有;在确认是有内容后,
查看源码:

1
2
3
4
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

这个地方发现是把字符流当作二进制流了,进行了压缩;然后因为找不到默认的打开软件
(如PDF等)就显示为空白了。

这种情况一般是因为换行符”\r”,只需要删除这个换行符就可以了:

1
cat example.txt | tr -d "\r" | mail -s "test" example@example.com

Bash Shell中的变量条件替换

http://vbird.dic.ksu.edu.tw/linux_basic/0320bash.php#variable_other_replace

变量配置方式 说明
${变量#关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
${变量##关键词} 若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
${变量%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
${变量%%关键词} 若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
${变量/旧字符串/新字符串} 若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
${变量//旧字符串/新字符串} 若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』

Base Shell中的变量测试替换

变量配置方式 str 没有配置 str 为空字符串 str 已配置非为空字符串
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
var=${str+expr} var= var=expr var=expr
var=${str:+expr} var= var= var=expr
var=${str=expr} str=expr str 不变 str 不变
var=expr var= var=$str
var=${str:=expr} str=expr var=expr str 不变
var=expr str=expr var=$str
var=${str?expr} expr 输出至 stderr var= var=$str
var=${str:?expr} expr 输出至 stderr expr 输出至 stderr var=$str

git

git 命令自动补全

file: http://repo.or.cz/w/git.git/blob_plain/HEAD:/contrib/completion/git-completion.bash

1
source git-completion

加入到.bashrc中就可以了,也可以通过软件包安装。

git编辑已提交信息

1
git commit --amend

git删除远程分支

1
git push origin --delete <branch name>

git回退

1
git reset --hard <comment hashid> # 默认恢复所有未提交的文件

git diff忽略空格

1
$ git diff -b

git diff忽略换行符

1
$ git diff --ignore-space-at-eol

git commit自动修改换行符

1
2
3
4
$ git config --global core.autocrlf input
[core]
autocrlf = input

git commit -a自动提交所有提交过的文件

1
$ git commit -am "test"

git merge忽略行尾对比

1
2
3
4
$ git config merge.renormalize true
[merge]
renormalize = true

git rm –cache将文件移出repo,但不删除文件

1
$ git rm --cache test.abc

git将不托管移出的文件,但文件还存在,不会删除。

git和dropbox建立私人git仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cd ~/Dropbox/
$ mkdir GIT
$ cd GIT
$ mkdir example.git
$ cd example.git
$ git init --bare
$ cd ~/GIT/
$ mkdir example
$ cd example
$ git init
$ git remote add origin ~/Dropbox/GIT/example.git
$ git pull origin master
$ git push origin master

git忽略权限变更

1
$ git config core.filemode false

配置文件:

1
2
3
4
5
6
$ cat .git/config
...
[core]
...
filemode=false
...

pdftotext将PDF转换为文本

消除多余的空行:

1
$ pdftotext -layout FILE.pdf - | cat -s > FILE.txt

curl断点下载

1
$ curl -C - url -O

Makefile不打印被执行的命令

1
2
@echo "hello"
@date +%Y%m

命令前面加上”@”符号,则只执行命令,不打印命令。

Virtualbox修磁盘大小

1
2
$ VBoxManage modifyhd UBX.vdi --resize 20480
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Excel

  • Mac下函数里面用 ; 分割,其他平台用逗号
  • 比较字符串相等,使用函数 =EXACT(A1,B1)

修改Win8密码

Windows8忘记密码,在输入密码的地方可以调出 =屏幕键盘= ,这个命令是 =C:/Windows/System32/osk.exe= , 拿出Linux启动U盘启动,加载Windows8系统分区,将C:/Windows/System32/osk.exe备份,并 =将cmd.exe复制为osk.exe= ,重新启动。

启动后,输入密码时点击 =屏幕键盘= ,则启动了 =cmd= 命令窗口,输入命令重设密码:

1
net user username passwd

输入命令增加用户:

1
net user username passwd /add

这算一种rootkit吧。

df、du和ls查看文件大小的差异

http://tsecer.blog.163.com/blog/static/1501817201391901938110/

ls只是读取文件属性,而du会统计每个文件具体的文件块大小。

  • 原因1:文件删除,但进程依旧使用该文件,此时du的值依旧改变,但df的值不变
  • 原因2:隐藏文件,ls会忽略隐藏文件,但du不会忽略
  • 原因3:稀疏文件导致文件属性里面文件有很大的值,但实际占用的block没有那么多,即出现空洞
吴羽舒 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!