现在的位置: 首页 > 综合 > 正文

掌握Linux的Bash命令(转)

2018年01月23日 ⁄ 综合 ⁄ 共 6202字 ⁄ 字号 评论关闭
 
启用root用户,使用sudo passwd命令
禁用root用户,使用passwd -l
 
ls [-adlsht]
:列出当前目录下的非隐藏文件
  -a 显示所有文件
  -d 显示目录本身
  -l 以列表形式显示详细信息
  -s 显示文件大小,单位块
  -h 带度量单位显示
  -t 按最新修改时间显示
Linux中3种时间属性
atime
access 读取或执行时变化
ctime
change 变更权限,属主,链接数时变化
mtime
modify 修改内容时变化
cd PATH
:改变当前操作目录路径到PATH
  cd .. 返回上一层
  cd - 返回上一
次使用的
目录
  cd 返回用户主目录,等同于cd ~
  pwd 显示当前路径

现在介绍一个高级的路径变更命令:
pushd PATH
:建立目录栈,在多个目录间切换。切换到PATH的目录,并把原目录和PATH目录压入到一个虚拟的堆栈中;如果不指定PATH,则会回到前一个目录,并把堆栈中最近的两个目录作交换。
  -n 不改变当前目录,将目录加入栈
  +N N表示数字,从0开始,切换到该目录
dirs
: 列出当前堆栈中保存的目录列表。
  -v 栈式显示目录
  -c 清空堆栈
popd
:弹出堆栈中0号目录。
  -n 不改变当前目录
  +N N表数字,弹出该目录

mkdir NAME
:在当前路径下创建文件夹NAME
touch NAME
:在当前路径下创建普通文件NAME
mknod NAME
:用来新建P、B、C型NAME文件
cat [-nb] NAME
:显示NAME文件的内容在终端中
  -n 带行号
  -b 对空白行不编号
mv NAME1 NAME2
:将NAME1重命名为NAME2
rm file
:删除file而不需要确认

  -d Dir1 删除Dir1目录而不需要确认(相当于DOS中的deltree)。
  -i file1(提示用户确认之后删除file1)
  -f file2(如果file2已经存在,则这个命令覆盖其内容时不需要确认)
  -r * 递归删除文件,如果当前目录还有子目录,则也删除其中的文件和目录
  -rf xx 删除xx目录

Linux文件权限
chmod
751 test.java:结果test.java的权限是-rwxr-x--x,7表示user的3个权限都有,既111,且正好是十进制的7;5换成二进制是101,同理1是other位置的权限,是x执行。
  还可以使用字母表示,u、g、o分别表示3个组,+表示赋予,-表示撤销
目录有执行权限才能打开,但前提是该目录的上次目录要有粘滞位,否则会继承上级的执行权限。
 
高级权限:
drwxrwxrwt       
t表示粘滞位,作用是让用户只能删除属于自己的文件
假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
chmod a+t x.X
特殊标志位
  Suid:set user id
  Sgid:set group id
  sTicky:sticky bit
  特殊标志也是由3个二进制位abc表示,c表示T,b表示Sgid,a表示Suid
eg:101表示设置了该文件的Suid和sTicky位,也就是八进制的5
特殊标志位放在权限位的前面
eg:一个文件test类型标识为-rwxr-xrwx
         chmod 7747 test
        
结果为-rwsr-Srwt
         7747
等于111 111 100 111
umask number 修改创建时的默认权限
 系统规定目录的创建可以包含执行权限,所以最高是777;而文件不能默认包含执行,所以最高是666。
umask就是默认权限的反码
 eg:umask=022时,创建的目录权限是755,文件权限是644。
    umask=002时,目录权限是775,文件权限是664
 常用的umask:
022:755 644
027:750 640
002:775 664
006:771 660
007:770 660

groups username
 显示username所在的所有组
改变文件的组和所有者命令chown
chown [-cfhvR] user[:group] file...

 -c若文件拥有者确实已更改,才显示其更改动作
 -f若无法更改,也不要显示错误信息
 -h只对link文件进行更改,而非该link真正指向的档案
 -v显示拥有者变更的详细资料
 -R对目录下所有文件文件夹递归更改

 user:[group]指的是更改为group组中的user用户
 eg:chown -R fenix:root *
  表示将当前目录下所有文件和文件夹改为root组的使用者fenix
