17 June 2017

bash 只是众多linux shell的一种。 bash shell是sh shell的增强版本。目前linux大部分使用的都是bash shell.

查看隐藏文件

ls -a

重命名

①将一个名为abc.txt的文件重命名为1234.txt mv abc.txt 1234.txt ②将目录A重命名为B mv A B ③将a.txt移动到/b下,并重命名为c.txt mv a.txt /b/c.txt

例子:将/a目录移动到/b下,并重命名为c

mv /a /b/c

其实在文本模式中要重命名文件或目录的话也是很简单的,我们只需要使用mv命令就可以了,比如说我们要将一个名为abc的文件重命名为1234就可以这样来写:mv abc 1234,但是要注意的是,如果当前目录下也有个1234的文件的话,我们的这个文件是会将它覆盖的

查看一个文件 fileA 大小

ls -l fileA // 字节为单位 或者 ls -lh fileA //M为单位,K

linux 文件操作

http://www.cnblogs.com/zf2011/archive/2011/05/17/2049155.html

Linux下复制粘贴快捷键

  1. 在终端下:

      复制命令:Ctrl + Shift + C  组合键.
    
      粘贴命令:Ctrl + Shift + V  组合键.
    
  2. 在控制台下:

      复制命令:Ctrl + Insert  组合键  或  用鼠标选中即是复制。
    
      粘贴命令:Shift + Insert  组合键  或  单击鼠标滚轮即为粘贴。
    

补充 — Ubuntu终端 快捷键

快捷键 功能 Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ctrl+d 删除当前字符 Ctrl+h 删除当前字符前一个字符 Ctrl+w 删除此处到左边的单词 Ctrl+y 粘贴由 Ctrl+u , Ctrl+d , Ctrl+w 删除的单词 Ctrl+l 相当于clear,即清屏 Ctrl+r 查找历史命令 Ctrl+b 向回移动光标 Ctrl+f 向前移动光标 Ctrl+t 将光标位置的字符和前一个字符进行位置交换 Ctrl+& 恢复 ctrl+h 或者 ctrl+d 或者 ctrl+w 删除的内容 Ctrl+S 暂停屏幕输出 Ctrl+Q 继续屏幕输出 Ctrl+Left-Arrow 光标移动到上一个单词的词首 Ctrl+Right-Arrow 光标移动到下一个单词的词尾 Ctrl+p 向上显示缓存命令 Ctrl+n 向下显示缓存命令 Ctrl+d 关闭终端 Ctrl+xx 在EOL和当前光标位置移动 Ctrl+x@ 显示可能hostname补全 Ctrl+c 终止进程/命令 Shift +上或下 终端上下滚动 Shift+PgUp/PgDn 终端上下翻页滚动 Ctrl+Shift+n 新终端 alt+F2 输入gnome-terminal打开终端 Shift+Ctrl+T 打开新的标签页 Shift+Ctrl+W 关闭标签页 Shift+Ctrl+C 复制 Shift+Ctrl+V 粘贴 Alt+数字 切换至对应的标签页 Shift+Ctrl+N 打开新的终端窗口 Shift+Ctrl+Q 管壁终端窗口 Shift+Ctrl+PgUp/PgDn 左移右移标签页 Ctrl+PgUp/PgDn 切换标签页 F1 打开帮助指南 F10 激活菜单栏 F11 全屏切换 Alt+F 打开 “文件” 菜单(file) Alt+E 打开 “编辑” 菜单(edit) Alt+V 打开 “查看” 菜单(view) Alt+S 打开 “搜索” 菜单(search) Alt+T 打开 “终端” 菜单(terminal) Alt+H 打开 “帮助” 菜单(help)

Linux 查看文件

android 环境中linux内核查看文件 cat 文件1 创建一个文件(节点) touch nodeA 往节点写数据 echo “Raspberry” > nodeA

查看CPU个数、核数、逻辑CPU个数

总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

查看物理CPU个数

cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

查看每个物理CPU中core的个数(即核数)

cat /proc/cpuinfo| grep “cpu cores”| uniq

查看逻辑CPU的个数

cat /proc/cpuinfo| grep “processor”| wc -l

查看CPU信息(型号)

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

Top 命令

Linux top -n 10

Desktop 终端切到桌面目录 cd /home/username1/Desktop

linux下文件的复制、移动与删除命令为:cp,mv,rm

