linux命令行
来源:互联网 发布:net域名为什么遇冷 编辑:程序博客网 时间:2024/06/05 01:00
转载自http://blog.csdn.net/macdroid/article/details/17139895
1 Linux命令简介
1.1 命令格式
说明:
1. 提示符:root账户提示符为#,一般身份用户提示符为$
2. 指令:区分大小写
3. 选项:可以使用-h或者--help
4. 指令太长:可使用\符号使指令连续到下一行
5. 使用分号表示连续执行:ll bashrc ; ll --time=atime bashrc ; ll --time=ctime bashrc
1.2 参数含义
一般来说,Linux的命令参数有其一般含义:
1.3 切换终端
切换文字终端和图形界面:
1.4 基础命令练习
1.5 linux快捷键
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
ctrl-l 清屏
ctrl-r 逆向搜索包含输入字符串的命令,继续按 Ctrl+r,再向上搜索,可使用 Ctrl+c 中断命令
在终端直接上翻,下翻【比如ls输出太多,看不到上面显示的】
SHIFT+ PAGEUP
SHIFT + PAGEDOWN
1.6 linux查询命令man_info
/usr/man/man2 系统调用─关于核心函数的文档
/usr/man/man3 库调用─libc函数的使用手册页
/usr/man/man4 特殊文件─关于/dev目录中的文件的信息
/usr/man/man5 文件格式─/etc/passwd和其他文件的详细格式
/usr/man/man6 游戏
/usr/man/man7 宏命令包─对Linux文件系统、使用手册页等的说明
/usr/man/man8 系统管理─根操作员操作的使用手册页
/usr/man/man9 核心例程─关于Linux操作系统内核源例程或者内核模块技术指标的文档
1.7 linux查看文件命令
1.7.1 直接查看cat_tac_nl
cat: 由第一行开始显示文件内容
tac: 从最后一行开始显示文件内容,可以看出 tac 是 cat 倒写形式
nl : 显示的时候,顺便输出行号!
1.7.2 可翻页查看more_less
more: 一页一页的显示文件内容less:与more 类似,但是比 more 更好的是,他可以往前翻页!
空格下翻一页[Page Up]上翻一页[Page Down]下翻一页[Home]第一页[End]末页/String向下查询String?String向上查询Stringn,Nn表示下一个匹配,N表示上一个匹配q退出
1.7.3 数据选取head_tail
head: 只看头几行tail: 只看结尾几行综合示例:
1.8 命令file:查看文件类型
1.9 命令history:搜索历史命令
bash将使用过的旧命令记录在家目录下的~/.bash_history 文件下(默认1000条)。特别的,~/.bash_history 记录的是前一次登入以前所执行过的指令, 而至于这一次登入所执行的指令都被暂存在暂内存中,当您成功的注销系统后,该指令记忆才会记录到 .bash_history 当中!
利用history执行命令
参数:
number:执行第几笔指令的意思;
command :由最近的指令向前搜寻"指令串开头为 command"的那个指令,并执行;
!!:就是执行上一个指令(相当于按↑按键后,按 Enter)
1.10 命令time:测量程序运行时间
1.11 命令alias:加入命令别名
系统设置永久,给全系统使用/etc/bashrcsource /etc/bashrc用户设置永久,给个人用户使用~/.bashrc
source /home/xxx/.bashrc 命令行设置临时,当次有效#alias cl='clear'
BASH Shell的配置文件:
1,系统设定值
所谓的系统设定值,也就是每个用户进入到bash shell之后先读取的配置文件.默认有以下几个:
(1),/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
(2),/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
(3),/etc/man.config: 此文件的内容规范了使用man时man page的路径在哪里.
2,个人设定值
个人设定值就是存在个人根目录的那几个隐藏文件.
(1),~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
(2),~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
(3),~/.bash_history: 此文件用于记录曾经用过的命令.
(4),~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件.
3,加载过程
在登录Linux时要执行文件的过程如下:
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:
if [ -f ~/.bashrc ] ; then
. ./bashrc
fi
~/.bashrc中,一般还会有以下代码:
if [ -f /etc/bashrc ] ; then
. /bashrc
fi
所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
常用的alias(可以作为临时alias,命令行输入)
1.12 命令useradd
新加一个用户:
其中-d表示指定主目录,-m表示如果主目录不存在则新建主目录。设置密码
1.13 命令id
显示用户的ID,以及所属群组的ID。
2 文件与目录管理
2.1 命令ls
ls=Listing Files/SubFolders:列出文件/子目录
ls
ls -al
ls -alh
参数 :
-a显示全部文件(包括.开头的隐藏文件)
-l比较详细的列表-h人类能看懂的比如把1024显示为1K
ls b*
列出以b开头的所有文件或文件夹(及其下的所有文件)
举例:
gexing111@gexing111-Lenovo-IdeaPad-Y470 ~ $ ls
Desktop latest.zip nox-dependencies.deb.1 Templates workspace
Documents Music Pictures test
Downloads newtxt Public Videos
eclipse nox-dependencies.deb swig-1.3.40 wordpress
其中有文件 latest.zip
则 :
gexing111@gexing111-Lenovo-IdeaPad-Y470 ~ $ ll l*
-rw-rw-r-- 1 gexing111 gexing111 4247824 2012-03-05 12:48 latest.zip
其中有文件夹Music
gexing111@gexing111-Lenovo-IdeaPad-Y470 ~ $ ll M*
total 0
-rw-rw-r-- 1 gexing111 gexing111 0 2012-03-09 14:31 1.txt
因为M开头的没有该文件,只有一个Music文件夹,这是唯一的,其实这时(M*)按Tab键就可以直接补全了,所以就不会显示文件夹名字。
其中的文件夹Pictures和Public都以P开头:
gexing111@gexing111-Lenovo-IdeaPad-Y470 ~ $ ll P*
Pictures:
total 456
-rw-rw-r-- 1 gexing111 gexing111 349353 2012-03-06 20:26 Screenshot at 2012-03-06 20:26:29.png
-rw-rw-r-- 1 gexing111 gexing111 105610 2012-03-08 23:12 Screenshot at 2012-03-08 23:12:19.png
Public:
total 0
注意 total是文件总大小。
有时ll是 ls -al的简写
所有参数 :
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来
-A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录,一起列出来
-l :除文件名称外,亦将文件类型、权限、拥有者、文件大小等信息详细列出
-h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来;
-r :将排序结果反向输出,例如:原本文件按英文字母顺序由小到大,反向则为由大到小;
-R :递归连同子目录内容一起列出来;
-t :依时间排序
2.2 命令cd
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前用户身份”所在的主目录
~account 代表 account 这个使用者的主目录
与此相关的命令:
2.3 命令pwd
2.4 命令mkdir
2.5 命令rmdir
2.6 命令rm
强制删除backup.zip这个文件并不需确认,列出删除文件列表,一般还是别强制删除,除非你知道你在干嘛…
-v一般v参数都是显示过程的意思
-f 一般force的意思,即强制删除
rm -rf backup
删除backup这个文件夹,包含它的子文件和子文件夹
删除文件用上面的命令,但删除文件夹的时候就需要跑下遍历了
-r 在所有命令里都是 recursive 的意思,有些命令是大写的 R 需要注意
2.7 命令mv
重命名backup.zip为sayhosts.com
如果加路径,就是移动到某个路径并重命名为sayhosts.com
2.8 命令cp
复制backup.zip这个文件并重命名为sayhosts.com
cp -r test test2
递归将文件夹test拷贝到test2
cp -a test test2
参数-a :相当于 -pdr 的意思,即递归将所有文件包括时间等属性都复制过来。
2.9 命令chmod:更改文件权限
chmod 777 backup.zip默认文件为644,文件夹为755,用这个命令就可以改成我们常用的777权限了
2.10 命令chown:更改属主
2.11 命令df:显示磁盘使用率
df -h显示整个主机的总容量以及比率
2.12 命令du:查看文件夹总容量
du -sh dir-s就是summary,只输出当前文件夹总容量
-h一般在linux就是human给人看的意思,会把1048580b转换为1mb显示
du -h --max-depth=1
只列出当前文件夹和第一级子目录占用大小
而用ls dir的话只是列出其目录(而非其下所有文件)的大小,一般一个目录大小<=4K都记为4K。
2.12 命令ln:硬链接软链接
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
前提必须清楚一点,当指向数据的文件个数为0 时,数据块就会被释放掉,硬链接相当于硬盘上一块数据的多个指针,而软链接相当于指向数据指针的指针。
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
实验
从上面的结果中可以看出,硬连接文件f1与原文件test的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
通过上面的测试可以看出:当删除原始文件test后,硬连接f1不受影响,但是符号连接f2文件无效总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f2,对test,f1无影响;
2).删除硬连接f1, 对test,f2也无影响;
3).删除原文件test,对硬连接f1没有影响,导致符号连接f2失效;
4).同时删除原文件test,硬连接f1,整个文件会真正的被删除。
使用
比如我要建立一个目录 xiaobao->/asp/disk8/xiaobao
2.13 命令dd:指定块拷贝
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
2.14 命令mount:挂载设备
以Linux挂载U盘为例(默认设备最开始在/dev/下,需要挂载到/mnt/usb下):
1、插入u盘到计算机,如果目前只插入了一个u盘而且你的硬盘不是scsi的硬盘接口的话,那它的硬件名称为:sda1。
2、在mnt目录下先建立一个usb的目录 mkdir /mnt/usb
3、挂载U盘:mount -t vfat /dev/sda1 /mnt/usb
4、卸载U盘:umount /mnt/usb
5、删除usb目录:rm -rf /mnt/usb
3 基本命令
3.1 shell脚本:在一堆JAR包中找CLASS
for f in `find *.jar`; do jar tvf $f |grep -i GrammarSanity.class ; echo $f; done
find ./lib/*
3.2 命令wget :获取远程文件
wget http://wordpress.org/latest.zip
这样便可以非常方便的将wordpress最新版下载到服务器上当前目录,免去了下载、上传的麻烦。而且通过服务器去另外的服务器下载东东.3.3 命令tar:压缩/解压缩
• *.Z compress 程序压缩的文件;
• *.bz2 bzip2 程序压缩的文件;
• *.gz gzip 程序压缩的文件;
• *.tar tar 程序打包的文件,并没有压缩过;
• *.tar.gz tar 程序打包的文件,并且经过 gzip 的压缩
如果压缩文档是zip格式的,那么就可以用unzip这个命令来解压。
-c创建
-z用gzip压缩方式
-v显示压缩过程
-f后接文件名
-x解压缩
-z用gzip压缩方式
-v显示压缩过程
-f后接文件名
3.4 命令uniq:进行文本排序
文本内容:
进行排序,并统计单词数目:
其中第一步sort 1.txt,先进行字母排序:然后进行uniq -c 统计:
然后再进行按数字大小由大到小排序sort的-n表示按数值比较,-r表示反序:最后tee保存到文件同时输出。3.5 命令tail:即时显示文件内容
3.6 命令reset:shell屏幕字符乱掉
可能是屏幕的缓冲区满了,原因未细究。3.7 命令xargs:过滤器
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。
如果“find . -name "*.py"”有两个结果a.py和b.py。那么这里xargs的作用就是将这两个结果分割并传递给ls -l。【结果默认都在结尾!】所以这里相当于:
xargs特别适合与find(find其实功能非常强大)一起使用,以下是两个例子:xargs+cp/mv
因为这种的结果都不是在末尾处,而是在cp/mv命令的中间。
3.8 命令md5sum:检验两个文件是否相同
如检验Jar包是否更新过代码
也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符*,比如某目录下有几个sh文件,要把这几个sh文件的摘要输出到sh.md5文件中,命令如下:
3.9 命令grep:文本字符串查找
-i选项忽略大小写,一般正则表达式用单引号‘ ’括起来,后面的‘\<word\>’是正则表达式匹配一个完成单词,前后有空格的。
-v选项表示反选后面的单词
命令格式:
参数:-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
3.10 命令cut:文本行处理
参数:-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
示例1:将 PATH 变量取出,我要找出第三个路径。
3.11 命令awk:文本行处理
其中-F 表示用什么来分割字段,'prog'= 'pattern {action}' 用来处理以什么模式来匹配,和怎么进行处理。
3.12 命令sed:文本行处理
将文件第20行~第80行转存到1.txt sed
所有以file开头的文件中的a都替换为b:
3.13 命令find:递归搜索文件名
3.14 命令tee:打印并同时输出到文件
tee 命令读取标准输入,然后将程序的输出写到标准输出,并同时将其复制到指定的一个或多个文件。
主要参数
-a 将输出添加到 File 的末尾而不是覆盖写入。
-i 忽略中断
实验
1,要同时查看和保存一个命令的输出:
2,要同时查看一个命令的输出并保存到一个现有文件:它将在工作站上显示 lint program.c 命令的标准输出,同时在 program.lint 文件尾部添加输出的一个副本。 如果 program.lint 文件不存在,它将被创建。
3,同时拷贝三份文件列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1、ss-copy2、ss-copy3
3.15 命令diff_patch:比较文件并打补丁
diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。
一般A是原始文件,B是修改后的文件,C称为A的补丁文件。
3.16 命令pstack:查看某进程下所有线程
Linux下打印出他所有线程的调用栈,从栈再配合程序代码就知道程序行为。事实上pstack雷人的是,这个程序竟然是个shell脚本,核心实现是gdb的 thread apply all bt。
查看某进程号pid下所有线程:
3.17 命令jar:打成jar包
JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件,准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。
创建Jar包:
-v 显示过程信息
-f 指定 JAR 文件名,通常这个参数是必须的
-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数
-0 数字0,表示只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快
解压Jar包:
-x 展开 JAR 文件包的指定文件或者所有文件
-v 显示过程信息
-f 指定 JAR 文件名,通常这个参数是必须的
列出目录:
-f 指定 JAR 文件名,通常这个参数是必须的
将两个Jar包合并为一个:
先将两个Jar包都解压,然后再打成一个,注意,里面的MANIFEST可以不要,即重新打包的时候不需要参数-M了。
3.18 命令java -cp:爪哇运行Jar包
用冒号分割目录,必须要加入当前目录".",-cp表示-classpath指明了class文件路径3.19 命令scp:远程传输文件
1,从本地服务器复制到远程服务器
scp local_file remote_username@remote_ip:remote_folder
scp remote_username@remote_ip:remote_folder local_file
对于递归复制文件夹,则需要-r参数,注意-r参数应放置的位置是:scp -r ....
5 系统服务
5.1 命令ps:进程管理
5.1.1 三种常用范式
5.1.2 “ps aux” 说明
“ps -ef”比“ps aux”多一项PPIDSTAT狀態位常見的狀態字符
5.1.3 未知执行命令时:pgrep
或使用pstree查看
5.1.4 已知执行命令时:ps
2.1 直接查找命令:
【已知:跑了以python2.7开头的很多命令】
ps -ef | grep python2.7
2.2 过滤命令:ps -ef | grep python2.7 | grep -v grep | grep tester.py
2.3 打印进程号:
ps -ef | grep python2.7| grep -v grep | grep tester.py | awk'{print $2}'
ps -ef | grep python2.7| grep -v grep | grep tester.py | awk'{print $2}' | wc -l2.4 杀死进程
ps -ef | grep python2.7| grep -v grep | grep tester.py | awk'{print $2}' | xargs kill -9
【另,如果确认之生成了进程python2.7 balabala】
亦可以killall python2.7
5.1.5 杀死进程:kill_killall
强制杀掉父进程
5.2 命令crontab:定时作业
1,命令at:脱机+仅执行一次的job调度
2,命令crontab:循环执行例行性job
针对用户的例行性job:
一些例子:
针对系统的例行性job:
/etc/crontab 文件使用 run-parts 脚本来执行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。如果你想要增加一个任务到cron里,把运行任务的脚本(或者脚本的连接)放在对应的目录里;如果去掉run-parts这个参数的话,后面就可以写要运行的某个脚本的完整路径名,而不是文件夹名了。
3,命令\&:后台提交作业
4,命令nohup:脱机+后台提交作业
5.3 命令jobs:作业管理
1,作业放在后台运行:&
2,作业放到后台并暂停:Ctrl+z
3,观察当前后台作业状况:jobs
4,后台作业拿到前台处理:fg
5,让作业在后台运行:bg
6,杀死后台作业:kill
5.4 命令chkconfig:将服务加入开机自启动
用法:
- linux 命令行
- Linux 命令行
- linux命令行
- Linux命令行
- linux 命令行
- linux命令行
- linux 命令行
- Linux命令行
- linux 命令行
- linux命令行
- linux命令行
- Linux 命令行
- Linux命令行
- Linux命令行
- linux命令行
- Linux 命令行
- linux命令行
- Linux命令行
- struts2中的通配符映射
- tableView实现第一个cell半遮挡tableHeaderView
- JSTL
- github中ssh和https提交的区别
- linux笔记之共享内存
- linux命令行
- java第三天--cmd编译找不到符号解决及对象的转型
- cadence allegro 布线小技巧
- vmware workstation+ubuntu16.04突然不能联网了!
- 浏览器兼容之旅的第一站:如何创建条件样式
- hadoop自定义数据类型
- PHP7.1 狐教程
- 显著性检测的AC与MSSS算法
- mysql 字符集总结