几个常用的linux快捷键和shell知识
1) !$
!$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串。如:你可能会这样:
$mkdir mydir
$mv mydir yourdir
$cd yourdir
可以改成:
$mkdir mydir
$mv !$ yourdir
$cd !$
2) sudo !!
以root的身份执行上一条命令 。
场景举例:比如Ubuntu里用apt-get安装软件包的时候是需要root身份的,我们经常会忘记在apt-get前加sudo。每次不得不加上sudo再重新键入这行命令,这时可以很方便的用sudo !!
3) cd –
回到上一次的目录 。
场景举例:当前目录为/home/a,用cd ../b切换到/home/b。这时可以通过反复执行cd –命令在/home/a和/home/b之间来回方便的切换。
4) ‘ALT+.’ or ‘<ESC> .’
热建alt+. 或 esc+. 可以把上次命令行的参数给重复出来。
5) ^old^new
替换前一条命令里的部分字符串。
场景:echo "wanderful",其实是想输出echo "wonderful"。只需要^a^o就行了,对很长的命令的错误拼写有很大的帮助。(陈皓注:也可以使用 !!:gs/old/new)
6) du -s * | sort -n | tail
列出当前目录里最大的10个文件。
7) :w !sudo tee %
在vi中保存一个只有root可以写的文件
8) date -d@1234567890
时间截转时间
9) > file.txt
创建一个空文件,比touch短。
10) mtr coolshell.cn
mtr命令比traceroute要好。
11) 在命令行前加空格,该命令不会进入history里。
12)
在shell脚本里面export的环境变量,在set里面竟然看不到。为什么在shell脚本里面用export设置环境变量之后,当shell执行完了,用set命令看不到呢?但是你如果直接在终端里export 环境变量用set是看到的。
这里要说一下shell的执行方法了,举个例子来讲:
一个shell脚本test.sh的内容为:
【 #!/bin/bash
export AA=123】
当我们执行test.sh的时候,是当前终端所在的shell fork一个子shell然后执行test.sh的,执行完了再返回终端所在的shell。明白这点,就容易理解了,我们在test.sh设置了AA环境 变量,它只在fork出来的这个子shell中生效,子shell只能继承父shell的环境变量,而不能修改父shell的环境变量,所以test.sh结束后,父进程的环境就覆盖回去。所以在test.sh之后完之后,我们用set命令是看不了AA这个环境变量的值的。
那有什么办法可以让脚本的环境变量在脚本执行之后仍然对当前终端存在呢?用sorcue 或者.(dot) 。明确告诉shell不要fork执行脚本,而是在当前的shell执行,这样环境变量就可以保存下来了。
source命令用法:
source Filename (通常用“.”来代替)
source test.sh 与 .test.sh是等效的。
【补充】
source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进 scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
最新文章
- 使用mxmlc在命令行编译.as代码
- Android下的数据储存方式( 二)
- 开源一个动态解析protobuf的工具
- Linux 各文件夹介绍
- Rsync 3.1.0 发布,文件同步工具
- 常用的Java 架包(jar)的用途
- (转)SQL Server 的事务和锁(二)-Range S-S锁
- Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)
- Vijos 1004 伊甸园日历游戏 博弈
- 【SICP练习】151 练习4.7
- David MacKay:用信息论解释 &#39;快速排序&#39;、&#39;堆排序&#39; 本质与差异
- 简简单单的Vue2(简单语法,生命周期,组件)
- C# 检查数字
- 我的代码-flask
- jquery库的cookie用法
- Mac OS环境下DOSBox汇编环境的搭建
- nodejs async series 小白向
- 阿里云Tengine和Openresty/1.11.2.3 数据对比
- 阿里云服务器(windows)配置项目域名
- Drupal的$messages是怎么显示的?
热门文章
- 使用 nvm 来管理nodejs版本 。
- react中,constructor和getInitialState的区别
- error C2664: “UINT GetDriveTypeW(LPCWSTR)”: 无法将参数 1 从“char [5]”转换为“LPCWSTR”
- 利用Scrapy爬取所有知乎用户详细信息并存至MongoDB
- windows和linux双系统修改启动项
- linux性能之iostat
- MD5加密。
- PHP 手册
- ubuntu下搭建nginx+mysql+php-fpm站点
- 关于制作C语言头文件的思考