一、文件复制命令cp 命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination) cp [option] source1 source2 source3 … directory 参数说明: -a:是指archive的意思,也说是指复制所有的目录 -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身 -f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制 -i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作 -l:建立硬连接(hard link)的连接文件,而非复制文件本身 -p:与文件的属性一起复制,而非使用默认属性 -r:递归复制,用于目录的复制操作 -s:复制成符号连接文件(symbolic link),即“快捷方式”文件 -u:若目标文件比源文件旧,更新目标文件 如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令: cp /test1/file1 /test3/file2 二、文件移动命令mv 命令格式:mv [-fiv] source destination 参数说明: -f:force,强制直接移动而不询问 -i:若目标文件(destination)已经存在,就会询问是否覆盖 -u:若目标文件已经存在,且源文件比较新,才会更新 如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令: mv /test1/file1 /test3/file2 三、文件删除命令rm 命令格式:rm [fir] 文件或目录 参数说明: -f:强制删除 -i:交互模式,在删除前询问用户是否操作 -r:递归删除,常用在目录的删除 如删除/test目录下的file1文件,可以输入以下命令: rm -i /test/file1

在Linux下拷贝的时候有时候会出现cp:omitting directory的错误 ,例如 cp:omitting directory “bbs” 说明bbs目录下面还有目录,不能直接拷贝 解决办法:递归拷贝 命令:cp -r bbs ../backup/bbs 解释:-r 这个options是递归的意思 ————————————————————

打开编辑器

gedit

默认新建一个空白

gedit file1

使用编辑器gedit打开file1.

要想不停止这个软件继续使用命令行的话,就要方向键“下”

以窗口形式打开某个文件夹

nautilus /media/

对linux不怎么熟悉,以前在linux中敲命令的时候,要移动光标,傻傻的一个一个的移动,感觉特不爽。有几个常用的快捷键。

ctrl+左右键:在单词之间跳转 ctrl+a:跳到本行的行首 ctrl+e:跳到页尾 Ctrl+u:删除当前光标前面的文字 ctrl+k:删除当前光标后面的文字 Ctrl+L:进行清屏操作 Ctrl+y:进行恢复删除做 Ctrl+w:删除光标前面的单词的字符 Alt – d :由光标位置开始,往右删除单词。往行尾删

解压

解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。

查找文件

jgrep sgrep find ./ -name “*.xml” | xargs grep “item” ————————————————————color

当前所有目录下查找

find ./ | xargs grep “item” ————————————————————color 【查找的不能以空格隔开,如需要隔开则必须加双引号括起来】

查找目录

比如想查找/etc/ 下的目录为AAA的 find /etc -name AAA -type d

查看目录结构

tree . | tee tmp.log

参考博客1:

http://blog.csdn.net/ljianhui/article/details/11100625

参考博客2:

http://www.cnblogs.com/laov/p/3541414.html#chmod

创建 NEW_FILE_NAME 文件夹

mkdir NEW_FILE_NAME

切换到A_FILE目录

cd A_FILE

查看当前子目录、子文件

ls

删除目录

rm file #删除文件file rm -rf a_directory #删除文件a_directory目录

删除当前目录下所有文件及文件夹

rm -r *

清屏相关

(1)clear 这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。 (2)reset 这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。 (3)另外介绍一个用别名来使用清屏命令的方法,如下: [root@localhost ~]$ alias cls=‘clear’ [root@localhost ~]$ cls

返回上一级

cd .. 返回三级 cd ../../../

返回根目录

最上面一栏菜单栏有 “go” 菜单。点击选择 open parent,一直返回,知道根目录。

查看硬盘空间

df -hl

Linux 命令行窗口添加多个Tab页面

Ctrl + Shift + T Linux 命令行窗口中复制/粘贴 Ctrl+Shift+C / Ctrl+Shift+V

移动 a.txt

mv a.txt temp/a.txt //把当前目录的a.txt文件移动到 temp目录下

Linux杀死某个用户所用进程

在一台100多人使用的 SUN 服务器上经常发现有人滥用资源,平时用用就算了,到了交作业的时候100多号人同时登录使用,服务器明显迟缓,特别是实验室用的是瘦客户机,没硬盘,SUN 客户端需要从服务器装载系统镜像,而且编译、运行程序都要在服务器上完成。如果发现某个用户运行很多进程,并且进程还有子进程,怎么能方便的找出全部进程并 kill 掉呢? ps -ef | grep ^username | cut -c 10-15 | xargs kill -9 把全部进程打印出来根据用户名过滤后找出全部进程号,然后逐行 kill 掉。xargs 就是用来把 cut 后的输出逐个以空白符分割后输给 kill。注意上面的 grep ^username 不能缺 ^,^username 表示从一行开始匹配 username,比如就可以避免匹配到 sshd: username@pts/0。不过尽管加了 ^,上面的代码仍然有个小 bug,如果恰好有个进程名和用户名完全一样怎么办?可以用 ps -u 找出所有与 username 相关的进程,然后 grep -v 过滤掉 PID 只剩下进程信息,然后逐行 kill 掉,如下: ps -u username | grep -v PID | cut -c 0-5 | xargs kill -9 不过上面的命令还有个小问题就是如果 cut 的时候不小心 cut 多了或者 cut 少了怎么办?可以用 awk 过滤一列信息出来:

