常见shell命令分享

1. 变量名的赋值符号前后不能留有空格
2. vi /proc/meminfo 查看当前虚拟内存的状态
3. ipcs 命令用来查看系统上的当前共享内存页面
4. bash shell 启动会自动处理 ~/.bashrc; /etc/bashrc
 修改 vim ~/.bashrc
 重启 source ~/.bash_profile
5. mount
mount -t type device directory
umount directory
ex:
mount -t ext4 /dev/mmcblk0p26 /opt/hejian
umount /opt/hejian
6. df 查看已挂载磁盘的使用情况
du 显示指定目录下的磁盘使用情况
ex:
du -sh *
du -s *
du -sch *
su -s * | sort -n
su -s * | sort -nr
7. grep
grep -n t file  在file中搜索t字符串,显示所在的行号
grep -c t file  显示有多少行匹配
grep -e t1 -e t2 file 多个匹配,搜索包含t1或t2的字符串
8.printenv  查看全局环境变量
  set  显示特定进程的所有环境变量,包括局部环境变量
  echo $V  显示环境变量V的值
  设置局部环境变量: test='hejian'
  设置全局环境变量: export test
  删除环境变量: unset test
  定义可变数组: test=(one two three four)
  显示数组中某一项: echo ${test[2]}     结果为three
  显示数组所有: echo ${test[*]} 结果为one two three four
  登录shell时会从4个不同的启动文件读取命令: /etc/profile -> $HOME/.bash_profile或$HOME/.bash_login或$HOME/.profile
  在$HOME/.bashrc里面添加alias信息,可以使用自定义的命令别名
9. /etc/passwd 查看用户密码相关信息
   /etc/shadow 管理密码
   创建账户rocket(使用指定的shell): sudo useradd rocket -s /bin/bash 或 adduser rocket(提倡使用)
   为账户rocket添加sudo权限:在root账户下的/etc/sudoers中添加 "rocket  ALL=(ALL:ALL) ALL"
   删除账户rocket: sudo userdel rocket
   修改账户名: usermod -l NewUserName OldUserName
   创建新组: group add GroupName
   chmod: 修改文件权限 ugo(u代表用户,g代表组,o代表other) chmod 600 file 等价于 chmod u+rw file
   chown:改变所属关系  chown User file,将file的属主设置为User; chown .Group file,将file的属组设置为Group;
      chown User.Group file,将file的属主设置为User,属组设置为Group。
10. dpkg 命令是基于Debian系PMS工具的核心,包含在PMS中的其他工具有: apt-get, apt-cache, aptitude
aptitude show pkg_name : 查看pkg_name的详细情况
dpkg -L pkg_name : 显示所有和pkg_name关联的文件列表
dpkg --search file_name : 寻找file_name属于哪个pkg_name
aptitude search key_word : 搜寻所有包含kew_word的pkg_name,无需通配符(结果中前面有i的表示已经安装,有p的表示为安装)
aptitude safe-upgrade : 更新软件库中所有软件 (aptitude full-upgrade, aptitude dist-upgrade 不保守)
aptitude remove pkg_name : 只删除包pkg_name
aptitude purge pkg_name : 删除包pkg_name和相关的数据和配置文件
aptitude默认的软件库的位置存储在 /etc/apt/sources.list
11. vim
(1)移动光标
h, 左移一个字符
j, 下移一行
k, 上移一行
l, 右移一行
ctrl+f, 下翻一屏数据
ctrl+b, 上翻一屏数据
G, 移到缓冲区的最后一行
num G, 移到缓冲区的第num行
gg, 移到缓冲区的第一行
(2) 编辑数据
x, 删除当前光标所在位置的字符
dd, 删除当前光标所在行
dw, 删除当前光标所在位置的单词
d$, 删除当前光标所在位置至行尾的内容
J, 删除当前光标所在行尾的换行符(拼接行)
u, 撤销前一个编辑命令
a, 在当前光标后追加数据
A, 在当前光标所在行行尾追加数据
r char, 用char替换光标所在位置的字符
R text, 用text覆盖当前光标往后的数据,直至按下esc键
(3) 复制和粘贴
yw, 复制单词
y$, 复制当前光标位置到行尾
p, 粘贴所复制的内容到光标位置
ctrl+v: 切换到可视模式
移动光标到开始复制的位置,按下v键,移动光标显示所要复制的位置(可以换行),按y键确认复制内容, 再到你需要粘贴的位置按p键
(4) 查找和替换
:s/old/new/   替换光标所在行的所有old字符串到new
:n,ms/old/new/g  替换行号n和m之间的所有old
:%s/old/new/g   替换整个文件中的old
:%s/old/new/gc  替换整个文件中的old,但在每次出现时提示
12. Ubuntu中出现错误:  Syntax error: Bad for loop variable
 解决办法 : sudo dpkg-reconfigure dash, 在选择项中选No
 原因: 从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了
   /bin/dash而不是传统的/bin/bash。
13. wc 命令
wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数
find dir -name "*.cpp" | wc -l:显示目录dir下cpp文件的个数

14.
ps -aux 列出当前所有的正在内存中的程序
pstree -A  列出目前系统上面所有的程序树的相关性

15. samba安装
sudo apt-get install samba / sudo apt-get install smbfs
sudo apt-get install system-config-samba
修改samba文件: /etc/samba/smb.conf
smbpasswd -a username  用于添加samba用户  (username指conf中出现的用户名)
samba重启: sudo service smbd restart / sudo restart smbd (ubuntu 10.04) / nmbd restart
修改smb的conf文件  /etc/samba/smb.conf

16. ssh-keygen
生成一颗key值

17. 查看PC多少位
sudo uname --m
如果显示i686,你安装了32位操作系统
如果显示 x86_64,你安装了64位操作系统

18. 指定 ip 地址share (mount)

19. 显示xxx.so文件里的所有函数
readelf -s xxx.so

20. sed

21. 查看 cpu 信息
cat /proc/cpuinfo
查看硬件:
lspci

22. 查看依赖库
/lib/ld-linux.so.3 --list

23. 查看Ubuntu版本
cat /etc/issue

24. 统计行数
wc -l `find . -name '*.h'`;
wc -l `find . -name '*.c'`

你可能感兴趣的:(常见shell命令分享)