。
#@author: gr#@date: 2014-07-20#@email: forgerui@gmail.com
记录Linux常用命令。
- tree
- 文件目录通配符 * ? [ ]
- 链接
- 硬链接 增加节点数,删除一个,节点减1
- 软连接 新建一个链接文件,删除原文件,连接文件找不到文件
- ls 相关查询 ls -lt 最后修改时间 mtime ls -lc 状态改变时间 ctime ls -lu 最后访问时间 atime
- 解压缩 gzip .gz zxvf compress .Z Zxvf bzip2 .bz2 jxvf
- pidof
iptables -A INPUT -m tcp -p tcp --dprot 10006 -j ACCEPT
- iostat,vmstat,mpstat
- 电源管理 sudo pm-hibernate : 休眠 sudo pm-suspend: 挂起 sudo pm-powersave :省电模式
- 系统发行版本 lsb_release -a cat /etc/issue
- 源管理 #添加lauchpad软件源 sudo add-apt-repository ppa:ailurus sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install ailurus
- vi 中可以使用!使用shell系统命令,用r导入 :
!r date
- vi 最后保存时发现没有权限,可以使用%! sudo tee %命令保存
- vi Ctrl+W: = 窗口大小相等; _ 窗口最大; + 增大窗口; - 减小窗口.
- vi 行内移动:由于窗口太小,一行未显示全,通过 gj可以移动同一行显示中的第二行
live cd 修复grub
sudo -imount /dev/sda9 /mntmount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)grub-install --root-directory=/mnt/ /dev/sdareboot#重建grub列表sudo update-grub#重新写入第一分区mbr sudo grub-install /dev/sdareboot
grub2命令修复
grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)(hdx,y) (显示查找到的分区号)grub>root (hdx,y)grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)grub>boot
find
find / -name 'helloworld'
daily log
1. 杀任务: jobs kill %1 2. 踢除用户: pkill -kill -t pts/2 3. sudo apt-get -f install 4. split vspl 5. ufw enable/disable ufw:uncomplicted firewall 6. python -m SimpleHTTPServer 7. sudo !! 8. chkconfig --list mysql 9. chkconfig --level 235 mysql on 10. crontab Minute Hour Day Month DayOfWeek Command 11.^M
可以先打Ctrl+v
,再按Enter
键实现 12. 将^M
去掉:%s/^M//g
使用命令行打开pdf
evince hdfs_design.pdfman -7 可以查看相关文档
man -7 fstabfstab
fs_spec fs_file fs_type fs_mntops fs_dump(备份) fs_fsck(检查) /dev/sda1 /mnt vfat defaults 0 0mount
mount -t [msdos | vfat | ntfs | iso9660] #mount -o用来描述设备或档案的挂接方式。 后面接loop是用来把一个文件当成硬盘分区挂接上系统。 mount -t iso9660 -o loop a.iso /mntsudo fdisk -l
结果如下图,其中W95 Ext'd(LBA)是扩展分区的意思。今天遇到一个难受的问题,使用
ifstream
流处理数据时,总是无法读取全部数据,最后发现是终端显示的问题,直接读取输出的时候用的是cout<< val <<" ";
,导致终端一行显示不下所有数据,修改为cout<< val <<endl;
,发现实际上已经读取了全部数据。浪费了好多时间找答案...man页
Mandatory arguments to long options are mandatory for short options too.长选项的强制参数对短选项也是必须的。
>
问题下面这段代码希望对文件进行排序,如下
cat $FILE | sort -n | uniq > $FILE
但运行的结果却是将
$FILE
文件清空了,因为先执行了>
导致$FILE
文件被清空,然后的操作 都是针对空文件。建议使用tee避免这种情况,即:cat $FILE | sort -n | uniq | tee $FILE
linux中的常用变量
$? #上个语句执行的状况$# #参数个数$@ #每个参数,可以用for遍历$* #每个参数,字符串!! #上一条命令,sudo !!!$ #上一条命令的最后一个参数
注意:
linux shell中,$#
的参数个数是不计算命令的,$0
代表命令,$1
是第一个参数,如果只是 一个命令没有参数的话,$#
为0。可以通过这个判断是否输入参数。date
//时间戳转换为时间date -d@1234567890//时间转为时间戳,%s表示转化为时间戳date -d20140815 +%s
命令替换
//把上个命令中的a替换成b并重新执行一次^a^b//同样的命令!!:gs/a/b
注意:
^a^b
只会替换第一处,不会替换所有,使用!!:gs/a/b
将替换所有出现a
的地方,其中的g
表示global,去掉g
之后,与上面的命令等价。
使用the device is busy
fuser /mount
查看占用进程,或者使用fuser -k /mount
直接杀死进程。有时候可能是终端cd到挂载目录导致占用。也可以使用lsof
查看。挂载Windows共享文件夹
使用命令挂载Windows共享文件
sudo mount.cifs <-o username=用户名> sudo mount.cifs //10.10.64.159/public /mount -o username=publichistory
相关# `!-:` 上个命令除去最后一个参数以外的命令,下面的命令由a.txt换成b.txt$ ls -lt a.txt$ !-: b.txt# `!×` 上个命令所有参数# `!num`执行第num个命令$ !789 #执行history中第789个命令# `!cmd` 执行上个histroy中最近的命令$ !cat #执行最上次执行的cat命令
使用
Ctrl+R
搜索相关命令,使用!cmd
执行上个命令,都可以极大帮助你。