开发者常用及实用Linux Shell命令备忘录(小结)
最近都需要在Linux系统下开发,所以经常需要在终端中进行操作。Linux有很多shell命令可以帮助我们完成任务,但不常使用的话就会忘记掉。
本篇作为命令备忘录,我会将实际工作当中用到的命令记录下来,并长期保持更新。
1.which
which用于查找一个文件,并返回绝对路径,查找的目录范围由系统的PATH指定。
由于Linux中一切皆文件,所以which指定更多的是查找系统中有没有这个命令。
比如,查找ls命令,我们可知它的可执行文件的位置
whichls /bin/ls
2.ln
ln是一个简单但却非常实用的命令,它的作用是为某个文件或者文件夹建立链接。
命令语法
ln[参数][源文件或目录][目标文件或目录]
链接有软链接和硬链接两种,我们一般用软链接。
ln-stest.txt../test1.txt
将当前目录中的test.txt文件链接称为上一级目录的test1.txt文件。这样,其他程序访问test1.txt就如访问test.txt一样。
3.tee
tee命令是我个人非常喜爱的一个命令。
之前做Android开发,特别是源码编译的时候,经常在终端一瞬间就会打印无数条log信息,光靠肉眼是不行的,一个比较好的方法就是用命令保存起来。
另外,用find命令查找文件时,如果文件过多,也可以用tee来帮忙。
tee命令可以接受标准输入,并输出到标准输出,同时保存到对应的文件。
标准输入值得是终端的键盘输入,比如c++的cin,标准输出就是终端的输出,比如c++的cout。
语法
tee[-ai][--help][--version][文件...]
参数a代表在后面添加内容而不是覆盖。
teetmp
hello
hello
world
world
我在终端输入teetmp
接着我输入hello,终端响应hello
我输入world,终端响应world。
然后,我通过cattmp
查看tmp文件,它的结果如下:
hello
world
这说明tee命令准确将标准输入保存到指定的tmp文件了。
4.locate
locate我也非常喜欢用,用它来快速查找。它是查数据库,而不是一个个文件真实查,所以,速度比较快。
比如,我想查找系统有没有libpng.so.
我只需要这样
locatelibpng.so
/home/frank/anaconda3/lib/libpng.so /home/frank/anaconda3/pkgs/libpng-1.6.34-hb9fc6fc_0/lib/libpng.so /home/frank/anaconda3/pkgs/libpng-1.6.37-hbc83047_0/lib/libpng.so /usr/lib/x86_64-linux-gnu/libpng.so
Linux的常用的shell命令
1.目录命令:
ll/:查看根文件下的所有文件目录
2.帮助命令:
manls与ls--help与infols:(manls:分屏显示;--help:全部加载,不完整;infols:无用信息比较多)
3.基本操作和命令:
Ctrl+R和方向键中的上键:查找历时输入过的命令 Ctrl+CCtrl+Z:终止或者退出当前操作 字母键i:进入文本编辑模式(可以修改Linux操作系统的init相关设置) 编辑完成后按Esc键退出,然后如果确定保存修改并返回命令行界面输入命令-----:wq 如果不保存用命令并退出编辑界面----:q 保存并强制退出----:q! Shift+G到文件末位o:换行
4.Table键的使用
自动补全命令目录 在某个目录下只有一个目录饿时候可以不用输入首字母直接敲table计划科自动补全目录 双击table时一般为显示所有名或者列出某个目录下的所有目录和文件
5.系统级别命令
更改主机名命令:vi/etc/sysconfig/network 查看当前Linux系统信息 uname-a显示系统及版本的所有信息 uname-r显示内核版本 uname-m显示计算机是多少位系统 cat/proc/versionLinux查看当前操作系统版本信息 cat/etc/issue或cat/etc/redhat-releaseLinux查看版本当前操作系统发行版本 查看系统小版本 cat/etc/redhat-release 查看当前主机名 hostname 查看第一个网卡 ifconfigeth0 查看和设置系统时间 date 显示当前在运行的进程包括对CPU内存使用量 top-s 管道:| cmd1|cmd2将cmd1输出结果交给cmd2命令来执行 比如:查看进程:ps-fe|grepredis(这里表示查看redis的进程) grep:过滤 #grep//输出包含指定字符串的行 -i//忽略大小写 -r//递归 -v//取反 --color//突出显示查找字符串 重新启动Linux操作系统 reboot init6 关闭Linux操作系统 shutdown-hnow init0 图形和命令行转换 vi/etc/inittab init3命令行模式 init5图形化 查看虚拟机运行的运行级别(一般状态以5启动) cat/etc/inittab 1:单用户模式 2和3一样的功能:多用户模式 4:功能还没有定义(未使用) 6:重启 显示守护进程目录树 pstree或者pstree-p(显示pid) 查看正在运行的进程 ps-aux 显示所有的Java进程 jps(如果没有安装JDK,就会显示没有该命令) 结束正在运行的指定进程 kill-9pid(指的是进程的id) 不进去系统更改root密码 1.在grub选项菜单按e进入编辑模式 2.编辑kernel那行输入"1"(空格+1),然后按enter键 3.按b重启 4.进入后执行下列命令 root@#passwdroot(配置root的密码) Enternewunixpassword:输入新密码 root@#init6
6.磁盘操作
显示系统的磁盘空间用量 df-h//显示磁盘分区信息 mkfs.ext3/dev/sdb1fsformat//格式化硬盘分区 fdisk-l//查看磁盘分区 du-h-s//查看目录或者磁盘分区的使用空间 比如:du-h/var/log/(表示查看var/log目录下的各文件所占空间大小) du-h-s/var/log/(表示查看整个log目录的使用空间) 挂载 mount-tvfat/dev/sdb1/media/umnt//挂载 mount-oremountrw///重新挂载,或者将根目录以读写方式重新加载 umount/media/umnt//卸载 文件系统修复 fsck-y/dev/sda1(修复的可以是分区也可以是目录,最好在单用户模式下使用) //linux文件格式 ext4ext3ext2vfat(fat32) //windows文件格式 ntfsfat32
7.用户和组的操作
超级账户rootuid=0 普通账户uid>=500 系统账户uid=1~499 /etc/passwd//保存账户的信息 /etc/shadow//保存账户密码信息 /root//root用户家目录 /home/xxx//普通用户xxx的家目录 添加用户和删除用户useradd #useradd//创建用户比如:useraddadmin另外一种方式:useradd-Gmanagertom(附加到组manager) -u指定uid -d指定宿主目录 -s指定使用shell -e指定用户过期时间 -g指定基本组 -G指定附加组 #useraddopenlab #gpasswd-aopenlabgropenlab//将用户加入到组中比如:#gpasswd-atomadmin(将tom用户加入admin用户的组中) #gpasswd-dopenlabgropenlab//将用户从组中删除 #echo"123456"|passwd--stdinfeige//不通过交互信息,直接修改密码 #userdel-r//连主目录一起删除 #userdel//删除用户不删除用户文件 #idopenlab//显示用户信息 vipw//查看用户 创建用户组 groupaddmanager vigr查看组 groupsmanager查看用户在哪些组中 更改密码: 方式1:passwdtom方式二:etho"root"|passwd--stdinroot//不通过交互信息,直接修改密码 锁定账户tom禁止其登录 usermod-Ltom 切换当前账户为caimin su-caimin 显示当前登录用户账户 whoami 查看系统文件判断添加用户组和添加用户操作是否正确 cat/etc/passwd或者使用vipw cat/etc/group或者使用vigr
8.文件操作
cd进入操作 pwd查看当前目录 mkdir新建文件夹 mkdir-p//递归创建文件夹比如:mkdir-p./test1/caimin/test2 (./是指用户所在的当前目录,/是指根目录,Linux的根目录是/,root超级用户的家目录是/root) touch/tmp/test1/file创建空文件 vifile//创建空文件并进入编辑界面,按e键进入编辑模式,按Esc键退出编辑 :wq保存编辑信息并退回命令行界面:q不保存并退回命令行界面:q!强制退出(不保存) 列出文件和目录列表: ll-h/home/ ls-s-h/home/(ll相当于ls-l) vi和vim文本编辑 文件内容查看 cat-n//查看内容时显示行号 cat/etc/rehat-release//不显示行号 cat-n/etc/passwd//查看内容时显示行号 显示文件的头10行或者尾10行 tail//默认查看文件尾10行 head//默认查看文件头10行 -n数字//查看指定头几行 catcat-nheadtail tail-f动态监控文件数据(按Ctrl+C退出) more百分比查看,不能回滚看 less能往回滚看 复制文件 cp./tmp/file.txt/test 复制目录 cp-r./tmp/test01./test02(递归复制文件) 移动、剪切、重命名、删除 mv-rf rename批量重命名 >>>覆盖和追加 rmxxx/删除文件rm-rfxxx/删除目录
9.文件权限
pwd查看当前位置 ls-l/data0显示当前目录的文件
10.打包tar原理
-z压缩-c打包-x解包 -f必须要-C指定解压位置-v输出信息 /usr/bin/unzip/bin/gzip/bin/gunzip 打包案例(tar命令平常就替代了gz命令) //将一个文件打包 tar-zcvf./test.tar./test(将test文件夹打包成test压缩包) //将多个文件打包成一个包 tar-zcvffolder.tarfile1.txtfile2.txt //将一个文件解压 tar-zxvf./test.tar //将一个文件解压到指定目录 tar-zxvf./test.tar-C/home/test/ //将多个文件打包并压缩 tar-zcvf./test.tar.gzfolder1folder2 //将多个文件解包并解压缩 tar-zxvf./test.tar.gz 使用tar备份指定目录/data0/内容包括子目录中内容备份至/data3/data0.tar.gz tar-zcvf/data3/data0.tar.gz/data0 恢复tar文件中的内容/data3/data0.tar.gz至/data2/ tar-zxvf/data3/data0.tar.gz-C/data2 whichcmd查找cmd命令所在路径whereis whichreboot locate文件查找-效率很快(用的是数据库) locateunzip(一个索引名)//查找文件按所在 updatedb//更新数据库使之生效 find文件查找-效率很慢 find路径条件find/-nameunzip(在根目录下找名字为unzip的文件) 给shell命令取别名 alias(此操作只针对当前session<连接>有效,另外再开启一个连接还是没有这个别名) eg:aliascle=clear(为清屏命令clear取别名cle) unalias取消别名设置eg:unaliascle 永久设置:进入vi~/.bashrc(家用户目录下的环境配置文件,这个文件只针对当前用户) 进入编辑模式后,加入aliascle='clear'保存退回命令行 输入命令source~/.bashrc就完成了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。