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下复制粘贴快捷键
-
在终端下:
复制命令:Ctrl + Shift + C 组合键. 粘贴命令:Ctrl + Shift + V 组合键. -
在控制台下:
复制命令: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