linux小命令
linux环境下的一些小命令:
统计文件夹下的目录数
ls -l | grep “^d” |wc -l
wc命令
linux统计文件1
2
3
4
5
6
7
8# 统计文件夹下ts文件数量
find ./ -name "*.ts" | wc -l
# 统计文件夹下ts文件行数
wc -l `find ./ -name "*.ts"`
# 统计文件夹下ts文件总行数
wc -l `find ./ -name "*.ts"` | tail -n1
# 统计文件夹下ts文件总行数(过滤空行)
find ./ -name "*.ts" | xargs cat | grep -v ^$ | wc -l修改命令行提示符
环境变量PS1、PS2、PS3以及PS4来自定义用户命令行的字符显示
linux系统的命令号提示符格式是设置在 环境变量 PS1 中的,可以通过export PS1="\u@\h \w $ "来临时指定。
- 环境变量
- export NAME=”value”
export 可定义环境变量 - set
使用 set 命令会显示普通变量和环境变量 - unset NAME
使用 unset 可以删除环境变量 - env
使用 env 命令只会显示环境变量 - /ext/profile, /etc/bashrc
对所有用户有效的环境配置文件 - ~/.bashrc, ~/.bash_profile
只对当前用户有效的环境配置文件
动态链接库
- 查看符号表
nm - 查看库的依赖关系
ldd
- 查看符号表
-
locate根据文件数据库,快速查找文件位置- locate – u 重新建立文件数据库(u前面有空格)
find根据各种条件,查找文件- 真实遍历查找,速度较慢
whereis查找指定命令的位置(包括可执行文件/说明文件/源代码),which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
库文件相关
- /etc/ld.so.conf 文件中,配置了系统默认查找目录
- 修改配置(或新加库)之后,可通过
ldconfig命令来更新库缓存 - 库文件缓存保存在 /etc/ld.so.cache 文件中, 程序查找库时,直接搜索这个文件,而不会去每个目录找
- 修改配置(或新加库)之后,可通过
- /etc/ld.so.conf 文件中,配置了系统默认查找目录
alias 自定义命令别名
– alias ll=’ls -lF’ 自定义ll命令
– unalias ll 删除ll 别名xmodmap 修改键盘映射
linux修改键盘按键fuser 命令
- Show which processes use the named files, sockets, or filesystems.
- 显示正在使用 指定 文件/端口/文件系统 的进程
- 示例: 杀掉正在使用 80端口的进程
- sudo fuser -k 80/tcp
tail 命令
tail [选项] [filename]- 查看文件尾部内容, 默认为最后10行
- 常见用法为
tail -f [filename], 能即时输出文件追加的内容,常用于查看正在被写入的日志.
top 命令
top- 显示当前正在运行的所有进程,并按消耗资源数排序
- P – 以 CPU 占用率大小的顺序排列进程列表
- M – 以内存占用率大小的顺序排列进程列表
namei 命令
namei [filename]- 从追溯一个文件,直到最后, 常用于查看多层嵌套的符号链接.
file 命令
file [filename]- 查看一个文件的文件类型 (可执行文件, 库文件, 符号链接, 压缩包文件, …)
添加系统启动项
假设要启动的程序为nginx, 启动脚本可参考1
2
3sudo mv xxx.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/updare-rc.d -f nginx defaults-
- 用户组
groupadd新增用户组groupdel删除用户组cat /etc/group查看所有用户组
- 用户
useradd新增用户userdel删除用户passwd [user]修改用户密码, 可以使用sudo 修改root密码usermod修改用户权限cat /etc/passwd查看所有用户
- 用户组
字符集
locale -a查看本机支持的所有字符集
cd /usr/share/locales && sudo ./install-language-pack zh_CN安装中文字符集
cd /usr/share/locales && sudo ./remove-language-pack zh_CN卸载中文字符集-
- find + grep + awk
- 脚本批量 mv
- rename
netstat 命令
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
#查看某端口号被哪个程序占用
netstat -apn | grep portno应用程序错误报告
有时候, 系统中的某个应用出现了问题, 那么你就会在每次启动的时候, 看到一个提示框, 问你要不要报告错误. 如果去掉这个提示呢?- 消除这一次的提示
删除/var/crash/* - 彻底摆脱错误弹窗
编辑/etc/default/apport文件, 并修改enable为0
- 消除这一次的提示
大多数linux 命令行工具, 都会把参数
-当作标准输入流(通常是读取命令行输入).- 比如
cat -, 会输出命令行输入.
- 比如
查看/切换 shell
echo $SHELL查看当前使用的shell程序chsh -s /bin/zsh切换shell为shell, 最后参数为执行文件路径
系统时间相关
- 查看当前时间
date - 修改系统时区
tzselect
sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime - 同步网络时间
ntpdate time.windows.com
- 查看当前时间
fakeroot
在一个虚拟的环境中,模拟root操作, 但实际权限还是当前用户权限,常用于debian编译打包。du
统计文件大小的一个命令, -s 只显示最终结果, -B[M|G] 指定显示单位objdump
- objdump -s –section=.comment [filename]
查看库或可执行文件的编译器信息
- objdump -s –section=.comment [filename]
nohup
用这个命令启动的程序, 不会收到HUP信号, 并且会自动把输出重定向到nohup.out
可配合&启动deamon进程压缩文件
- zip
zip -r xxx.zip file1 file2 dir1 dir2
- zip
linux解压windows压缩的文件, 出现中文乱码
解压的时候指定字符集, 详情
unzip -O CP936 filename
mtr
查看本地服务器 到 目标服务器的路由路径情况.
使用 MTR 诊断网络问题ubuntu 开机自动启动
- 命令行运行
gnome-session-properties可以修改登陆后 sysv-rc-conf工具可以管理开机启动的服务./etc/lightdm/lightdm.conf
- 命令行运行
在GUI打开隐藏文件夹
- Ctrl + H
- Alt + F12 直接输入文件路径
- sed 命令
sed [-nefri] ‘command’ 输入文本
- 选项
- n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
- e∶直接在指令列模式上进行 sed 的动作编辑;
- f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
- r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
- i∶直接修改读取的档案内容,而不是由萤幕输出。
- 命令
- a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p ∶打印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
- s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
- 一个比较复杂的修改例子
1
2#将一段匹配pattern1--pattern2之间的匹配pattern3的字符串用pattern4替换
sed -i '/pattern1/,/pattern2/s/pattern3/pattern4/g'
man 帮助手册
man -k [word]查看所有包含 word 关键字的文档
mandb 生成 whatis 数据库info
与 man 类似, 不过是以页面树的形式组织。/usr/share/doc很多有用的说明文档目录查看当前系统状态
- who 查看当前连接的用户
- netstat -a 查看网络使用状况
- ps -aux 查看运行的进程
- sync
同步内存数据到硬盘 od
以二进制形式输出文件rsync
参考
同步文件rsync -avz --delete ${source_dir} ${VPS}:${midDir}
$ python 启动一个简单的 webserver
python -m SimpleHTTPServer port
bash
linux下的/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc文件
O(http://blog.chinaunix.net/uid-23842323-id-2656618.html)
login shell和non-login shell
设置变量默认值
当变量a为null时则var=b
1 | var=${a-b} |
#当变量a为null或为空字符串时则var=b1
var=${a:-b}
禁用密码登录
1 | # vi /etc/ssh/sshd_config |