ps -u username grep -v PID awk ‘{print$1}’ xargs kill -9

上面的命令也可以在 Linux 上运行,不过在 Linux 下可以用更简单的 killall,Solaris 上没有 killall:

killall -u username

只显示文件前几行:

sed -n 4,8p file #打印file中的4-8行 sed -n 4p file #打印file中的第4行 当git branch -a 太多的时候,这时候用 git branch -a sed -n 1,8p 就可以显示1-8行的结果

查找杀进程

常规篇:

 首先,用ps查看进程,方法如下:

$ ps -ef

…… smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper smx 1824 1822 0 11:38 pts/0 00:00:02 bash smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin smx 1857 1822 0 11:38 pts/1 00:00:00 bash smx 1880 1619 0 11:38 ? 00:00:00 update-notifier …… smx 11946 1824 0 21:41 pts/0 00:00:00 ps -ef

或者:

$ ps -aux

……

smx 1822 0.1 0.8 58484 18152 ? Sl 11:38 0:49 gnome-terminal smx 1823 0.0 0.0 1988 712 ? S 11:38 0:00 gnome-pty-helper smx 1824 0.0 0.1 6820 3776 pts/0 Ss 11:38 0:02 bash smx 1827 4.3 5.8 398196 119568 ? Sl 11:38 26:13 /usr/lib/firefox-3.6.18/firefox-bin smx 1857 0.0 0.1 6688 3644 pts/1 Ss 11:38 0:00 bash smx 1880 0.0 0.6 41536 12620 ? S 11:38 0:00 update-notifier …… smx 11953 0.0 0.0 2716 1064 pts/0 R+ 21:42 0:00 ps -aux

此时如果我想杀了火狐的进程就在终端输入:

$ kill -s 9 1827

其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录。

1827则是上面ps查到的火狐的PID。

简单吧,但有个问题,进程少了则无所谓,进程多了,就会觉得痛苦了,无论是ps -ef 还是ps -aux,每次都要在一大串进程信息里面查找到要杀的进程,看的眼都花了。

进阶篇:

改进1:

把ps的查询结果通过管道给grep查找包含特定字符串的进程。管道符“ ”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

$ ps -ef | grep firefox smx 1827 1 4 11:38 ? 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin smx 12029 1824 0 21:54 pts/0 00:00:00 grep ————————————————————color=auto firefox

这次就清爽了。然后就是

$kill -s 9 1827

还是嫌打字多?

改进2——使用pgrep:

一看到pgrep首先会想到什么?没错,grep!pgrep的p表明了这个命令是专门用于进程查询的grep。

$ pgrep firefox 1827

看到了什么?没错火狐的PID,接下来又要打字了:

$kill -s 9 1827

改进3——使用pidof:

看到pidof想到啥?没错pid of xx,字面翻译过来就是 xx的PID。

$ pidof firefox-bin 1827 和pgrep相比稍显不足的是,pidof必须给出进程的全名。然后就是老生常谈:

$kill -s 9 1827

无论使用ps 然后慢慢查找进程PID 还是用grep查找包含相应字符串的进程,亦或者用pgrep直接查找包含相应字符串的进程PID,然后手动输入给kill杀掉,都稍显麻烦。有没有更方便的方法?有!

改进4:

$ps -ef grep firefox grep -v grep cut -c 9-15 xargs kill -s 9

说明:

“grep firefox”的输出结果是,所有含有关键字“firefox”的进程。

“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

难道你不想抱怨点什么?没错太长了

改进5:

知道pgrep和pidof两个命令,干嘛还要打那么长一串!

$ pgrep firefox xargs kill -s 9

改进6:

$ ps -ef | grep firefox | awk ‘{print $2}’ | xargs kill -9 kill: No such process

有一个比较郁闷的地方,进程已经正确找到并且终止了,但是执行完却提示找不到进程。

其中awk ‘{print $2}’ 的作用就是打印(print)出第二列的内容。根据常规篇,可以知道ps输出的第二列正好是PID。就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。

改进7:

难道每次都要调用xargs把PID传递给kill?答案是否定的:

$kill -s 9 ps -aux | grep firefox | awk ‘{print $2}’

改进8:

没错,命令依然有点长,换成pgrep。

$kill -s 9 pgrep firefox

改进9——pkill:

看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。

$pkill -9 firefox

说明:”-9” 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 “-s 9”,结果每次运行都无法终止进程。

改进10——killall:

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

$killall -9 firefox



blog comments powered by Disqus