Linux 命令行黑技术(LTS)
Linux命令行,是开发人员日常接触的东西。但是,有很多小技巧。我在这里做个总结(长期升级)。
image
在路径间如鱼得水
黑技术1:设立根目录
假如,你经常用一个目录作为你的根目录,那么,你可以通过CDPATH来指定你的cd根目录。
例如,我经常到/etc目录下,来対相应的文件进行配置。比方我想从我的家目录到/etc/nginx/目录下,一般的方法是:
cd /etc/nginx/ 有没有可以偷懒的法子呢?当然有,我们可以在.bashrc(假如你是zsh的话,就在.zshrc下)加入export CDPATH=/etc
现在,你想打开的/etc/nginx/目录下,只要要输入:
cd nginx懒人必备。
当然,你可以输入多个根路径,只需在每个路径下使用:隔开。
export CDPATH=.:~:/etc:/var:黑技术2:在两个路径相互切换
当我们经常需要在一个terminal下,在两个路径之间,来回切换。这个时候,我们可以用cd -,在两个路径之间“反复横跳”。
image
例如:第一个路径是/etc/nginx/,第二个路径是~/project/,我们先cd /etc/nginx/下,而后,再cd ~/project/。随后,当我们需要切换另一个路径只要要cd -即可以实现。
黑技术3:将路径通过栈的方式访问
假如,遇到访问路径的过程像栈这种数据结构,那么我们可以使用pushd来处理。
实现过程:
- 导航到相应的目录例如
/tmp/push1 - 用
pushd命令压入目录栈 - 在其余路径下,用
popd命令,导航到栈顶目录。
例子:
在/tmp/目录下创立来push1,push2,push3三个目录,需求是将这三个目录分别压入目录栈,而后分别导航到相应的目录。下面将显示整个过程:
# pcdack @ pcdack-sword in /tmp/push1 [18:58:01] $ pwd/tmp/push1# pcdack @ pcdack-sword in /tmp/push1 [18:58:15] $ pushd ./tmp/push1 /tmp ~# pcdack @ pcdack-sword in /tmp/push1 [18:58:22] $ cd /tmp/push2# pcdack @ pcdack-sword in /tmp/push2 [18:58:31] $ pushd ./tmp/push2 /tmp/push1 /tmp ~# pcdack @ pcdack-sword in /tmp/push2 [18:58:37] $ cd /tmp/push3# pcdack @ pcdack-sword in /tmp/push3 [19:00:23] $ pushd ./tmp/push3 /tmp/push2 /tmp/push1 /tmp ~# pcdack @ pcdack-sword in /tmp/push3 [19:00:28] $ popd/tmp/push2 /tmp/push1 /tmp ~# pcdack @ pcdack-sword in /tmp/push2 [19:00:37] $ popd/tmp/push1 /tmp ~整个过程非常简单,相信大家都能看得懂。
脚本:
当然我们可以将导航与压栈操作结合起来,我们可以将下面的代码写到.bashrc或者者.zshrc下来实现。
function pushcd(){ cd "$@" && eval pushd .;}而后,压栈和切换路径一个命令处理。
黑技术4:“优雅”的切换上级目录
假如我们身处一个特别深的目录下,例如:/dev/bus/usb/001。那么,我们如何切换到/dev/bus/目录下咧?一般的做法是cd ../..,这里只有两级目录看似还是可以接受的,但是,假如,有一天,要回退五级目录。那么一般的写法就不优雅了。所以,在这里要详情一个黑技术。用alias来处理问题。在我们的.bashrc或者者.zshrc下输入:
alias ..="cd .."alias ..2="cd ../.."alias ..3="cd ../../.."alias ..4="cd ../../../.."alias ..5="cd ../../../../.."而后,我们回退两级目录将变成..2,优雅,快乐,美丽。
当然,也可以使用其余表示方法:例如:cd1,cd2…
黑技术5:mkdir与cd的结合
在日常的开发中,我们经常需要创立一个文件夹,并且,导航到这个目录。但是,为了优(tou)雅(lan)。我们可以把两个命令和在一起。创立一个新的命令mkdircd。把下面的代码增加到.bashrc或者者.zshrc下:
function mkdircd(){ mkdir -p "$@" && eval cd "\"\$$#\"";}这样就OK了。
原来你是这样的剪切板
我们经常在terminal中,用系统剪切板。比方,将一个命令的输出复制到剪切板,而后,粘贴到浏览器或者其余地方等等的使用途。首先,我们需要一个软件叫xsel。在各大发行版本中的包管理中都有,比方在arch中pacman -S xsel即可以安装了。
用
1.将命令输出到剪切板,比方,我想将ls的结果复制到剪切板中,那么输入下面的命令即可以了:
ls | xsel -i -b为了更加方便调使用,我们可以.zshrc或者者.bashrc填入如下代码:
alias to_clipboard="sel -i -b"那么,刚刚的例子就变成了:
ls | to_clipboard当然,我们也可以集成查看剪切板内容的命令,在.zshrc或者是.bashrc中增加:
alias clipboard="xsel -b -o"当我们在terminal中输入clipboard时,就会将剪切板的内容输出。
压缩文件自如操作
黑技术1:万能解压命令
在Linux中,压缩的格式有很多种类,例如,常使用的有.tar.gz,zip,tar.bz2等等。解压命令“又臭又长”,那么,我们能不能一个命令即可以把所有的压缩格式的文件解压出来咧?当然是可以的,我们只要要将下面脚本增加到.zshrc或者者.bashrc里,即可以做到一个命令解压所有:
注意:你的机器里需要预先安装了unrar,unzip命令
ex (){ if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi}黑技术2:头文字“Z”
有些时候,我们需要直接查看压缩包里的内容,而不需要解压这个压缩包,那么我们可以用z字头命令。这个系列一共有:
- zgrep
- zcat
- zless
- zmore
- zdiff
这些命令其实和不带”z”的功能相似,只不过作使用的对象不一样。”z”命令是专门使用在压缩文件下的。
例子:
#我先创立几个文本文件echo "this first line">firstgzip first# 我们通过调使用z命令来查看内容zcat first.gz# 当然同理我们可以通过zless,zmore来查看# zgrep需要查找的字符使用\-i参数指定,比方我想查找带有`line`字眼的内容:zgrep -i line first.gz# zdiff使用来比照两个归档文件的不同,与diff相似# 我们首先创立一个新的文本echo "this second line">secondgzip second # 而后进行比照zdiff first.gz second.gz”智慧“的Grep命令
黑技术:使grep具备与,或者,非的逻辑
grep是我们经常用的文本搜索工具。那么,我们如何使我们的grep具备与,或者,非搜索条件?
在详情用之前,我们先显示我们要解决的数据(employee文件)
100 张三 CEO 薪水 100k101 李四 android工程师 薪水 10k102 王五 IOS工程师 薪水 10k103 刘六 Web工程师 薪水 20k104 冯七 大数据工程师 薪水 25k与
grep并没有直接的”与“命令,需要我们用正则表达式来模拟与命令
grep -E "字符1.*字符2" filenamegrep -E "字符1.*字符2|字符2.*字符1" filename我们要匹配要姓张,并且是CEO两个条件。那么,我们输入的命令是:
grep -E "张.*CEO" employee或者
我们要找文档中姓李与姓张的人:
方法1:
grep '字符1\|字符2' filenamegrep '张\|李' employee方法2:
grep -E '字符1|字符2' employeegrep -E '张|李' employee非
除去所有姓李的人
grep -v '字符1' employeegrep -v '李' employee(未完待续)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux 命令行黑技术(LTS)