此贴每天不断更新,linux命令每天最少敲3个,闲的蛋疼敲10个,坚持!!!
首先注意命令区分大小写,命令间的空格不要省略
/data/shell/11.sh
1
cd /data/shell
./11.sh
2.
/data/shell/11.sh
3
cd /data/shell
bash 11.sh
首先是最重要的命令cd
目录名字区分大小写
#cd / 进入到系统根目录
#cd . 进入当前目录
#cd .. 进入当前目录的父目录,返回上层目录
#cd /tmp 进入指定目录/tmp
#cd ~ 进入当前用户的home目录
#cd 进入当前用户的home目录
#cd - 回到刚才所在的目录
linux中用cd /home可以进入文件夹,但当home中还有个文件夹时,比如example,用cd /example 就进不去,而用cd example就可以
/ 前面加个点号 . 就可以了,. 表示当前路径。cd ./example
直接 / 表示根目录,根目录下不存在 example 文件夹,所以就进不去了。
#dir 显示当前目录的内容(无颜色)
dir加上cd命令linux的文件目录你就可以随便出入了
最基本用法
mkdir dir1 在当前目录下创建dir子目录
最基本用法
rm -rf direct 不用确认直接删除当前目录下的direct文件夹
rm file 不用确认直接删除当前目录下的file文件
删除是危险系数很高的操作,一旦误删可能会造成难以估计的损失。在 Linux 系统中这种危险尤为明显,一条简单的语句:rm –rf /* 就会把整个系统全部删除,而 Linux 并不会因为这条语句的不合理而拒绝执行。
可以重新封装rm命令,实现回收站功能
回收站功能在 Linux 中的实现
linux 删除当前目录下的某一类型文件
利用命令:
find . -name "*.c" | xargs rm -rf
根据文件大小删除文件
find /TESTDIR -size +1000000c -exec rm -f {} \;
说明:删除目录下大于1M的所有文件
/TESTDIR 要删除目录下文件的目录名
rm -f 是执行删除命令操作 换成 du -h如: 查看目录下大于1M的文件find /TESTDIR -size +1000000c -exec du -h {} \;
注:{}和;\ 中间有空格
pwd 显示当前所在目录的路径
最基本方法
cp opencv2_4_9.sh /home/hj/caffe 将当前目录下的opencv2_4_9.sh拷贝到/home/hj/caffe目录下
cp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。
有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。
一、将本机文件复制到远程服务器上
#scp /home/administrator/news.txt [email protected]:/etc/squid
/home/administrator/ 本地文件的绝对路径
news.txt 要复制到服务器上的本地文件
root 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
192.168.6.129 远程服务器的ip地址(也可以使用域名或机器名)
/etc/squid 将本地文件复制到位于远程服务器上的路径
二、将远程服务器上的文件复制到本机
#scp [email protected]:/usr/local/sin.sh /home/administrator
remote 通过remote用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
www.abc.com 远程服务器的域名(当然也可以使用该服务器ip地址)
/usr/local/sin.sh 欲复制到本机的位于远程服务器上的文件
/home/administrator 将远程文件复制到本地的绝对路径
注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 [email protected]:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。
最基本用法
hj@ubuntu:~$ mv opencv2_4_9.sh /home/hj/Pictures 将当前目录下的opencv2_4_9.sh移动到/home/hj/Pictures目录下
可以看看是否成功
hj@ubuntu:~$ cd Pictures
hj@ubuntu:~/Pictures$ dir
opencv2_4_9.sh
移动文件夹的用法和上面一样
Linux中查看各文件夹大小命令du -h --max-depth=1
linux下使用 du查看某个文件或目录占用磁盘空间的大小
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh
du -sh
用history查看当前用户的命令历史记录
history -c清除当前用户的命令历史记录
exit
使用 quit(), exit(), 或者Ctrl-D退出命令行
改变文件权限
+ 为文件或目录增加权限
- 删除文件或目录的权限
= 设置指定的权限
u stands for user.
g stands for group.
o stands for others.
a stands for all.
0 | 没有任何权限 | --- |
1 | 执行权限 | --x |
2 | 写入权限 | -w- |
3 | 执行权限和写入权限:1 (执行) + 2 (写入) = 3 | -wx |
4 | 读取权限 | r-- |
5 | 读取和执行权限:4 (读取) + 1 (执行) = 5 | r-x |
6 | 读取和写入权限:4 (读取) + 2 (写入) = 6 | rw- |
7 | 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 | rwx |
Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Solution:
sudo rm /var/cache/apt/archives/lock
sudo rm var/lib/dpkg/lock
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
1.命令格式:
cat [选项] [文件]...
2.命令功能:
cat主要有三大功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
3.命令参数:
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
4.使用实例:
实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
命令:
cat -n log2012.log log2013.log
输出:
[root@localhost test]# cat log2012.log
2012-01
2012-02
======[root@localhost test]# cat log2013.log
2013-01
2013-02
2013-03
======[root@localhost test]# cat -n log2012.log log2013.log
1 2012-01
2 2012-02
3
4
5 ======
6 2013-01
7 2013-02
8
9
10 2013-03
11 ======[root@localhost test]#
说明:
实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
命令:
cat -b log2012.log log2013.log log.log
输出:
[root@localhost test]# cat -b log2012.log log2013.log log.log
1 2012-01
2 2012-02
3 ======
4 2013-01
5 2013-02
6 2013-03
7 ======[root@localhost test]#
实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
命令:
输出:
[root@localhost test]# cat log.log
[root@localhost test]# cat -n log2012.log > log.log
[root@localhost test]# cat -n log.log
1 2012-01
2 2012-02
3
4
5 ======
[root@localhost test]#
实例四:使用here doc来生成文件
输出:
[root@localhost test]# cat >log.txt < > Hello > World > Linux > PWD=$(pwd) > EOF [root@localhost test]# ls -l log.txt -rw-r--r-- 1 root root 37 10-28 17:07 log.txt [root@localhost test]# cat log.txt Hello World Linux PWD=/opt/soft/test [root@localhost test]# 说明: 注意粗体部分,here doc可以进行字符串替换。 备注: tac (反向列示) 命令: tac log.txt 输出: [root@localhost test]# tac log.txt PWD=/opt/soft/test Linux World Hello 说明: tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来! Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep命令 查找命令总结 Linux下各种查找命令(find, grep, which, whereis, locate) 命令:find find / -name mysql -type d Linux文件查找命令find,xargs详述 搜索文件中匹配符 nohup命令及其输出文件 nohup 修改输出文件名 nohup 运行的时候,一般都会把输出导到nohup.out 文件(无论前台还是后天运行nohup),有的时候想导到指定的文件(尤其是同一个目录下 会启动多个nohup的时候),怎么做呢? Linux终端关闭后台进程也结束原因分析和nohup的使用 LINUX nohup命令输入输出深浅进出 Linux磁盘空间查看及空间满的处理 linux之cut用法 linux之sed用法 linux之awk用法 rar # rar a yajiu.rar yajiu.jpg yajiu.png 例1:添加文件或目录到压缩档案中,使用a命令。例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变,m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件,注意:m命令只针对文件进行操作) zip # zip yajiu.zip yajiu.jpg yajiu.png 7zip 支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 压缩文件格式 ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。 http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。 用法参考tail命令 linux 添加用户、权限 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例子: 可以用convert命令转换图片尺寸 convert -resize 160x80! inputFileName outputFileName 在尺寸后面加上"!"(感叹号)就可以了,表示强制转换,160x768中的x是小写字母x convert -sample 50%x50% xxx.jpg xxx1.jpg 将图像的缩减为原来的50%*50% 如下脚本可以把目录下的图片批量resize for name in /path/to/imagenet/val/*.JPEG; do for img in `ls imgs/*.jpg`; do convert -resize 500x500 $img $img; done 通过命令行处理图形 while true 1.查进程 wc -c filename:显示一个文件的字节数 作用:周期性执行某一命令,并将输出显示 watch的基本用法是: 统计某文件夹下文件的个数 linux命令 (1)vi test.c 创建(如果存在就默认打开)test.c文件,并进入文本编辑器 VI常用命令 用vi命令打开文件时,如何直接跳到最后一行? 用vi命令打开文件直接跳到最后一行的方法如下: linux下vim命令详解 (1) gcc test.c 编译test.c,并生成默认a.out的可执行文件 Linux 如何写makefile文件 debian&ubuntu matplotlib安装 sklearn安装 if you have Python 2 you can install all these requirements by issuing: Linux文件系统分析 设置Linux环境变量的方法和区别_Ubuntu /etc/profile:此文件为系统的为每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d 目录的配置文件中搜集shell的设置. 管道实际上是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文 ( 1 )软连接可以跨文件系统,硬连接不可以 Linux软连接和硬链接 安装libiconv dcmtk安装 挂载硬盘没有执行脚本的权限 CMake入门教程 cmake处理多源文件目录的方法 如何使用gdb调试C程序 使用gdb调试程序完全教程 Linux链接库使用 shell编程初步学习 shell中for循环总结 shell算数运算 Syntax error: Bad for loop variable解决办法 深入探讨:linux中遍历文件夹下的所有文件 http://blog.csdn.net/gatieme/article/category/3054607 Ubuntu的apt-get代理设置 grep命令
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
1.命令格式:
grep [option] pattern file
2.命令功能:
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
3.命令参数:
-a --text #不要忽略二进制的数据。
-A<显示行数> --after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b --byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> --before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count #计算符合样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> #除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> --directories=<动作> #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> --regexp=<范本样式> #指定字符串做为查找文件内容的样式。
-E --extended-regexp #将样式为延伸的普通表示法来使用。
-f<规则文件> --file=<规则文件> #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F --fixed-regexp #将样式视为固定字符串的列表。
-G --basic-regexp #将样式视为普通的表示法来使用。
-h --no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H --with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。
-i --ignore-case #忽略字符大小写的差别。
-l --file-with-matches #列出文件内容符合指定的样式的文件名称。
-L --files-without-match #列出文件内容不符合指定的样式的文件名称。
-n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。
-q --quiet或--silent #不显示任何信息。
-r --recursive #此参数的效果和指定“-d recurse”参数相同。
-s --no-messages #不显示错误信息。
-v --revert-match #显示不包含匹配文本的所有行。
-V --version #显示版本信息。
-w --word-regexp #只显示全字符合的列。
-x --line-regexp #只显示全列符合的列。
-y #此参数的效果和指定“-i”参数相同。
4.规则表达式:
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
POSIX字符:
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:] #文字数字字符
[:alpha:] #文字字符
[:digit:] #数字字符
[:graph:] #非空字符(非空格、控制字符)
[:lower:] #小写字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #标点符号
[:space:] #所有空白字符(新行,空格,制表符)
[:upper:] #大写字符
[:xdigit:] #十六进制数字(0-9,a-f,A-F)find寻找文件
格式:find pathname [option] expression
功能:在所给的路经名下寻找符合表达式相匹配的文件。
选项:-name 表示文件名
-user 用户名,选取该用户所属的文件
-size 按大小查找,以block为单位,一个block是512B
-mtime n 按最后一次修改时间查找,选取n天内被修改的文件
-perm 按权限查找
-type 按文件类型查找
-atime 按最后一次访问时间查找
例如:% find ./ -name '*abc*' -print 查找文件夹
命令:grep
格式:grep [option] pattern filenames
功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。
选项:-i 匹配时忽略大小写
-v 找出模式失配的行
例如:% grep -i 'java*' ./test/run.shnohup命令
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。
一般都是在linux下nohup格式:
nohup command
或者
nohup command &
这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);
它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件这个看似很方便,但是当输出很大的时候,nohup.txt文件会非常大,或者多个后台命令的时候大家都会输出到nohup.txt文件,不利于查找结果和调试程序。
所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。
其实我们一直都在用,只是没有注意到,
比如
>./command.sh > output
#这其中的>就是标准输出符号,其实是 1>output 的缩写
>./command.sh 2> output
#这里的2>就是将标准错误输出到output文件里。
而0< 则是标准输入了。
下面步入正题,重定向后台命令
>nohup ./command.sh > output 2>&1 &
解释:前面的nohup 和后面的&我想大家都能明白了把。
主要是中间的 2>&1的意思
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,
所以结果是标准错误和标准输出都导入文件output里面了。
至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。
这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.
这就是为什么有人会写成:
nohup ./command.sh >output 2>output出错的原因了
##########################
最后谈一下/dev/null文件的作用
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里>./command.sh >/dev/null 2>&1
做法是给nohup 指定文件重定向:
nohup cmd_to_run 2>file_2 1>file_1
这样,cmd_to_run 运行产生的本来往标准输出的内容将会被保存在文件file_1, 而本来往标准错误输出的内容则会被保存在文件file_2中。df
du
xargs
cut
sed
awk
解压缩
这条命令是将yajiu.jpg和yajiu.png压缩成一个rar包
# rar a yajiu.rar *.jpg
这条命令是将所有.jpg的文件压缩成一个rar包
# rar a yajiu.rar yajiu
这条命令是将文件夹yajiu压缩成一个rar包
# unrar e yajiu.rar
这条命令是将yajiu.rar中的所有文件解压出来
$rar a abc.rar file1
说明:如果此时abc.rar档案不存在,会自行创建abc.rar文档案,如果abc.rar档案已经存在,则将file1文件压缩进abc.rar档案中,若abc.rar档案中已存在一个file1文件,则会更新file1文件。并且原有的file1文件依然存在于当前目录下,若要将file1文件移动到file1.rar中请使用m命令,对于目录同样可以进行此操作。
注意:如果只输入"rar a file1.rar"命令,而没有接文件名或目录名的话,会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。
例2:解压缩abc.rar档案中的内容,可以使用e或x命令,假设abc.rar目录中有一个名为file1的文件和一个名为test的目录,test目录中有一个名为file2的文件,
$rar e abc.rar
说明:使用e命令,会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。
$rar x abc.rar
说明:此时会将file1文件和test目录解压到当前文件夹。
这条命令是将yajiu.jpg和yajiu.png压缩成一个zip包
# zip yajiu.zip *.jpg
这条命令是将所有.jpg的文件压缩成一个zip包
# zip -r yajiu.zip yajiu
这条命令是将文件夹yajiu压缩成一个zip包
# unzip yajiu.zip
这条命令是将yajiu.zip中的所有文件解压出来
安装: sudo apt-get install p7zip p7zip-full p7zip-rar
# 7z a yajiu.7z yajiu.jpg yajiu.png
这条命令是将yajiu.jpg和yajiu.png压缩成一个7z包
# 7z a yajiu.7z *.jpg
这条命令是将所有.jpg的文件压缩成一个7z包
# 7z a yajiu.7z yajiu
这条命令是将文件夹yajiu压缩成一个7z包
# 7z e yajiu.7z
这条命令是将yajiu.7z中的所有文件解压出来,e是解压到当前路径
# 7z x yajiu.7z
这条命令是将yajiu.7z中的所有文件解压出来,x是解压到压缩包命名的目录下ln 命令
1.命令格式:
ln [参数][源文件或目录][目标文件或目录]
2.命令功能:
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
这里有两点要注意:
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
3.命令参数:
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息tail命令
一、tail命令语法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
参数解释:
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
File 指定操作的目标文件名称
上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。
tail可运行文件一般在/usr/bin/以下。
二、tail命令使用方法演示例子
1、tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
2、tail -n 20 filename
说明:显示filename最后20行。
3、tail -r -n 10 filename
说明:逆序显示filename最后10行。
补充:
跟tail功能相似的命令还有:
cat 从第一行開始显示档案内容。
tac 从最后一行開始显示档案内容。
more 分页显示档案内容。
less 与 more 相似,但支持向前翻页
head 仅仅显示前面几行head命令
useradd
convert
convert xxx.jpg xxx.png 将jpeg转成png文件
convert xxx.gif xxx.bmp 将gif转换成bmp图像
convert xxx.tiff xxx.pcx 将tiff转换成pcx图像
旋转图像:
convert -rotate 270 sky.jpg sky-final.jpg 将图像顺时针旋转270度
使用-draw选项还可以在图像里面添加文字:
convert -fill black -pointsize 60 -font helvetica -draw 'text 10,80 "Hello, World!" ‘ hello.jpg helloworld.jpg
在图像的10,80 位置采用60磅的全黑Helvetica字体写上 Hello, World!
convert -resize 256x256\! $name $name
done whiile循环
do
bypy.py syncdown
done查杀进程
ps命令查找与进程相关的PID号:
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
2.杀进程
使用kill命令结束进程:kill xxx
常用:kill -9 324
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAMEWC
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数watch
watch [options] command
最常用的参数是 -n, 后面指定是每多少秒来执行一次命令。
监视显存:我们设置为每 10s 显示一次显存的情况:
watch -n 10 nvidia-smi统计某文件夹下文件、文件夹的个数
ls -l |grep "^-"|wc -l
统计某文件夹下目录的个数
ls -l |grep "^d"|wc -l
统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l
如统计/home/han目录(包含子目录)下的所有js文件则:
ls -lR /home/han|grep js|wc -l 或 ls -l "/home/han"|grep "js"|wc -l
统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
说明:
ls -lR
长列表输出该目录下文件信息(R代表子目录注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)
grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
======================================
如果只查看文件夹
ls -d 只能显示一个.
find -type d 可以看到子文件夹
ls -lF |grep / 或 ls -l |grep '^d' 只看当前目录下的文件夹,不包括往下的文件夹vi 文本编辑器
(2):q 没有修改直接退出
(3)i 进入vi以后,键入i进入插入模式就可以输入文件
(4):wq 退出并保存修改
(5):q! 退出不保存修改
(6)dd 删除当前行
(7)yy 拷贝当前行
(8)p 粘贴
(9):w 保存修改(不退出vi)
(0)a 进入vi以后,键入a进入追加模式就可以输入文件
_______________________________________________________
一般模式 光标移动
__________________________________________________________
h 或 向左方向键 光标向左移动一个字符
j 或 向下方向键 光标向下移动一个字符
k 或 向上方向键 光标向上移动一个字符
l 或 向右方向键 光标向右移动一个字符
Ctrl + f 屏幕向前翻动一页(常用)
Ctrl + b 屏幕向后翻动一页(常用)
Ctrl + d 屏幕向前翻动半页
Ctrl + u 屏幕向后翻动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列
n
n个字符,例如20
0 (这是数字0) 移动到这一行的第一个字符处(常用)
$ 移动到这一行的最后一个字符处(常用)
H 光标移动到这个屏幕最上方的那一行
M 光标移动到这个屏幕中央的那一行
L 光标移动到这个屏幕最下方的那一行
G 移动到这个文件的最后一行(常用)
nG 移动到这个文件的第n行.例如20G,则会移动到这个文件的
第20行(可配合:set nu)
n
________________________________________________________________
一般模式 查找替换
________________________________________________________________
/word 在光标之前查找一个名为word的字符串
?word 在光标之前查找一个名为的word字符串
:n1,n2s/word1/word2/g 在第n1与n2行之间查找word1这个字符串,并将该字符串替换
为word2(常用)
:1,$s/word1/word2/g 从第一行到最后一行查找word1字符串,并将该字符串替换
为word2(常用)
:1,$s/word1/word2/ge 从第一行到最后一行查找word1字符串,并将该字符串替换
为word2,且在替换前显示提示符让用户确认(confirm)(常用)
__________________________________________________________________
一般模式 删除 复制与粘贴
__________________________________________________________________
x,X x为向后删除一个字符,X为向前删除一个字符(常用)
nx 向后删除n个字符
dd 删除光标所在的那一整行(常用)
ndd 删除光标所在行的向下n行,例如,20dd则是删除20行(常用)
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在行到最后一行的所有数据
yy 复制光标所在行(常用)
nyy 复制光标所在行的向下n行,例如,20yy则是复制20行(常用)
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
p,P p为复制的数据粘贴在光标下一行,P则为粘贴在光标上一行(常用)
J 将光标所在行与下一行的数据结合成一行
u 恢复前一个动作(常用)
____________________________________________________________________
编辑模式
___________________________________________________________________
i,I 插入:在当前光标所在处插入输入的文字,已存在的字符会向后
退(常用)
a,A 添加:由当前光标所在处的下一个字符开始输入,已存在的字符
会向后退(常用)
o,O 插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
r,R 替换:r会替换光标所指的那一个字符:R会一直替换光标所指的
文字,直到按下Esc为止(常用)
Esc 退出编辑模式,回到一般模式(常用)
___________________________________________________________________
命令行模式
___________________________________________________________________
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读,强制写入该文件
:q 退出vi(常用)
:q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:wq 保存后退出,若为:wq!,则为强制保存后退出(常用)
:w [filename] 将编辑数据保存为另一个文件(类似另存新文档)
:r [filename] 在编辑的数据中,读入另一个论据的数据,亦即将filename这
个文件内容加到光标所在行的后面
:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu 与set nu相反,为取消行号
n1,n2 w [filename] 将n1到n2的内容保存为filename 这个文件
:$ 跳到文件最后一行
:0或:1 跳到文件第一行
或 另外一组命令:
gg 跳到文件第一行
Shift + g 跳到文件最后一行gcc编译器
(2) ./a.out 执行程序a.out
(3) gcc –c test.c 将test.c编译成目标文件test.o
(4) gcc –o test test.o 将目标文件生成可执行文件test
(5) gcc test.c –o test 编译test.c,并直接生成test可执行文件makefile
scipy安装
fedora¢os
sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
sudoapt-getinstallpython-matplotlib
sudoyuminstallpython-matplotlib
sudo apt-get install build-essential python-dev python-setuptools \
python-numpy python-scipy \
libatlas-dev libatlas3gf-base
If you have Python 3:
sudo apt-get install build-essential python3-dev python3-setuptools \
python3-numpy python3-scipy \
libatlas-dev libatlas3gf-base
On recent Debian and Ubuntu (e.g. Ubuntu 13.04 or later) make sure that ATLAS is used to provide the implementation of the BLAS and LAPACK linear algebra routines:
sudo update-alternatives --set libblas.so.3 \
/usr/lib/atlas-base/atlas/libblas.so.3
sudo update-alternatives --set liblapack.so.3 \
/usr/lib/atlas-base/atlas/liblapack.so.3
Note In order to build the documentation and run the example code contains in this documentation you will need matplotlib:
sudo apt-get install python-matplotlib
2.pip install --user --install-option="--prefix=" -U scikit-learn
或者 sudo apt-get install python-sklearn
/etc/bashrc :为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile :每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc :该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout :当每次退出系统(退出bash shell)时,执行该文件.
bash_profile 、.bashrc 、和.bash_logout
上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。
.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有 命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,目的是为了兼容其它Shell。 在Debian中使用.profile文件代 替.bash_profile文件。
.bashrc 文件会在bash shell调用另一个bash shell时读取,也就是在shell中再键入bash命令启动一个新shell时就会去读该文件。这样可有效分离登录和子shell所需的环境。但一般 来说都会在.bash_profile里调用.bashrc脚本以便统一配置用户环境。
.bash_logout 在退出shell时被读取。所以我们可把一些清理工作的命令放到这文件中。
登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个(根据不同的linux操作系统的不同,命名不一样),执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件管道
件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。它类似于通信中半双工信道的进程通信机制,一个管道可以实现双向 的数据传输,而同一个时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容 量大小通常为内存上的一页,它的大小并不是受磁盘容量大小的限制。当管道满时,进程在 写管道会被阻塞,而当管道空时,进程读管道会被阻塞。硬链接/软链接
( 2 )硬连接不管有多少个,都指向的是同一个 I 节点,会把结点连接数增加,只要结点的连接数不是 0 ,文件就一直存在不管你删除的是源文件还是连接的文件。只要有一个存在文件就存在。 当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用 i 节点号作为文件指针 , 而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的 i 节点 , 并在磁盘上有一小片空间存放路径名。
( 3 )软连接可以对一个不存在的文件名进行连接 。
( 4 )软连接可以对目录进行连接。安装zlib
在ubuntu软件源里zlib和zlib-devel叫做zlib1g zlib1g.dev
$ sudo apt-get install zlib1g
$ sudo apt-get install zlib1g.dev
直接输入上述命令后还是不能安装。这就要求我们先装ruby.
在ubuntu里,zlib叫zlib1g,相应的zlib-devel叫zlib1g.dev。默认的安装源里没有zlib1g.dev。要在packages.ubuntu.com上找。
$sudo apt-get install ruby
然后再装zlib1g-dev就可以了
$sudo apt-get install zlib1g-dev
apt-get install zlib1g
$ sudo apt-get install zlib1g.dev
直接输入上述命令后还是不能安装。这就要求我们先装ruby.
在ubuntu里,zlib叫zlib1g,相应的zlib-devel叫zlib1g.dev。默认的安装源里没有zlib1g.dev。要在packages.ubuntu.com上找。
$sudo apt-get install ruby
然后再装zlib1g-dev就可以了
$sudo apt-get install zlib1g-dev编译 libiconv出错了
fedora上的dcmtk3.6.1编译
cmake使用教程
gdb使用教程
常用gdb调试技巧整理
linux链接库
shell脚本