chgrp [-hR] groupname filename 将文件的属组变更
 -h将符号链接变更
 -R递归变更
id username 显示username的uid,gid和自身id

显示进程命令
ps [-Aw][aux]
:当前bash中运行的进程

  -A列出所有进程
  -w显示较多信息
  -au显示详细信息
  -aux显示所有包含其他使用者的进程
    eg: ps aux | grep nautilus 显示nautilus进程
pstree
:树状显示进程
  -a显示该进程的完整指令和参数
  -c如有重覆的进程名, 则分开列出
renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
:重新指定一个或多个进程的优先序
  将行程 id 为987及32的行程与行程拥有者为daemon 及root 的优先序号码加1。eg:renice +1 987 -u daemon root -p 32
pkill
NAME

:快速杀掉进程。
eg

pkill firefox
skill [signal to send] [options]

:选择程序的规则
 选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称
  -t 终端机代号 ( tty 或 pty )
  -u 使用者名称
  -p 程序代号 ( pid )
  -c 命令名称
  eg:停止三个使用者 user1,user2,user3。
          skill -STOP user1 user2 user3
kill [-s signal|-p] [-a] PID

:终止进程命令
kill -l

:查看所有信号量
 
  1. 0 - normal  
  2. 1 - signal SIGHUP, Hangup.  #重启
  3. 2 - signal SIGINT, Interrupt  #中断,ctrl+c
  4. 3 - signal SIGQUIT, Quit  
  5. 4 - signal SIGILL, Illegal instruction  
  6. 5 - signal SIGTRAP, Trace/breakpoint trap  
  7. 6 - signal SIGABRT, Aborted  
  8. 7 - signal SIGEMT, Emulation trap  
  9. 8 - signal SIGFPE, Arithmetic exception  
  10. 9 - signal SIGKILL, Killed   #无条件关闭
  11. 10 - signal SIGBUS, Bus error  
  12. 11 - signal SIGSEGV, Segmentation fault  
  13. 12 - signal SIGSYS, Bad system call  
  14. 13 - signal SIGPIPE, Broken pipe  
  15. 14 - signal SIGSTOP, Stopped (signal)   
  16. 15 - signal SIGTERM, Terminated #温和的结束
  17. 16 - signal SIGXCPU, CPU  time  limit exceeded  
  18. 17 - signal SIGTTIN, Stopped (tty input)  
  19. 18 - signal SIGCONT, Continued #恢复,fg、bg
  20. 19 - signal SIGTTOU, Stopped (tty  output )  
  21. 20 - signal SIGTSTP, Stopped ( user ) #暂停运行,ctrl+z  
  22. 21 - signal SIGXFSZ, File  size  limit exceeded 
 

top命令
:动态显示当前运行进程
  up 后面表示系统运行了多长时间
  load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
  Cpu(s): 0.3% us 用户空间占用CPU百分比,1.0% sy 内核空间占用CPU百分比,0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比,98.7% id 空闲CPU百分比,0.0% wa 等待输入输出的CPU时间百分比
  PR 优先级
  NI nice值,负值表示高优先级
  VIRT 进程使用的虚拟内存总量
  RES 进程使用的,未被换出的物理内存大小,kb单位
  SHR 共享内存大小,kb单位
  S 进程状态
     s睡眠,r运行,t跟踪或停止,z僵尸,d不可中断的睡眠
  %CPU 上次更新到现在的CPU时间占用百分比
  %MEM 进程使用的物理内存百分比
  TIME+ 进程使用的CPU时间总计,1/100秒单位
  COMMAND 命令行
    按f键可以选择显示列,按o可以改变列的显示顺序,按R键可以将当前排序倒转

类debian发行版的linux使用的apt软件管理命令:
apt-get [-qy] [-c config_file] [options] software...

 q 在后台环境执行
 y 自动进行回答y的响应

 c 后接配置文件
 options
  update,install,remove,purge,clean,dist-upgrade
apt-cache [搜索项目]

 搜索项目
  search,show,
  showpkg 列出所接软件的依赖属性及功能
  dump 列出所有软件标头及相关的依赖属性软件
  pkgnames 列出本系统所有软件名称
