###Linux基础命令
点击查看Evernote原文。
#@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 -i mount /dev/sda9 /mnt mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过) grub-install --root-directory=/mnt/ /dev/sda reboot #重建grub列表 sudo update-grub #重新写入第一分区mbr sudo grub-install /dev/sda reboot
-
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.pdf -
man -7 可以查看相关文档
man -7 fstab -
fstab
fs_spec fs_file fs_type fs_mntops fs_dump(备份) fs_fsck(检查)
/dev/sda1 /mnt vfat defaults 0 0 -
mount
mount -t [msdos | vfat | ntfs | iso9660]
#mount -o用来描述设备或档案的挂接方式。 后面接loop是用来把一个文件当成硬盘分区挂接上系统。
mount -t iso9660 -o loop a.iso /mnt -
sudo 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=public -
history
相关# `!-:` 上个命令除去最后一个参数以外的命令,下面的命令由a.txt换成b.txt $ ls -lt a.txt $ !-: b.txt # `!×` 上个命令所有参数 # `!num`执行第num个命令 $ !789 #执行history中第789个命令 # `!cmd` 执行上个histroy中最近的命令 $ !cat #执行最上次执行的cat命令
使用
Ctrl+R
搜索相关命令,使用!cmd
执行上个命令,都可以极大帮助你。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!