软件管理的高级命令
dpkg [-ilLSC] <package>
  -i <package> 安装软件包
  -l <package> 查看软件包是否安装
  -L <package> 查看软件包中包含哪些文件
  -S /path/to/file 查看系统中某文件是由哪个软件包提供的
  -C 查看哪些软件包未完成安装

网络命令类:
ifup
eth0 打开eth0,ifdown
eth1 关闭eth1
ifconfig [interface] [options]
,设置网络设备的命令
 interface接口名,如eth0
 options,功能选项
  up & down
  mtu
  netmask
  broadcast
    eg:ifconfig eth0 192.168.1.1 netmask 255.255.0.0 mtu 8000
route [-nee]

 n直接使用ip
 ee更详细的信息
ping [-bcstnM] IP

 b 接broadcast的ip,对整个网段ping
 c 后接次数
 n 不进行ip和主机名的反查
 s 扩增的icmp包
 M 设置MTU
tcpdump -i eth0 -nn
:侦测网络浏览的命令,网卡变为混杂模式,root权限
 -i 后接网络接口,如eth0
 -nn 以ip和port显示,而不是hostname
tcpdump -i eth0 -nn port 21
 port 21 监听特定的21port
 -X 可列出十六进制以及ascii的内容
ip address show
:显示当前ip地址详细信息
arp -n
:显示arp表的内容,包括网段内机器物理地址MAC
netstat [-tulnp]
  -t tcp协议
  -u udp协议
  -l 监听中的
  -n 不解析主机
  -p pid
    eg:netstat -anp |grep 8080  8080端口占用情况

其他命令
ctrl+z:暂时挂起当前终端进程
jobs:查看当前终端挂起的进程
fg number:将number号挂起进程激活在前台运行
bg number:将number号挂起进程激活在后台执行
uname -a:查看内核
cat /etc/issue:查看ubuntu版本
cat /proc/cpuinfo
lshw:查看当前硬件信息
free -l:查看当前的内存使用
gnome-control-center:控制中心
gnome-system-monitor:系统管理
find [路径] [-参数] [需求]

eg: find /etc -name *.d

   find . -perm 664

   find /usr/share/doc -mtime 0
locate 文件名
whereis:是来寻找命令的二进制文件,同时也会找到其帮助文件
which 和where 相似,只是我们所设置的环境变量中设置好的路径中寻找
who:查看当前在线上的用户情况
w命令是who命令的一个增强版
uptime:显示系统运行时间
last:显示系统开机以来或是从每月登入者的讯息

 tail:从参数制定点开始将文件内容写到标准输出
格式 tail [-fr] [-cnmbk Number]
 Number 变量指定将多少单元写入标准输出。Number变量的值可以是正的或负的整数,+表示从开头,-表示从结尾
 -f表示动态的显示文件的内容
 -r表示从文件末尾以逆序方式显示
 -c从Number表示的字节位开始读
 -n从Number表示的行位开始读
 -m从Number表示的多字节字符位置开始读
 -b从Number表示的 512 字节块位置开始读
 -k从Number表示的 1KB 块位置开始读

改变文件的高级属性
chattr [-RV] [-+=AacDdijsSu] [-v version] files...
 R:递归处理所有的文件及子目录
 V:周详显示修改内容,并打印输出
 -:失效属性。
 +:激活属性。
 = :指定属性。
 A:Atime,告诉系统不要修改对这个文件的最后访问时间。
 S:Sync,一旦应用程式对这个文件执行了写操作,使系统即时把修改的结果写到磁盘。
 a:Append Only,系统只允许在这个文件之后追加数据,不允许所有进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除所有文件。
 i:Immutable,系统不允许对这个文件进行所有的修改。如果目录具有这个属性,那么所有的进程只能修改目录之下的文件,不允许建立和删除文件。
 D:检查压缩文件中的错误。
 d:No dump,在进行文件系统备份时,dump程式将忽略这个文件。
 C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
 S:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
 u:Undelete,当一个应用程式请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
lsattr [-adRvV] files...
 查看文件的高级属性
 a全部文件和目录
 d显示目录名称
 R递归
 v文件,目录版本
 V版本信息
 
整理的有点乱……

本文出自 “春种一粒粟
” 博客,请务必保留此出处http://spazzzz.blog.51cto.com/2707720/499923

【上篇】
【下篇】

抱歉!评论已关闭.